用途
deepseek-as-subagent 是一个 MCP 服务器项目,用于将 DeepSeek 或用户自备的 OpenAI 兼容本地模型作为真正的子代理嵌入 Claude Code 或 Codex CLI。宿主代理保留主对话、规划、判断和验证职责;被选中的模型则拥有独立的代理循环,用于执行密集型工作。与多数仅将 DeepSeek 暴露为单次 LLM 调用的 deepseek-mcp-server 不同,本项目让被配置的模型自行执行工具调度、文件读写、可选的命令执行以及针对工作区的多轮推理,宿主只需交出完整的逻辑单元并拿回结果,从而在读取/写入环节也节省 Token。
主要能力
- MCP 服务器(Python,stdio 传输)。
- 编码与只读委派:delegate_to_deepseek / delegate_to_deepseek_readonly。
- 可转向的后台任务:start_deepseek / start_deepseek_readonly 以及共享控制。
- Flash / Pro 模型路由:宿主选择稳定档位,用户在配置中控制实际的提供方模型 ID。
- 本地编码代理循环(agent_loop.py),支持 OpenAI 兼容的工具调用。
- 固定能力接口:编码获得 Read / Write / Edit / Bash / Glob / Grep / NotebookEdit;只读获得 Read / Glob / Grep。
- Bash 执行:通过工具-子进程边界运行受限、凭据隔离的受信主机命令。
- 文件工具的工作区路径边界,拒绝出站符号链接。
- 跨进程执行租约,防止两个 MCP 服务器对同一工作区并发运行 DeepSeek。
- 针对 Write / Edit / NotebookEdit 的崩溃安全变更日志,支持恢复查询、文件校验和再次委派前的精确确认;受信主机 Bash 的更改不记录日志。
- 显式网络重试策略,禁用 OpenAI SDK 内部重试以避免嵌套重试放大。
- Claude Code 技能与 /ds 命令,用于委派策略与强制委派。
使用方式
安装与配置
Python 3.10–3.12 须预先安装。安装器不会把远程引导脚本管道到 shell,而是安装 requirements.lock 中经过哈希校验的精确依赖集,向 Claude Code 注册 MCP 服务器,部署受保护的技能与 /ds 斜杠命令的生成副本,且不修改 shell 启动文件。对于 DeepSeek 托管 API,在 POSIX 上于 ~/.deepseek-mcp/config.json 配置密钥,在 Windows 上设置 DEEPSEEK_API_KEY。本地回环 OpenAI 兼容服务器无需 DeepSeek 密钥。
基本调用
安装后运行 claude,可尝试 /ds inspect this workspace and summarize its structure。
delegate_to_deepseek(task, context, model="flash") 用于编码、Bash、测试或任何可能写入工作区的任务;delegate_to_deepseek_readonly(task, context, model="flash") 仅用于静态文件分析。model 可选,仅接受 flash 或 pro,省略时默认 Flash;困难调试、架构级推理或 Flash 不足时显式选择 pro。宿主从不直接传递提供方模型 ID。
后台委派
对于可能需要新指令或取消的较长任务,使用对应的 start_* 后台 API,再使用相同的控制手段。转向只改变任务指令,不能改变任务的固定工具、Bash 可用性或已选模型档位。取消会唤醒重试退避并迅速终止进行中的提供方或本地工具子进程。
变更恢复
通过 Write、Edit、NotebookEdit 提交的变更在提交前记录日志。受信主机 Bash 运行在此事务日志之外,可能直接修改工作区文件,这些更改不会由 get_deepseek_recovery 表示。中断的编码运行后,若 Bash 可能执行过,应独立检查工作区。结果报告了日志变更、取消、断开连接或 MCP 重启后,需运行恢复流程;在新委派通过精确审查的 ID 确认前,新委派会失败关闭。恢复无需有效 DeepSeek API 凭据,且从不会删除或回滚工作区文件。
Claude Code 辅助
- delegate_to_deepseek / delegate_to_deepseek_readonly:Claude 选择匹配的固定能力与 Flash/Pro 档位。
- /ds <task>:强制同步编码委派。
- DEEPSEEK_MODE=off claude:启动一个禁用 DeepSeek 的会话。
本地 / OpenAI 兼容模型
在现有配置中设置 base_url 和模型 ID。公开的 flash 和 pro 选择仍是面向宿主的档位,可指向同一模型。支持实现 OpenAI 兼容 /v1/chat/completions 接口的服务器,如 llama.cpp server、LM Studio、vLLM、SGLang、Ollama 兼容端点等。HTTP 仅限 localhost、127.0.0.1 和 [::1];远程端点必须使用 HTTPS。要求服务器支持 OpenAI 兼容工具调用、足够的上下文和结构良好的工具调用。每次运行的 Token 预算为累计输入输出 1,000,000,对话历史另有 12 MiB 编码 JSON 限制。
适用场景
- 多文件实现、机械重构、测试生成。
- 大数据量加简单处理(日志扫描、文件转换、ETL)。
- 可能受益于独立廉价执行循环的任务。
- 不适合:编排开销占主导的微小编辑、跨领域架构、模糊根因分析、安全敏感判断。
限制
- 编码 Bash 运行在受信主机,非操作系统沙箱,虽受限且凭据隔离。
- 同一规范工作区一次只允许一个 DeepSeek 执行;租约仅协调 DeepSeek MCP 执行,无法阻止宿主、IDE、用户或其他本地进程更改工作区。
- 后台任务 ID 和结果会话作用域,需在关闭宿主会话前收集结果。
- 转向不能升级只读任务;若只读任务后续需要命令或工作区变更,须取消或完成后再创建新的编码任务。
- 受信主机 Bash 的更改不记录日志,中断后需独立检查工作区。
- 委派提示和代理选取的工具/文件输出会发送到配置的 OpenAI 兼容 API,仅应委派该端点被允许接收的数据。
- 本地 Python 模块签名属于实现细节,非稳定公共 API。
- 项目不声称已测试所有服务器版本或模型。
价格
暂未提供。