前言¶
在 DeepSeek Harness(DSH)里接 Gemini,常见做法是自备 API Key 或走第三方网关。若你本来就在 Google Cloud 上开 Vertex AI、用个人或工作 Google 账号计费,更希望 harness 直接吃本机已有的 Google 登录,而不是在配置里长期存放密钥,就需要一条「Application Default Credentials(ADC)+ 指定 GCP 项目」的推理路由。
下面介绍社区插件 dsh-vertex-gemini(维护者 mn288,分类:模型推理):在官方 npx @deepseek-ai/dsh 上加载,通过 Vertex AI 的 OpenAI 兼容 chat-completions 端点流式调用 Gemini,凭证来自 gcloud auth application-default login,费用记在你配置的 Google Cloud 项目上。
这是什么¶
dsh-vertex-gemini 是 DeepSeek Harness 插件:在 Google Cloud Vertex AI 上使用 Gemini,认证方式为 Application Default Credentials,不在插件或 DSH 里创建、存储 API Key。
仓库:https://github.com/mn288/dsh-vertex-gemini
社区目录:https://www.skillhub.cn/plugins/mn288/dsh-vertex-gemini
插件注册 provider 路由 vertex-ai,与 harness 的 LLM 层对接;README 写明在 @deepseek-ai/dsh 0.1.5-rc.2 上做过验证,harness API 仍属预稳定阶段,后续版本可能需要插件跟进更新。
核心功能¶
凭证与计费¶
- 使用
google-auth-library,按 Google 标准顺序解析凭证(含GOOGLE_APPLICATION_CREDENTIALS、gcloud 用户登录、元数据服务器等)。 - 默认
auth: adc,即本机 ADC;也可设auth: access-token,从环境变量(默认GOOGLE_OAUTH_ACCESS_TOKEN)读 Bearer,便于 CI 自签 token。 - 实际调用的项目由
project或环境变量GOOGLE_CLOUD_PROJECT/GCLOUD_PROJECT决定,账单落在该 GCP 项目。
模型与端点¶
- 默认在模型选择器展示 Gemini 3.8 Flash;可在
settings.yaml的llm-vertex.models里增删条目,任意项目有权调用的 Gemini model id 均可使用,列表主要影响选择器展示。 location默认global,可改为区域(如europe-west1)以走对应 endpoint。- 支持 reasoning 档位 Low / Medium / High;默认
reasoningEffort: high。若 settings 里残留其他厂商的xhigh/max,可能触发UNSUPPORTED_REASONING_EFFORT,需在 UI 或配置中改档位。
Agent 与工具调用¶
Gemini 3 在 tool call 上会附带 opaque 的 thought signature,后续请求必须原样回传,否则会被拒绝。插件会把 signature 写在会话日志里并在后续请求中回放,多步工具调用在重启或恢复会话后仍可继续;来自其他模型/厂商的历史则用 Google 文档中的 skip 标记发送。
能力边界¶
- 仅文本:附带图片会报
UNSUPPORTED_CONTENT,不会静默丢弃。 - 无专用设置页:Settings → Models 会列出 provider,但没有单独配置卡片,需用环境变量或
~/.dsh/settings.yaml配置。 - 当前 release 包版本为 0.1.0(安装示例中的 tarball 文件名);许可证 MIT。
安装前准备¶
README 列出的依赖如下:
- Node.js 22.19+ 或 24+。
- gcloud CLI。
- pnpm 在 PATH 中(
npm install -g pnpm);dsh plugin会在 profile 内调用 pnpm。 - 能读该 GitHub 仓库,且已登录 GitHub CLI(
gh auth login),用于下载 release。 - 一个已启用 Vertex AI API 的 GCP 项目,且账号具备调用权限(如
roles/aiplatform.user)。
DSH 社区插件目录(SkillHub)与 DeepSeek / 幻方无官方从属关系;插件以当前 dsh 进程权限运行,安装前建议自行查看源码与 LICENSE。
安装与启用¶
1、登录 Google(ADC)¶
在本机存一份可由插件自动刷新的 Google 登录:
gcloud auth application-default login
2、下载 release 并装入 profile¶
profile 会记录 tarball 的绝对路径,若文件被删会导致下次安装失败;README 建议放在 ~/.dsh/plugins:
mkdir -p ~/.dsh/plugins
gh release download --repo mn288/dsh-vertex-gemini --pattern '*.tgz' --dir ~/.dsh/plugins
npx @deepseek-ai/dsh plugin --profile web add ~/.dsh/plugins/dsh-vertex-gemini-0.1.0.tgz
pnpm 结束时可能出现一批 missing peer @deepseek-ai/... 警告,README 说明属预期(peer 在 profile 树上层由运行时解析);以依赖列表里出现 + dsh-vertex-gemini 为准。
终端 headless 场景可再执行:
npx @deepseek-ai/dsh plugin --profile headless add ~/.dsh/plugins/dsh-vertex-gemini-0.1.0.tgz
更新时:下载新 release 到同一目录,对新 tarball 再跑一遍 add。
卸载:
npx @deepseek-ai/dsh plugin --profile web remove dsh-vertex-gemini
3、指定 GCP 项目¶
启动 dsh 的 shell 里导出:
export GOOGLE_CLOUD_PROJECT=my-gcp-project
或写入默认 $DSH_HOME/settings.yaml(一般为 ~/.dsh/settings.yaml):
llm-vertex:
project: my-gcp-project
未配置 project 时,Settings → Models 能看到 provider,但选择器里不会出现 Vertex 模型,属预期行为。
4、启动 Web UI 并选模型¶
npx @deepseek-ai/dsh web
插件在进程启动时加载;若 dsh web 已在跑,需重启后再开。在模型选择器中选 Google Vertex AI → Gemini 3.8 Flash,新会话会以此默认为准。
典型配置¶
settings.yaml 中可选字段均在 llm-vertex: 下,修改后对下一次请求生效,无需重启。常用项:
| 字段 | 默认 | 含义 |
|---|---|---|
project |
环境变量 | 被调用并计费的项目 |
location |
global |
Vertex 区域 |
reasoningEffort |
high |
low / medium / high |
maxTokens |
65536 |
未在 model 条目指定时的输出上限 |
publisher |
google |
裸 model id 发网时的前缀 |
streamIdleTimeoutMs |
300000 |
流式响应静默超时 |
增加第二个模型示例:
llm-vertex:
project: my-gcp-project
models:
- id: gemini-3.8-flash
name: Gemini 3.8 Flash
- id: another-gemini-model-id
name: Shown in the picker
README 提醒:Gemini 3.8 Flash 会把 thinking token 计入输出上限,若 maxTokens 过小可能以 max-tokens 结束且无正文,建议保持默认 65536 或至少数千。
故障排查(节选)¶
| 现象 | 处理方向 |
|---|---|
MISSING_CREDENTIAL |
执行 gcloud auth application-default login |
AUTH |
重新登录;确认账号对项目有 roles/aiplatform.user |
NOT_FOUND |
核对 model id、location、Vertex AI API 是否启用 |
QUOTA / RATE_LIMIT |
harness 会重试;持续则到 Cloud 控制台提配额 |
| 选择器无 Vertex 模型 | 配置 project |
UNSUPPORTED_CONTENT |
插件不支持图片输入 |
适用场景与注意¶
适合:已在 GCP 开通 Vertex AI、希望 DSH Web 或 headless 会话默认走 Gemini;需要多轮 tool call 且依赖 thought signature 回放;不想在 DSH 配置里写 Gemini API Key,而愿用组织统一的 ADC 或 gcloud 用户登录。
注意:
- 需自行承担 GCP 用量与配额;插件会把请求发到你指定的 project/location。
- 仅文本对话与工具链,不适合多模态图片输入。
- 安装依赖
gh release download,不是dsh plugin add github:owner/repo一类命令;以 README 原文为准。 - README 记录 2026-09-21 对真实 Vertex API(Gemini 3.8 Flash,
location: global)做过验证;换 harness 或插件版本后,维护者可按仓库内说明重跑 E2E。
结尾¶
dsh-vertex-gemini 把 DSH 的模型推理接到 Vertex AI Gemini:ADC 登录、项目级计费、流式 OpenAI 兼容接口,并处理 Gemini 3 工具调用所需的 signature 回放。若你的智能体栈已经在 Google Cloud 上,这条路径可以少维护一把 Key,把「谁登录、哪个 project 出钱」留在 GCP 侧惯用流程里。