Claude Mods:把 Harness(模型外壳)翻个底朝天
过去几周,我一直用 Claude Mods 把 Claude Code 改造成贴合自己 AI 工程工作流的样子。Claude Code 开箱即用已经很好,但每个工程工作流都不一样。Claude Mods 让你按自己关注的维度,把 Claude Code 变成你自己的。现在,“关注什么”这件事变得最重要。在 Latent Space 最近一篇题为《Agent Harness 的演化》的文章里,我提出:随着模型把 harness 的更多部分吸收进权重,剩下的那部分就面向人类。它变成了注意力界面:决定 agent 何时打断你、给你看什么、需要你做哪些决策的那一层。Claude Mods 是注意力界面的早期版本,而且是一个你可以自己塑造的版本。我的判断是:最终,harness 会变成一个供其他公司在其上构建的平台,模型则是引擎。就像浏览器成为 Web 应用的平台一样,harness 也可能成为人与 agent 之间各种界面的平台。Claude Mods:它是什么?一个 mod 就是一个 Claude Code 插件,由在 Claude Code 内运行的 TypeScript 或 JavaScript 函数组成。这些函数定制 CLI 和 Desktop 中界面的行为和外观。Mods 响应事件,比如一次提示、一次工具调用或一次界面渲染。它们可以观察事件、修改事件的渲染方式,并代替默认行为来处理它。Claude Mods 是 agent harness 的中间件。它们注入代码,改变 Claude Code 的执行与渲染流程,在运行时改变应用的行为。Claude Mods 让人和 agent 一起构建 harness 中面向人的那部分。现在,你可以和 Claude 一起设计 Claude 如何与你协作。这就是“注意力界面”的本质。harness 的反转agent harness 最初是 agent 与其运行机器之间的接口。它让你向 agent 发出提示,然后 agent 发送命令、编辑文件并调用工具。现在,它正逐渐变成 agent 与人对接的方式。Claude Mods 让你反转 harness 的方向。
与其让“框架”从智能体指向机器,不如让它从智能体指向人类操作者,这样框架就变成了与人类注意力交互的接口。Claude Mods 让人类这一层变得可编程,而且是由使用 Claude 的人来编程。Claude 也能帮你构建 mods。Claude Code 内置了一项技能,教它如何构建 mods,所以你只需用自然语言描述想要的 mod,Claude 就会帮你构建出来。
Mods 实战
Claude Code 自身的一些功能其实已经是 mods 了。Anthropic 已经内置发布了六个。运行 /plugin 并打开 Installed,就能看到它们列在 Built-in 下面:
- agents-md:将 AGENTS.md 作为项目指令加载。
- diff:接管 /diff 并绘制其面板。
- plugin-authoring:为 Claude 提供编写 mods 的技能。
- sec-default:保护组织管理的内容,防止用户安装的 mods 干扰。
- telemetry:发送 Claude Code 及其内置 mods 记录的分析数据。
- you-should-know:一个侧边智能体,当发现你可能遗漏的内容时,在提示上方显示提示。它是唯一默认关闭的。
这些大多在后台运行,有意思的是,这意味着 Anthropic 正在把 Claude Code 的部分功能作为 mods 来构建——甚至包括你可能注意不到的部分。
我自己开启的是 You Should Know。以下是我在实践中发现最有用的两个 mods:一个是内置的,另一个是我自己构建的。
1. You Should Know
这是 Anthropic 构建的原生 Claude Code 插件。它运行一个侧边智能体,在主智能体工作时进行观察,并标记出你可能遗漏的重要信息。可以这样理解:那些对输出有实质性影响的工具调用和决策,往往因为埋在智能体追踪记录里而不太容易看到。
它内置在 Claude Code 中,但需要你手动开启。
举一个真实的例子。我让 Claude Code 简化一个个人项目里嘈杂的 UI 文本。主智能体精简了 Compare 屏幕上的文案,安装了新构建,并截取了前后对比图。一切看起来都完成了。然后 You Should Know 给我标记了一些东西。
CompareView.swift 是 agent 正在编辑的文件,里面已经有未提交的改动,另外大约 45 个文件也是如此。如果之后丢弃演示时的编辑,那些更早的未完成工作也会一并丢掉。它的建议是先提交或暂存之前的工作。这次,“You Should Know”这个 mod 帮我避免了误删工作。
2. 下一步监督器(Next Steps Supervisor)
这个 mod 只在某一轮对话编辑了文件、运行了命令,或发起了 8 次及以上工具调用之后才会运行。在下面的截图里,你会看到它标出了六条需要你注意的信息。接着,下一步监督器会建议你采取一个下一步操作,以可点击按钮的形式呈现,点击后会把指令作为消息发给 Claude Code。
这个 mod 是 ModSmith 的一部分。ModSmith 是我开发的一个开源 Claude Code 插件,内置了好几个不同的 mod,还附带一个模板,Claude 可以用它来构建能互相协作的新 mod。
其他地方的注意力界面
Anthropic 并不是唯一在做注意力界面(Attention Interface)的公司。最近有两款产品,一款来自 OpenAI,一款来自 Cursor,都指向同一个方向。拿新的 ChatGPT Intelligent UI 和 Cursor 的 PR 路由与审批(PR Routing & Approval)作参照,就能看出 Claude Mods 的独特之处。
ChatGPT 的 Intelligent UI
10 月 7 日,OpenAI 在 ChatGPT 里上线了 GPT-6,同时推出一个叫 Intelligent UI 的新界面。ChatGPT 不再只用文本回答,现在可以在回答的同时生成界面:图表、地图、清单、表单,以及分摊账单、储蓄计算器之类的小工具。这些都由模型即时生成,属于一种生成式 UI(generative UI)。
来源:OpenAI 的 GPT-6 公告
在 OpenAI 给出的一个例子里,ChatGPT 用多选题追问来缩小你的需求范围。可以这样理解:模型判断什么时候需要你的判断,然后构建一个界面让你给出判断。这就是注意力界面。agent 设计了你如何与它的回答交互。
但要注意 ChatGPT 的 Intelligent UI 和 Claude Mods 之间的区别。对于 Intelligent UI,模型是逐个回答地从 OpenAI 构建的组件库里挑选界面。
发布时提到的唯一一个控制项,是把视觉效果调低。
Cursor 的 PR Routing & Approval 则从另一端切入同一个问题:不是一个人对应一个答案,而是一个团队面对源源不断的 pull request,而且其中越来越多的 PR 由 agent 编写。总得有人决定哪些改动值得进入 human-in-the-loop(人工审核环节)。PR Routing & Approval 做的就是这件事。它根据代码归属和提交历史分配审查者,还能自动批准低风险 PR。判断依据包括风险分数与你设定的阈值、Cursor 的 Bugbot 和安全审查器的发现,以及仓库里的策略文件。
调研时有一条规则引起了我的注意:如果某个 PR 修改了审批策略,agent 不会用修改后的版本来放宽对这个 PR 本身的审查,而是从 base branch 读取策略。这样一来,agent 就没法改规则让自己的 PR 过关。Cursor 对边界也说得很清楚,文档里写明这个功能“不能替代完整的代码审查”。它的目的是把人工审查用在真正重要的地方,而不是取消人工审查。
三个系统的差异
三个系统都在影响什么内容能引起你的注意、以及以什么方式引起注意。核心差异在于:谁能设计这个“注意力界面”。
ChatGPT Intelligent UI:模型为每个答案设计界面,但只能待在实验室搭好的框架里。零配置,但控制力很弱。(我不认为它的目标用户是工程师。)
Cursor PR Routing & Approval:团队编写策略,固定的审查流程负责执行。可配置,但交互流程由 Cursor 决定。你决定规则,决定不了界面。
Claude Mods:你和 agent 一起用代码构建界面本身。一个 mod 可以挂接到循环中的任意节点——从你提交的 prompt,到 agent 发起的工具调用,再到一轮对话结束的时刻——并决定在那个节点向你展示什么、你能做什么。前面展示的 supervisor 就是个好例子。Cursor 可以因为 PR 触碰了哪些文件,轻松把 PR 路由给我;ChatGPT 也可以轻松把结论渲染成一张漂亮的卡片。
但这两个工具都不会让我决定:每一轮只要改动了文件,就要再听一遍“第二意见”;这份意见要列出走了哪些捷径;每条建议的下一步操作,只需按一个键就能执行。这套交互之所以存在,是因为我更喜欢用这种方式来关注工作,而 Claude 是和我一起把它做出来的。ChatGPT 和 Cursor 给你的是一个由别人设计好的“注意力界面”(Attention Interface)。Claude Mods 让你和 Claude 一起设计属于自己的界面,代价是:它有没有用,得由你负责。
Mods 的问题在哪
Mods 并非没有代价,我也遇到了一些缺点。
第一个问题是噪音。Next Steps Supervisor 会在任何一轮改动文件、运行命令,或发起 8 次以上工具调用之后运行。实际上,几乎每一轮都会满足这些条件。自从 10 月 15 日装上它,我在 Claude Code 里的 111 轮对话中有 99 轮触发了它。这些判定有的有用,有的纯属噪音。所以,当一个 mod 几乎每轮都跳出来说话,我就会开始快速略过它,而这恰恰让“注意力界面”失去了意义。
第二个问题是成本。每次 supervisor 检查都会分叉对话并重新读取它。其中大部分内容由提示缓存(prompt cache)提供,但该 mod 自己的 README 估算,在一个 5 万 token 的会话里,每次检查约消耗 5–6k 输入等效 token,缓存过期后还会更多。
第三个问题是信任。mod 是一段以你的权限运行的代码。Anthropic 的文档说得很清楚:一旦加载,mod 就能读写你的文件、看到你发送的每一条提示,并消耗你的用量。而且,“mods 不在沙箱里运行”。即使用 --safe-mode 启动 Claude Code,内置 mod 也照样继续运行。对于我自己写的、或者随 Claude Code 一起发布的 mod,我用得放心;但别人的代码,我会先读一遍再装。
好处是,mods 可以修,而其他工具做不到这一点。如果某次会话里 supervisor 太吵,用 /supervisor off 就能关掉它。因为这是我的 mod,我可以改它什么时候运行。