把 Google Antigravity CLI(agy)接入 DSH 作为产品子代理:用 Antigravity 登录态(无需 API key)委托 Gemini 编程智能体干活,支持对话续聊、后台流式进度、按路径识图与自动弹出登录窗口。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:ZEM17/dsh-subagent-agy
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
把任务直接委托给本机的 Google Antigravity CLI(agy)——一个独立的
Gemini 编程智能体——从 DeepSeek Harness 里直接使用。不需要任何 API key:
agy 使用你的 Antigravity 登录态(系统凭据 / Google 登录)完成认证。
English version: README.md · 源码: github.com/ZEM17/dsh-subagent-agy
安装
前置要求
- 安装
agy:irm https://antigravity.google/cli/install.ps1 | iex(Windows)。插件会自动定位它(PATH →AGY_BIN→%LOCALAPPDATA%\agy\bin→~/.local/bin→~/.gemini/bin→~/go/bin)。 - 登录一次
agy:在终端运行agy完成登录。之后如果遇到 "authentication required",插件会自动弹出交互式登录窗口。 - DeepSeek Harness:标准 web profile 即可(自带
dsh-subagent、dsh-subprocess、dsh-tools、dsh-jobs)。
安装插件
从 GitHub 安装(推荐):
dsh plugin --profile web add github:ZEM17/dsh-subagent-agy
从安装包安装:到
Releases 页面 下载
dsh-external-dsh-subagent-antigravity-0.1.0.tgz,然后:
dsh plugin --profile web add /path/to/dsh-external-dsh-subagent-antigravity-0.1.0.tgz
装完即用,无需重启。任何会话里的模型都能调用 antigravity 系列工具。
使用方法
你只需要提需求,模型会自动调用工具;也可以明确指定:
| 用途 | 工具 | 说明 |
|---|---|---|
| 新任务 | antigravity |
把独立任务委托给 agy(新对话);返回 task 键 |
| 续聊 | antigravity_followup |
通过 task 键继续之前的 agy 对话——上下文完整延续 |
| 登录 | antigravity_login |
弹出 agy 交互式登录窗口(认证失败时也会自动弹出) |
示例:
"用 agy 把
D:\projects\my-project的 README 重写一遍,列出改动。""用 antigravity 优化这个项目的页面"
识图
agy 的模型是多模态的——把图片路径写进 prompt,它就能描述/分析图片:
"用 antigravity 识别这张图片:
C:\projects\screenshots\ui.png""Use agy to describe this image:
C:\projects\design\mockup.png"
工作区内的图片直接可用;工作区之外的图片,需要把图片所在目录传给工具的
dirs 参数(或配置 addDirs)。
- 任务目标在会话工作区之外时,需要把目标目录传给工具的
dirs参数 (你把路径告诉模型,它会自动带上)。 - 长任务:模型会自动用
background: true后台运行——期间向你实时汇报 进度,完成后给出最终结果。 - 继续之前的任务:告诉模型用上次返回的
task键续聊。
配置
所有字段都可选,默认值见下表。通过插件的设置区配置(如
$DSH_HOME/settings.yaml):
dsh-subagent-antigravity:
model: gemini-3.1-pro-high # agy models 里的模型;留空 = agy 默认
effort: high # low | medium | high
printTimeoutMs: 300000 # 前台任务上限(5 分钟)
backgroundTimeoutMs: 3600000 # 后台任务上限(1 小时)
skipPermissions: true # 自动批准 agy 的工具调用(无头模式必需)
addDirs: [] # 加入 agy 工作区的绝对路径(--add-dir)
proxy: "" # 代理 URL;回退到 AGY_PROXY 环境变量,再回退 ~/.dsh/agy-proxy.txt
| 字段 | 默认值 | 含义 |
|---|---|---|
providerName |
antigravity |
ctx.subagents 注册名 |
toolName |
antigravity |
新任务工具名 |
followupToolName |
antigravity_followup |
续聊工具名 |
loginToolName |
antigravity_login |
登录窗口工具名 |
command |
agy |
可执行文件(PATH 名或绝对路径) |
model |
'' |
--model <slug>(见 agy models);留空 = agy 默认 |
effort |
'' |
--effort low|medium|high;留空 = 不传 |
agent |
'' |
--agent <name>;留空 = 不传 |
printTimeoutMs |
300000 |
前台任务上限(--print-timeout) |
backgroundTimeoutMs |
3600000 |
后台任务上限(1 小时) |
watchdogMarginMs |
60000 |
agy 卡死时、超时上限之外强制终止的余量 |
skipPermissions |
true |
--dangerously-skip-permissions(自动批准 agy 工具调用) |
sandbox |
false |
--sandbox(agy 终端沙箱限制) |
avoidBrowser |
true |
在 prompt 中追加"不要用浏览器工具"说明(部分机器上无头浏览器会卡死) |
avoidLargeReads |
true |
在 prompt 中追加"超过 1 MB 的文件用 grep/sed 读取"说明(agy 读取工具有 4 MB 上限) |
outputFormat |
json |
输出格式(json 或 text);后台模式自动优先 stream-json |
extraArgs |
[] |
追加在生成参数之后的原始 argv |
cwd |
'' |
工作目录覆盖;留空 = 会话工作区 |
addDirs |
[] |
加入 agy 工作区的绝对路径(--add-dir)——目标在会话工作区之外时必需 |
env |
{} |
环境变量覆盖(在 Harness 凭据清理之后合并) |
proxy |
'' |
代理 URL;回退 AGY_PROXY,再回退 ~/.dsh/agy-proxy.txt(每次调用重读) |
registryPath |
'' |
续聊注册表文件;留空 = ~/.dsh/agy-conversations.json |
disposeGraceMs |
5000 |
进程树终止宽限(SIGTERM → SIGKILL) |
autoLoginWindow |
true |
认证失败时自动弹出交互式登录窗口 |
loginWindowMinimized |
true |
登录窗口最小化启动(只在任务栏显示图标) |
工作原理(简述)
每次任务都会在会话工作区里拉起一个全新的 agy -p <任务> 进程,返回最终
回答。运行使用 --output-format json,其回复携带 agy 的
conversation_id;插件把它记入持久化注册表(~/.dsh/agy-conversations.json),
antigravity_followup 通过 --conversation <id> 恢复同一对话。后台运行
使用 stream-json 提供实时进度,并接入 DSH 的任务系统(job_output /
job_kill)。本地看门狗会终止卡死的运行——任何情况下都不会无限等待。
故障排查
| 现象 | 解决办法 |
|---|---|
authentication required |
在自动弹出的登录窗口里完成登录(或调用 antigravity_login),然后重试 |
User location is not supported |
配置代理(proxy 或 ~/.dsh/agy-proxy.txt) |
timeout waiting for response |
调大 printTimeoutMs / backgroundTimeoutMs,或改用 background: true |
agy exited 0 but produced no stdout |
已知的 agy 非 TTY 输出丢失 bug;默认的 --output-format json 可规避——仍出现就升级 agy |
cannot resolve "agy" |
设置 AGY_BIN 指向 agy 可执行文件 |
| 任务卡在浏览器工具上 | avoidBrowser(默认开启)已阻止;确实需要浏览器预览时才设 false |
file size (…) exceeds limit |
agy 读取工具上限 4 MB;avoidLargeReads(默认开启)已让 agy 改用 grep/sed——或瘦身该文件 |
开发
bash scripts/build.sh # 从 DSH 运行时 junction 链接 @deepseek-ai 依赖,然后 tsc 编译 src/ → lib/
npm run selftest # 离线自检:agy 存在性、参数探测、注册表往返
npm run selftest:e2e # + 真实 PONG 双轮对话(需要已登录 agy)
本地 DSH 开发流程(超级模组注入器):dev_build_plugin(构建+打包)→
dev_inject_plugin(免重启运行时注入);日常迭代用 dev_build_plugin →
dev_reload_package。
链接
同类插件
liustack/modlens★ 1963
为纯文本模型架起视觉桥梁:粘贴图片,输出结构化 JSON 证据(OCR、版面、语义)。
Anionex/dsh-vision-toolkit★ 440
让纯文本模型更好地做视觉任务:带意图的图片问答、长截图 OCR、UI 还原等。
superdesigndev/treg★ 419
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
Lum1104/dsh-browser★ 167
Chrome 侧边栏扩展,让 DSH 直接操控你的浏览器,无需视觉能力。
ysr666/dsh-vision-router★ 155
为纯文本 Agent 提供视觉能力:内置免 Key 视觉链 + 像素级视觉工具(看图问答、定位、裁剪、像素对比、取色、OCR、矢量化、抠图、截图);粘贴图片即可用。
zhaoolee/notes★ 141
将 DSH 对话导出为锤子便签风格 PNG,或在配置的账号工作区中新建和更新 Markdown 便签。