技术解读 · CLAUDE MODS × DEEPSEEK HARNESS · 数据截至 2026-10-04
Claude 的 Mods 是个啥?
DeepSeek 给它搭的桥,能走吗?
Claude Code 最近把自家插件体系正式命名为 Claude Mods——能画界面、能拦工具调用的进程内模组。三天前,DeepSeek 开源的 DeepSeek Harness 发布了一个「Claude Code Mods 兼容层」,于是有了「mods 可以直接迁移过去用」的说法。这篇把两边都拆开,看看那座桥到底通了没有。
> 把 src/retry.ts 里的超时重试加上 jitter
● Reading src/retry.ts… (edit · 42 lines)
好,我会在三处退避等待中加入随机抖动
回合 3 · 2 处修改
▸ retry.ts L18–L24
▸ retry.ts L57
(mod 的侧面板)
Mods:Claude Code 的进程内模组
Anthropic 在 2026 年 9 月 9 日给这套机制起了产品名 Claude Mods,底层机制叫 function hooks。一个 mod 就是 Claude Code 的一个插件:行为写在一个 TypeScript 的 hooks 模块里,由 Claude Code 加载进自己的进程,在引擎事件上注册函数——工具调用前、一轮回答结束、某个界面组件重绘——函数可以在事件之前、之后、或代替它执行,还能改写内容。
它能干的五类事
- 画
- 在提示符上方画一条 band(游戏、PR 状态、仪表盘、计时器),或开一个贴在会话旁的 pane 侧面板。绘制不花模型 token。
- 改显示
- 隐藏敏感值、给工具行加按钮、重排消息版式——Claude Code 的界面随 mod 换。
- 拦工具
- 在工具调用真正执行前看到它,可以 block、rewrite、改道;结果送回模型前也能改写。
- 记状态
- 跨会话保持状态、跑定时器、调模型、注册新工具和斜杠命令。
- 全事件审计
- 一个函数就能看到所有事件——审计日志从此只是一个 mod。
和老的 shell hooks 差在哪
你可能用过 Claude Code 更早的 hooks:那是独立子进程,读一段 JSON、回一个退出码。Mods 不是它的换皮:
- shell hook
- 独立进程 · 读 JSON · 回 exit code · 画不了界面
- mod(function hooks)
- 进程内 · TypeScript · 类型化事件 · 固定顺序 · 能画 UI
版本线:什么时候能用的
CLAUDE_CODE_ENABLE_FUNCTION_HOOKS 实验开关后面生态现在长什么样
非官方目录 claude-mods.com 每天扫描 GitHub 上的 hooks.json,截至 2026-10-04 收录 63 个公开 mods,并逐个标注它能读什么、写什么、跑什么、往哪发网络请求。装一个 mod 两行命令:
代表作品(星数为 2026-10-04 GitHub 数据):
界面 · 好看 // 不花 token
安全 · 守门 // 拦在执行前
接别家 // 破次元
哪里能跑
Hooks 在所有会话形态里都执行(终端、Desktop 的 Code 页、VS Code 面板、claude -p / SDK、远程控制);绘制只在终端和 Desktop 的 Code 页出现。守门类 mod 到处都有用,画面类 mod 只在前两处看得到。
另一边:DeepSeek Harness,万物皆插件
deepseek-ai/deepseek-harness(dsh)是 DeepSeek 官方开源的 agent harness,MIT 协议,目前 243k star。架构口号写在标题里:Everything is a Plugin——底层是 Cordis 组合框架(配了一篇论文《A Programming Paradigm for Spatiotemporal Composability》)。跑起来一行:npx @deepseek-ai/dsh web,浏览器打开 127.0.0.1:3080 的 Web UI。
注意这个格局:DSH 的插件生态规模不小,但它的「mod」叫 plugin,机制走 cordis.yml 组合,和 Claude 的 marketplace / plugin.json 是两套世界——这正是需要一座桥的原因。
「可以直接迁移」?先看官方原话
你看到的说法大概率来自 DSH 最新版(v0.2.1-alpha.1,2026-10-03)的更新公告第一条。原文是这么写的:
「新增实验性 Claude Code Mods 兼容层。目前阶段的主要目的是验证 Claude Code Mods API 功能大致为 DeepSeek Harness 插件的一个子集,而非为用户提供实际的完整兼容性。」—— deepseek-ai/deepseek-harness · Release v0.2.1-alpha.1 · 2026-10-03
「Add an experimental Claude Code Mods compatibility layer. At this stage, the main goal is to verify that the Claude Code Mods API's capabilities are broadly a subset of what DeepSeek Harness plugins can do, rather than to offer users complete, practical compatibility.」—— deepseek-ai/deepseek-harness · Release v0.2.1-alpha.1 · 2026-10-03
拆成三句话:① 方向——DSH 认为自己插件能力的表达面更大,Claude Mods API 是它的子集,所以「装得下」;② 现状——这是实验性验证阶段,官方明确没有承诺拿来即用;③ 潜台词——别把生产流程押上去,DSH 自己的 README 就写着「THERE WILL BE COMPATIBILITY-BREAKING CHANGES」。
桥上实测:谁能过,谁不能
兼容层的设计文档做得很实诚:按 Claude Code 2.1.287 的行为逐项对照,并用官方博文的示例 mod 实测。结果一刀切成两半:
✓ 能跑(不改一行代码)
- Token Weather官方博文示例:band 里画 token 用量。「按发布原样跑通」
- Blast Radiustool.call 守卫:拦住危险命令,在 band 画影响面报告,按钮确认/取消
- Replay Theater记录 Edit/Write 调用,回合后在 band 里逐步回放 diff
✕ 跑不了(Claude Code 自带的 mod)
- diff需要
$.settings.read、$.telemetry.*、pane 内读消息、焦点与滚动事件官方读码评估:不可运行 - agents-md依赖的
prompt.context/agent.spawn事件不会被触发同上 - sec-defaultmanaged 档策略依赖 DSH 没有的概念同上
- telemetry
telemetry.*、engine.create不触发同上
兼容层砍掉了什么 —— 完整差异清单(点开)▶
- 打包
- 不读
plugin.json/hooks.json;mod 要用defineMod()包一层、经 cordis.yml 挂载;配置档只有 user 一档。 - 事件
- 是子集:
session.start/end(仅根 agent)、prompt.submit、turn.*、tool.call、command.run、ui.render会触发;tool.check、turn.step、telemetry.*、全部ui.press/input/focus/scroll等注册了也不会来,加载时给一条警告。 - 拦工具的口子更小
- hook 在权限判定之后跑(Claude 是之前);「改参数」「改道别的工具」这类
next重写会被跳过——但 deny、代答、观察、改结果都还能用。 - 绘制只剩 band
- 没有 pane(
$.ui.open直接回答「放不下」);元素只有 Box / Text / Button;每会话一条 band,默认 120 列 × 10 行,在 DSH 的 Web UI 里画出来。 - $ API 缺口
$.model、$.agent、$.config、$.settings、$.mcp、$.audio、$.telemetry、$.turn一律拒绝:no implementation;$.process只有 run;文件与请求体各限 4 MiB。- 链与预算
next只许调一次(Claude 可多次);10 秒 hook 预算相同,可配。- 安全反而更松
- Claude 的 mod 本就不沙箱;桥上更直接——进程全权限,无访问规则。官方原话:只挂你敢当插件跑的 mod。
桥是真的架通了,但今天它是一座验证桥,不是通勤桥。官方博文的三个示例 mod 原样就能在 DSH 的 Web UI 里画 band、拦命令——「Claude mods 是 DSH 插件子集」这个判断有了实跑证据。但 Claude Code 自带的四个 mod 全部跑不了,绘制只剩 band、一批 $ 命名空间直接拒绝。对普通用户的准确说法是:简单 band 类、守门类 mod 有机会原样跑;越往 pane、热键、遥测、托管策略走,越会掉进「no implementation」。等它出实验阶段再当真。
两边各花一分钟
CLAUDE CODE · 装 mods
会话里 /plugin 看已装;claude --safe-mode 一次全关。
DEEPSEEK HARNESS · 跑 DSH
兼容层在 experimental 包 @deepseek-ai/dsh-experimental-claude-code-mods;mod 需按 defineMod() 包一层挂进 cordis.yml。
claude plugin validate 审一遍。② DSH 是 developer preview,官方明说会有破坏性变更;今天跑通的 mod,下个 alpha 可能就断。