技术解读 · CLAUDE MODS × DEEPSEEK HARNESS · 数据截至 2026-10-04

Claude 的 Mods 是个啥?
DeepSeek 给它搭的桥,能走吗?

Claude Code 最近把自家插件体系正式命名为 Claude Mods——能画界面、能拦工具调用的进程内模组。三天前,DeepSeek 开源的 DeepSeek Harness 发布了一个「Claude Code Mods 兼容层」,于是有了「mods 可以直接迁移过去用」的说法。这篇把两边都拆开,看看那座桥到底通了没有。

2.1.287Claude Code 起默认加载 mods 的版本
63个公开目录收录的社区 mods(2026-10-04)
243k★deepseek-ai/deepseek-harness
claude — ~/my-project · v2.1.287 · 2 mods active
token-weather ctx 68% ▮▮▮▮▮▮▯▯ $0.42 this session [R]efresh

> 把 src/retry.ts 里的超时重试加上 jitter

● Reading src/retry.ts… (edit · 42 lines)

好,我会在三处退避等待中加入随机抖动

replay-theater
回合 3 · 2 处修改
▸ retry.ts L18–L24
▸ retry.ts L57
(mod 的侧面板)
上面整条框、旁边的虚线小面板,都是 mod 画的——不花模型 token 同样的 band,在 DeepSeek Harness 的 Web UI 里也能被画出来(经由兼容层)
§1

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

版本线:什么时候能用的

2.1.260CLAUDE CODE藏在 CLAUDE_CODE_ENABLE_FUNCTION_HOOKS 实验开关后面
2.1.269CLAUDE CODE开始可以绘制 band / pane
2026-09-09ANTHROPIC官宣产品名 Claude Mods
2.1.287CLAUDE CODE默认开启,装完即用,无需任何开关
2026-10-03DEEPSEEKDSH v0.2.1-alpha.1 带着实验性兼容层发布(本文后半段)
§2

生态现在长什么样

非官方目录 claude-mods.com 每天扫描 GitHub 上的 hooks.json,截至 2026-10-04 收录 63 个公开 mods,并逐个标注它能读什么、写什么、跑什么、往哪发网络请求。装一个 mod 两行命令:

$ claude plugin marketplace add <owner>/<repo> $ claude plugin install <mod>@<marketplace>

代表作品(星数为 2026-10-04 GitHub 数据):

界面 · 好看 // 不花 token

MOD★干什么
firstmate-calm6,543藏起密密麻麻的工具行,换成一条帆船 spinner——安静看 Claude 干活
token-ledger18提示符上方的 token 花费仪表
cc-arcade31band 里 9 个小游戏 + 电子宠物,等 Claude 改代码时打一局

安全 · 守门 // 拦在执行前

pii-guard—把出网的个人身份信息改写成占位符
secret-redactor11密钥进上下文之前抹掉
git-gates—不经你同意,禁止 commit / push / merge
budget-guard—花费超 80% 发警告,超过就拒掉工具调用

接别家 // 破次元

multi-core—在 Claude Code 里 /model 切到 ChatGPT、Cursor、Zen、Antigravity
terminal-browser3,120会话旁边开一个 Chromium 面板,网页直接跟着读
claude-roulette21等 Claude 干活时,随机匹配和另一个正在等 Claude 的人类私聊

哪里能跑

Hooks 在所有会话形态里都执行(终端、Desktop 的 Code 页、VS Code 面板、claude -p / SDK、远程控制);绘制只在终端和 Desktop 的 Code 页出现。守门类 mod 到处都有用,画面类 mod 只在前两处看得到。

§3

另一边: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。

deepseek-ai/deepseek-harness本体 · 243k ★ · developer preview(官方警告会有破坏性变更)
anywhere-labs/dsh-desktop 等桌面端壳 · 29.9k ★(另有多家第三方桌面实现)
awesome-dsh-plugin插件精选列表 · 17.7k ★
zhu1090093659/dsh-webWeb 插件聚合生态,经「创意工坊」分发 · 8.4k ★

注意这个格局:DSH 的插件生态规模不小,但它的「mod」叫 plugin,机制走 cordis.yml 组合,和 Claude 的 marketplace / plugin.json 是两套世界——这正是需要一座桥的原因。

§4

「可以直接迁移」?先看官方原话

你看到的说法大概率来自 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 没有的概念同上
  • telemetrytelemetry.*、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」。等它出实验阶段再当真。

§5

两边各花一分钟

CLAUDE CODE · 装 mods

$ claude --version # ≥ 2.1.287 $ claude plugin marketplace add owner/repo $ claude plugin install mod@marketplace

会话里 /plugin 看已装;claude --safe-mode 一次全关。

DEEPSEEK HARNESS · 跑 DSH

$ npx @deepseek-ai/dsh web # → http://127.0.0.1:3080

兼容层在 experimental 包 @deepseek-ai/dsh-experimental-claude-code-mods;mod 需按 defineMod() 包一层挂进 cordis.yml。

两句安全提醒。① Mods 不沙箱:它有你的全部权限——读写文件、跑程序、发网络请求、看到每一条提示词、花你的模型额度,只装信得过的作者,装前可以 claude plugin validate 审一遍。② DSH 是 developer preview,官方明说会有破坏性变更;今天跑通的 mod,下个 alpha 可能就断。