dsh-sub-cli
Unified management and invocation of external Agent CLIs in DSH, fully isolated from the user's native installs; preset Provider, model, reasoning effort, and permissions per CLI, callable directly or like native subagents.
安装
dsh plugin --profile web add github:dingminhua/dsh-sub-cli
需要可复现安装时,可在仓库后追加 #commit 固定提交。
Unified management and invocation of external Agent CLIs in DSH, fully isolated from the user's native installs; preset Provider, model, reasoning effort, and permissions per CLI, callable directly or like native subagents.
该插件未提供要点说明,请参考仓库 README。
- 安装并启动 DeepSeek Harness:
npx @deepseek-ai/dsh web - 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
- 用 dsh plugins list 确认已安装,必要时重启 Harness 生效
插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。
| 代码仓库 | github.com/dingminhua/dsh-sub-cli |
| 许可证 | MIT |
| 主要语言 | main |
| 下载量 | 1 |
| GitHub 星标 | 0 |
| 最近推送 | 2026-09-10 |
| 收录日期 | 2026-09-19 |
| 分类 | 安全与权限 |
事实信息来自公开插件目录快照(2026-10-01),介绍文案由本站再加工。
以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。
[图片: dsh-sub-cli settings panel]
# dsh-sub-cli
English ·
安装 ·
工作原理 ·
更新日志 ·
问题反馈
[图片: npm version]
[图片: npm downloads]
[图片: test status]
[图片: MIT license]
[图片: GitHub stars]
[图片: dshfind plugin]
在 DeepSeek Harness(DSH)中统一管理外部 Agent CLI 的开源插件。
- 把 Codex、Claude Code 放到**统一目录**(默认 `~/dsh-clis`),不混入系统 PATH;
- 每个 CLI 用**相互隔离的配置目录**,通过该 CLI 自身环境变量指向,完全不碰系统里已装的 CLI 配置;
- Web 插件配置卡片配置统一目录 + 每个 CLI 的**三层模型路由**(Provider → 模型 → 推理强度);
- 注册 **`cli_codex_direct` / `cli_codex_subagent` / `cli_claude_direct` / `cli_claude_subagent`** 工具让 DSH 模型把任务交给对应 CLI 并作为子会话返回(Qwen Code 支持已于 2026-09 移除);
- 注册 **`cli_dispatch`** 模型工具让 DSH 模型无头调用外部 CLI 并回传输出。
## 产品目标
本产品解决的核心问题是:**DSH 本身用 DeepSeek 模型,但很多用户已经装了 Codex、Claude Code 等其它 Agent CLI,想让 DSH 也能用它们来处理任务**(例如“用 Claude Code 看这个项目”)。
问题在于这些 CLI 各有各的安装位置、配置目录和模型设置,很乱,而且容易与用户系统里自己装的那份混在一起。
因此本插件要实现五点:
1. **统一管理**:把这些 CLI 集中放到一个目录(默认 `~/dsh-clis` 或 `%USERPROFILE%\dsh-clis`),不与系统里原有的混用;
2. **配置隔离**:每个 CLI 用独立配置目录,**不破坏**用户系统里已经配好的那份;
3. **能在 DSH 里用**:DSH 模型通过 `cli_dispatch` / `cli__direct` / `cli__subagent` 调用这些 CLI 干活,把结果回传进对话;每个 CLI 可独立配置权限能力(读文件 / 写文件 / 执行命令,exec 已承载联网意图),勾选的能力运行时静默放行、未勾选的被触发时确定拒绝并记录,任务做不了就清晰报错引导用户到设置卡调整(审批模式已移除:档位启动时定死,无弹窗、无运行中提权),旧的只读 / 工作区可写 / 完全三档预设会自动映射为对应的能力组合;
4. **像点子代理**:在会话头能看到这些 CLI 的状态,点进去进入它自己的对话;
5. **跨平台**:同时支持 macOS 和 Windows,在路径、系统命令、默认目录上分别适配。
## 已确认的主界面交互
主界面不提供手工“新建 CLI 任务”工作台。用户只向主控 AI 提需求,由主控决定是否委派给某个 CLI,并生成一个简短工作标题。
CLI 工作应复用 DSH 的 subagent 子会话体验:当前主控会话下展示标题、CLI 产品与运行状态;点击进入后查看历史和输出;支持的 provider 可继续接收用户或主控消息,也可停止当前轮次;完成结果自动回报主控。插件设置页只负责安装、配置、认证提示、检测和测试。
当前实现由 Host 插件全局注册其工具面——每个 CLI 六个(`cli__direct` / `_followup` / `_status` / `_sessions` / `_interrupt` / `_subagent`)共 2 个托管 CLI 12 个,加 `cli_dispatch`、生命周期工具 `cli_check` / `cli_install` / `cli_test` / `cli_remove`,以及 Relay 内部 `managed_cli_submit`,合计 18 个;并为每个托管 CLI 各注册一个 `SubagentProvider`(`managed-codex-relay` / `managed-claude-relay`),任意工作模式默认可用(明确的工具白名单或 deny 规则仍然优先)。Relay 形态经 `ctx.subagents.start(managed--relay, ...)` 派发,把 CLI 输出作为子会话结果返回,不注册任何 LLM provider,因此不会污染模型选择器。标题、状态、历史等由原生 subagent UI/runtime 提供。
**持续会话**:首轮(`cli__direct`)返回稳定的 `sessionId`,后续经 `cli__followup` 直接进入同一个真实 thread(Codex 走 app-server 长连接,Claude 走 `stream-json` + 文件级 `--resume` 持久化);会话状态落盘 `sessions.json`,Host 重启后仍可 reattach 同一 thread。详细约束见 `CLI-MANAGER-DESIGN.md` 与 `CLI-MANAGER-HANDOFF.md`。
## 项目结构
```
├── .github/workflows/ci.yml # CI:测试 + npm pack --dry-run
├── integration.mjs / prove.mjs # 顶层验证脚本
├── awesome-dsh-plugin-submission/ # 市场提交元数据
├── reference/ # 旧项目归档(不作为发布入口)
└── plugin/ # npm 包根
├── package.json
├── cordis.patch.yml
├── lib/
│ ├── index.js # Host 入口
│ ├── registry.js # CLI 注册表 + argv 模板
│ ├── paths.js # 统一目录 + 配置隔离
│ ├── status.js # 安装/版本检测
│ ├── dispatch.js # 无头派发
│ └── client.js # Web 设置卡片
├── test/ # 单元测试(node --test)
├── README.md / README.en.md
├── CHANGELOG.md
└── LICENSE # MIT
```
## 文档入口
1. `plugin/README.md` / `plugin/README.en.md`:包的用户文档;
2. `plugin/PLUGIN_REQUIREMENTS.md`:开发红线与结构要求;
3. `DEVELOPMENT.md`:本地开发原则与建议布局;
4. `RELEASING.md`:发布流程;
5. `CLI-MANAGER-HANDOFF.md` / `CLI-MANAGER-DESIGN.md`:需求与技术调研(历史);
6. `CLI-AGENT-REFERENCE-RESEARCH.md`:首轮四个外部 CLI Agent 项目的架构对比、权限交互结论与演进建议;
7. `CLI-AGENT-FRAMEWORK-RESEARCH.md`:通用子代理框架、角色目录、外部 Engine、官方 Claude Provider 与 DAG 编排的增量调研;
8. `CLI-AGENT-ROADMAP.md`:CLI Agent 最终目标、架构、能力合同、实施阶段与当前验收标准;
9. `MIGRATION-INVENTORY.md`:旧项目资料迁移清单;
10. `reference/dsh-subagent-default-model/`:旧项目参考实现,不作为发布入口。
## 致谢
本项目的实现建立在他人已公开的工作之上。以下内容如实标注来源与许可证,我们对此保持充分尊重:
### 多 CLI 管理 / Relay 子代理的主参照
- [dingminhua/dsh-subagent-default-model](https://github.com/dingminhua/dsh-subagent-default-model)(MIT,Copyright (c) 2026 LaoDing)— **本项目的主要参照**。多 CLI 注册表、argv 模板、三层模型路由、隔离配置目录、`managed_cli_submit` Relay 子代理形态、DSH Web 卡片样式与 npm 发布工程,均从该项目的能力形态中提炼并独立重写。本仓库的 `reference/dsh-subagent-default-model/` 即为该项目的归档实现,仅在本地开发期作为对照,不随包发布。
### 外部 CLI 派发的可行性参考
- [MJorgin/dsh-agent-conductor](https://github.com/MJorgin/dsh-agent-conductor)(MIT,Copyright (c) 2026 MJorgin)— 在 DSH 会话里把任务派给 11 种外部 Agent CLI 的 `subprocess.spawn` 无头执行范式;本插件从中提炼出 argv 数组派发、超时与错误回传、退出码处理的实现细节。
### 协议续接调研(不进入默认链路)
- [wujfeng712-ui/codex-bridge](https://github.com/wujfeng712-ui/codex-bridge)(MIT)— Responses API ↔ Chat Completions 双向转换与 `previous_response_id` 续接的备选协议路径;本项目仅在调研期记录其设计,**未在主链路中引用**,亦未引入其源码或二进制依赖。
### 说明
以上项目的版权归各自作者所有。本项目采用**借鉴设计思路 + 独立实现**的方式,未整体复制任何参考项目的源码;关键模块均为独立编写,并在源文件头部注释中标注了所参考的具体项目与模式。若你发现本项目的标注有遗漏或不当之处,请提交 issue,我们会立即更正。
## 第三方开源依赖
本项目参考的开源项目、其许可证与合规说明,完整记录见 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)。引入新的外部依赖或复用其他项目代码时,请同步更新该文件并遵守对应许可证要求。
## 开发与验证
```bash
node integration.mjs # 运行 registry/paths 测试
node prove.mjs # 运行 dispatch/status 测试
cd plugin && npm test # 运行全部单元测试(离线 mock)
cd plugin && npm pack --dry-run
```
**端到端实战验证没有 standalone 脚本**(原 `e2e-live.mjs` 与 `verify-matrix/` 系列已于 2026-09-04 删除——直启 CLI 进程的脚本在真实会话里会卡死进程,且绕过 harness 工具层的权限门控、审计留痕与会话管理)。统一按 `plugin/VERIFICATION-FLOW.md` 的三阶段流程,由主控在 DSH 会话里用插件注册的工具真实驱动:
1. **写入**:`cli_codex_subagent` / `cli_claude_subagent`(Relay 子代理)各把一段只有主控知道的暗号写入磁盘(UTF-8、无尾随换行、固定字节数);
2. **读取核对**:`cli_codex_direct` / `cli_claude_direct`(持续会话)做 2×2 互读复述,证明文件真实落盘且两个 CLI 读到同一份字节;
3. **删除**:Relay 子代理删除阶段一写入的文件,主控独立复核磁盘无残留。
判定以主控的磁盘逐字节校验为准(CLI 自报不可信);阶段推进必须等全部子代理 completion。写入/删除需要设置卡把对应 CLI 调到「可执行」档;只读档下写入会被确定拒绝并如实回报——这本身是权限门控的有效数据点(2026-09-04 实测:Codex relay 在只读档下五种写入方式全部被沙箱拦截、提权请求被自动拒绝、relay 如实回报「未创建」,磁盘零文件)。
## License
本项目采用 MIT 许可证,版权归属:Copyright (c) 2026 LaoDing。详见 [LICENSE](LICENSE)。
数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。