dsh-agy

DSH PLUGIN浏览器与联网

仓库 chaos-03x/dsh-agy · npm dsh-agy

浏览器与联网 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

dsh-agy 为 DeepSeek Harness 提供 Google Antigravity 模型访问,支持 OAuth 登录、多账号池、429 自动轮换、设备指纹及 CLI/Web 管理。

验证等级 L5 L5 · 运行验证通过
GitHub 星标 56 复刻 18 · 未关闭 issue 3
最近更新 2026-10-10 创建于 2026-08-14
README 18.9 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add [email protected]
兼容 DSH 版本0.2.0-rc.2 等 9 个版本版本不匹配时安装会报错
Node.js 要求>=20.18.1来自仓库 package.json 的 engines 字段
前置依赖@deepseek-ai/cordis@^4.0.2、@deepseek-ai/dsh-llm@^0.1.5-rc.1 || ^0.2.0-rc.1需要同时安装的同级依赖
npm 包名dsh-agy可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-agy:DeepSeek Harness 的 Google Antigravity 模型访问插件

  • OAuth 一键登录
  • 多账号池与轮换
  • 配额仪表盘
  • CLI 独立管理
  • 设备指纹支持

适用场景

终端命令联网搜索

上游标签

agyantigravityclaudedeepseek-harnessdshdsh-plugingemini

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-10-08): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
  • L4.4_RESOLVED_ARTIFACT 安装版本已解析 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 审查结论 通过
  • 结论说明 vet 静态分析未发现可疑行为,判定为干净(clean)。
  • 风险计数 严重 0 / 高 0 / 中 0
  • 风险详情 未发现严重或警告级问题。

仓库档案

浏览器与联网
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方chaos-03x仓库 dsh-agy · 默认分支 main
分类浏览器与联网search
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言TypeScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue56 / 18 / 3收录时的数值,非实时
创建 / 更新2026-08-14 · 2026-10-10最后推送 2026-10-10
本站收录2026-08-18首次进入本站目录的时间

README 全文

18.9 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-agy


Google Antigravity (agy) access for DeepSeek Harness:
OAuth authentication, a multi-account pool with automatic 429 rotation, device
fingerprinting, and both CLI and web management.

> 中文文档:docs/README_zh.md

Features

  • OAuth login: one-click sign-in via browser OAuth callback, with headless
    paste-URL mode and a remote paste-credential blob channel.
  • Two management surfaces: web and CLI, either one works, core features are
    the same.
  • Multi-account pool: encrypted account store, usage-aware account
    selection (family-scoped quotas, OMP-aligned ranking), automatic rotation on
    rate limits, per-account cooldown to the real reset time, per-account device
    fingerprints.
  • Inline Settings UI: an Antigravity section inside DSH Settings with five
    tabs — accounts (login, activation, grouped 5-hour/weekly quota windows, test
    calls, fingerprint and proxy management), models (per-model visibility), config
    (thinking budgets, multimodal inline limit), usage (cumulative token and request
    statistics), and credentials (import/export).
    No separate page: the surface only exists where DSH Settings does.
  • Quota badge in the session header: the tightest of the active account's
    tracked windows (5-hour vs weekly) as a single figure, with the per-window
    breakdown and reset walls on hover. It reads the same grouped quota windows the
    Settings section shows, so the header and the panel cannot disagree.
  • Model visibility toggles: hide individual models from the DSH model
    selector. Blacklist semantics — only models you switch off are hidden, so
    models the server adds later stay visible.
  • Usage statistics: input / output / cache-read / cache-write tokens,
    request counts, failures, rate limits, rotations, latency and
    time-to-first-token, aggregated by account and by model. Includes calls that
    never pass through DSH (CLI, verification, test calls), which no
    session-based statistic can see.
  • CLI: dsh-agy login|status|import|verify|logout works standalone, with or
    without a harness.

Screenshots

The Antigravity section inside DSH Settings. Account emails and project names are
redacted.

Accounts Models
Limits — 5-hour and weekly windows Usage — cumulative, per-model and per-account

Quickstart

Path A: DSH Web GUI Users (Recommended — 100% Web UI, zero CLI commands)

For users using DeepSeek Harness browser workspace / Web GUI:

# 1. Install plugin into DSH web profile (via dsh CLI, or pnpx/npx if dsh is not in PATH)
dsh plugin --profile web add dsh-agy
# or: npx @deepseek-ai/dsh plugin --profile web add dsh-agy

# 2. Launch DSH Web
dsh web

# 3. Open Settings → Antigravity, then click "登录" (Login) in that section
# Complete OAuth authorization, and start using the agy provider

The section lives in Settings → Antigravity (top-level, alongside General
and Models). There is no separate dashboard page: the old /agy URL is gone.

Path B: Headless / Terminal Only (Standalone CLI)

For Linux VPS, SSH remote servers, or headless CI environments:

# Run directly without global install (npx / pnpx)
npx dsh-agy login
npx dsh-agy status

# Or install globally
npm install -g dsh-agy
dsh-agy login          # interactive OAuth (browser, --headless paste, or --blob)
dsh-agy status         # list accounts + quota summary
dsh-agy verify         # refresh + health check
dsh-agy health         # batch health check (optionally on an interval)
dsh-agy import   # import agy auth.json or credential blob (--blob)
dsh-agy logout         # remove account

CLI reference

Command Options Description
dsh-agy login --headless — print the auth URL and wait for a pasted redirect URL--blob — print a paste-credential blob instead of storing the account--port — loopback callback port (default 51121)--project — bind the login to a specific project--timeout — callback timeout (default 300000) Interactive Google OAuth
dsh-agy status — List accounts + per-model quota summary
dsh-agy import --blob — the pasted value is a credential blob--email — set the account email (skips userinfo verification)--overwrite — replace an existing account with the same email Import agy auth.json files or credential blobs (multiple files / multi-line paste = batch import)
dsh-agy export --index — export one account by index (default: all)--out — write one dsh-agy-.blob per account (default: print to stdout, one blob per line) Export account credentials as paste blobs
dsh-agy verify --index — verify one account by index (default: all) Refresh + health check
dsh-agy health --index — check only these accounts (default: all enabled)--interval — repeat on an interval instead of once Batch health check (refresh + userinfo), re-enables accounts whose credentials are live again
dsh-agy logout --index — account index (default: active)--email — account email Remove an account

Per-account proxy

Each account can have its own proxy; credentials are encrypted at rest and displayed masked as protocol//host:port.

dsh-agy login --proxy socks5://user:pass@host:1080
dsh-agy import --proxy  file.json
dsh-agy proxy set --index 0 --proxy    # set / update
dsh-agy proxy clear --index 0               # clear (fall back to env)
dsh-agy proxy test --index 0                # TCP 2s fast-fail probe
dsh-agy proxy list                          # masked list
dsh-agy status                              # shows proxy column (masked host:port)

Fallback: with no per-account proxy, requests use EnvHttpProxyAgent (HTTP_PROXY/HTTPS_PROXY with NO_PROXY honored). Per-account proxies ignore NO_PROXY, are fail-closed (unreachable proxy skips the account without cooldown and clears affinity), and loopback targets (localhost/127.0.0.1/::1) are always forced direct.

Settings → Antigravity → account detail shows a Proxy row [input] [Save][Clear][Test] with the masked host:port; writes and probes go over the management RPC (account.proxy / account.proxyTest). Save requires a non-empty value — clearing an existing proxy is the explicit Clear action, never an accidental empty Save. Test probes whatever is in the box, so an UNSAVED proxy can be checked before it is written; it reports reachable/unreachable in the notice line, and is disabled (with the reason on its tooltip) when there is nothing to probe.

The toolbar's Refresh reloads the account list and usage ledger, and additionally re-measures the 5h/weekly quota windows past their 10-minute TTL cache — that forced probe reports how many accounts it refreshed, so a click is never silent. Automatic reloads respect the TTL and spend no upstream call.

Path C: Local Development & Link

git clone https://github.com/chaos-03x/dsh-agy.git
cd dsh-agy && pnpm install && pnpm run build
dsh plugin --profile web link .

Requires Node >= 22.

Uninstall

# 1. Remove the DSH plugin from a profile
dsh plugin --profile web remove dsh-agy

# 2. Uninstall the CLI
npm uninstall -g dsh-agy

# 3. Optional: delete local account data (the whole agy data folder)
dsh-agy logout              # remove accounts first (or skip)
rm -rf ~/.dsh/agy           # accounts, usage stats, model visibility, thinking budgets, recent ring
# remove only the AGY_MASTER_KEY line from ~/.dsh/.credentials.yaml — keep other keys!
# (an upgrade from ≤0.4 may leave legacy files in ~/.dsh itself: rm -f ~/.dsh/agy-*.json)

# 4. Optional: revoke the Google-side authorization
#    Google account security → Third-party access → revoke "Antigravity"

Deleting local files does not revoke Google-side tokens; the refresh token stays
valid until it expires or you revoke it in your Google account security settings.

Other things you may care about

Thinking budget (reasoning effort)

A thinking budget is a hidden parameter in the API that controls how hard the
model thinks. Upstream gives a few of its values names, and those names are what
you see as reasoning effort (high / medium / low) in the model picker. A
budget replaces the high / medium / low value that would otherwise be sent,
rather than stacking with it.

With that in mind, here is what a custom budget can do:

  • Make a low tier think more — put a larger value on the Low row.
  • Make a high tier think less (faster, cheaper) — put a smaller value on the
    High row.
  • Maximum thinking — just select High; no value needed.
  • Back to that tier's default — clear the row.

The model adapts how long it thinks to the difficulty of the question, within the
budget. This table shows what Gemini 3.8 Flash actually spent (in tokens) under
different budgets, on questions of different difficulty:

Setting Easy Medium Hard
Default ~135 ~1,100 ~48,700
Low ~50 0 ~9,000
Medium ~150 ~870 ~60,400
High ~165 ~1,855 ~63,400
Entered 65535 ~185 ~2,130 ~62,900

Entering the maximum (65535) is identical to selecting High on the hard question,
but raises thinking on the easy and medium ones by about 10–15%. The value alone
decides the effect — the same number entered on any row sends the same request.

Note: the hard question is a combinatorial derivation (derive a tiling recurrence
and compute term 40), the medium one a number-theory proof (prove n⁴+4 is always
composite), and the easy one a two-digit multiplication.

Rotation mechanics

Usage-aware selection: when several accounts are available, requests rank them
by the requested model's backend counter family (gemini-* → Google,
claude-* → Anthropic, gpt-* → OpenAI): accounts whose quota is about to
reset with headroom left are used first ("use it or lose it"), near-exhausted
families are avoided, and exhausted families block the account until the real
reset time.

Each family is measured on both of its windows, because they refill on
different clocks:

Window Refills Exhausted when Blocks until
Rolling 5-hour every 5 hours below 15% left the 5-hour reset
Weekly every 7 days 1% or less left the weekly reset

The two gates are independent. A family can sit at 90% of its 5-hour budget
while its week is spent — four 5-hour refills do not return a weekly budget —
so a week-exhausted account is rotated away instead of being selected and
failing. The thresholds are deliberately different (15% of five hours is ~45
minutes of runway; 1% of a week is ~1.7 hours): judging the 5-hour window too
late costs a wait of at most five hours, while judging the week too late parks
the account for days.

The weekly reading comes only from retrieveUserQuotaSummary — the per-model
fetchAvailableModels probe has no window field at all — and a probe that
reports neither window cannot erase a known-drained one.

429 (Too Many Requests) responses:

Category Behavior
soft_rate_limit (Retry-After < 3s) immediate retry on the same account, no cooldown
rate_limited cooldown until the server-reported reset time (capped 30min, 5min fallback) + switch to the next account (same account when single)
quota_exhausted ("quota reached", "individual quota", RESOURCE_EXHAUSTED…) cooldown until the server-reported reset time (capped 24h) — no further calls to that account until then
unknown exponential backoff

401/403 → account revoked (marked for re-authentication). Success resets the failure
counter.

Risk controls (environment switches)

Env Effect
DSH_AGY_DISABLE=1 Kill switch: the plugin registers nothing (provider + Settings section + header quota badge + OAuth callback) and the CLI refuses to run.
DSH_AGY_FINGERPRINT_MODE=stable One fixed client identity per account — no per-request header randomization, no fingerprint regeneration (OMP-style fixed-client posture). Default dynamic keeps per-request randomization.
DSH_AGY_HEALTH_INTERVAL_MS= Background batch health probe inside the harness (refresh + userinfo on the configured interval); off by default.
DSH_AGY_IDLE_TIMEOUT_MS= Silence budget for one SSE body read (default 180000, 3 min; 0 disables). A body that stops producing bytes is abandoned instead of hanging the turn; any byte resets it, so a long reasoning pause is untouched. AGY_IDLE_TIMEOUT_MS is accepted as an alias.
DSH_AGY_MULTIMODAL_MAX_INLINE_MB= Per-file cap for inlining non-image multimodal files, in MB (1–100). Overrides the Config tab setting; an unparseable or out-of-range value is ignored, leaving the stored value or the 20MB default in force.
AGY_CLIENT_ID / AGY_CLIENT_SECRET BYO OAuth app escape hatch: override the embedded public Antigravity client credentials.

About cache hits: why not 99% like DeepSeek V4?

Bottom line: the cache hit strategy is decided by the model provider's cache
mechanics (for us, Antigravity's); agy's mechanics differ from DeepSeek's in
two ways, so its hit rate is naturally a notch below DeepSeek's.

First, the entry threshold. DeepSeek's caching is on by default with no
threshold — its very first request already hits a previously cached system
prompt. agy's Gemini-tiered models only start caching once the request prefix
reaches roughly 16k tokens, while DSH's default bare system prompt is only
about 13k — below the line. So every new conversation's first 1-2 requests
are 0%, until the accumulated messages pass 16k.

Second, how fast the cache updates. DeepSeek refreshes its cache at the
end of every request — only the newest message misses each round, giving
near-100%. agy's cache updates lag: this round's additions are not hit in
the next round — they enter the cache roughly two rounds later, and requests
for the same content in between all count as misses. Every round wastes
about 1.5-2× its additions; the long-conversation hit rate keeps rising as
the context grows, bounded by the model's context window.

Practical tips

  • Don't expect 99% from agy: the gap comes from upstream mechanics, with no
    room to optimize.
  • If you have a weird number obsession, stuff some custom content into the
    System Prompt (MCP / tool definitions / roleplay ...).

Storage & secrets

All agy data files live in one folder, ~/.dsh/agy/ (relocated wholesale by
$DSH_HOME). Upgrading from ≤0.4 moves the legacy files in ~/.dsh/ there on
first start — a one-shot atomic rename; if a legacy file reappears next to the
folder afterwards, an old-version process is still running, and a warning says so.

  • Accounts: ~/.dsh/agy/agy-accounts.json —
    AES-256-GCM encrypted; the master key lives in ~/.dsh/.credentials.yaml
    (AGY_MASTER_KEY, 0600). $DSH_HOME relocates the whole tree.
  • Fingerprint pools (version strings, SDK clients) are user-overridable via
    ~/.dsh/agy/agy-fingerprint-data.json — no code release needed to keep them current.
  • Model visibility: ~/.dsh/agy/agy-models.json (0600) — the hidden-model blacklist.
    Holds only the models you switched off, so re-enabling one removes its entry.
  • Multimodal inline cap: ~/.dsh/agy/agy-multimodal.json (0600) — the per-file inline
    limit in MB. An absent field means the built-in 20MB default.
  • Usage statistics: ~/.dsh/agy/agy-stats.json (0600) — cumulative counters plus a
    rolling 30-day window. Counts are merged under a file lock, so several
    processes (Desktop, a web-profile server, the CLI) record concurrently without
    losing each other's data.
  • Recent activity: ~/.dsh/agy/agy-recent.json (0600) — the last 200 requests and
    rotations, persisted so the panel survives a restart and shows the other
    processes' history too (external processes' new records arrive within 30s).
  • None of these files store tokens, proxies, or project ids — account emails
    only; the tokens live encrypted in the accounts file and the master key in
    the credentials document.

⚠️ Disclaimer

This plugin authenticates with Google's consumer OAuth client that ships with the
Antigravity desktop product and uses the Antigravity Cloud Code API outside of that
product. This may violate Antigravity's terms of service. Use at your own risk —
accounts can be rate-limited, throttled, or banned. Multi-account rotation, device
fingerprinting, and the signature-bypass sentinel are enabled by default and are
designed to work around upstream limits; you are responsible for how you use them and
for any account consequences.

Credits

This project references logic and data from the following MIT-licensed sources:

Source Content
opencode-antigravity-auth (archived) OAuth flow shape, account-store schema & versioned migration, 429/backoff concepts, fingerprint design
antigravity-claude-proxy PR #170 Device fingerprint generation (via opencode-antigravity-auth)
OmniRoute Wire format (envelope, headers, SSE), endpoint order, agy token-file parsing, paste-credential blob codec, thoughtSignature replay, 429 category engine
DeepSeek Harness Plugin shell, LlmAdapter seam, DSH conventions

Development

pnpm install
pnpm test                      # vitest, fixture-driven, no network
pnpm run record:fixtures       # re-record real-API fixtures (needs a real account)
pnpm run e2e                   # real-account end-to-end (needs AGY_REFRESH_TOKEN)
pnpm run debug:request         # endpoint/header bisection probe
pnpm run verify:tools          # live two-turn tool-signature check
pnpm run verify:proxy-routing  # live per-account proxy routing + fail-closed check
npm pack --dry-run             # verify the publishable artifact

常见问题

8 问
答案由本站依据条目字段整理,不引用上游原文
dsh-agy 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add [email protected]` 即可。对应的 npm 包名是 `dsh-agy`。

dsh-agy 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-agy 安全吗?

低风险。vet 静态分析未发现可疑行为,判定为干净(clean)。

dsh-agy 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.0-rc.2、0.2.0-rc.1、0.1.7-rc.2、0.1.7-rc.1、0.1.6-alpha.2、0.1.6-alpha.1、0.1.5-rc.2、0.1.3-alpha.2。版本较多,只列出前 8 个。

dsh-agy 需要什么运行环境?

Node.js >=20.18.1;需要同时安装 @deepseek-ai/cordis@^4.0.2、@deepseek-ai/dsh-llm@^0.1.5-rc.1 || ^0.2.0-rc.1。环境不满足时安装会失败,建议先确认本机版本。

dsh-agy 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-agy 有哪些功能?

OAuth 一键登录、多账号池与轮换、配额仪表盘、CLI 独立管理、设备指纹支持。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

浏览器与联网
按星标排序,可作替代方案

dsh-our-free-model

dsh-our-free-model

在 DeepSeek Harness 中装上这个 DSH plugin,无需登录、注册或填 API Key,即可直接调用 DeepSeek

L3 · 安装规范通过 8,796 星

dsh-web

dsh-web

侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。

L3 · 安装规范通过 8,549 星

BrowserSkill

BrowserSkill

BrowserSkill 的 DeepSeek Harness 浏览器自动化桥接插件,通过原生浏览器工具控制可见的 Chrome 和 Edg

L4 · 沙盒安装通过 8,456 星

dsh-pocket

dsh-pocket

DSH Pocket 让 DeepSeek Harness 装进口袋:电脑跑 dsh web,手机扫码即实时同步访问(局域网+公网),人在外

L5 · 运行验证通过 1,656 星

Browser4

Browser4

L4 · 沙盒安装通过 1,152 星

agentrq

agentrq

L4 · 沙盒安装通过 1,140 星

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-10-08。