Models & Providers
dsh-llm-agy
flg1217/dsh-llm-agy · ★ 6
AGY (Antigravity CLI) integration for DeepSeek Harness: LLM adapter subagents, deep web search, connectivity diagnostics panel
Manifest details
安装
dsh plugin --profile web add github:flg1217/dsh-llm-agyGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
For install and environment setup, plus plugin development tutorials, see DSH community docs ↗
README
Table of contents
- 1. What it is
- 2. Core features
- 2.1 Independent reasoning subagents (provider route agy)
- 2.2 Image input for text-only models (global, zero config)
- 2.3 Deep web search (search provider agy)
- 2.4 Connectivity diagnostics panel (Settings → Plugins → AntiGravity)
- 3. Quick start
- Requirements
- Install the plugin
- Install AGY (Antigravity CLI)
- Configuration
- 4. Typical usage
- Web search via AGY deep research
- Reading images with a text-only model
- Subagent delegation to AGY
- CLI diagnostics
- 5. How it works
- 6. Development
- 7. License
AGY (Antigravity CLI) — the agent-boosting engine for DeepSeek Harness Seamlessly integrate Google's AI coding agent Antigravity (powered by Gemini) into dsh: independent reasoning subagents, deep web search, image input for text-only models, and one-click connectivity diagnostics. Plug-and-play, zero source changes.
1. What it is
dsh-llm-agy is an open-source plugin for DeepSeek Harness(dsh) that connects Google's AI coding agent Antigravity CLI(AGY, based on Gemini) to the dsh ecosystem, adding these enhancement channels to your workflow:
| Capability | Description |
|---|---|
| Independent reasoning subagents | Delegate frontend/UI and other tasks to AGY-driven subagents (Gemini 3.7 Flash High), running alongside your main agent; long-lived sessions are reusable |
| Deep web search | The web_search tool performs complete deep research through AGY's Google search channel — search, open sources, read full content, synthesize an answer — not just a link list |
| Image input for text-only models | Paste images in the composer with a pure-text main model (e.g. DeepSeek V4 Flash): the backend reads the image in-place via AGY and injects a text description into the message. Fully transparent — no new provider routes, no model switching, no workspace writes |
| Connectivity diagnostics panel | An AntiGravity card inside dsh Settings → Plugins: check local install & login status, run a real connectivity test, copy install commands for every platform with one click |
The plugin strictly follows dsh's official extension mechanisms (profile bundle patch / registerModelDiscovery / registerSearchProvider / llm/stream waterfall / client slots). No dsh source code is modified, so it keeps working across dsh upgrades.
2. Core features
2.1 Independent reasoning subagents (provider route agy)
Your main agent can delegate tasks to AGY — a second brain with its own reasoning chain and tool surface:
- Switch any subagent to AGY reasoning via
agentOptions.provider: 'agy' - Built-in tool:
subagent_agy_ui(frontend/UI design, styling research, visual implementation, screenshot verification; continuable long-lived sessions) - Split complex tasks into independent sub-tasks, schedule subagents in parallel, then merge the results
2.2 Image input for text-only models (global, zero config)
Text-only main models (e.g. DeepSeek V4 Flash) cannot natively accept images, but this plugin makes pasting images work out of the box:
- Paste and go: paste an image in any composer — it flows as a native ImageBlock; the backend materializes it to
.dsh-llm-agy/tmp/pasted-images/under the workspace and replaces it with a path-text before handing the request to the original model route - Fully transparent: no new provider routes, no model switching, no frontend changes — the user never notices
- Tool-use policy: the plugin injects a global system-prompt section guiding the agent ("image content is already in the message, never delegate image reading to a subagent, don't poll background subagents"); toggleable in the settings panel
2.3 Deep web search (search provider agy)
Upgrade dsh's web_search tool from "return a link list" to "complete deep research":
- Searches via AGY's
search_web(Google) - AGY autonomously: searches → opens each source and reads the full content → writes an accurate, complete, cited answer
- The reply language follows the query language; nothing is written to the session
- One-line switch:
web.searchProvider = 'agy'
2.4 Connectivity diagnostics panel (Settings → Plugins → AntiGravity)
Full AGY environment check without touching a terminal:
- Install / login check: one click confirms whether AGY is installed and signed in
- Connectivity test: sends a real prompt and shows AGY's actual reply
- Install commands: Windows (winget) / macOS (Homebrew) / Linux (curl) / npm — one-click copy
- Tool reference: quick reference for the bundled tools (
subagent_agy_ui/web_search) - Toggle: "注入工具使用提示词" — controls the global tool-use-policy prompt (on by default)
- The panel interacts through the official model-discovery channel (
api.llm.discoverModels); no session is consumed
3. Quick start
Requirements
- dsh (web profile; npx or source build)
- Node.js ≥ 20
- AGY CLI (see install commands below)
Install the plugin
# Install from the Git repository (no build needed — lib/ is committed)
git clone https://github.com/flg1217/dsh-llm-agy.git
cd dsh-llm-agy
pnpm install # install plugin deps (dsh mounts local dirs via link:; the plugin needs its own node_modules)
dsh plugin --profile web add <dsh-llm-agy directory>
After installation, restart dsh web, open Settings → Plugins — the AntiGravity card should appear; expand it and click "Check install/login" to confirm the environment is ready.
Install AGY (Antigravity CLI)
# Windows
winget install --id Google.Antigravity
# macOS
brew install --cask antigravity
# Linux / macOS (generic)
curl -fsSL https://antigravity.google/install | bash
# Or npm global
npm install -g @antigravity/cli
Official docs: https://antigravity.google/docs/cli/install
Configuration
| Option | Default | Description |
|---|---|---|
command |
agy |
AGY executable command |
model |
gemini-3.7-flash-high |
Reasoning model |
effort |
high |
Reasoning effort (low / medium / high) |
proxy |
http://127.0.0.1:7890 |
Traffic proxy (empty string disables) |
searchProviderId |
agy |
dsh web search provider id (empty string disables search) |
delegationGuide |
true |
Inject the global tool-use-policy system prompt (toggle in the settings panel) |
Editable in the settings panel, or in the profile's cordis.patch.yml.
4. Typical usage
Web search via AGY deep research
# profile patch (~/.dsh/profiles/web/cordis.patch.yml)
- id: web
config:
searchProvider: agy
After this, web_search returns AGY's deep-researched answer with cited sources.
Reading images with a text-only model
No configuration needed — paste an image in any composer; the backend reads it in-place via AGY and injects a text description into the message, so the main agent answers directly from the image content (no tool calls):
User: analyze this image (pastes image)
Backend: AGY reads the image → message carries the image description → main agent analyzes directly
Subagent delegation to AGY
No configuration needed — the plugin mounts the official @deepseek-ai/dsh-tool-subagent on startup and registers the tool (globally visible in every session/preset):
subagent_agy_ui(continuable, reusable long-lived sessions): frontend/UI design, styling research, visual implementation, screenshot verification
Frontend/UI tasks: delegate to subagent_agy_ui — design, implementation and screenshot verification by an independent Gemini model.
CLI diagnostics
/agy status # check AGY install & login status
/agy test # run a real test, show AGY's reply
/agy # help
5. How it works
The plugin is dual-faced and assembled through dsh's official extension points:
┌─────────────── Host process (node half) ────────────────┐
│ index.ts plugin entry │
│ adapter.ts AgyLlmAdapter — spawn agy reasoning │
│ search.ts ctx.web.registerSearchProvider │
│ settings.ts settings + registerModelDiscovery │
│ image-paste.ts llm/stream listener + resolveModelInfo │
│ wrapper: ImageBlock → workspace path │
│ read-image.ts AGY image reading (used by the relay) │
│ delegate-guide.ts global tool-use-policy section │
└─────────────────────────────────────────────────────────┘
┌─────────────── Browser (web half) ──────────────────────┐
│ client/index.js settings.plugin.item card │
│ reuses official components & styles │
└─────────────────────────────────────────────────────────┘
- Assembly:
cordis.patch.yml(bundle patch) +dsh.bundle/dsh.clientmanifest in package.json;dsh plugin adddoes it all - Reasoning: the server spawns the AGY CLI (stream-json protocol); live streaming output and token stats are rendered by the dsh harness
- Image input: wraps
llm.resolveModelInfoto declare image capability for text-only models (bypassing dsh's rejection check); anllm/streamwaterfall listener materializes ImageBlocks to workspace paths and calls the original adapter — no new providers, no model switching, no frontend changes - Image reading: the relay spawns AGY in-place and returns a text description
- Search:
search()calls AGY directly, which autonomously retrieves and synthesizes - Panel: status/test probes go through the official
api.llm.discoverModelschannel; the server executes and the result returns to the panel — no session writes, no dsh source changes
6. Development
git clone https://github.com/flg1217/dsh-llm-agy.git
cd dsh-llm-agy
pnpm install
pnpm build
pnpm typecheck
pnpm test