从 Claude Code、Codex 过来:DeepSeek Harness 认哪些现成的配置
按 DeepSeek Harness 官方文档整理:项目里的 AGENTS.md 和 CLAUDE.md 默认就读;技能要放在 .agents/skills;Claude Code、Codex 的钩子有实验性桥接,只支持部分事件;模组兼容层只是演示;还能把 Claude Code、Codex 当子智能体调用。
本文根据公开分享整理,本站尚未实测。操作前请对照文末的原始来源。
本页目录(8 节)
已经在用 Claude Code 或 Codex 的人,项目里多半攒了一些东西:CLAUDE.md 或 AGENTS.md、几个技能、几条钩子、接好的 MCP 服务器。换到 DeepSeek Harness,或者两边一起用,这些东西哪些能直接用?
先给结论:
| 你已有的 | 在 DeepSeek Harness 里 | 状态 |
|---|---|---|
项目里的 AGENTS.md、CLAUDE.md |
默认就读 | 内置 |
| 技能 | 读 .agents/skills,不读 .claude/skills |
内置 |
| MCP 服务器 | 能接,要另写它自己的配置 | 内置 |
| Claude Code 的钩子 | 有桥接,30 种事件里支持 7 种 | 实验性 |
| Codex 的钩子 | 有桥接,10 种事件里支持 5 种 | 实验性 |
| Claude Code 模组 | 有兼容层,官方说是演示 | 实验性 |
| Claude Code、Codex 本身 | 可以当子智能体调用 | 官方可选插件 |
下面逐项说能用到什么程度。还没装的,先看DeepSeek Harness 安装和上手。
指令文件:AGENTS.md 和 CLAUDE.md 都读
这是最省心的一项。官方文档说明,默认的配置里已经带了读取工作区指令的插件,不用做任何设置。
读哪些文件
| 位置 | 文件 |
|---|---|
| 项目里,从项目根目录到当前工作目录的每一级 | AGENTS.md、CLAUDE.md |
| 同样的位置,本地的补充 | AGENTS.local.md、CLAUDE.local.md |
| 用户全局 | ~/.dsh/AGENTS.md,以及 ~/.agents/AGENTS.md |
项目根目录是往上找到的第一个带 .git 的目录。加载的顺序是从宽到窄:先全局,再项目根目录,一直到当前目录。
共享的那个全局目录默认是 ~/.agents,可以用环境变量 DSH_AGENTS_HOME 改,这是 0.2.1-alpha.2 加的。
两个文件内容一样只算一次
很多项目为了兼顾几个工具,CLAUDE.md 和 AGENTS.md 写的是同样的内容。官方文档专门处理了这种情况:同一位置上去掉首尾空白后内容完全一致的文件,只加载一次。
但只要两份有一点出入,就会两份都完整加载。两个文件各自维护、内容逐渐不一样的项目,它会把两份都读进去,占掉更多的上下文。
和 Claude Code 不一样的地方
官方文档在“已知限制”里列得很清楚:
- 不解释
.claude/rules/目录。 - 不解释
@路径这种引用写法。CLAUDE.md里用@docs/xxx.md引入别的文件的,那些文件不会被带进来。 - 不认小写的文件名。
- 不会监视文件变化。 你在外面改了指令文件,它要等到下一次成功读写文件,或者恢复会话时,才看到新内容。
- 用 shell 的
cd进到子目录,不会触发加载那一级的指令。 它是跟着读、写、编辑文件这些操作来发现更深一级的指令文件的。
另外,按官方列出的全局位置,Claude Code 自己的用户级文件 ~/.claude/CLAUDE.md 不在它读的范围里。想让全局的指令两边都生效,把内容放到 ~/.agents/AGENTS.md。这一条是我们根据官方列出的位置推出来的。
有总量上限
指令文件加起来有一个字节预算,默认 65,536 字节。超了的话先丢掉范围更宽的文件,最贴近当前目录的文件最后才被截断,并且会给出一条提示,点名哪些被省略、哪些被截断。
技能:放在 .agents/skills
官方文档列出了它找技能的位置,按优先级从高到低:
| 来源 | 目录 |
|---|---|
| 项目,DeepSeek Harness 专用 | <项目根>/.dsh/skills |
| 项目,共享 | <项目根>/.agents/skills |
| 自定义 | 配置里指定的目录 |
| 用户,DeepSeek Harness 专用 | ~/.dsh/skills |
| 用户,共享 | ~/.agents/skills |
列表里没有 .claude/skills。Claude Code 的技能放在那里的,它不会自动发现。
官方页面的演示里,它读的是 skills/某个技能/SKILL.md,说明技能也是一个带 SKILL.md 的目录,和 Claude Code 的形式相近。但 Claude Code 的技能拿过来能不能原样工作,官方文档没有作承诺。技能里如果写了 Claude Code 特有的工具名或用法,换过来多半要改。这一段是我们的判断。
想两边共用,可以把技能放到 .agents/skills,再在 Claude Code 那边指过去。Claude Code 的技能怎么写,见Claude Code skills 怎么写。
MCP 服务器:能接,配置要另写
DeepSeek Harness 用一个 MCP 客户端插件接外部的 MCP 服务器,支持本地的 stdio 和远程的 Streamable HTTP 两种方式。
有一点对迁移很友好。官方文档说明,工具的名字是 mcp__服务器名__工具名 这种形式,例如 mcp__github__create_issue,并特意注明这和 Claude Code、Codex 用的命名形态相同。
但配置不通用。它不读 Claude Code 的 .mcp.json 或 Codex 的 config.toml,要在它自己的配置文件里一台服务器写一条。写法见给 DeepSeek Harness 加记忆里“接入其他 MCP 服务器”一节。
钩子:有桥接,只支持一部分
这两个桥接都是实验性的,要手动加配置才生效。
Claude Code 的钩子
官方的说法是:在智能体运行期间执行你现有的 Claude Code hooks.json,或者把钩子配置放在 hooks 键下的设置文件,不用重写。
最小的配置是告诉它钩子文件在哪里:
- name: '@deepseek-ai/dsh-hooks-claude-code'
config:
configPath: ./.claude/hooks.json
projectDir: .
支持的是下面 7 种事件:
| 钩子 | 什么时候运行 | 能做什么 |
|---|---|---|
SessionStart |
会话开始 | 给模型附加上下文 |
UserPromptSubmit |
收到提示词 | 拦下提示词,或附加上下文 |
PreToolUse |
工具运行前 | 拦下工具,或要求先批准 |
PostToolUse |
工具运行后 | 带着反馈拦下结果,或附加上下文 |
Stop |
即将停止 | 给出原因,让它再做一步 |
SubagentStart |
子智能体启动 | 给子智能体附加上下文 |
SubagentStop |
子智能体结束 | 只能观察 |
官方文档自己数了:Claude Code 当前有 30 种钩子事件,其中 23 种不支持,包括 PermissionRequest、Notification、PreCompact、SessionEnd 等。不支持的事件写在配置里会被直接忽略,不会报错,也不会让整份配置失效。
还有几点行为上的差异:
- 只运行 command 类型的钩子。
- 配置在启动时读一次,改了钩子文件要重启。
- 读不了配置时只记一条警告,智能体照常启动,但一条钩子都不会运行。
- 支持的那几种事件也不是全部功能都有。比如
SessionStart只认 JSON 里的additionalContext,不认直接打印到标准输出的内容。
最后两条合起来意味着:钩子没生效时不会有明显的提示。 拿钩子做安全把关的(比如拦截危险命令),迁过来之后一定要实际触发一次,确认它真的拦住了。这一句是我们的提醒。
Codex 的钩子
Codex 的桥接同理,指向 Codex 的 hooks.json:
- name: '@deepseek-ai/dsh-hooks-codex'
config:
configPath: ./.codex/hooks.json
支持 5 种:SessionStart、UserPromptSubmit、PreToolUse、PostToolUse、Stop。官方文档说 Codex 当前的 10 种事件里另外 5 种不支持,包括 PermissionRequest 和压缩前后的两种。只运行同步的 command 钩子,标了 async: true 的会被跳过并给出警告。
这两段配置要加进 DeepSeek Harness 的配置文件里才生效,具体的加法以官方的包说明为准。
Claude Code 模组:只是演示
0.2.1-alpha.1 加了一个实验性的 Claude Code 模组兼容层。版本说明对它的定位说得很克制:
目前阶段的主要目的是验证 Claude Code Mods API 功能大致为 DeepSeek Harness 插件的一个子集,而非为用户提供实际的完整兼容性。
包的说明里也称它是“alpha 阶段的接口兼容性演示”。具体的限制:
- 模组不能直接拿来用。 要用它提供的
defineMod把模组的register函数包一层,变成一个 DeepSeek Harness 的插件。 - 只有一个能画界面的位置:提示框上方的横幅。模组里的面板、输入、快捷键这些都不支持。
- 很多事件不会触发。 能注册,但永远不会被调用,加载时会给出警告点名。
官方在仓库里放了三个例子,就是 Anthropic 那篇模组入门文章里的三个模组。
所以现阶段不要指望把现有的模组搬过来就能用。想在 DeepSeek Harness 里实现同样的功能,写它自己的插件更可靠,见DeepSeek Harness 的插件。模组本身是什么,见从零写第一个 Claude Code mod。
把 Claude Code、Codex 当子智能体
这一项不是迁移,而是一起用:让 DeepSeek Harness 在需要的时候,把一个任务交给真正的 Claude Code 或 Codex 去做。
怎么开
在插件页启用 Claude Code 子智能体 或 Codex 子智能体。按 0.2.1-alpha.2 的版本说明,它们在官方插件列表里可以按需安装。
启用之后,所有智能体会多出一个工具:subagent_claude_code 或 subagent_codex。真正委派任务之前不会启动任何进程。
它是怎么工作的
官方文档的描述,以 Claude Code 为例:
- 每次委派是一个全新的、无人值守的 Claude Code 会话,在父会话的工作区里运行。
- 交给它的是一段自成一体的文字任务,拿回来的只有最终答案,或者失败的原因。它的思考过程、工具调用、改了哪些文件的差异,都不会进到父会话里。
- 组合包自带对应版本的程序,不会去用你电脑上已经装的
claude命令。
登录和设置还是用原来的
官方文档反复强调这一点:Claude Code 和 Codex 自己的设置和登录状态“继续是权威来源”。
- 组合包提供程序,但不会替你登录、创建账户或者改设置。你要先自己把 Claude Code 或 Codex 登录好。
- Claude Code 子智能体会照常读取你机器上的用户、项目和本地设置。
- 不指定模型的话,用的是原生设置里选的模型。
有一个和接中转站有关的细节:看起来像凭据的环境变量不会传给子进程。 官方文档说明,这类变量会被去掉,要给子进程用的 API key 必须在这个插件的配置里明确写出来。所以你如果是靠 shell 里的环境变量让 Claude Code 走中转站的,子智能体拿不到那个 key;写在 Claude Code 自己的设置文件里的配置则照常读取。后半句是我们根据“照常读取原生设置”推出来的,没有实测。Claude Code 接中转站的写法见Claude Code 接入中转站。
它能不能动手:permissionMode
因为没有人能回答它的提问,子智能体的权限是在配置里定死的。
Claude Code 子智能体的几种取值:
| 取值 | 行为 |
|---|---|
dontAsk(默认) |
不提问,没有事先授权的操作直接拒绝 |
acceptEdits |
接受改文件,其他需要权限的操作拒绝 |
auto |
由 Claude Code 自己的分类器决定放行还是拒绝 |
plan |
只规划,把完整的计划作为最终答案返回 |
bypassPermissions |
跳过权限检查 |
Codex 子智能体的默认值是 never。
默认的 dontAsk 很保守。交给它的任务需要改文件时,要看你的 Claude Code 设置里有没有事先允许,否则它什么都改不了。
官方列出的限制
- 不能接着聊。 每次都是新的进程、新的会话,不支持续接和恢复。
- 不能中途问你。 提问工具被禁用,权限提示一律拒绝。
- 没有超时,也不回滚。 跑很久的任务要你自己取消;取消之前它已经改了的文件不会恢复。
- 看不到过程。 父会话里只有最终的文字。
另外,在插件页的 子智能体 设置里可以调两个上限:最大递归深度,和同时运行的子智能体数量。
什么时候值得用
官方的说法是“当隔离和真实 Claude Code 行为比续接或提示更重要时”选它。换成具体的场景,下面是我们的理解:
- 适合:一个边界清楚、可以独立完成的子任务,想让另一个模型来做或者来复核。
- 不适合:需要来回沟通、需要看它一步步怎么做的事。
也别忘了费用是两边都算的:父智能体用的是 DeepSeek Harness 里配的模型,子智能体用的是你 Claude Code 或 Codex 账号的额度。
小结
| 想做的事 | 现在的办法 |
|---|---|
| 让它遵守项目里的约定 | 什么都不用做,AGENTS.md、CLAUDE.md 默认就读 |
| 全局的指令两边共用 | 放到 ~/.agents/AGENTS.md |
| 技能两边共用 | 放到 .agents/skills |
| 接同一批 MCP 服务器 | 在它的配置里重新写一遍 |
| 沿用钩子 | 能用一部分,迁过来后逐条验证 |
| 沿用模组 | 现阶段不现实,改写成它的插件 |
| 偶尔让 Claude Code 或 Codex 出手 | 启用对应的子智能体插件 |
DeepSeek Harness 还在开发者预览阶段,上面标着“实验性”的几项变化会很快。本文按 2026-10-10 的官方文档写。
相关文章
来源
- 工作区指令 dsh-agent-instructions 说明(官方仓库)
- 技能(DeepSeek Harness 官方文档)
- Claude Code 钩子桥接 dsh-hooks-claude-code 说明(官方仓库)
- Codex 钩子桥接 dsh-hooks-codex 说明(官方仓库)
- Claude Code 模组兼容层说明(官方仓库)
- Claude Code 子智能体 dsh-subagent-claude-code 说明(官方仓库)
- Codex 子智能体 dsh-subagent-codex 说明(官方仓库)
- MCP 客户端 dsh-mcp-client 说明(官方仓库)
- v0.2.1-alpha.1 版本说明(GitHub)