教程DeepSeek Harness

从 Claude Code、Codex 过来:DeepSeek Harness 认哪些现成的配置

按 DeepSeek Harness 官方文档整理:项目里的 AGENTS.md 和 CLAUDE.md 默认就读;技能要放在 .agents/skills;Claude Code、Codex 的钩子有实验性桥接,只支持部分事件;模组兼容层只是演示;还能把 Claude Code、Codex 当子智能体调用。

发布 · 约 10 分钟读完 · 经人工审核()· 本站的内容怎么来的

本文根据公开分享整理,本站尚未实测。操作前请对照文末的原始来源。

本页目录(8 节)
  1. 指令文件:AGENTS.md 和 CLAUDE.md 都读
  2. 技能:放在 .agents/skills
  3. MCP 服务器:能接,配置要另写
  4. 钩子:有桥接,只支持一部分
  5. Claude Code 模组:只是演示
  6. 把 Claude Code、Codex 当子智能体
  7. 小结
  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 的官方文档写。

相关文章

来源

通过 API 中转站使用这些模型?到 Veridrop 免费检测中转站给你的是不是它声称的模型,或者看看中转站排行榜前 100 名。

相关文章