Claude Code 学习 DeepSeek Harness?Mods 能力背后的开源圈风向
Claude Code 学习 DeepSeek HarnessMods 能力背后的开源圈风向【免费下载链接】claude-code-templatesCLI tool for configuring and monitoring Claude Code项目地址: https://gitcode.com/GitHub_Trending/cl/claude-code-templates过去两周中文社区里流传着一条耐人寻味的动态Claude Code 最新版更新了 Mods 能力有自媒体直接打出致敬 DeepSeek Harness的标题英文圈里remio 则用自定义 UI 拥有完整机器访问权限来提醒这个新功能的双刃剑属性。而在人人都是产品经理的一篇实测里作者给 Claude Code 装了一个雨姐Mod——它坐在终端右侧面板里看着 Claude 跑每一条命令拦下rm -rf用东北话汇报工作。三个来源、三种态度指向同一个事实Claude Code 从 2.1.287 起默认开启的 Mods不再是一次小版本迭代而是把 AI 编程代理从黑盒执行器推向可编程、可观测、可接管的行为系统。本文不站队猜测直接从 claude-code-templates 仓库里真实存在的 mods 目录出发拆解 Mods 到底改了什么再回到 DeepSeek Harness 的联想上做一个事实辨析。一、Mods 能力到底改了什么从外挂到进程内扩展模型的一次质变要理解 Mods 改了什么先看它和既有扩展方式的区别。在 claude-code-templates 的组件体系里这四种东西长期并存且容易被混为一谈Skills给 Claude 的一份说明书靠提示词指导行为站在引擎外面MCP给 Claude 接上外部工具服务器站在引擎外面settings 里的 hooks在固定时机PreToolUse/PostToolUse 等跑一段 shell 脚本站在引擎外面Modsfunction hooks一段跑在 Claude Code 进程内部的 TypeScript 代码以register(on, options)为入口直接挂接引擎事件。仓库在 mods 目录说明 里把定义写得很清楚Claude Mods are Claude Code plugins whose behaviour lives in a function-hooks module: oneregister(on, options)entry that hooks the engines events as functions($, e, next)。 一个$是引擎暴露给插件的能力面UI、状态、HTTP、进程、存储、模型分类e是事件负载被视为只读next是事件链上的下一环。这四个字决定了能力边界Skill 只能说Mods 能做。这也是雨姐那篇文章反复强调的分界线——Mod 是跑在 Claude Code 进程里的 JavaScript/TypeScript 代码所以它能画面板、改系统提示词、在命令执行前把它拦下来。一个最小的 Mod 长什么样仓库里每一只 Mod 都是一个完整插件目录严格遵循 Anthropicmods/的布局{category}/{name}/ .claude-plugin/plugin.json name, version, description, author, license, userConfig, types hooks/hooks.json { description, modules: [./register.ts] } hooks/** 任意数量的 .ts/.tsx 文件相对导入 types/*.d.ts 可选Mod 给 $ 添加的名词契约 tests/** 可选插件测试 README.md 站点展示的说明核心只有两个文件。hooks.json声明代码位置比如 npm-to-pnpm-rewriter 的 hooks.json 只写了两行描述 modules: [./npm-to-pnpm-rewriter.ts]。register.tsx才是干活的函数。版本门槛也很明确Mods 在 Claude Code2.1.287 及以后默认开启2.1.259 到 2.1.286 需要环境变量CLAUDE_CODE_ENABLE_FUNCTION_HOOKS1。仓库里所有 mod 的 README 都把这一条写在 Requirements 里例如 git-sidebar 的安装说明。三种放置位旁观、改写、接管Mod 挂上事件后对每件事有三种处置方式这也是整个机制最精髓的部分。仓库里的安全类 mod block-destructive-commands 是最干净的接管示范它挂tool.call事件并限定{ tool: Bash }内置一批危险命令正则——递归删根目录的rm、git push --force、git reset --hard、DROP/TRUNCATE、mkfs、写/dev/的dd——一旦命中就返回{ deny }且不调用 nexton(tool.call, { tool: Bash }, ($, e, next) { for (const { pattern, reason } of rules) { if (pattern.test(e.command)) { $.ui.log([block-destructive-commands] denied Bash call: ${reason}) return { deny: Blocked by block-destructive-commands (${reason}). ... } } } return next(e) })注意它的失败策略检查过程一旦出错命令也不会放行fail closed而.catch分支保证了模型拿到的错误信息足以理解边界。这与雨姐拦下rm -rf node_modules的演示如出一辙只是仓库版本更工程化——正则覆盖rm -r -f的多种变体而不是DANGER.test()的一次性玩具。改写的代表是 npm-to-pnpm-rewriter它在命令执行前把npm/npx改成项目实际使用的包管理器pnpm/yarn/bun通过next转发一份改了command的事件副本再用context告诉模型实际跑的是什么——这样模型的tool_use块保持原样prompt cache 不被破坏。旁观则是最常见的用法await next(e)放行拿到结果再做反应。cc-arcade 的宠物就是这么活着的——它挂tool.call观察 Claude 的每次测试、提交、编辑按规则给宠物喂经验值全程不消耗 token、不联网、不留存命令文本。UI 与热重载把终端变成可编程界面Mods 最直观的冲击来自 UI。仓库的 ui/git-sidebar 是一个 lazygit 风格的侧边栏列出当前仓库所有 worktree 和分支点击即可/cd切换或git switchintegrations/linear-tickets 把 Linear 工单和燃尽图直接画进侧边面板。它们都用$.ui.open({ id, title })打开 Pane用$.ui.status写状态栏用$.ui.toast弹提示用$.ui.resolve取到Box/Text组件。雨姐的实测还展示了另一个硬核细节Raster 字符画布。一个字符格装上下两个像素0x2580上半块 前景色 背景色像素图就能逐格搬进终端。这让 Mods 能渲染头像、棋盘甚至整个游戏界面——仓库 games 目录下的 cc-arcade 一口气带了九款游戏和一个养成宠物Tetris、扫雷、打字测试甚至一个用半块字符光线投射渲染的走廊射击游戏。更实用的是热重载改完register.tsx一保存会话里立刻出现yujie: reloaded (7 hooks…)不用重启。按官方说法Claude Code 自己就是这套机制的第一批用户——/diff命令的面板、AGENTS.md 加载、遥测上报都是内置 Mod。二、与 DeepSeek Harness 的对比联想致敬 DeepSeek Harness这个说法传得广但值得掰开看。DeepSeek Harness 是深度求索开源的强化学习训练/评测框架让 agent 在 Python 环境里解决真实编程任务通过执行结果和语言模型打分做自我博弈进而训练出更强的推理与工具使用能力。它的关键词是训练时作用对象是模型权重。Claude Code Mods 的关键词是运行时不改变权重只改变 agent 与环境交互的那一层。两者一个是炼模型一个是装脚手架机制并不相同。但社区把它俩并列并非毫无道理它们共享一个底层判断agent 的能力边界正在从模型权重让渡给环境、工具与策略层。DeepSeek Harness 证明了环境即数据——把执行结果喂回训练循环模型的工具能力可以凭空长出来Mods 则证明了环境即产品——把引擎的每个事件、每段 UI 开放成可编程接口agent 的行为就可以被外部策略精确定义。一个在训练期用 harness 塑形一个在运行期用 hooks 塑形方向是同一个。这个联想真正有价值的部分是它提醒我们注意 Anthropic 对开源社区的敏感度。Claude Code 的 Skills 机制就脱胎于社区先做的技能目录claude-code-templates 正是其中最大的聚合者之一如今 Mods 又迅速把社区玩法自定义面板、游戏、安全拦截、模型路由吸收进官方框架。当一个闭源工具的路线图开始密集回应开源社区的玩法时致敬与否已经不重要重要的是风向本身。三、开源 AI 编程工具互相学习的趋势把视线拉远Mods 只是这一轮互相学习的一小块拼图。其一组件库成为实验场。claude-code-templates 的 mods 目录本身就是生态互学的标本games/cc-arcade是 vendored 自第三方作者MIT 协议、作者署名、LICENSE 保留在目录内integrations/pi-agent-for-claude来自外部贡献官方声明的types/claude-code.d.ts则直接对应 Anthropic 的插件类型声明。第三方 mod 以原样收纳 归属声明的方式进入官方布局这正是开源目录该有的样貌。其二能力模块化成为标配。仓库里 productivity/jev-model-router 展示了模型路由这类能力如何变成即插即用组件它用一个轻量决策模型在prompt.submit时给任务分类机械任务降级到低成本档位、困难任务升级子代理的模型和主循环的 reasoning effort 分别可控所有失败路径 fail-open 且带超时预算。而 security/secret-redactor工具结果脱敏、observability/universal-audit-log全事件审计日志、enterprise/admin-capability-lockdown能力锁定则指向另一条主线随着 Mods 拿到完整机器访问权限安全与治理组件会从可选项变成必选项。这恰好回应了 remio 那条报道的警告——能力越靠近进程权限越大审计和信任成本也越高。其三事件模型正在趋同。Skill 是 Anthropic 先向社区学的Mods 的 hook 事件模型session.start、prompt.submit、tool.call、ui.render、turn.complete又与 OpenCode、Windsurf 等开源/竞品代理的事件系统在结构上彼此呼应。Cursor 靠编辑器深度绑定Copilot 靠模型与 IDE 生态Claude Code 押注进程内可编程 终端 UIDeepSeek 押注环境内强化学习——四家路径不同却都在做同一件事把 agent 的行为从不可预测的提示词对话改造成可定义、可验证、可拦截的工程系统。回到开头那个问题Claude Code 是不是学习了 DeepSeek Harness从机制上不是从方向上可能是。Mods 让每一个终端用户都能像训练时给 agent 设计环境那样在运行时给 agent 设计行为边界。无论灵感来自哪里这场由 Skills、Mods、harness 们共同推起来的agent 行为工程化浪潮已经不再属于任何单一项目——它是整个开源 AI 编程圈正在共同回答的下一道考题。【免费下载链接】claude-code-templatesCLI tool for configuring and monitoring Claude Code项目地址: https://gitcode.com/GitHub_Trending/cl/claude-code-templates创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考