Windows版DeepSeek Harness调用Codex和Claude Code教程

实用教程 admin 19分钟前 3次浏览 0个评论

介绍

DeepSeek Harness(DSH)可以把一个独立任务交给原生 Codex 或 Claude Code 执行,再把最终结果交回当前对话。对应的真实工具名是 subagent_codexsubagent_claude_code。有些人会把后者写成 subagent_claude_codex,这是笔误,后文统一使用正确名称 subagent_claude_code

这篇教程以 Windows 的 web Profile 为例,讲清楚 Provider 安装、Preset 工具暴露、权限、重启、前后台调用和常见故障。命令里的 web 可以替换为你实际使用的 <profile>。本文已按本机 DSH 0.1.5-rc.2、已安装 Bundle 文档和 DeepSeek Harness 官方仓库核对。

Windows版DeepSeek Harness调用Codex和Claude Code教程

先理解两层配置

安装 Bundle 和让模型看到工具是两件事,缺一不可:

层级 作用 对应配置
Profile / Host 注册 codexclaude-code Provider,提供实际运行能力 安装两个 Bundle,并在需要时设置 permissionModeenv
Agent Preset 决定某个会话的模型能否调用 Provider 暴露 subagent_codexsubagent_claude_code 两个工具

只安装 Provider 时,Host 已经具备能力,但普通 Agent 仍看不到工具;只在 Preset 里启用工具而未安装 Provider,工具也找不到实际后端。

这两个 Bundle 使用包内锁定的原生 CLI/SDK 载荷,不会因为系统 PATH 中恰好有 codexclaude 就自动启用,也不会回退到全局 CLI。不过,Codex 和 Claude Code 的原生登录、用户配置、项目配置仍然是权威来源,DSH Provider 不会替你创建账号、登录或改写原生设置。

安装前建议先确认原生产品能够正常认证。Codex 可使用 codex login;Claude Code 可先运行 claude,再在交互界面执行 /login。如果已经登录并能正常使用,一般不需要重复操作。

安装两个Provider Bundle

打开 PowerShell,执行:

dsh plugin --profile web add @deepseek-ai/dsh-subagent-codex
dsh plugin --profile web add @deepseek-ai/dsh-subagent-claude-code

官方命令会把包安装到目标 Profile,同时把 Bundle 加入 Profile 清单。不要只在目录中运行普通 pnpm add,否则可能只装了依赖,却没有完成 Bundle 注册。

检查安装结果:

$ProfileDir = "$env:USERPROFILE\.dsh\profiles\web"
$Profile = Get-Content "$ProfileDir\package.json" -Raw | ConvertFrom-Json
$Profile.dependencies.PSObject.Properties.Name |
    Where-Object { $_ -like '@deepseek-ai/dsh-subagent-*' }
$Profile.dsh.profile.bundles |
    Where-Object { $_ -like '@deepseek-ai/dsh-subagent-*' }

依赖和 dsh.profile.bundles 中都应出现:

@deepseek-ai/dsh-subagent-codex
@deepseek-ai/dsh-subagent-claude-code

还可以先检查合成配置是否有效:

dsh --profile web --dump-config > $null
if ($LASTEXITCODE -eq 0) { 'Profile 配置合成成功' }

配置Provider权限

Profile 的用户补丁文件位于:

%USERPROFILE%\.dsh\profiles\web\cordis.patch.yml

下面是追加片段,不是完整文件。保留文件中所有现有内容,把两段追加到顶层 YAML 数组;如果已经存在相同 id,就在原有 config 中修改,不要再写一份重复项。

普通用户日常编码可先采用下面的折中方案:Claude Code 允许文件编辑但拒绝其他无人值守权限请求,Codex 自动评审权限请求。

- id: subagent-claude-code
  config:
    permissionMode: acceptEdits

- id: subagent-codex
  config:
    permissionMode: approve-for-me

Claude Code权限模式

行为 建议
dontAsk 不弹出提示,未提前授权的操作直接拒绝 默认值,适合只读分析
acceptEdits 自动接受文件编辑,其余权限请求拒绝 普通编码用户优先考虑
auto 交给 Claude Code 原生分类器自动允许或拒绝 熟悉原生自动权限后再用
plan 只做规划,不执行需要审批的操作,完整计划作为最终答案返回 适合先审方案
bypassPermissions 跳过权限检查 高风险,仅限隔离且可信的环境

Codex权限模式

行为 建议
never 永不申请审批,在原生 sandbox 中执行;不允许的操作会失败 默认值,适合审查和只读任务
approve-for-me 使用 workspace-write,由 Codex 自动评审权限请求,不等人工确认 普通编码用户优先考虑
dangerously-bypass-approvals-and-sandbox 跳过审批和 sandbox,获得 danger-full-access 极高风险,只能显式启用

本机当前为了无人值守执行,实际使用的是下面这组全权限配置

- id: subagent-claude-code
  config:
    permissionMode: bypassPermissions

- id: subagent-codex
  config:
    permissionMode: dangerously-bypass-approvals-and-sandbox

这会允许子代理在父会话工作区中运行命令、修改甚至删除文件,并绕过常规审批或 sandbox。普通用户不要直接照抄;确需使用时,应在可信仓库、虚拟机或容器中运行,并提前提交代码或做好备份。

使用环境变量凭据

两个 Provider 会先清理父进程环境中具有凭证特征的变量,再叠加 Provider 的 env。因此,如果你不是使用原生登录文件,而是依赖 OPENAI_API_KEYANTHROPIC_API_KEY 等环境变量,就要在相应 Provider 的 config 中显式传入。

下面仍是追加到现有 Provider 的 config 内的可选字段,不要重复创建相同 id,也不要把真实密钥直接写进 YAML:

- id: subagent-claude-code
  config:
    permissionMode: acceptEdits
    env:
      ANTHROPIC_API_KEY: !!js process.env.ANTHROPIC_API_KEY

- id: subagent-codex
  config:
    permissionMode: approve-for-me
    env:
      OPENAI_API_KEY: !!js process.env.OPENAI_API_KEY

先在 Windows 用户环境中安全保存变量,再从新开的 PowerShell 启动 DSH。使用原生网页登录状态时通常不需要这两个 env 字段。

暴露两个委派工具

不要直接修改 DSH 安装目录中的内置 standard Preset,升级后可能被覆盖。推荐复制内置标准模式,创建一个用户 Preset,例如:

ID:standard-native-subagents
名称:标准模式 + 原生子代理

最稳妥的做法是在 DSH 中新建“创造模式”会话,把下面这段发给它:

请复制内置 standard Agent Preset,创建一个用户预设:

ID:standard-native-subagents
显示名称:标准模式 + 原生子代理

保留标准模式的所有配置,只修改以下两项:
1. 启用 tool-subagent-codex
2. 启用 tool-subagent-claude-code

两个工具使用:
- provider: codex / claude-code
- toolName: subagent_codex / subagent_claude_code
- backgroundMode: one-shot
- maxDepth: provider-managed

不要修改内置 standard 预设。创建后执行 standingKeyFor 挂载校验。

用户 Preset 通常位于:

%USERPROFILE%\.dsh\.agent-presets\standard-native-subagents\

复制后的 agent.cordis.yml 已经有这两行,只要删除各自的 disabled: true。下面是启用后的局部片段,位置在 delegation 组的 config 列表中,不是完整文件,也不要在已有行之外重复追加:

    - id: tool-subagent-codex
      name: '@deepseek-ai/dsh-tool-subagent'
      config:
        provider: codex
        toolName: subagent_codex
        backgroundMode: one-shot
        maxDepth: provider-managed

    - id: tool-subagent-claude-code
      name: '@deepseek-ai/dsh-tool-subagent'
      config:
        provider: claude-code
        toolName: subagent_claude_code
        backgroundMode: one-shot
        maxDepth: provider-managed

preset.yml 是这个目录中的完整小文件,可以写成:

name: 标准模式 + 原生子代理
description: 标准模式的用户副本,额外启用 Codex 与 Claude Code 原生子代理。

懒人版:让Agent自动安装配置

不想一步步手装的话,把下面整段交给具有本机文件和 PowerShell 权限的 DSH“创造模式”Agent 或其他可信编码 Agent。不要在提示词里粘贴任何密钥:

请直接在 Windows 上安装、配置并验证 DeepSeek Harness 的 Codex 与 Claude Code 原生子代理,做完告诉我结果,不要反问。

目标 Profile 是 web;若实际不存在,先报告并停止。操作前读取并备份 %USERPROFILE%\.dsh\profiles\web\package.json 和 cordis.patch.yml,不得覆盖现有配置。

1. 执行:
   dsh plugin --profile web add @deepseek-ai/dsh-subagent-codex
   dsh plugin --profile web add @deepseek-ai/dsh-subagent-claude-code
2. 确认 web Profile 的 dependencies 和 dsh.profile.bundles 都包含上述两个包,并运行 dsh --profile web --dump-config 做合成校验。
3. 在 cordis.patch.yml 的既有顶层数组中配置 Claude Code permissionMode 为 acceptEdits、Codex permissionMode 为 approve-for-me。已有相同 id 就合并 config,禁止重复和整文件覆盖。
4. 不要索取、读取或输出 API Key。原生登录是权威来源;若用户明确依赖环境变量,只用 !!js process.env.ANTHROPIC_API_KEY / OPENAI_API_KEY 映射到 Provider env,绝不把真实值写入文件。
5. 复制内置 standard Preset 为用户 Preset standard-native-subagents,显示名称“标准模式 + 原生子代理”;只删除 tool-subagent-codex 和 tool-subagent-claude-code 两行的 disabled: true,保持 provider、toolName、backgroundMode: one-shot、maxDepth: provider-managed 不变。不得修改内置 standard。
6. 执行 standingKeyFor 挂载校验。不要擅自终止正在运行的 DSH;告诉我完整停止 dsh web、打开新 PowerShell并重新运行 dsh web。
7. 我回复“已重启”后,使用该 Preset 新建会话,确认工具目录中有 subagent_codex 和 subagent_claude_code,并分别进行一次只读真实调用:只检查当前工作区并返回一句概述,不修改文件。
8. 最后报告 Bundle 版本、Profile 校验、Preset 路径、两个工具是否暴露、两次真实调用结果和安全配置,不显示任何凭据。

完整重启并验证

安装 Bundle 或修改 Profile 后必须完整重启 DSH Web Profile,仅刷新浏览器不够:

  1. 在运行 dsh web 的 PowerShell 中按 Ctrl+C
  2. 等进程完全退出;
  3. 如果刚设置了 Windows 用户环境变量,关闭并重新打开 PowerShell;
  4. 回到平时使用的工作目录,运行:
dsh web

然后刷新页面,使用“标准模式 + 原生子代理”新建会话。已有内容的旧会话不会动态获得新工具,也通常不能中途切换 Preset。

先做两次只读冒烟测试:

请调用 subagent_codex,只读检查当前项目,不要修改文件。返回是否成功启动,并用一句话概述项目。
请调用 subagent_claude_code,只读检查当前项目,不要修改文件。返回是否成功启动,并用一句话概述项目。

两者都会继承父 DSH 会话的当前工作目录。每次调用都是一个全新的、一次性的原生线程或 query,不会续接上一次子代理会话;父 Agent 只收到最终答案或安全错误,不会收到完整推理、工具过程、stderr 或工作区 diff。

工具参数和后台任务

模型调用两个工具时常用三个参数:

参数 作用
description 给父 Agent 和任务列表看的简短说明,例如“审查登录模块”
prompt 发给子代理的完整、自包含任务,写清范围、限制、输出和是否允许改文件
run_in_background false 或省略时前台等待;true 时立即返回 Job ID

两个工具都配置为 backgroundMode: one-shot。前台调用时,父 Agent 会等待子代理执行完再继续回复;项目较大或网络较慢时,界面可能长时间没有新输出,看起来像“卡住”。这不一定是 DSH 死锁。

耗时任务建议直接这样说:

请调用 subagent_codex 在后台只读审查当前项目的权限边界。description 写“Codex 权限审查”,prompt 中要求列出高、中、低风险并附文件位置,run_in_background 设为 true。启动后把 Job ID 告诉我,完成时用 job_output 取回结果。
请调用 subagent_claude_code 在后台检查测试覆盖缺口。description 写“Claude Code 测试审查”,prompt 中要求只读、不修改文件、按优先级给出建议,run_in_background 设为 true。任务完成后用 job_output 获取最终结果。

后台启动后会先得到 Job ID。任务仍在运行时,可以让父 Agent 稍后用 job_output 查询;收到完成通知后,再用 job_output 获取最终答案或失败状态。确定不再需要时可用 job_kill 取消。Provider 没有按实际经过时间自动触发的总超时,长任务不要一直放在前台等。

常见问题

现象 常见原因 处理办法
提示工具不存在 当前会话使用的 Preset 没暴露工具,或是安装前创建的旧会话 选择启用两个工具的用户 Preset,新建会话
Provider 已安装,模型仍看不到工具 只完成了 Profile 层,Preset 中两行仍有 disabled: true 检查自定义 Preset,启用两条工具行
工具存在,但调用时报 Provider 不可用 Bundle 未进入 dsh.profile.bundles,或 Profile 未完整重启 dsh plugin 重装、检查 package.json,完整重启
写文件或运行命令被拒绝 无人值守权限模式较保守,子代理不会停下来等人工批准 选择合适的 permissionMode;不要为省事直接上全权限
登录、模型或联网工具失败 原生 Codex/Claude Code 登录、配置、代理、MCP 或网络不可用 先在原生产品中验证;DSH Provider 不代替登录和原生配置
用环境变量登录却提示无凭据 凭证特征变量被清理,未通过 Provider env 显式传入 !!js process.env... 映射,并从新终端重启 DSH
后台调用只返回 Job ID 这是正常行为,最终结果不会直接附在启动响应中 等完成通知或稍后使用 job_output
修改 YAML 后行为没变化 Host 仍在使用旧 Profile,或当前会话工具目录已固定 完整停止并重启 dsh web,然后新建会话
前台调用像卡死 子代理仍在运行,且 Provider 没有总运行超时 优先使用 run_in_background: true,必要时 job_kill

如果 DSH 自带联网搜索可以使用,但 Codex 或 Claude Code 子代理的联网/MCP 工具失败,也应优先检查对应原生产品的设置与权限。它们是独立运行环境,不会自动继承父 Agent 的所有工具。

安全建议

  • 第一次验证只做只读任务,确认登录、工作目录和结果回传都正常后再允许写入;
  • 普通编码优先使用 Claude Code 的 acceptEdits 和 Codex 的 approve-for-me,按任务逐步放宽;
  • bypassPermissionsdangerously-bypass-approvals-and-sandbox 只适合可信、隔离、可回滚的环境;
  • prompt 要自包含,明确允许修改的目录、禁止触碰的文件和验收方式;
  • 子代理取消前已经产生的文件或外部副作用不会自动回滚,重要项目先提交 Git;
  • 不要在聊天、YAML、截图或日志中暴露 API Key、Token、Cookie、代理地址等敏感信息。

小结

在 DSH 中调用原生 Codex 和 Claude Code,需要先给 Profile 安装两个 Provider Bundle,再通过自定义 Agent Preset 暴露 subagent_codexsubagent_claude_code。配置完成后必须完整重启 dsh web,并使用该 Preset 新建会话。短任务可前台等待,长任务用 run_in_background: true 启动,再通过 job_output 收取结果。

官方资料:


原频道被人恶意举报新电报频道|加入电报群
转载请注明原文链接:Windows版DeepSeek Harness调用Codex和Claude Code教程
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址