# dsh-crew

> 在 Claude Code / Codex 里把任务下派给 DeepSeek Harness 子智能体，作为原生子任务运行并实时显示进度。

## Metadata

- Author: [@ZSeven-W](https://github.com/ZSeven-W)
- Repo: <https://github.com/ZSeven-W/dsh-crew.git>
- GitHub: [ZSeven-W/dsh-crew](https://github.com/ZSeven-W/dsh-crew)
- Stars: 72
- Language: JavaScript
- License: [MIT](https://spdx.org/licenses/MIT.html)
- Topics: `ai-agents`, `claude-code`, `codex`, `coding-agent`, `deepseek-harness`, `dsh`, `dsh-plugin`, `mcp`, `multimodal`, `orchestration`, `plugin`, `subagent`, `typescript`
- Forks: 4
- Open Issues: 1
- Last push: 2026-08-20T16:26:17.000Z
- Added: 2026-08-17T00:00:00.000Z

## Install

```bash
dsh plugin --profile web add github:ZSeven-W/dsh-crew
```

## Wiki

## 一句话定位
dsh-crew 是 DeepSeek Harness（DSH）平台的插件，让 Claude Code 或 Codex 在保持原生子任务面板的前提下，把任务下派给 DSH 的 DeepSeek 智能体执行；同时为只支持文本的 DeepSeek 模型补上看图与生图能力。

## 核心能力
- 把任务以 `flash` / `pro` 两个层级派给 DSH 智能体，并在 Claude Code / Codex 的原生任务面板里实时显示进度、当前工具与 token 用量
- 支持同步阻塞调用（`dsh_run_worker`）与异步扇出调用（`dsh_spawn_worker`），后者可配合状态查询与轮询接口
- 当 DSH Web 实例运行（hub 模式）时，下派任务变成 DSH 一级会话，可在 Web UI 里按工作目录查看完整过程；否则自动回落到独立运行时（CI、无头环境可用）
- 为纯文本 DeepSeek 模型提供 `describe_image` 与 `generate_image` 工具，可借用 Claude / Codex / Grok / Antigravity 等本地 CLI，或任意 OpenAI 兼容端点/本地命令
- 提供一键安装到 Claude Code 与 Codex 的能力：注册本地市场、写入 MCP 工具白名单、接入 claude-hud 状态栏段，所有设置文件先备份再修改
- 可配置层级策略（强制只用 flash 或只用 pro）和失败升级（flash 失败时自动用 pro 重试一次），由工具层强制执行而非口头约定

## 技术实现
- **语言**: TypeScript / JavaScript (ESM)
- **关键依赖**: @modelcontextprotocol/sdk、MCP stdio 协议；DSH SDK 客户端（仅独立模式按需懒加载）；zod（参数校验）
- **架构模式**: 同时提供两种形态——MCP stdio 服务（`src/server.mjs`）作为 Claude Code / Codex 客户端侧的 shim；DSH Cordis 宿主插件（`src/hub/index.mjs`，通过 `cordis.patch.yml` 挂载到 DSH 运行时）作为服务端；两端用本地回环 HTTP 接口（`/_dsh/dsh-crew/jobs`）通信并自动切换
- **入口文件**: `src/server.mjs`（MCP 入口）、`src/hub/index.mjs`（DSH 宿主插件入口），外层 `package.json#dsh.bundle` + `cordis.patch.yml` 描述如何注入 DSH Web profile

## 适用场景
已订阅 Claude Pro 或日常使用 Claude Code / Codex、又想让 Claude 真正"动手做活儿"而不是只当调度员的开发者：让 Claude 把可以独立解决的子任务交给 DeepSeek 智能体执行，自己仍用熟悉的 Claude 桌面工作流；以及在 CI 等没有 DSH Web 界面的环境下，用 DeepSeek 跑编码任务。开发者日常工作中，DSH 模型只支持文本，借助插件可以用本机已登录的 Claude / Codex 等 CLI 帮它"看图"和"画图"。

## 前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | 0.1.0-rc.6+ | 插件在 DSH Web profile 中运行（hub 模式）或与 DSH 0.1.0-rc.6+ 协同（独立模式） |
| Node | 未声明 | 源码仅依赖 Node 内置模块（fs/path/crypto/child_process 等） |
| 平台 | 跨平台 | 仅使用跨平台 Node API 与子进程调用，可在 macOS / Linux / Windows 桌面系统运行 |
| 原生模块 | 无 | runtime dependencies 仅 `@modelcontextprotocol/sdk` 与 `zod`；`@deepseek-ai/*` 由宿主运行时提供 |
| Claude Code / Codex | 视宿主 | 客户端集成需要已安装 Claude Code 或 Codex 作为下派任务的载体 |

## 安装方式
```bash
dsh plugin --profile web add github:ZSeven-W/dsh-crew
```

## 配置项
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| default_tier | flash / pro | 派单使用的默认智能体层级（V4 Flash 便宜快，V4 Pro 推理强） | flash |
| default_effort | off / high / max | 派单使用的默认推理强度 | max |
| mode | auto / hub / standalone | auto 优先走 hub，没有就回落独立；hub 强制走宿主；standalone 永不连宿主 | auto |
| default_timeout_seconds | 数字 | 单次派单的最长等待秒数 | 1800 |
| tier_policy | auto / flash-only / pro-only | 工具层强制把每次派单夹到单一层级（覆盖调用方传入的 tier） | auto |
| escalate_on_failure | 布尔 | 阻塞的 flash 失败时，是否自动用 pro 重试一次（按真实失败判定，不是事先猜难度） | false |
| preset_flash | 字符串 | hub 模式下 flash 层级使用的 DSH Agent 预设（`default` 表示跟随宿主默认） | minimal |
| preset_pro | 字符串 | hub 模式下 pro 层级使用的 DSH Agent 预设 | default |
| vision_provider | claude-code / codex / grok / agy / 自定义 / off | 为 DeepSeek 提供看图能力的下游提供者 | claude-code |
| vision_model | 字符串 | 传给视觉 CLI 的具体模型名 | haiku |
| imagegen_provider | codex / agy / grok / 自定义 / off | 为 DeepSeek 提供画图能力的下游提供者 | codex |
| hub_url | URL | hub 模式自动检测的回环地址 | http://127.0.0.1:3080 |

配置通过 DSH Web 设置页 DSH Crew 面板修改，或直接编辑 `~/.config/dsh-crew/config.json`。

## 常见问题

**Q: 安装后还需要额外配什么？**

A: 如果 DSH Web 在运行（hub 模式），它已经带有 DeepSeek 凭证，插件直接可用。仅在没有 DSH 实例的纯独立模式下，需要把 `DEEPSEEK_API_KEY` 写入 `~/.config/dsh-crew/.env`。

**Q: DeepSeek 是只能纯文本的模型，图片和生图怎么办？**

A: 插件内置 `describe_image` 和 `generate_image` 两个工具，借助本地已登录的订阅型 CLI（Claude、Codex、Grok、Antigravity）或任意 OpenAI 兼容 API / 本地命令完成看图与生图；粘贴进会话的图片会自动转写为文本再发给模型。

**Q: dsh_run_worker 和 dsh_spawn_worker 怎么选？**

A: `dsh_run_worker` 是阻塞调用、拿到结果再返回；`dsh_spawn_worker` 立即返回任务 ID，适合并行扇出，再用 `dsh_worker_status` / `dsh_worker_result` 跟结果。

**Q: flash 和 pro 两个层级有什么区别？**

A: flash 跑得快、便宜，机械型任务用；pro 推理更强，适合复杂任务。可以通过 `tier_policy` 把所有派单夹到单一层级，也能让失败 flash 自动用 pro 重试一次。

**Q: 如何卸载？**

A: 在 DSH 设置页 DSH Crew 一栏点卸载按钮，或命令行 `node src/install/cli.mjs uninstall`；会清理 Claude Code / Codex 的注册和 HUD 段，并保留 settings.json 的备份。

**Q: 需要运行在哪个操作系统？**

A: 仅使用 Node 内置模块和子进程；任何能跑 Node 的桌面系统都可以，跨 macOS / Linux / Windows。

## 上手难度
入门 — 插件挂到 DSH profile 后即可在 Claude Code / Codex 里用 `dispatch X to ds-flash` 这样的自然语言派单；遇到需要看图或换预设时再进 DSH 设置页调整。

## 已知问题与限制
- 客户端子任务 shell 由 Claude 自己的小模型（haiku 等）做中介转发，每次派单会额外消耗数百到数千 Anthropic token（README 原文）：要么接受这点成本，要么绕开它（README 中提到存在路由器实验路线，但 Codex 侧需要 API key 而订阅 OAuth 在上游被 403 阻断，未官方支持）
- 生成的图片是单层位图，需要图层编辑时仍依赖 OpenPencil 等外部工具
- Codex 角色必须设置 `default_tools_approval_mode = "approve"`，否则工具调用会被自动取消
- 客户端进程和宿主进程之间通过本地回环 HTTP 通信；轮询等待超过几十秒的请求会被 Node undici 的 300 秒头超时切断，因此插件在等待时主动切成 ≤ 60 秒的小片（`src/hub-client.mjs:31-41`），但极端长任务仍需通过 `dsh_worker_result(wait_seconds)` 主动轮询
- `imagegen_provider` 选择 Codex/Grok/Antigravity 等 CLI 时，要求对应 CLI 已在本地登录；插件不会代为绕过它们的鉴权

---

This document is auto-generated by [deepseek-plugin.org](https://deepseek-plugin.org). HTML page: [dsh-crew](https://deepseek-plugin.org/plugins/ZSeven-W/dsh-crew)
Wiki generated by AI (model: `MiniMax-M3`)
