找回密码
立即注册
搜索
发回帖 发新帖

4819

积分

0

好友

625

主题
发表于 2 小时前 | 查看: 9| 回复: 0

Anthropic 刚刚发布了 Claude Code v2.1.287 版本,其中最值得关注的新能力是 Claude Mods。它允许开发者通过编写小型的 TypeScript 或 JavaScript 函数,改变 Claude Code 的事件逻辑,并绘制自定义界面。

换句话说,开发者现在可以按自己的流程改造工作台了。哪些地方值得动手?哪些需求用现成的 Skills 或 Hooks 就够了?这篇文章会帮你理清边界。

什么是 Mod:运行在进程内的事件函数

按官方给出的产品定义,Mod 是运行在 Claude Code 进程内部的扩展逻辑。当 Claude Code 运行时,内部会派发各种生命周期事件,挂载在上面的 Mod 可以在事件流中执行三类操作:

  • 观察(Observe):只读取事件数据并放行,在每次工具调用后记录消耗或者统计轮次
  • 改写(Rewrite):在数据发给模型或者执行之前动态修改,对敏感路径脱敏,或者把高风险命令参数改写为安全选项
  • 接管(Answer):直接处理事件并返回结果,跳过 Claude Code 原有的默认逻辑

这种类似中间件管道(Middleware Chain)的处理方式,让开发者可以深入介入 Claude Code 的事件生命周期,并在终端或桌面端绘制界面组件。

四种扩展怎么选:Skills、MCP、Hooks、Mods 各司其职

面对 Skills、MCP、Settings Hooks 和 Mods,很多同学容易混淆它们的使用场景。

需要说明的是,这四种机制属于互补协同关系,一个标准的插件包完全可以同时包含指令、外部工具、拦截脚本与模组。我整理了一张清晰的选型对照图:

Claude Code 四种扩展机制选型对比:Skills、MCP、Settings Hooks 与 Mods 的运行位置、载体形式及 UI 能力一览

结合官方文档的对比说明,四者的选择维度大致如下:

  • Skills(技能):载体为 Markdown(SKILL.md),作用于模型上下文,适合沉淀特定业务排查 SOP、编码规范与多步骤指导,教模型如何理解任务
  • MCP Servers(模型上下文协议):载体为外部独立进程或网络服务,通过标准协议为 Agent 提供外部工具,适合读写数据库、调用私有云平台接口或连接企业协作系统
  • Settings Hooks(生命周期钩子):载体为配置在 settings.json 中的 Shell 脚本、HTTP 请求或 Prompt,由生命周期事件触发外部运行,适合在工具调用前后进行放行审核或记录外部审计
  • Mods(模组):载体为进程内事件处理函数,常驻在 Claude Code 运行时内部,适合需要自定义界面组件、重写事件流、跨钩子共享状态或动态调整推理参数的场景

在官方博客和上手教程中,Anthropic 给出了几个具代表性的演示设想与示例。

场景 1:Token Weather(上下文天气预报)

在处理多文件重构任务时,开发者往往需要关注上下文窗口的消耗。官方教程给出了一个约 80 行代码的轻量 Mod 示例 Token Weather,通过挂载 AbovePrompt 组件,在输入框上方实时绘制天气指示条。

Token Weather 上下文天气预报界面展示,显示 Storm 81% of context 161.1k / 200k last turns 及 +26.7k last turn

官方设定的区间阈值如下:

  • 25% 以下:显示晴天(☀ Clear)
  • 25% 至 49%:显示多云(☁ Cloudy)
  • 50% 至 74%:显示阵雨(☂ Showers)
  • 75% 至 89%:显示暴风雨(☇ Storm)
  • 90% 及以上:提示即将压缩上下文(↯ Compact soon)

在 Claude Code 给出的演示记录中,展示了会话随着多轮读取,读数从 18% 晴天、67% 阵雨逐步上升到 81% 暴风雨的过程。

场景 2:Blast Radius(危险操作拦截确认)

针对高危变更,Claude Code 设计了名为 Blast Radius 的防护示例。当检测到可能丢失本地修改的命令时,Mod 会在终端上方直接绘制一个带黄色边框的确认框。

Blast Radius 高危指令交互拦截框,显示 git reset --hard 的影响文件列表及 Proceed/Cancel 确认选项

该组件会列出受影响的文件,并提供带编号的 Proceed 与 Cancel 选项供用户直接选择。

场景 3:Replay Theater(步骤复盘与差异审查)

在 Claude Code 教程展示的另一个进阶示例 Replay Theater 中,Mod 在输入框上方绘制了一个洋红色边框的交互面板。

Replay Theater 步骤审查界面展示,显示 greet.js 的编辑前后对比及步骤导航

该面板包含了步骤编号指示条、单行文件变更对比,以及上一页、下一页和关闭按钮。这是一个独立的教程展示案例,用来演示如何用 Mod 构建分步审查流程,与内置的 /diff 属于不同实现。

场景 4:副代理机制(You should know)

最新版提供了一个内置实验 Mod:cc-plugin-you-should-know。

该 Mod 默认处于关闭状态,在支持该特性的组织环境下,且仅限开启了遥测的第一方会话中,用户可通过以下命令尝试启用:

/plugin enable cc-plugin-you-should-know@builtin

官方设计目标是让一个副代理(Side Agent)在后台观察长任务过程,当发现可能存在的疏漏时,在输入框上方弹出便签提醒。

架构演进信号:部分内置能力向 Mods 迁移

Claude Code 的部分内置能力目前已经以 Mod 形式交付,例如交互式终端里的 /diff 面板对应内置的 cc-plugin-diff,加载 AGENTS.md 项目指令对应内置的 cc-plugin-agents-md。

官方表示,未来计划将更多内置功能逐步迁移为 Mods,使用户可以把 Claude Code 缩减为一个较小的 Core,再按需添加所需要的功能。这意味着官方正在探索将宿主本身解耦的架构路径,但目前仍处于早期演进阶段。

DeepSeek Harness 的一切皆插件

看到 Claude Code 计划把内置能力逐步拆成 Mods,很多关注底层设计的同学很容易联想到 DeepSeek Harness 的一切皆插件设计。把这两套思路放在一起观察,能帮我们看清当前 AI 编程运行时的演变。

两者的共同特征,是把定制单元从外部提示词或单纯的外部工具挂载,推进到了 Agent 的运行时内部。官方内置功能和扩展共享同一套底层机制,在调用链路上都引入了类似中间件的流水线模式:前一个扩展处理完后调用 next 把控制权交给后续逻辑,或者提前返回直接接管,生命周期与状态管理也成为开发者干预的接缝。这些相似的演化方向反映出大家对运行时灵活性的共同诉求,但两边在技术实现上各自独立,并没有协议兼容或继承关系。

两者的核心定位与架构层级存在明显区别,我整理了一张简明对比表:

维度 DeepSeek Harness(一切皆插件) Claude Code Mods
产品能力怎样装配 启动时依据配置与 Profile 组装整棵 Cordis 插件树,由依赖注入驱动服务挂载与卸载 随插件包安装至客户端,在会话启动或重载时加载并介入中间件事件链
默认 Loop 与服务替换范围 AgentLoop、模型适配与工具注册均以服务契约提供,允许通过配置提供新的 Provider 宿主引擎保持完整运行,官方正逐步将特定内置能力迁移为 Mod,用户可干预单轮模型路由与工具执行
扩展之间协作方式 插件向上下文注册服务或监听 Typed 事件,通过服务依赖与生命周期 Effects 实现自动协同 扩展按来源、托管配置优先级及依赖关系组成事件处理链,支持扩展 API 命名空间与多模组策略约束
宿主运行与权限边界 运行于 Node.js/Cordis 插件体系,沙箱和审批是另行配置的能力 运行于宿主内部受控 JS 环境,经宿主 API 行使当前用户操作系统权限

据 dsh 官方架构文档介绍,DeepSeek Harness 是以 Cordis 框架为底座,把“一切皆插件”作为整套 Harness 的核心装配原则。它的模型适配、工具注册表、会话日志乃至默认的 Agent Loop,都作为插件向共享上下文提供服务,由依赖注入机制管理生命周期。Cordis 底座、Node 环境与引导入口依然承担基础支撑,但应用自身各模块之间没有特权核心。开发者既能用它跑完整的桌面端、Web 端或命令行,也可以通过配置替换其中的服务实现。

Claude Code 的 Mods 则是在终端与桌面端运行的产品中开放出来的内部事件扩展能力。官方是在已有运行闭环基础上,逐步把差异对比面板、项目指令加载等内置能力做成 Mods 交付,并允许用户介入提示词、工具校验与模型路由。更深的一层在于,Mod 具备超越界面的深层介入能力:排在事件链前面的 Mod 可以处理后续 Mod 发起的 API 调用,或者挂载新的 API 命名空间。官方开源的遥测模块就是在底层为其他 Mod 注入新方法,而安全模组也在利用事件链约束后续行为。两者的差异主要在于架构范围:一套是用插件装配整套 Harness 的组件服务,另一套是在已有宿主上把关键生命周期开放给事件中间件。

举一个常见场景:如果要在 Agent 执行高危命令前做安全审计,或者把执行交给自己定制的环境,两边在设计上都能支持。在 dsh 里,通常是通过提供新的工具服务或执行 provider 替换默认实现,在启动时挂载;而在 Claude Code 里,则是编写 Mod 监听 tool.call 事件,直接在中间件管道里改写执行参数、弹窗让用户确认,或者调用自己的后端执行后返回结果。前者偏向服务契约层面的组件插拔,后者偏向会话流水线上的事件拦截与改写。两者适用的改造粒度各有所长,并不存在功能维度的单向独占。

需要说明的是,两套机制的 API 与上下文模型完全不同。基于 Cordis Context 编写的服务提供者无法直接塞进 Claude Code,而 Mods 的 register 与事件钩子也无法直接在 dsh 中运行。业务层面的审计逻辑或规则可以参考,具体的代码实现必须针对各自宿主单独编写。

运行环境与安全边界

使用和编写 Mod 时,有几项关键事实需要明确。

1. Mods 运行在当前用户权限范围内(无沙箱)

官方明确强调:Mods aren't sandboxed。

对于这套机制的安全特征,需要区分三个不同维度的表现:

首先在代码层面,Mod 的 hook 模块本身运行在受控的 JavaScript 环境中,并没有直接暴露原生的 Node.js 全局 API(无法直接使用 require 引入外部底层库,也没有原生的全局定时器或直接网络调用),所有涉及底层资源的操作都必须经由宿主提供的 $ API 进行。

其次在权限层面,虽然代码运行受到宿主接口约束,但当 Mod 调用 $.fs 操作文件或通过 $.process 启动外部程序时,在操作系统层面行使的是当前登录用户的实际系统权限。它依然能够读写用户可访问的文件,读取配置文件中的 API Key,或者发起网络请求。

最后在系统隔离层面,这种受控的 JS 环境并不等同于操作系统级别的进程沙箱。特别需要注意,Claude Code 的 Bash 沙箱隔离针对的是模型自主调用的 Bash 命令,由 Mod 自身启动的外部进程运行在 Bash 沙箱之外。因此不要随意安装来源不可信的第三方 Mod。

2. 界面与权限的硬性边界

Mod 能够重绘大部分交互界面,但官方明确规定:Mod 不能改绘系统的权限提示框(permission prompt)。

同时,Mod 可以在提示出现前批准或拒绝某些工具调用,具体受托管策略与拒绝规则约束。权限框的显示保护和执行授权是两项需要分别理解的边界。

3. 企业管控与 sec-default

官方列出的加载条件有两种:机器配置了 Managed Settings,或者用户以 Team / Enterprise 方案登录 Claude Code。满足其中一项,内置的 cc-plugin-sec-default 就会先于用户安装的 Mods 加载。

它保护托管指令、托管 Hooks、设置和托管 MCP 信息等内容。管理员还可以在托管配置的 cc-plugin-sec-default@builtin 选项中设定 allowManagedModsOnly: true,阻止用户自行带入的 Mods 加载。

这些保护有明确范围:拒绝规则和托管 Hooks 约束的是 Claude 的工具调用。Mod 自己通过 $.fs 或 $.process 操作文件、启动程序时,仍有当前用户的访问能力。sec-default 提供的治理也需要结合可信来源和组织策略使用。

4. UI 绘制的实际环境差异

Mod 的事件钩子支持范围较广,但界面渲染受到宿主环境限制:

  • 终端环境:完整支持事件运行与界面绘制
  • Desktop 桌面客户端:在 Code 标签页下支持界面绘制,个别标注为终端专用的元素除外;WSL 会话下暂不支持插件与 Mods
  • VS Code 扩展聊天面板、claude -p 命令行、Agent SDK:事件钩子正常运行,但 Mod 绘制的自定义 UI 不会显示
  • 远程控制(Remote Control):事件运行在本地机器会话中,界面也仅绘制于本地终端,远端不显示
  • 云端会话(Cloud Session):当插件满足同步条件时钩子可运行,但界面不会直接渲染

编写带有界面的 Mod 时,需要做好环境兼容处理。

从哪一步开始:动手体验指引

如果你想了解本地环境是否支持,可以按照官方文档推荐的步骤进行查看。

第一步,检查本地 Claude Code 版本是否达到要求:

claude --version

要求版本在 v2.1.287 或更高。

第二步,在会话中运行命令,查看当前环境已加载的内置模组:

/plugin

在 Installed 标签页下的 Built-in 区域,可以查阅到当前平台支持的内置插件列表。

第三步,若想探索编写自己的模组,建议先从简单且低风险的案例入手,例如在终端输出工具调用次数或上下文读数。也可以在 Claude Code 中描述需求,让 Claude 借助官方文档生成本地模组模板,并在对应目录下执行校验:

claude plugin validate ./your-mod-dir

通过校验工具审查 Mod 声明的事件钩子与系统调用,确认无误后再进行加载。

总结

把 DeepSeek Harness 的架构装配思路与 Claude Code 刚推出的 Mods 放在一起看,能清晰看到 AI 编程运行时的演进脉络:两边都在把 Agent 的执行过程进一步拆解为可以观察、改写与协同的环节。dsh 展现了用服务接口拼装整套 Harness 的可能性,Claude Code 则为日常客户端提供了直接改写事件与界面的抓手。对于开发者来说,理解这些扩展接缝的位置,远比盲目追逐新名词更有价值。




上一篇:GPT-6 Astra 连玩《我的世界》141小时:一场苦力怕爆炸后,它为何只种土豆?
下一篇:千万 QPS 架构容灾演练:桌面推演到全链路切换的 5 级演进
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-10-4 06:10 , Processed in 0.076129 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表