dsh-subagent-gemini:在 DSH 中把 Google Gemini CLI 当作一次性编码子智能体

前言

DeepSeek Harness(DSH)里,主会话可以把具体编码任务交给子智能体:子进程在父工作区里改文件、跑命令,父会话只拿回最终结论,不把子进程的工具调用和 stderr 灌进对话。官方已有 Codex 子智能体(subagent_codex),社区也有 Cursor 等类似形态。若你希望主模型调用 Google 官方 Gemini CLI 完成同类「一次性委托」,就需要把 Gemini 接到 DSH 的子智能体接缝(ctx.subagents)上。

dsh-subagent-gemini 由社区维护者 PipeDream941 开发,分类为工作流插件。它在 DSH 中注册全局工具 subagent_gemini,通过官方 ACP 子智能体后端拉起 gemini --acp,形态与 subagent_codex、cursor_code 一致。README 写明:暂未发布到 npm / DSH 插件市场;Gemini CLI 目前尚未提供 Gemini 4,若要用 Gemini 4 应安装 dsh-subagent-antigravity。插件与 Google 无隶属关系,仅驱动其官方 CLI。

这是什么

一句话:在 DSH 父会话中增加 subagent_gemini 委托工具,每次调用在新进程中启动 Gemini CLI(ACP 模式),子智能体自行使用 CLI 内置能力(文件编辑、Shell、搜索、MCP 等),结束后只向父会话返回最终答复或安全失败诊断。

维护者与仓库:PipeDream941 / dsh-subagent-gemini。社区目录页:skillhub.cn 插件条目(与 DeepSeek / 幻方无官方从属;生态理念是「一切皆插件」)。

工作方式

主会话调用 subagent_gemini({ description, prompt }) 后,链路大致如下:

父会话(DeepSeek 模型)
   │  subagent_gemini
   ▼
DSH 子智能体接缝(本插件注册 provider: gemini)
   ▼
@deepseek-ai/dsh-subagent-acp(官方 ACP 后端:拉起进程、握手、权限自动应答、清理)
   ▼
gemini --acp --skip-trust(独立进程,父进程 cwd)
   ▼
最终答复 → 父会话

设计要点(与 README 一致):

  • 新进程、新会话:每次委托拉起新的 gemini --acp;
  • 只回最终答案:子智能体思考、工具调用、stderr 不进入父对话;
  • 一次一任务:不支持在同一次运行里追问或续聊(续聊用原生 subagent / fork 后端);
  • 安全诊断:失败时返回固定阶段/类别信息,不泄露 stderr、路径或凭据。

本插件负责 Gemini 相关部分:定位可执行文件、校验配置、加载时检测凭据并给出可操作提示;进程生命周期与 ACP 协议由 DSH 官方后端处理。

环境与依赖

依赖 要求
DeepSeek Harness 0.2.1-rc.2 系列(提供 ctx.subagents 与 ACP 子智能体后端)
Node.js ^22.19.0 或 >=24
Google Gemini CLI 支持 --acp 的构建(0.60+,建议最新)
Gemini 凭据 推荐 Gemini Developer API key,或 Vertex AI / Code Assist 相关环境变量

安装 CLI 并确认版本:

npm install -g @google/gemini-cli
gemini --version

安装与启用

发布前 README 仍给出市场与命令行两种方式;市场收录待维护者完成端到端验证后开放(需用户自备 API key 验证)。

从 DSH 插件市场(推荐,发布后): 搜索 dsh-subagent-gemini,安装并启用。

从命令行:

dsh plugin --profile desktop add dsh-subagent-gemini

在该 profile 的 package.json 里把包加入 dsh.profile.bundles,重启或等待 profile 重新组合:

"dsh": {
  "profile": {
    "bundles": ["…", "dsh-subagent-gemini"]
  }
}

启用后,智能体在下一次请求时可见全局工具 subagent_gemini。安装插件前请自行查看仓库源码与 MIT 许可证;子进程以当前 DSH 进程权限在工作区执行,与 permission 配置相关(见下文)。

凭据配置

Gemini CLI 需要独立凭据。个人 Gemini Code Assist 的浏览器 OAuth 已不再可用;应使用 API key。

  1. 在 Google AI Studio 创建 key;
  2. 写入 Gemini CLI 默认读取位置(插件不要求单独配置 key):
printf 'GEMINI_API_KEY=your-key\n' > ~/.gemini/.env
chmod 600 ~/.gemini/.env

也可用环境变量:GEMINI_API_KEY(Developer API);或 GOOGLE_GENAI_USE_VERTEXAI=true 配合 GOOGLE_API_KEY;或 GOOGLE_GENAI_USE_GCA=true(Code Assist 许可)。若需向子进程显式传入变量,使用插件 env 配置。插件不读取、记录或返回密钥内容。

典型用法

主模型像调用其他委托工具一样传入 自包含 的 prompt(子智能体看不到父会话历史):

{
  "name": "subagent_gemini",
  "arguments": {
    "description": "Fix login timeout",
    "prompt": "In the workspace, find the login request timeout and raise it from 5s to 15s, run the related tests, and reply only with what you changed and the test result."
  }
}
  • description:子智能体列表中显示的短任务名(约 3–5 个词);
  • prompt:须包含路径、约束与验收标准。

运行结束后父会话收到完成通知与 Gemini 的最终答复,或安全失败诊断。

配置项

在 profile patch 中覆盖 subagent-gemini 的 config:

字段 默认 含义
providerName gemini 在 ctx.subagents 上注册的名称,同一 profile 内须唯一
command 空(自动探测) gemini 可执行文件路径;空则从 PATH 及常见路径查找
args ['--acp', '--skip-trust'] CLI 参数;--acp 始终保留
model 空(CLI 默认) 如 gemini-2.5-flash,会作为 --model 传入
permission allow 子进程权限询问:allow 自动批准编辑/Shell;reject 只读
env {} 在脱敏后的父环境上叠加的环境变量
disposeEofGraceMs 6000 stdin EOF 后等待子进程刷盘的毫秒数
disposeGraceMs 3000 失败观察与 SIGTERM→SIGKILL 的宽限

示例:固定模型且子智能体只读:

- id: subagent-gemini
  config:
    model: gemini-2.5-flash
    permission: reject

适用场景与注意

适合: 已在 DSH 0.2.1-rc.2 上使用子智能体委托、本机已装 Gemini CLI,且希望主会话用 Gemini 模型 + CLI 工具链 完成单次编码任务(修 bug、改配置、跑测试并汇总结果)的团队或个人。

注意:

  • permission: allow 时子智能体可在工作区无人值守改文件、跑命令;仅在可信工作区使用,事后用 git diff 审查。
  • --skip-trust 避免交互式信任提示阻塞委托。
  • 需要 Gemini 4 时不要用本插件指望 CLI 提供,应改用 dsh-subagent-antigravity。
  • 常见故障:找不到 gemini(安装 CLI 或设置 command);缺 API key(配置 ~/.gemini/.env);仍用已废弃 OAuth;网络或代理问题(可在 env 中设 HTTPS_PROXY)。

结尾

dsh-subagent-gemini 把 Google Gemini CLI 以 ACP 子智能体形式接入 DSH,与 Codex/Cursor 子智能体同一套「新进程、只回结论、一次一任务」模型;发布前需自行安装 bundle 并配置 API key。目录与文档:SkillHub 插件页、GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜