DeepSeek Harness 的 AGY(Antigravity 命令行)集成:LLM 适配器子代理、深度网络搜索、连通性诊断面板
39.2/100
综合分
6
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add flg1217/dsh-llm-agy该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · search
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 5 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包@flg1217/dsh-llm-agy(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/31 03:44:28
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 90 处,展示前 90 条)
- 写入剪贴板lib/types/client/index.d.ts:112
try { await writeClipboard(cmd) } catch { } - 发起网络请求lib/types/client/index.d.ts:248
const resp = await fetch('/api/llm-agy/models', { headers: { accept: 'application/json' } }) - 写入剪贴板lib/client.js:112
try { await writeClipboard(cmd) } catch { } - 发起网络请求lib/client.js:248
const resp = await fetch('/api/llm-agy/models', { headers: { accept: 'application/json' } }) - 执行外部命令固定命令lib/adapter.js:146
spawn('taskkill', ['/PID', String(proc.pid), '/T', '/F'], { stdio: 'ignore', windowsHide: true }) - 执行外部命令来自配置/变量lib/adapter.js:322
const proc = spawn(this.options.command, [ - 执行外部命令固定命令lib/adapter.js:740
execFile('powershell.exe', ['-NoProfile', '-Command', - 执行外部命令来自配置/变量lib/search.js:45
const r = spawnSync(this.options.command, ['--version'], { stdio: 'ignore', windowsHide: true }); - 执行外部命令来自配置/变量lib/settings.js:16
const r = spawnSync(command, ['--version'], { stdio: 'ignore', windowsHide: true }); - 读取本地文件lib/settings.js:26
if (!existsSync(base)) - 读取本地文件lib/settings.js:30
if (existsSync(conversations)) { - 读取本地文件lib/settings.js:32
return readdirSync(conversations).length > 0; - 执行外部命令来自配置/变量lib/settings.js:41
const proc = spawn(command, [ - 执行外部命令来自配置/变量lib/settings.js:88
const r = spawnSync(command, ['models'], { encoding: 'utf8', timeout: 15_000, windowsHide: true }); - 写入本地文件lib/image-paste.js:77
writeFileSync(tmp, stored.data); - 删除本地文件递归lib/image-paste.js:84
rmSync(dir, { recursive: true, force: true }); - 读取本地文件lib/read-image.js:99
const stat = statSync(diskPath); - 读取本地文件lib/read-image.js:102
const data = new Uint8Array(readFileSync(diskPath)); - 写入本地文件lib/read-image.js:164
writeFileSync(tmp, out.data); - 删除本地文件递归lib/read-image.js:169
rmSync(dir, { recursive: true, force: true }); - 读取本地文件lib/read-image.js:243
if (!existsSync(diskPath) && !isAbsolute(diskPath)) { - 读取本地文件lib/read-image.js:245
if (sessionCwd !== undefined && existsSync(join(sessionCwd, diskPath))) { - 读取本地文件lib/read-image.js:249
if (existsSync(diskPath)) { - 执行外部命令来自配置/变量lib/models.js:39
child = spawn(command, ['models'], { - 写入本地文件lib/serialize.js:112
await writeFile(file, stored.data); - 写入本地文件lib/serialize.js:133
await writeFile(file, prompt); - 删除本地文件lib/serialize.js:140
await Promise.allSettled(tempFiles.map(p => unlink(p).catch(() => { }))); - 读取本地文件lib/conversations.js:64
const parsed = JSON.parse(readFileSync(this.file, 'utf8')); - 写入本地文件lib/conversations.js:97
mkdirSync(dirname(this.file), { recursive: true }); - 写入本地文件lib/conversations.js:99
writeFileSync(tmp, JSON.stringify(Object.fromEntries(this.map), null, 2)); - 写入本地文件lib/conversations.js:100
renameSync(tmp, this.file); - 执行外部命令来自配置/变量lib/agy-run.js:61
const proc = spawn(command, [ - 读取本地文件lib/tool-preview.js:57
const stat = statSync(filePath); - 读取本地文件lib/tool-preview.js:60
const data = new Uint8Array(readFileSync(filePath)); - 读取本地文件lib/tool-preview.js:92
const stat = statSync(filePath); - 读取本地文件lib/tool-preview.js:95
return readFileSync(filePath, 'utf8'); - 读取本地文件lib/tool-preview.js:191
const stat = statSync(file); - 读取本地文件lib/agy-executor.js:86
if (existsSync(file)) { - 读取本地文件lib/agy-executor.js:87
const current = readFileSync(file, 'utf8'); - 写入本地文件lib/agy-executor.js:91
mkdirSync(dirname(file), { recursive: true }); - 写入本地文件lib/agy-executor.js:92
writeFileSync(file, EXECUTOR_AGENT_MD); - 读取本地文件lib/agy-executor.js:109
raw = readFileSync(mcpConfigFile(), 'utf8'); - 写入本地文件lib/agy-executor.js:137
copyFileSync(file, `${file}.bak`); - 写入本地文件lib/agy-executor.js:150
mkdirSync(dirname(file), { recursive: true }); - 写入本地文件lib/agy-executor.js:151
writeFileSync(file, `${JSON.stringify(config, null, 2)}\n`); - 写入本地文件lib/agy-executor.js:177
writeFileSync(file, `${JSON.stringify(config, null, 2)}\n`); - 执行外部命令固定命令src/adapter.ts:215
spawn('taskkill', ['/PID', String(proc.pid), '/T', '/F'], { stdio: 'ignore', windowsHide: true }) - 执行外部命令来自配置/变量src/adapter.ts:478
const proc = spawn(this.options.command, [ - 执行外部命令固定命令src/adapter.ts:897
execFile('powershell.exe', ['-NoProfile', '-Command', - 读取本地文件src/agy-executor.ts:93
if (existsSync(file)) { - 读取本地文件src/agy-executor.ts:94
const current = readFileSync(file, 'utf8') - 写入本地文件src/agy-executor.ts:97
mkdirSync(dirname(file), { recursive: true }) - 写入本地文件src/agy-executor.ts:98
writeFileSync(file, EXECUTOR_AGENT_MD) - 读取本地文件src/agy-executor.ts:115
raw = readFileSync(mcpConfigFile(), 'utf8') - 写入本地文件src/agy-executor.ts:140
try { copyFileSync(file, `${file}.bak`) } catch { } - 写入本地文件src/agy-executor.ts:150
mkdirSync(dirname(file), { recursive: true }) - 写入本地文件src/agy-executor.ts:151
writeFileSync(file, `${JSON.stringify(config, null, 2)}\n`) - 写入本地文件src/agy-executor.ts:175
writeFileSync(file, `${JSON.stringify(config, null, 2)}\n`) - 执行外部命令来自配置/变量src/agy-run.ts:97
const proc = spawn(command, [ - 写入剪贴板src/client/index.js:112
try { await writeClipboard(cmd) } catch { } - 发起网络请求src/client/index.js:248
const resp = await fetch('/api/llm-agy/models', { headers: { accept: 'application/json' } }) - 读取本地文件src/conversations.ts:83
const parsed = JSON.parse(readFileSync(this.file, 'utf8')) as Record<string, Partial<AgyConversationRecord>> - 写入本地文件src/conversations.ts:114
mkdirSync(dirname(this.file), { recursive: true }) - 写入本地文件src/conversations.ts:116
writeFileSync(tmp, JSON.stringify(Object.fromEntries(this.map), null, 2)) - 写入本地文件src/conversations.ts:117
renameSync(tmp, this.file) - 写入本地文件src/image-paste.ts:94
writeFileSync(tmp, stored.data) - 删除本地文件递归src/image-paste.ts:99
rmSync(dir, { recursive: true, force: true }) - 执行外部命令来自配置/变量src/models.ts:50
child = spawn(command, ['models'], { - 读取本地文件src/read-image.ts:134
const stat = statSync(diskPath) - 读取本地文件src/read-image.ts:136
const data = new Uint8Array(readFileSync(diskPath)) - 写入本地文件src/read-image.ts:200
writeFileSync(tmp, out.data) - 删除本地文件递归src/read-image.ts:204
rmSync(dir, { recursive: true, force: true }) - 读取本地文件src/read-image.ts:284
if (!existsSync(diskPath) && !isAbsolute(diskPath)) { - 读取本地文件src/read-image.ts:288
if (sessionCwd !== undefined && existsSync(join(sessionCwd, diskPath))) { - 读取本地文件src/read-image.ts:292
if (existsSync(diskPath)) { - 执行外部命令来自配置/变量src/search.ts:60
const r = spawnSync(this.options.command, ['--version'], { stdio: 'ignore', windowsHide: true }) - 写入本地文件src/serialize.ts:136
await writeFile(file, stored.data) - 写入本地文件src/serialize.ts:156
await writeFile(file, prompt) - 删除本地文件src/serialize.ts:164
await Promise.allSettled(tempFiles.map(p => unlink(p).catch(() => {}))) - 执行外部命令来自配置/变量src/settings.ts:32
const r = spawnSync(command, ['--version'], { stdio: 'ignore', windowsHide: true }) - 读取本地文件src/settings.ts:43
if (!existsSync(base)) return false - 读取本地文件src/settings.ts:46
if (existsSync(conversations)) { - 读取本地文件src/settings.ts:48
return readdirSync(conversations).length > 0 - 执行外部命令来自配置/变量src/settings.ts:57
const proc = spawn(command, [ - 执行外部命令来自配置/变量src/settings.ts:105
const r = spawnSync(command, ['models'], { encoding: 'utf8', timeout: 15_000, windowsHide: true }) - 读取本地文件src/tool-preview.ts:60
const stat = statSync(filePath) - 读取本地文件src/tool-preview.ts:62
const data = new Uint8Array(readFileSync(filePath)) - 读取本地文件src/tool-preview.ts:93
const stat = statSync(filePath) - 读取本地文件src/tool-preview.ts:95
return readFileSync(filePath, 'utf8') - 读取本地文件src/tool-preview.ts:185
const stat = statSync(file)
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-llm@deepseek-ai/dsh-settings@deepseek-ai/dsh-tools@deepseek-ai/dsh-subagent@deepseek-ai/dsh-util-values@deepseek-ai/dsh-session@deepseek-ai/dsh-web@deepseek-ai/dsh-host-webserver@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- LLM适配器子代理
- 深度网络搜索
- 连通性诊断面板
README
由 DeepSeek 最新模型翻译生成dsh-llm-agy
AGY(Antigravity CLI)— DeepSeek Harness 的智能体增强引擎把 Google 的 AI 编程代理 Antigravity(由 Gemini 驱动)深度集成进 dsh:独立推理子代理、深度网页搜索、文本模型图片输入、一键连通性诊断。开箱即用,零源码改动。
一、这是什么
dsh-llm-agy 是面向 DeepSeek Harness(dsh)的开源插件,把 Google 出品的 AI 编程代理 Antigravity CLI(AGY,基于 Gemini)无缝接入 dsh 生态,为你的工作流提供以下增强通道:
| 能力 | 说明 |
| 独立推理子代理 | 把前端/UI 等任务委派给 AGY 驱动的子代理(Gemini 3.7 Flash High),与主代理并行,长线会话可复用 |
| 深度网页搜索 | web_search 工具经由 AGY 的 Google 搜索通道完成完整深度检索——搜索、打开来源、阅读全文、综合成文,而非简单链接列表 |
| 文本模型图片输入 | 纯文本主模型(如 DeepSeek V4 Flash)也能在输入栏直接粘贴图片:后端由 AGY 就地读图,把图片转为文字描述进入消息。
展开完整文档(README 剩余 1 节)
dsh-llm-agy AGY(Antigravity CLI)— DeepSeek Harness 的智能体增强引擎把 Google 的 AI 编程代理 Antigravity(由 Gemini 驱动)深度集成进 dsh:独立推理子代理、深度网页搜索、文本模型图片输入、一键连通性诊断。开箱即用,零源码改动。 一、这是什么 dsh-llm-agy 是面向 DeepSeek Harness(dsh)的开源插件,把 Google 出品的 AI 编程代理 Antigravity CLI(AGY,基于 Gemini)无缝接入 dsh 生态,为你的工作流提供以下增强通道: | 能力 | 说明 | | 独立推理子代理 | 把前端/UI 等任务委派给 AGY 驱动的子代理(Gemini 3.7 Flash High),与主代理并行,长线会话可复用 | | 深度网页搜索 | web_search 工具经由 AGY 的 Google 搜索通道完成完整深度检索——搜索、打开来源、阅读全文、综合成文,而非简单链接列表 | | 文本模型图片输入 | 纯文本主模型(如 DeepSeek V4 Flash)也能在输入栏直接粘贴图片:后端由 AGY 就地读图,把图片转为文字描述进入消息。全程无感,不新增模型路由、不切换模型,图片只临时落盘系统临时目录且读完即删 | | 连通性诊断面板 | dsh 设置 → 插件内的 AntiGravity 卡片:检测本机安装与登录状态、发起真实连通性测试、一键复制各平台安装命令 | 插件严格遵循 dsh 官方扩展机制(profile bundle patch / registerModelDiscovery / registerSearchProvider / llm/stream waterfall / 客户端 slot),不修改 dsh 任何源码,可随 dsh 平滑升级。 二、核心功能 1. 独立推理子代理(provider 路由 agy) 主代理可随时把任务委派给 AGY——一个由 Gemini 驱动、具备独立思维链与工具面的第二大脑: - 通过 agentOptions.provider: 'agy' 把任意子代理切换为 AGY 推理 - 内置开箱工具:subagent_agy_ui(前端/UI 设计、样式研究、视觉实现、截图核验,可复用长线会话)+ list_agy_models(查询 AGY 当前支持的模型 id,供 subagent_agy_ui 的 model 参数动态指定) - 复杂大任务可拆分为多个独立子任务并行调度,再汇总整合 2. 文本模型图片输入(全局,零配置) 纯文本主模型(如 DeepSeek V4 Flash)不支持图片输入,但本插件让「输入栏贴图」开箱即用: - 粘贴即用:在任意输入栏粘贴图片,原生走 ImageBlock;插件在后端把图片写成系统临时文件(不落工作区),由 AGY 就地读图取回文字描述,临时文件随即删除,再把描述交回原模型路由 - 完全透明:不新增 provider 路由、不切换模型、不改前端,用户无感知 - 工具使用提示词:插件注入全局 system prompt section,引导主代理「图片内容已在消息中,禁止委派子代理读图、不轮询后台子代理」(设置面板可关闭) 3. 深度网页搜索(搜索 provider agy) 把 dsh 的 web_search 工具从「返回链接列表」升级为「完成深度调研」: - 经由 AGY 的 search_web(Google 搜索)发起检索 - AGY 自主完成:搜索 → 打开每个来源阅读全文 → 综合撰写准确、完整、带引用的回答 - 结果语言跟随提问语言;全程不写入会话记录 - 一键接管:设置面板「AGY 搜索接管 web_search」开关。开启时插件经 dsh 的 ctx.configEditor 自动把 web 行的 searchProvider 写成 agy、并把 tool-web 行的 searchTimeoutMs 抬到 300000ms(写入 profile patch 并热重载),关闭时还原,无需手工改配置 - 为什么必须改写配置:dsh 的 provider 选择规则是「显式配置的 id 优先于一切已注册 provider」,而 base bundle 把 web.searchProvider 固定为 deepseek-official —— 只调用 registerSearchProvider() 永远拿不到选择权 - 搜索耗时:一次 web_search = 一次完整 AGY 调研(实测约 130s),所以接管会同时抬高 tool-web.searchTimeoutMs(只在低于 300000ms 时抬高,不压低你配的更大值;关闭时只回收这一档) 4. 连通性诊断面板(设置 → 插件 → AntiGravity) 无需命令行即可完成 AGY 环境体检: - 检测安装/登录:一键确认本机是否已安装 AGY、是否已登录 - 连通性测试:发起真实指令,直接展示 AGY 的实际回复内容 - 安装命令:Windows(winget)/ macOS(Homebrew)/ Linux(curl)/ npm 四平台命令,一键复制 - 工具说明:内置工具速查(subagent_agy_ui / web_search) - 开关:「注入工具使用提示词」——控制是否注入全局工具使用提示词(默认开) - 面板交互走官方模型探测通道(api.llm.discoverModels),不占用会话 三、快速开始 系统要求 - dsh(web profile,npx 版或源码版均可);兼容 dsh >= 0.1.0-rc.6 - Node.js ≥ 20 - AGY CLI(见下方安装命令) - 兼容性验证日期:2026-08-21(验证于 dsh rc.8) 安装插件 从 Git 仓库安装(免构建——lib/ 已随仓库提交) git clone https://github.com/flg1217/dsh-llm-agy.git cd dsh-llm-agy pnpm install # 安装插件依赖(dsh 以 link: 方式挂载本地目录,需插件自身带 node_modules) dsh plugin --profile web add <dsh-llm-agy 目录> 安装完成后重启 dsh web,进入 设置 → 插件,应能看到 AntiGravity 卡片;展开卡片,点击「检测安装/登录」确认环境就绪。 卸载插件 dsh plugin --profile web remove @flg1217/dsh-llm-agy 如有残留,手工清理:移除 profile(~/.dsh/profiles/web)的 cordis.patch.yml 中 dsh-llm-agy 的 - insert 块,以及 package.json dependencies 中对应的 @flg1217/dsh-llm-agy 行。卸载后重启 dsh web 即完全移除(AGY CLI 本身不受影响)。 安装 AGY(Antigravity CLI) Windows winget install --id Google.Antigravity macOS brew install --cask antigravity Linux / macOS(通用) curl -fsSL https://antigravity.google/install | bash 或 npm 全局 npm install -g @antigravity/cli 官方文档:https://antigravity.google/docs/cli/install 配置项 | 配置 | 默认值 | 说明 | | command | agy | AGY 可执行文件命令 | | model | gemini-3.7-flash-high | 推理模型 | | effort | high | 推理强度(low / medium / high) | | proxy | http://127.0.0.1:7890 | 流量代理(空字符串禁用) | | searchOverride | true | 全局 web_search 接管开关:开启时自动改写 web / tool-web 两行配置,关闭时还原并只提供独立的 agy_web_search 工具 | | delegationGuide | true | 注入全局「工具使用提示词」系统提示(设置面板可切) | 可在设置面板直接修改,或编辑 profile 的 cordis.patch.yml。 四、典型用法 网页搜索走 AGY 深度调研 设置面板里打开「AGY 搜索接管 web_search」即可:插件会把下面两行写进 profile patch 并热重载,关闭开关时自动还原。 profile patch(~/.dsh/profiles/web/cordis.patch.yml)——由开关自动维护,无需手改 - id: web config: searchProvider: agy fetchProvider: http # patch 对 config 是整体替换,必须写全 - id: tool-web config: fetch: true searchTimeoutMs: 300000 # 一次 AGY 调研约 130s,60000ms 会直接超时 此后主代理调用 web_search 时,将获得 AGY 深度检索后撰写的完整回答与来源引用。 文本模型读图 无需任何配置——输入栏粘贴图片后,后端在请求组装时由 AGY 就地读图,把图片转为文字描述直接进入消息,主代理直接基于图片内容回答(无需调用任何工具)。 用户:请分析这张图片(粘贴图片) 后端:AGY 读图 → 消息里携带图片内容描述 → 主代理直接分析 按模型模态分流读图工具 模型自己调用工具读图时有两条路:原生 read_image(图片块直接进模型上下文,要求模型支持图片输入)与 read_image_agy(AGY/Gemini 转述成文字)。闸门按路由模型的模态自动分流(设置面板「按模型模态分流读图工具」,默认开启): | 路由模型 | 原生 read_image | read_image_agy | | 多模态(原生声明支持 image) | 放行(图片直进上下文) | 拒绝 → 指路 read_image(转述会丢细节) | | 仅文本 / 能力未知 | 拒绝 → 指路 read_image_agy | 放行(AGY 转述是安全兜底) | 判定真值只认原生声明(relay 会把纯文本路由伪声明成支持 image,拿 resolveModelInfo 的返回值判会失效)。关掉该开关则两条规则都不拦,只靠提示词引导模型自己选。 子代理委派给 AGY 无需配置——插件启动时自动注册工具(全局可见,所有会话/预设生效): - subagent_agy_ui(continuable,可复用长线会话):前端/UI 设计、样式研究、视觉实现、截图核验;接受可选 model 参数,主代理可动态指定模型 id(不传则用插件默认模型) - list_agy_models:从 agy models 实时解析当前支持的模型 id 列表,委派前先查询再传准确 id 由 AGY/Gemini 驱动(agentOptions.provider: agy),独立于主代理的模型。如不需要,可在插件配置里设 registerSubagentTools: false 关闭。看图不委派子代理——粘贴图片由 AGY 就地读图。 前端/UI 类任务:委派 subagent_agy_ui,由独立 Gemini 模型完成设计、实现与截图核验。 诊断命令行 /agy status # 检测 AGY 安装与登录状态 /agy test # 发起真实测试,展示 AGY 回复 /agy # 帮助 五、工作原理 插件为双面结构,由 dsh 官方扩展机制装配: ┌─────────────── 宿主进程(node 半)───────────────────┐ │ index.ts 插件入口 │ │ adapter.ts AgyLlmAdapter — spawn agy 推理适配 │ │ search.ts ctx.web.registerSearchProvider │ │ settings.ts settings + registerModelDiscovery │ │ image-paste.ts llm/stream 监听器 + resolveModelInfo │ │ 包装:ImageBlock → 工作区路径文本 │ │ read-image.ts AGY 读图执行(图片中继调用) │ │ delegate-guide.ts 全局工具使用提示词 section │ └──────────────────────────────────────────────────────┘ ┌─────────────── 浏览器(web 半)───────────────────────┐ │ client/index.js settings.plugin.item 卡片 │ │ 复用官方组件与样式 │ └──────────────────────────────────────────────────────┘ - 装配:cordis.patch.yml(bundle patch)+ package.json 的 dsh.bundle/dsh.client 清单,dsh plugin add 一键完成 - 推理:服务端 spawn AGY CLI(stream-json 协议),实时流式输出与 token 统计由 dsh harness 统一呈现 - 图片输入:包装 llm.resolveModelInfo,为文本模型声明 image 能力(绕过 dsh 的拒绝校验);llm/stream waterfall 监听器把 ImageBlock 就地读图转成文字描述,然后直接调用原 adapter——不新增 provider、不切换模型、不改前端 - 读图:图片中继在请求组装时 spawn AGY 就地读图,返回文字描述 - 搜索:search() 直接调用 AGY,由其自主完成检索与综合 - 面板:检测/测试经官方 api.llm.discoverModels 通道触发,服务端执行、结果回显,不写会话、不改 dsh 源码 六、参与开发 git clone https://github.com/flg1217/dsh-llm-agy.git cd dsh-llm-agy pnpm install pnpm build # tsc 服务端 + 客户端 bundle 拷贝 pnpm typecheck pnpm test 详见 docs/CONTRIBUTING.zh.md。 七、许可证 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
flg1217/dsh-llm-agy
DeepSeek Harness 的 AGY(Antigravity 命令行)集成:LLM 适配器子代理、深度网络搜索、连通性诊断面板
相关插件 · 搜索 / 抓取
LLM 知识平台Tencent/WeKnora
概览 ·快速开始 ·新特性 ·功能 ·客户端 ·文档 ·开发
★ 36,379已汉化DSH
72
智能体记忆系统MemTensor/MemOS
MemOS 2.0 Stardust星尘
★ 12,228已汉化DSH
71.3
跨代理记忆库zilliztech/memsearch
跨平台语义记忆,专为 AI 编程智能体打造。
★ 2,799已汉化DSH
70.9
技能语料库EverMind-AI/SkillCorpus
SkillCorpus 能给你什么
★ 695已汉化DSH
69.8
动画花园资源检索yjl9903/AnimeGarden
動漫花園 镜像站 | 动画 BT 资源聚合站 | 动画 BT 资源开放接口
★ 1,391已汉化DSH
69.2
代码图谱记忆syncable-dev/memtrace-public
你的智能体值得拥有结构化记忆。
★ 510已汉化MCP
67.9
这是你的仓库?认领条目