为插件接入多轮对话与工具调度的智能体循环
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add snow-The/dsh-busyloop该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · dev
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 12 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 12 处,展示前 12 条)
- 读取密钥环境变量dist/index.js:29
var KEY_FILE = process.env.DSH_BUSYLOOP_KEYS ?? join(DSH_HOME, "busyloop-keys.json"); - 读取本地文件dist/index.js:33
if (!existsSync(KEY_FILE)) return []; - 读取本地文件dist/index.js:34
const raw = JSON.parse(readFileSync(KEY_FILE, "utf8")); - 读取本地文件dist/index.js:47
if (!existsSync(ACTIVE_FILE)) return void 0; - 读取本地文件dist/index.js:48
return JSON.parse(readFileSync(ACTIVE_FILE, "utf8"))?.alias; - 读取本地文件dist/index.js:101
text = readFileSync2(file, "utf8"); - 写入本地文件dist/index.js:138
mkdirSync2(dirname(file), { recursive: true }); - 写入本地文件dist/index.js:140
writeFileSync2(tmp, `${JSON.stringify(next, null, 2)} - 写入本地文件dist/index.js:142
renameSync(tmp, file); - 读取本地文件dist/index.js:675
const creds = yaml.load(readFileSync3(credentialsPath(), "utf8")); - 发起网络请求client.js:28
const response = await fetch(ROUTE_PREFIX + path); - 发起网络请求client.js:32
const response = await fetch(ROUTE_PREFIX + path, {
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/dsh-llm-deepseek@deepseek-ai/dsh-tools@deepseek-ai/dsh给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DSH 智能体循环引擎:宿主 LLM 适配层,加上基于宿主上下文的循环骨架(busyloop:靠能力驱动,不走 codex 那套)
README
由 DeepSeek 最新模型翻译生成dsh-busyloop
DSH agent-loop 引擎:宿主 LLM 通道(官方 ctx.llm)+ 轻量 loop 骨架 + 工具表注入。
能力等价,范式不同:装上 busyloop,dsh 就有一样的智能体循环能力(LLM 多轮 + 工具调度);但不保证像 codex 一样工作(AGENTS.md/工具协议/会话格式)—— 那是 codexstyle 层的事。
架构(三件套)
dsh-busyloop ──────────── 引擎(能力:LLM 适配器 + loop + 宿主工具调度) ├── dsh-busyloop-codex ──── 范式①:桥接 codex CLI(外包) └── dsh-busyloop-codexstyle ─ 范式②:自研 codex 风格(规划中)
设计原则
- LLM 适配器不手刻、不外接:直接消费宿主 ctx.llm(@deepseek-ai/dsh-llm 的 LlmRuntime),类型来自官方包,运行时由宿主提供
- 不造独立运行时:全部活在 dsh 宿主内,发布物在「纯 dsh + 官方包」环境可跑(bundle 自包含)
- 工具表注入:宿主 ctx.tools 只读不可枚举,loop 的工具由调用方提供(schema + execute)
用法
展开完整文档(README 剩余 1 节)
dsh-busyloop
DSH agent-loop 引擎:宿主 LLM 通道(官方 ctx.llm)+ 轻量 loop 骨架 + 工具表注入。
能力等价,范式不同:装上 busyloop,dsh 就有一样的智能体循环能力(LLM 多轮 + 工具调度);但不保证像 codex 一样工作(AGENTS.md/工具协议/会话格式)—— 那是 codexstyle 层的事。
架构(三件套)
dsh-busyloop ──────────── 引擎(能力:LLM 适配器 + loop + 宿主工具调度) ├── dsh-busyloop-codex ──── 范式①:桥接 codex CLI(外包) └── dsh-busyloop-codexstyle ─ 范式②:自研 codex 风格(规划中)
设计原则
- LLM 适配器不手刻、不外接:直接消费宿主 ctx.llm(@deepseek-ai/dsh-llm 的 LlmRuntime),类型来自官方包,运行时由宿主提供
- 不造独立运行时:全部活在 dsh 宿主内,发布物在「纯 dsh + 官方包」环境可跑(bundle 自包含)
- 工具表注入:宿主 ctx.tools 只读不可枚举,loop 的工具由调用方提供(schema + execute)
用法
import { createBusyLoop, hostLlm } from '@snow-the/dsh-busyloop'
// 插件内: const engine = createBusyLoop(ctx) // ctx.llm 宿主服务 const result = await engine.run({ provider: 'deepseek', model: 'deepseek-chat', prompt: '东京天气如何?用 get_weather 工具查询后一句话回答',
tools: [weatherTool],
onEvent: (ev) => console.log(ev), // turn / tool / done
})
// { output, turns, toolCalls, usage, finish }
纯库方式:hostLlm(ctx.llm) → runBusyLoop(llm, options)。
HTTP 端点(经 ctx.webServer 注册)
宿主一旦提供 webServer(dsh-web-app 就会),以下端点即生效:
| 端点 | 方法 | 说明 |
| /api/busyloop/health | GET | 引擎存活 + hostLlm 状态 |
| /api/busyloop/providers | GET | 宿主已注册的 LLM provider 列表 |
| /api/busyloop/channels | GET | 已配置的通道 |
| /api/busyloop/channel | POST | 新增/修改通道 |
| /api/busyloop/credentials | GET | 凭据来源(不回显密钥) |
| /api/busyloop/credential | POST | 写入凭据 |
| /api/busyloop/test | POST | 通道连通性测试 |
历史更正。 本 README 早先写着「官方宿主当前未注入 ctx.http.mount,这些端点默认不暴露(404)」——那是当时的真实情况,但已不再成立,而且端点名也早已改前缀。
根因是 ctx.http 不是 DSH 的服务(官方 ctx 服务面里没有它),所以那条路由从来没挂上过,还白背了一个 hono 依赖。现在改为官方的 ctx.inject(['webServer'], …),并且:
- 不能用 ctx.get('webServer') —— 它是时点快照;webServer 若后挂载,你就永远漏注册,且不报错。
- 每个端点先过 Host/Origin + 浏览器鉴权围栏(connection.requestRejection),伪造请求 403、匿名请求 401;围栏读不到时失败关闭(503),不会静默放行。
测试金字塔(14 个测试)
1. 单元/集成(npm test,node --test 串行):fake chunks(不碰真模型)——多轮循环、工具参数解析、结果回填、maxTurns 截断、未知/抛错工具、providers/health 端点、sessionId 透传
2. 宿主解析链验证:dist 放入宿主 node_modules 树加载(官方包全部宿主解析)
3. 真机 E2E(node e2e/e2e-host.mjs,手动运行,需要真 API key):真实 DeepSeekAdapter + 真实模型(纯对话 + 多轮工具调用,cacheReadTokens 命中验证)
发布
pnpm build # tsc 类型 + esbuild bundle(官方包 external,宿主提供)
npm test # node --test
npm publish # GitHub Packages(@snow-the 下同款流程)
安装(重要)
1. dependencies 与 bundles 都要加:只在 dependencies 里加会被 pnpm 装入 node_modules 但不会被挂载(loader 只应用 bundles 里声明的包的 bundle patch);必须同时把 @snow-the/dsh-busyloop 加进 dsh.profile.bundles,它的 cordis.patch.yml 才会生效、busyloop_run 工具才会注册。
2. 宿主包不声明为运行时依赖:@deepseek-ai/dsh-tools 是宿主提供的包(经 dsh-base bundle 装入),本插件只把它声明为 peerDependency。把它放进 dependencies 会把 dsh-tools 拉进配置档的依赖图,在「安装后立即重启」的窗口期可能让宿主工具调度器(Symbol 键)解析到第二个模块实例,导致首次工具调用崩溃(Cannot read properties of undefined (reading 'prepare'))——这是 0.1.6 的教训(2026-08-22 崩溃),0.1.7 起改为 peer 声明。
3. 重启时序:pnpm install 必须完整跑完(等到提示 Done)再重启 dsh web;不要在安装进行中重启。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
snow-The/dsh-busyloop
为插件接入多轮对话与工具调度的智能体循环
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,125已汉化MCP
71.7
AI 架构文档生成器sopaco/deepwiki-rs
🚀 Litho 已进化为 Terrain —— 给你的 AI 智能体一张会呼吸的代码库地图。
★ 3,157已汉化DSH
70.8
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
AI 编程纪律方法包GanyuanRan/Aegis
让 AI 编程 agent 变得可信:少返工、更安全、说“完成”前先给证据。
★ 1,384已汉化DSH
69.6
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9