🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

Antigravity 接入 KouzakiUmi/dsh-antigravity-acp

DeepSeek Harnessv0.1.31
KouzakiUmi2 天前有提交已提供中文文档扫描:含敏感能力

在对话界面选用 Antigravity 模型并查看额度

36.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-bundle-antigravity-host
npm 源 · dsh-bundle-antigravity-host 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · tool
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 2 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-bundle-antigravity-host @ 0.1.31
✓Node 引擎要求 >=22.19 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 21:12:15

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 64 处,展示前 48 条)
  • 读取本地文件
    dist/index.js:434
    const findCli = () => agyCliCandidates(process.env, undefined, config.agyCliPath).find((candidate) => existsSync(candidate));
  • 读取本地文件
    dist/index.js:651
    for await (const chunk of createReadStream(resolution.executablePath))
  • 读取本地文件
    dist/protocol/agent-link.js:83
    const version = JSON.parse(readFileSync(file, 'utf8')).version;
  • 发起网络请求
    dist/protocol/agent-link.js:374
    const response = await this.request('initialize', {
  • 发起网络请求
    dist/protocol/agent-link.js:407
    return await this.request('authenticate', { methodId }, { timeoutMs: this.#authTimeoutMs });
  • 发起网络请求
    dist/protocol/agent-link.js:427
    const response = await this.request('session/new', request, options);
  • 发起网络请求
    dist/protocol/agent-link.js:434
    return this.request('session/set_config_option', params, options);
  • 发起网络请求
    dist/protocol/agent-link.js:448
    const response = await this.request('session/load', request, options);
  • 发起网络请求
    dist/protocol/agent-link.js:457
    await this.request('session/close', { sessionId }, options);
  • 发起网络请求
    dist/runtime/binary.js:114
    const doFetch = options.fetchImpl ?? ((url2, init) => fetch(url2, init));
  • 写入本地文件
    dist/runtime/binary.js:146
    await pipeline(nodeStream, createWriteStream(destPath));
  • 写入本地文件
    dist/runtime/binary.js:154
    await writeFile(destPath, bytes);
  • 写入本地文件
    dist/runtime/binary.js:304
    await writeFile(join(path, OWNER_FILE), JSON.stringify(owner), { encoding: 'utf8', mode: 0o600, flag: 'wx' });
  • 读取本地文件
    dist/runtime/binary.js:310
    const info = await lstat(file);
  • 读取本地文件
    dist/runtime/binary.js:313
    const value = JSON.parse(await readFile(file, 'utf8'));
  • 写入本地文件
    dist/runtime/binary.js:325
    await mkdir(requestedRoot, { recursive: true, mode: 0o700 });
  • 读取本地文件
    dist/runtime/binary.js:326
    const root = await realpath(requestedRoot);
  • 删除本地文件递归
    dist/runtime/binary.js:333
    await rm(path, { recursive: true, force: true }).catch(() => undefined);
  • 读取本地文件
    dist/runtime/binary.js:342
    const info = await lstat(target);
  • 读取本地文件
    dist/runtime/binary.js:343
    return info.isDirectory() && !info.isSymbolicLink() && await realpath(target) === target;
  • 写入本地文件
    dist/runtime/binary.js:357
    await writeFile(join(lease.path, OWNER_FILE), JSON.stringify({ ...owner, state: 'exited' }), { encoding: 'utf8', mode: 0o600 });
  • 删除本地文件递归
    dist/runtime/binary.js:358
    await rm(lease.path, { recursive: true, force: true, maxRetries: 2 });
  • 读取本地文件
    dist/runtime/binary.js:364
    canonicalRoot = await realpath(root);
  • 删除本地文件递归
    dist/runtime/binary.js:420
    await rm(target, { recursive: true, force: true, maxRetries: 2 });
  • 删除本地文件递归
    dist/runtime/binary.js:441
    await rm(subtarget, { recursive: true, force: true, maxRetries: 2 });
  • 写入本地文件
    dist/runtime/binary.js:469
    await chmod(file, 0o755);
  • 删除本地文件递归
    dist/runtime/binary.js:692
    await rm(staging, { recursive: true, force: true }).catch(() => undefined);
  • 发起网络请求
    dist/runtime/proxied-fetch.js:79
    const fallback = deps.fallback ?? ((input, init) => globalThis.fetch(input, init));
  • 发起网络请求
    dist/runtime/proxied-fetch.js:135
    return route.undici.fetch(url, { ...requestInit, ...init, dispatcher: route.agent });
  • 写入本地文件
    dist/runtime/credentials.js:116
    await rename(source, target);
  • 写入本地文件
    dist/runtime/credentials.js:133
    await writeFile(temp, data, { encoding: 'utf8', mode: 0o600 });
  • 删除本地文件
    dist/runtime/credentials.js:137
    await rm(temp, { force: true }).catch(() => undefined);
  • 读取本地文件
    dist/runtime/credentials.js:185
    const read = deps.readFileImpl ?? ((path) => readFile(path, 'utf8'));
  • 写入本地文件
    dist/runtime/credentials.js:187
    const makeDir = deps.mkdirImpl ?? ((path) => mkdir(path, { recursive: true }).then(() => undefined));
  • 读取本地文件
    dist/runtime/catalog-cache.js:25
    raw = await readFile(file, 'utf8');
  • 写入本地文件
    dist/runtime/catalog-cache.js:66
    await mkdir(dirname(file), { recursive: true });
  • 写入本地文件
    dist/runtime/catalog-cache.js:77
    await rename(temporary, file);
  • 删除本地文件
    dist/runtime/catalog-cache.js:85
    await unlink(temporary).catch(() => undefined);
  • 读取本地文件
    dist/runtime/session-map.js:27
    raw = await readFile(file, 'utf8');
  • 写入本地文件
    dist/runtime/session-map.js:80
    await mkdir(dirname(file), { recursive: true });
  • 写入本地文件
    dist/runtime/session-map.js:89
    await rename(temporary, file);
  • 删除本地文件
    dist/runtime/session-map.js:98
    await unlink(temporary).catch(() => undefined);
  • 写入本地文件
    dist/runtime/session-map.js:112
    await mkdir(cacheDir, { recursive: true });
  • 读取本地文件
    dist/runtime/session-map.js:131
    if (await readFile(file, 'utf8').catch(() => '') === marker)
  • 删除本地文件
    dist/runtime/session-map.js:132
    await unlink(file).catch(() => undefined);
  • 读取本地文件
    dist/runtime/quota.js:44
    return readFile(path, 'utf8');
  • 读取本地文件
    dist/runtime/quota.js:52
    return readFile(path, 'latin1');
  • 读取本地文件
    dist/runtime/quota.js:192
    const entries = await readdir(directory, { withFileTypes: true });
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-attachment@deepseek-ai/dsh-llm@deepseek-ai/dsh-subprocess@deepseek-ai/dsh-typert-protocol
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 宿主包:把官方 Antigravity ACP(Gemini)作为主模型,工具由 DSH 提供

README

由 DeepSeek 最新模型翻译生成
Antigravity ACP for DSH 在 DSH 里使用 Antigravity 模型,工具仍交给 DSH。 接入 Google 官方 Antigravity ACP agent,在同一个对话界面选择模型、查看额度、预热连接。 快速开始 · 功能预览 · 功能亮点 · 配置参考 · 排障 · 更新记录 0.1.25:修复冷启动时登录 / 预热握手超时(新增 handshakeTimeoutMs,默认 120 秒),默认开启预热并显示启动进度。类型检查、33 个文件 / 515 项测试与构建通过;真实 Desktop GUI 与跨平台验收尚未完成。查看本次更新与限制。上一版 0.1.24 的并发池、模型发现与图片输入见更新记录。 0.1.31 · 一轮可靠性加固:额度 HTTP 取数补超时(挂起的请求不再让药丸永久停在读取中)、401/403 重试改按状态码判断、非法代理不再让插件装载失败、恢复会话失败归还磁盘 claim、单条畸形 JSON-RPC 帧只丢弃不再判死整条链路、zip 解压加压缩炸弹上限。本地类型检查、38 个文件 / 658 项测试与构建通过。发布不代表本机安装已更新。
展开完整文档(README 剩余 1 节)
Antigravity ACP for DSH

在 DSH 里使用 Antigravity 模型,工具仍交给 DSH。

接入 Google 官方 Antigravity ACP agent,在同一个对话界面选择模型、查看额度、预热连接。

快速开始 · 功能预览 · 功能亮点 · 配置参考 · 排障 · 更新记录

0.1.25:修复冷启动时登录 / 预热握手超时(新增 handshakeTimeoutMs,默认 120 秒),默认开启预热并显示启动进度。类型检查、33 个文件 / 515 项测试与构建通过;真实 Desktop GUI 与跨平台验收尚未完成。查看本次更新与限制。上一版 0.1.24 的并发池、模型发现与图片输入见更新记录。

0.1.31 · 一轮可靠性加固:额度 HTTP 取数补超时(挂起的请求不再让药丸永久停在读取中)、401/403 重试改按状态码判断、非法代理不再让插件装载失败、恢复会话失败归还磁盘 claim、单条畸形 JSON-RPC 帧只丢弃不再判死整条链路、zip 解压加压缩炸弹上限。本地类型检查、38 个文件 / 658 项测试与构建通过。发布不代表本机安装已更新。查看更新与生效边界

快速开始

dsh plugin --profile web add dsh-bundle-antigravity-host

web 是示例 Profile,请替换为实际目标。DSH NEXT Desktop 使用目标桌面壳提供的 DSH Desktop CLI;不要用独立 npm 公共 CLI 管理保留的 desktop Profile。安装与更新说明

1. 安装并启用:按部署方式重载或重启,让 Host 与 Client 一起生效;只刷新页面不保证 Host 已升级。
2. 打开「设置 → Antigravity ACP」:需要代理时先配置并保存,再点击 连接 / 登录 ACP。插件优先复用已有 ACP 登录态,或导入本机已登录的官方 CLI 登录态;必要时才进入官方浏览器授权。成功建会话后读取模型目录,不需要先发送聊天。
3. 选择模型,开始对话:提供商名称为 Antigravity (ACP),路由 ID 为 antigravity-acp。模型选择器左侧出现额度药丸和预热按钮;工具调用继续走 DSH 的校验、审批与执行。

额度或 AI Credits 没有显示? ACP 连接与 CLI 登录是两条链路。额度查询优先使用已登录的官方 agy,AI Credits 仅从 CLI 读取;ACP 登录成功不代表 CLI 也已登录。登录态与数据来源

功能预览

左:模型选择器旁的额度药丸,展开后按额度组显示窗口与剩余百分比。右:设置页的连接状态、分阶段耗时与模型管理。画面来自当前 src/client.js 的真实组件,数字与套餐名均为虚构。

功能亮点

多个对话,不再共用一个待审批回合

默认按需启动最多 2 个独立 worker,可配置为 1–4 个。一个会话等待工具审批时,其它会话可使用空闲 worker;同一工具回合的结果仍回到原 worker。容量用满后排队,支持取消,默认等待上限 120 秒,主对话优先于排队中的后台标题。

这不是无限并发,也不保证上游账户额度随 worker 数增加。并发与续轮边界

先连接、拿目录,再开始聊天

设置页区分 立即预热 与 连接 / 登录 ACP:前者准备连接但不创建会话,后者验证会话并读取模型目录,两者都不发送聊天 prompt。目录使用缓存即时显示,支持主动刷新;模型列表按模型逐项控制是否出现在 DSH 选择器、默认思考档位、显示名与官方 ID 映射。

模型家族与思考强度分开:选择家族,再由 DSH 的思考强度菜单路由到官方对应档位。不硬编码账号应当拥有的模型清单。模型与请求项映射

图片传给模型,不只传一段文字说明

在宿主附件服务可用且上游声明 image capability 时,当前消息、历史消息和工具返回的图片通过真实图片内容传入。支持 PNG、JPEG、WebP 与 GIF;只读取宿主附件,不自行抓取图片 URL。已被宿主卸载的图片会明确说明未发送像素。

这是输入能力,不包含图片生成、音频或视频;真实图片识别效果尚未实机验收。多模态限制

额度、余额与连接状态,就在对话旁

- 额度药丸:随当前模型切换对应额度组;展开查看三个组的窗口、剩余百分比、重置时间与缓存状态。上游未单列 Argon 组时使用 Gemini 共享额度,不误报未知。
- AI Credits:与套餐额度独立展示、独立缓存与报错;未知不是零,不会自动开启 Credits 付费回退。
- 预热与诊断:药丸可直接预热;设置页集中连接与模型管理,高级配置及连接阶段、排队、进程复用和耗时按需展开。额度与余额只保留在药丸,不再在设置页重复展示。
- 设置不丢草稿:后台刷新保留未保存字段,外部冲突明确提示;遵守宿主只读状态。

它如何工作

flowchart LR
D[DSH 对话] --> A[本插件 LlmAdapter / worker 池]
A -->|stdio · ACP v1| G[官方 Antigravity agent]
G -->|私有 loopback MCP| B[本插件工具桥]
B -->|挂起调用| T[DSH 校验 / 审批 / 执行]
T -->|工具结果回填原 prompt| B
B --> G

本包是 Host + Web Client bundle:Host 注册模型 provider、管理官方进程和工具桥,Client 提供设置页与额度药丸。不修改 DSH Core,也不把官方 CLI 包装成聊天接口;CLI 仅用于只读模型目录、额度与余额查询。

它不是直接的 Gemini 模型 API。 默认情况下同一 DSH 对话会复用同一个 ACP 会话,在输入前缀与上一步输出一致时,后续回合只发送新增消息,未变化的上下文去重,变化内容仍发送,历史由官方 agent 自己持有;历史被压缩、回退或编辑,或模型、系统提示、工具目录变化时自动重建会话并全量重放一次(reuseSessions=false 可回到每轮重放)。工具续轮仍在同一个 prompt 内完成。角色消息、采样控制、延迟与计费不能视为和原生 API 相同。

使用前,先知道这些边界

| 边界 | 当前行为 |
| 工具与权限 | AGY 内置工具、ACP fs / terminal 关闭;只允许已识别的私有桥请求进入 DSH,allow_once 不等于绕过 DSH 审批。协议约束不是 OS 沙箱。 |
| 登录材料 | 插件可能读取 CLI 登录文件,并为官方 ACP 写入 / 更新本机凭据文件;这些文件不是加密凭据库,Windows 访问保护依赖目录 ACL。 |
| 官方程序 | 按需从 https://dl.google.com 下载,拒绝重定向并检查 ZIP 路径;官方未提供校验和,不宣称签名验证通过。默认 server 版本为 1.4.0,不跟随 registry 自动升级。 |
| 模型参数 | reasoningEffort 映射官方档位;maxTokens 忽略;显式 temperature / stop 记录警告并忽略,值不生效。 |
| 数据可信度 | 缓存、失败、缺字段和未知分别标记;额度与余额仅供参考,不是计费依据。 |
| 版本与测试 | 宽 peer 范围是安装条件,不是全部 Core / 平台版本实机兼容证明;隔离测试不替代真实账号与 GUI 验收。 |

兼容性与验证范围

| 项目 | 当前声明 / 证据 |
| Node.js | >=22.19 |
| DSH Core peer 范围 | >=0.2.0-rc.1 <0.2.1-0 \|\| >=0.2.1-0 <0.3.0-0,适用于所声明的三个 dsh-* peer |
| 开发契约基准 | dsh-llm / dsh-subprocess / dsh-typert-protocol / dsh-attachment 0.2.1-alpha.4,Cordis 4.0.5-alpha.2 |
| 上游协议 | ACP v1;SDK 1.4.0 与默认 server 1.4.0 是两个独立版本 |
| 当前源码本地验证 | 类型检查、38 个文件 / 658 项测试、构建;本机安装另行核验 |
| 尚未覆盖 | 0.1.31 安装后的 Desktop GUI、真实上游生成与图片识别、非 Windows 实机 |

宿主附件服务是可选依赖,缺少时仍可文本聊天,但不声明图片能力。安装准入、开发类型检查和真实运行兼容性分别看待。完整声明与验证方法

文档导航

| 你想做什么 | 文档 |
| 安装、连接、查看额度或排查错误 | 使用与技术参考 |
| 调整并发、超时、模型、代理或二进制位置 | 完整配置与环境变量 |
| 查看 0.1.24 更新、迁移注意与剩余限制 | 更新记录 |
| 构建、测试、打包或维护 npm 发布流程 | 开发、验证与发布 |

许可与反馈

本插件采用 MIT License。Google Antigravity 官方程序是独立下载的第三方软件,不随本包再分发;本插件并非 Google 官方产品。

遇到问题请提交 Issue,附插件版本、实际 DSH Core 版本、操作系统、操作步骤和已脱敏错误码。不要附 token、Cookie、完整 OAuth URL、代理密码或凭据文件。
预览分享卡片长什么样 ↓KouzakiUmi/dsh-antigravity-acp
分享 · DeepSeek Harness Hub
KouzakiUmi/dsh-antigravity-acp

在对话界面选用 Antigravity 模型并查看额度

回到顶部