ZSeven-W/dsh-crew
DeepSeek Harness (DSH) plugin: dispatch work to DSH agents from Claude Code / Codex — native subagent progress, in-host worker sessions with per-tier presets, and a multimodal bridge that lends the text-only harness vision and image generation.
This is a DeepSeek Harness (DSH) plugin. Review its GitHub README, installation information, maintenance status, and public security signals here.
DSH Crew
DeepSeek Harness 插件:在 Claude Code / Codex 里把活派给 DSH agent,同时保留宿主原生的子代理界面。
原生进度 UI • 档位策略与失败升档 • DSH 会话进宿主 • 视觉与生图 • 一键安装
npm: @zseven-w/dsh-crew · 当前插件版本: 0.1.0-rc.1 · 已在 DSH 0.1.0-rc.6 验证
English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Français · Español · Deutsch · Português · Русский · हिन्दी · Türkçe · ไทย · Tiếng Việt · Bahasa Indonesia
DSH Crew 设置页 —— 宿主集成、派发策略、执行方式与多模态桥
为什么用 DSH Crew
DSH Crew 是 DeepSeek Harness(DSH,开源 agent harness)的插件,它让 DSH agent 可以从 Claude Code 与 Codex 里被派活:orchestrator 的模型不变,活由真正的 DSH agent 去干——用的是这套 harness 的工具、沙箱、预设与会话历史——而在宿主里它仍然是一个带实时进度的原生子代理。
干活的是 DSH agent,不是一次裸的模型调用。档位(flash / pro)决定这个 agent 从 harness 已配置的模型阵容里拿到多强的能力(目前是 DeepSeek V4 Flash 与 V4 Pro)——DSH 那边换模型,这边不用改。
🧵 原生进度 UIworker 在 Claude Code / Codex 里就是普通子代理——派了几个、跑到第几步、调了多少工具、花了多少 token,都显示在宿主自己的任务面板里;claude-hud 还有一行状态栏段: |
🎚️ 档位策略与失败升档机械活走 |
🏛️ DSH 会话跑在宿主里把 bundle 装进 DSH profile 后,每个 worker 都是一等公民的 DSH 会话:出现在 Web UI 列表、按工作目录归组、按档位挂上你指定的 Agent 预设。DSH 没在跑时,派发自动回落到独立的 DSH runtime,CI 与无界面环境照样可用。 |
👁️ 视觉与生图DSH 用的模型是纯文本的。 |
🔌 自定义 Provider接自己的端点(Base URL + API Key + 模型),或写一条本地命令模板。每个 provider 都有连通测试:查可达性与鉴权,再真发一次视觉请求——现在就知道通不通,而不是任务跑到一半才发现。 |
📦 一键安装设置页替你安装和更新 Claude Code 插件与 Codex 角色文件——marketplace 注册、权限白名单、HUD 接线、按本机渲染绝对路径——也同样一键还原。所有配置文件改动前都会先备份。 |
工作方式
Claude Code / Codex(orchestrator,模型不变)
└─ ds-flash / ds-pro ← 原生子代理壳(进度出现在宿主任务 UI)
└─ MCP: dsh_run_worker(tier, effort, cwd)
├─ hub 可达 → DSH 内的会话(Web UI 可见,按 cwd 归组)
└─ 否则 → dsh-jsonrpc-agent 独立 runtime(worker.cordis.yml)
└─ DeepSeek V4 Flash / Pro(DSH SDK,事件流 → 进度与 token 统计)
一次派发,两个视角
派发是可以铺开的。下面这次,18 个 worker 并行翻译这份 README:宿主把它们算作自己的子代理,harness 则把它们当作真实会话来跑。
Claude Code 里,dsh-crew worker 就是原生子代理;状态栏段实时显示在跑的档位、耗时与 token。
DSH Crew 面板从 harness 一侧看同一次运行:每个任务由哪个宿主派出、档位与推理强度、实时进度与 token 消耗。
安装
从 npm 装进 DSH profile:
dsh plugin --profile web add @zseven-w/dsh-crew@latest
dsh web
或者从源码树本地开发:
dsh plugin --profile web add link:/path/to/dsh-crew
dsh web
link: 协议把 profile 依赖软链到本仓库,改完重新构建即时可见。
配置 DeepSeek 凭据(standalone 模式专用)
在 hub 模式下 — 即上面的安装方式 — worker 运行在 DSH 实例内部,使用 DSH 实例已配置的 DeepSeek 凭据。无需额外设置。
仅 standalone 回落方案需要自己的 key:从 Claude Code / Codex 派发任务而没有 DSH 实例运行时,会启动一个独立的 worker runtime 进程。从 platform.deepseek.com 取 API key,写入 ~/.config/dsh-crew/.env:
DEEPSEEK_API_KEY=sk-...
自检
node scripts/smoke.mjs
smoke 测试会挑一条可用的路径派一个廉价任务——DSH 实例在跑就走 hub,否则走 standalone——并打印实际用的是哪条。十几秒内看到 smoke test passed — configuration OK 即配置成功。失败会打印具体原因,且只针对实际测的那条路径。
然后打开 设置 → DSH Crew,一键装好 Claude Code / Codex 集成。
背景与术语
- DSH(DeepSeek Harness):DeepSeek 的开源 agent harness,Web UI 形态的编码代理,类似 Claude Code 但驱动 DeepSeek 模型。
- MCP(Model Context Protocol):Anthropic 的 AI 工具接入协议,让 LLM 安全调用外部工具与数据源。
- Cordis bundle:DSH 的插件格式,本项目既可作独立 MCP 服务,也可装进 DSH Web 成为 hub 模式。
- tier:能力档位,决定 worker 从 DSH 已配置的模型阵容里拿到哪一档——
flash快而省(适合简单任务),pro推理强(适合复杂问题)。当前对应 DeepSeek V4 Flash 与 V4 Pro;DSH 换模型,这边不用改。 - worker:被派去干活的 DSH agent —— 一个完整的会话,自带工具、沙箱与预设,不是一次裸的模型调用。
- effort:推理强度,
off= 不用推理,high= 高投入推理,max= 最大推理投入。
Claude Code
安装
一键安装(二选一):
- DSH 设置页(已装 hub 模式时):设置 → DSH Crew → "安装到 Claude Code"
- 命令行:
node src/install/cli.mjs all
两者做同样的事:注册本地 marketplace(父目录 dsh-plugins/ 为 marketplace 根) + claude plugin install + MCP 工具权限白名单 + claude-hud worker 状态段配置(改动前自动备份 settings.json,幂等)。安装后重启会话生效。
使用
- 直接在对话中说 "把 X 派给 ds-flash" 或 "把 X 派给 ds-pro",子代理会执行任务
- 派发数量与实时进度显示在 Claude Code 的任务 UI
- HUD 状态栏段:
⚙dsh 1▶pro 2m14s 21.7k/606 ✓3(当前档位 / 耗时 / token 占用 / 完成计数)- 本地开发用
statusline/statusline.sh或statusline/worker-segment.sh可独立集成
- 本地开发用
- 超长任务:CC 对 MCP 调用有超时限制(
MCP_TOOL_TIMEOUT可调),长任务可让 orchestrator 用dsh_spawn_worker+dsh_worker_result(wait_seconds)轮询 - 本地开发调试:
claude --plugin-dir /path/to/dsh-crew临时加载
会话命令
只覆盖当前会话的全局默认值,且在工具层执法,不靠提示词自觉:
| 命令 | 作用 |
|---|---|
/dsh-crew:config | 查看或设置本会话默认值:tier=flash|pro、effort=off|high|max、mode=auto|hub|standalone、timeout=<秒>、policy=auto|flash-only|pro-only、escalate=true|false、reset |
/dsh-crew:on · /dsh-crew:off | 开关本会话的派发(关闭是硬开关,工具层直接拒绝) |
/dsh-crew:status | worker 任务实时状态:档位、进度、tokens、当前工具 |
Codex
安装
推荐用安装器(自动按本机路径渲染,并复制 /dsh-config、/dsh-status 命令):
node src/install/cli.mjs codex
或手工复制(复制后需自行修改路径):
cp codex/agents/*.toml ~/.codex/agents/ # 全局或项目级 .codex/agents/
角色文件内已预配:
- MCP server 挂载配置
default_tools_approval_mode = "approve"(必须,否则 exec 模式下工具调用被自动取消)tool_timeout_sec = 3600
注意:手工复制时,role 文件中 args 的绝对路径需按实际安装位置修改;用安装器则无需手改。
使用
- 交互 TUI 里选 "spawn ds-pro to ..." 派发任务,Active/Done 面板显示进度
codex exec模式也可直接调dsh_run_worker
会话命令
Codex 侧装的是同样两条 prompt:
| 命令 | 作用 |
|---|---|
/dsh-config | 查看或设置本会话默认值:tier=flash|pro、effort=off|high|max、mode=auto|hub|standalone、timeout=<秒>、policy=auto|flash-only|pro-only、escalate=true|false、reset |
/dsh-status | worker 任务实时状态:档位、进度、tokens、当前工具 |
MCP 工具
| 工具 | 说明 |
|---|---|
dsh_run_worker | 阻塞式派任务(tier: flash/pro,effort: off/high/max,cwd),等返回结果 |
dsh_spawn_worker | 异步派发任务,返回 job id(用于并行 fan-out) |
dsh_worker_status | 查询全部 job 的实时进度(turn/step/当前工具/token) |
dsh_worker_result | 取结果,可指定 wait_seconds 等待 |
dsh_worker_cancel | 取消指定 job,终止其 runtime 进程 |
进度同时镜像到 ~/.config/dsh-crew/status.d/(每个写入方一个分片文件,statusline / 外部监控可读)。
多模态:视觉与生图
DeepSeek 是纯文本模型,不支持图片输入与生图输出。本插件通过 MCP 工具把这两项能力外借过来:
| 工具 | 说明 |
|---|---|
describe_image | 看图回答问题(截图、设计稿、图表等),结果按 provider + 模型 + 图片 + 问题缓存 |
generate_image | 按文字描述出图,保存到指定绝对路径;输出为平面位图(需要图层编辑用 OpenPencil) |
会话贴图:在 DSH 里把模型切到 DeepSeek (视觉) ◉ 即可直接贴图。图片会留在会话里正常显示,插件在其后附上一段转写文字,并在发送前把图片剥离——你看图、模型读字。
配置
在 DSH 设置页 → DSH Crew → 多模态(或直接编辑 ~/.config/dsh-crew/config.json)配置:
视觉 provider(看图):
claude-code(默认,用 haiku,便宜)codex(用 GPT,可指定具体模型)grok(用 Grok)agy(Antigravity)自定义(OpenAI 兼容 API 或本地命令)off(禁用)
生图 provider(出图):
codex($imagegen,gpt-image-2)agy(Nano Banana)grok(Imagine)自定义(OpenAI 兼容 API 或本地命令)off(禁用)
自定义 Provider
两种接入方式:
API:任何 OpenAI 兼容端点
- 填 Base URL、API Key、模型列表
- 视觉走
/chat/completions图片 base64 内联 - 生图走
/images/generations - 必须填"生图模型"才具备生图能力,否则该 provider 只出现在视觉选择里
CLI:本地命令模板,占位符经安全引用后代入
- 视觉:
{image} {question} {model}→ stdout 作为答案 - 生图:
{prompt} {output} {size}→ 命令须写出文件到{output} - 两条命令至少填一条;填了哪条就具备哪项能力
连通测试:每个自定义 provider 都有测试按钮
- API:检查端点可达性、鉴权,真发一次视觉请求验证
- CLI:检查可执行文件,真跑一次命令验证
- 生图:仅校验配置,不实际出图
借用的订阅 CLI(claude / codex / grok / agy)需要你本机已登录,插件不会替你绕过它们的权限。
Hub 模式
本包同时是合法的 DSH bundle(dsh.bundle + cordis.patch.yml)。执行 dsh plugin add dsh-crew 装进 DSH Web profile 后:
- Worker 会话一等公民化:以 first-class session 运行在 DSH host 里(
agents.create+ per-session model/effort waterfall + 默认 preset),出现在 Web UI 会话列表,随时可点开围观完整执行过程 - 按工作目录归类:Web UI 中按 cwd 管理 worker 会话
- Loopback API:
POST/GET /_dsh/dsh-crew/jobs:spawn 任务、列表、长轮询结果、cancelGET /_dsh/dsh-crew/ping:健康探测(MCP shim 靠它判断 hub 是否在跑)POST /_dsh/dsh-crew/install:一键安装 Claude Code / Codex 集成(即src/install/的后端)
- 自动探测:CC/Codex 的 MCP shim 自动探测 hub(
DSH_CREW_HUB环境变量,默认http://127.0.0.1:3080)- DSH Web 在跑 → job 进 hub 模式(
mode: "hub") - 没跑 → 回落 standalone runtime
- DSH Web 在跑 → job 进 hub 模式(
方案选择与限制
日常订阅用户 → 壳 subagent 方案(推荐)
- 现状:Claude Code 壳子代理用 haiku 中转,每次派发多花几百~几千 token
- 权衡:用少量 Anthropic token 换取原生任务 UI、进度实时显示、无需额外配置
- 建议:如果你已订阅 Claude Pro 或用 Claude Code,用这套——省事且透明
按量付费 / CI 环境 → Router 直连方案
- 现状:Claude Code 子代理的 frontmatter 不支持直连第三方模型;本仓库 scratchpad 里的 router 实验方案需要 API-key 凭据的 Claude Code,但订阅 OAuth 会被 Anthropic 上游 403
- 建议:
- 如果用 API-key 凭据(非 OAuth)且想省 Anthropic token,可在本地跑 router 直连 DeepSeek
- CI 环境通常也是 API-key,该方案更经济(全部用 DeepSeek token)
- 需要自行测试 router 集成(非官方支持)
跑着 DSH Web → Hub 模式自动启用
- 现状:若
dsh plugin add dsh-crew装进 DSH Web profile,job 以一等公民会话跑在 host 里,出现在 Web UI 会话列表 - 建议:本地开发迭代时推荐启用 hub 模式,worker 进度可在 Web UI 完整围观;跨机器协作或无 Web UI 环境用 Claude Code / Codex 壳方案
已知事项
- Codex 角色理论上可试
model_provider直指 DeepSeek(未验证);本桥不依赖它 - 生图输出为平面位图,需要分层编辑用 OpenPencil
- 运行时依赖:仅
@modelcontextprotocol/sdk与zod;@deepseek-ai/*为 peerDependencies(由 DSH 宿主提供) - Codex 必须配置:
default_tools_approval_mode = "approve",否则工具调用被自动取消
开发
pnpm install
node_modules/.bin/tsdown src/client/index.tsx --format cjs --platform browser \
--target es2022 --tsconfig tsconfig.client.json --out-dir .client-build --clean
node scripts/build-client.mjs # 把 bundle 包装成 DSH 模块加载器格式
node scripts/smoke.mjs # 真实派发一个 flash 任务做端到端自检
运行时依赖只有 @modelcontextprotocol/sdk 与 zod;所有 @deepseek-ai/* 都是 peerDependencies,由 DSH 宿主提供——这样插件才留在宿主的单一模块 realm 里。
生态
- DSH Noema —— DSH 的长期记忆
- DSH OpenPencil —— 在对话里预览与编辑
.op设计文档
许可
MIT
Security & install evidence
This score is based solely on public repository metadata and the install evidence registered here — it is not a code security audit.
From a public plugin catalog, linked to a public GitHub repository.
The repository declares the MIT license.
Code updates within the last 180 days.
No verifiable install metadata registered yet — please review the repository instructions manually.
The inspected package metadata declares no install lifecycle scripts.