Back to list
·10 min read·

抛弃 Claude 拥抱 omp 后,我给自己建了一套 Agent 治理体系

Agent 治理体系三层结构
Agent 治理体系三层结构

一切始于 DeepSeek V4 Flash 发布。

便宜,而且好用。就在前两天,我的处境还很典型:Codex 额度见底,在等重置;Claude 赶上封号潮,用着提心吊胆。这两个词凑在一起,几乎是决定性的。我没什么犹豫,把用了很久的 GUI 客户端卸掉,整个工作流搬进命令行。调研一圈,最后落在三个环境上:Oh My Pi 主力编码,Hermes 管杂事,Codex CLI 留着保底。

三个环境,三套脾气。omp 从 ~/.agents/skills/ 按需发现 skill;Codex 只认自己 ~/.codex/skills/ 那一亩三分地,还得靠 hooks 往里塞;Hermes 干脆是一棵官方托管的分类树。同一个 skill,在三个环境里是三种活法。

当时我没觉得这有什么。直到几天后,这个「分裂」逼我做出了一个自己都没想到的工程决策。

起因:先装上两个当红 skill

本着能省则省的原则,我盯上了 GitHub 上两个 star 都接近十万的 skill:caveman 让 AI 说话省 token,ponytail 让 AI 写最少代码。装上之前我让 AI 先评估了一下:caveman 每轮要付 1-1.5k 输入开销,在编码任务里其实是净亏损,文档自己都建议「净收益为负就关掉我」;ponytail 倒是实打实少写代码。最后 ponytail 常驻、caveman 按需。

但真正让我走上「建体系」这条路的,不是这俩 skill 本身,而是装完之后冒出来的一个问题。

一数,56 个 skill

装完 caveman 和 ponytail,我顺口问了句:它们跟我的其他 skill 打架吗?

这一问牵出了全部家底。而且因为 omp 和 Codex 各扫各的目录,这些 skill 每一套我都得装两份。除了这俩,我平时还手动装了一堆:Matt Pocock 的工程技能集(grilling、tdd、code-review、ask-matt,当初一个个挑着装的)、impeccable 设计技能,还有 obsidian-vault 这种不知道什么时候混进来的。装完这两窝,机器上躺着 56 个 skill,来自 4 个独立来源。AI 给它们做了全量审计,产出一张冲突矩阵,看得我头皮发麻:

行为规则冲突。ponytail 和 impeccable 在 UI 任务上方向相反:一个要最短实现,一个要极致打磨;caveman 和 grilling 家族也冲突,压缩输出会削弱穷追猛打的提问。

触发词竞争。三个 review skill 都响应「review this」,五个 grill skill 都响应「grill」。

我第一反应是删掉重复的。AI 拦住了,给了个更好的方案:不删,建一个仲裁层。

把需求浓缩成一个 skill

两类 skill 的冲突与仲裁
两类 skill 的冲突与仲裁

建仲裁层不是写一大堆规则,而是先把需求压缩到不能再压缩。我把冲突矩阵翻来覆去地看,发现 56 个 skill 的冲突,本质上是两类角色的冲突:

  • 工作流 skill 管「做什么」:审查、测试、设计、写作,产出交付物
  • 模式 skill 管「怎么说」:压缩输出、极简代码,自己不产出东西

审查要深度报告,caveman 要把话说短;impeccable 要极致打磨,ponytail 要最短实现。所有矛盾都是这两类碰在一起时产生的。需求于是浓缩成一句话:

工作流 skill(做什么)永远优先于模式 skill(怎么说/怎么写),冲突时模式适应,工作流不削弱。

这个 skill 我管它叫 skill-synergy,整份规则就围绕这句话展开,一共三块:

  • 一张优先级矩阵,列出常见场景里谁主导、谁让位、怎么让
  • 一张触发词消歧表,解决三个 review skill 抢「review this」、五个 grill skill 抢「grill」的问题
  • 几条模式纪律,比如极简代码的校验(validation)边界分三档:真实校验不能砍,投机防御该删就删,测试和文档按我的明确要求执行

规则写成模板,不写死具体 skill 名,谁装谁填。

浓缩成一句话的好处是它真的能当 skill 用:遇到冲突,agent 读一遍就知道让谁上。

体系就三层

折腾到最后,体系其实很薄:

仲裁层在最上面:skill-synergy 管规则,全局 AGENTS.md 管执行,一份规则写进去,omp 和 Codex 都读。中间是模式层,caveman、ponytail 管怎么说、怎么写。底层是工作流层,几十个正经干活的 skill:审查、测试、设计、写作。

文件与分工

统一配置管理
统一配置管理

文件管理上,我自己的东西(skill-synergy、子代理、Codex 配置)集中到 ~/agent-config/ 一个 git 仓库,环境路径用符号链接指过去,改一处就生效,还推到了私有 GitHub 仓库做备份。官方分发的 skill 一个都不动。

更新全走官方渠道:Matt 技能集用 npx skills add,impeccable 用 npx impeccable install,caveman/ponytail 各有官方安装器,Hermes 用 hermes skills update——我一个都不用管。最后是一张 README 索引表,所有东西在哪、怎么更新,一查便知。

环境分工也定下来了:omp 编码、Hermes 管杂事、Codex 保底。给 Hermes 装编码 skill 纯属浪费,翻了它的日志,375 条活动记录里只有 1 条跟编码相关。这之后我再装 skill,都会先想想它在这个环境里到底干不干活。

一点总结

回头看,这几天最有价值的不是新装的那十几个 skill,而是被逼着想清楚的那些问题:什么该自己管、什么该交给官方、冲突时谁让位、规则怎么定才不会被自己推翻,以及当工具链分成三个环境时,「统一」到底意味着什么。

几件小事,算我的踩坑笔记:

  • 宣传数字在自己的场景里一测就现原形:caveman 每轮多付 1-1.5k 输入开销,编码任务净亏损,文档自己都写「净收益为负就关掉我」
  • 一个安装器会带进来一整套依赖,你以为只装了一个,其实进来一窝:caveman 就带着四个分身一起装上了。数依赖链、装完逐个验证,这两步我是后来才补上的
  • 靠名字激活的扩展,装得越多越容易撞车:三个 review skill 抢「review this」,五个 grill 抢「grill」。撞车了,消歧规则比删功能管用
  • 流行的工具不一定适合每个环境:给只做文案的电脑装整套开发工具,纯属浪费
  • 「永不」这种规则没法执行,精确到边界才行:校验边界分三档——真实校验不能砍、投机防御该删就删、测试和文档按明确要求执行
  • 有官方更新渠道的就不用自己维护:npx skills add、npx impeccable install、hermes skills update 各管各的,自己只维护一个 ~/agent-config
  • 觉得方案复杂了,大概率是目标定错了,不是执行不到位:56 个冲突浓缩成一句话之后,整个体系薄得只剩三层

我的项目

文章里聊的 Agent 治理,是我折腾工具链的一部分。Vibe Coding 让我第一次能把自己的想法做成能用的东西,下面这几个都已经上线:

  • KURAYA 蔵屋 —— 本地优先的影片刮削与编目工具,自动整理封面和元数据,生成可离线浏览的私人片库
  • PicPak —— 本地优先的图片压缩工具,自动找到观感稳定的最小压缩结果,支持目标体积重压缩与批量处理
  • WeMD —— 更优雅的 Markdown 公众号编辑器,本地优先写作,一键复制到公众号,Web 与桌面端

更多项目见我的主页,折腾过程也会陆续写在博客里。