前言¶
DeepSeek Harness(DSH)自带针对 Claude Code、Codex、ACP 的子智能体实现:每次任务走内置运行时副本,通常只把最终结果交回会话。若你已经在机器上安装并登录了 claude、codex 等 CLI,更希望沿用本机账号、权限与配置,并且让主会话里的 DSH 智能体能在后台派发任务、稍后追问同一条「线」,就需要把调度接到本机原生进程上。
下面介绍社区插件 dsh-native-runtimes(维护者 william-jin-cmu,分类:工作流)。它以 MIT 许可发布,当前 GitHub 星标为 0,版本 0.1.0。
这是什么¶
dsh-native-runtimes 是 DSH 的工作流类插件:在 Harness 内驱动你已经安装的本机 Claude Code、Codex 以及符合 ACP(Agent Client Protocol)的智能体,而不是只用 DSH 捆绑的那份运行时。
插件做两件事:
- Sessions(会话模型):在会话的模型选择器里出现 Claude Code、Codex;选中后由本机 CLI 在该会话目录里跑,每条消息延续同一条 CLI 对话。
- Threads(线程):DSH 智能体可以把任务交给上述运行时后台执行,并通过工具在同一 thread 上跟进。
与 DSH 内置子智能体的区别可以概括为:内置版面向「单次任务、只要最终答复」;本插件面向「你自己的 CLI + 登录态 + 设置 + 权限」,并把每次协作收成智能体可继续跟进的 thread,你也可检视其状态与活动。
核心功能¶
Sessions¶
在会话里从模型选择器挑选 Claude Code 或 Codex,照常输入即可。
- 运行时自带自己的指令、工具、上下文与权限;对 DSH 的每次请求,只传递你的新消息(及附件图片),不会带上 DSH 的系统提示与工具,因此这些 session 里 不可用 DSH 工具与 skills。
- 运行过程中的命令、编辑、搜索、思考等出现在该轮的 process 折叠区;最终答复即回复正文。
- 运行中会话切换到这些模型时,会把此前对话 复述一次 给运行时。
- 标题等一次性请求走无工具的单次调用(Claude Code 对此类请求使用
haiku)。 - 权限确认 不能 在 DSH 里点选:Claude Code 按
permissionMode运行,Codex 在其sandbox中运行。
只有在本机能找到对应 CLI 且 你已登录时,才会提供该运行时。
Threads 与智能体工具¶
示例说法(来自 README):「让 Claude Code 修这个仓库里失败的测试,并告诉我改了什么。」
智能体可用工具如下:
| 工具 | 作用 |
|---|---|
thread_start |
在指定目录把任务交给 claude-code、codex 或 acp:<name>;立即返回 thread id,工作在后台执行 |
thread_send |
在同一线程上追问;运行时恢复自己的 session,仍记得此前操作 |
thread_list |
列出所有线程,按最新活动时间排序,含更早 DSH 会话创建的线程 |
thread_read |
读取任务、状态与最新完整回复;带 activity 时可看最新一轮的命令与工具调用 |
thread_stop |
中断正在执行的一轮并结束其启动的进程;线程之后仍可继续 |
runtime_usage |
查询 Claude、Codex 订阅额度用量及限额重置时间 |
一轮结束时,发起该 thread 的 DSH 会话会收到含回复的通知;空闲智能体会被唤醒,忙碌者下一步可见。通知中超过 4000 字符的回复会截断,完整内容经 thread_read 获取。
若 thread_send 时线程正在执行一轮,消息会排队下一轮执行;只允许一条 排队,第二条会被拒绝直至该线程发出下一条通知。
各运行时的驱动方式(摘要)¶
- Claude Code:
claude -p --output-format stream-json --verbose --permission-mode <mode>,每轮一个进程;追问加--resume <session id>。 - Codex:
codex exec --json --skip-git-repo-check -c sandbox_mode="<mode>",每轮一个进程;追问用codex exec resume <thread id>。 - ACP:配置命令经 stdio 说 ACP;进程在轮次之间保持存活,空闲
acpIdleMinutes后关闭;追问可能session/resume或session/load,否则新开会话并在 activity 中说明上下文丢失。
线程内 无法 代答权限提示。Claude Code 默认 acceptEdits;Codex 默认 workspace-write 沙箱;ACP 默认 autoApprove。
安装与启用¶
依赖:DSH >=0.2.1-rc.5 且 <0.3.0,Node.js 22.19 或更新。
命令行(README 原文):
dsh plugin --profile web add dsh-native-runtimes
桌面端:Plugins > Add plugin,输入 dsh-native-runtimes。
安装前请注意:插件随 DSH 进程权限运行,宜自行查看仓库源码与 MIT 许可证。仅支持 macOS 与 Linux。
配置¶
在 $DSH_HOME/profiles/<profile>/cordis.patch.yml 中覆盖配置。patch 会 整体替换 config,因此只需改动的键也要把要保留的项一并写出。
默认结构(节选,字段以 README 为准):
- id: native-runtimes
name: dsh-native-runtimes
config:
sessions: true
claude:
command: ''
model: ''
permissionMode: acceptEdits
models: [opus, sonnet, haiku]
sessionArgs: ['--thinking-display', 'summarized']
codex:
command: ''
model: ''
sandbox: workspace-write
models: []
acp:
gemini:
command: gemini
args: ['--experimental-acp']
env: {}
autoApprove: true
maxConcurrent: 4
turnTimeoutMinutes: 60
acpIdleMinutes: 15
permissionMode 可选:acceptEdits、default、plan、dontAsk、bypassPermissions。Codex sandbox 可选:workspace-write、read-only、danger-full-access。
数据存放与额度查询¶
线程状态默认写在 $DSH_HOME/ntr/threads/<id>.json(常为 ~/.dsh/ntr/threads/)。DSH 退出时仍在跑的线程,下次启动标为 interrupted,可用 thread_send 继续。
runtime_usage 读取各 CLI 已有登录信息(如 macOS Keychain 项「Claude Code-credentials」或 ~/.claude/.credentials.json、~/.codex/auth.json),经 curl 访问厂商用量接口,不 刷新或写入 token,代理设置沿用本机。
适用场景与限制¶
适合:已在本机配置 Claude Code / Codex / ACP,且希望 DSH 主智能体以 thread 方式派活、后台跑、可追问;或希望在会话模型里直接选本机 Claude Code / Codex,并能在 process 折叠区看到其过程。
需要接受的限制(README 明确列出):
- 线程 unattended,无法在转动过程中代答运行时的问题或为单次操作点批准。
- activity 只是一行一条摘要;完整 transcript 留在各 CLI 自己的 session 存储。
thread_stop结束进程组,但运行时自行 detach 的命令可能继续存活。- 社区目录 SkillHub 插件页 与 GitHub 仓库独立于 DeepSeek / 幻方,属社区「一切皆插件」生态,并非官方应用商店条目。
结尾¶
经过上面的步骤,可以把 DSH 从「仅用内置子智能体拿最终结果」,扩展到「调度本机已登录的 Claude Code、Codex 与 ACP,并以 Sessions 对话或 Threads 跟办」。进一步细节与 Issue 见仓库:william-jin-cmu/dsh-native-runtimes。