领队拆分任务,多智能体独立进程并行执行并可靠交付
24.9/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add wanghj040530/dsh-swarm该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · platform
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 69 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 45 处,展示前 44 条)
- 读取本地文件lib/index.js:159
if (!existsSync(registryPath)) return {}; - 读取本地文件lib/index.js:160
const raw = await readFile(registryPath, 'utf8'); - 写入本地文件lib/index.js:166
await mkdir(join(homedir(), '.dsh', 'swarm'), { recursive: true }); - 写入本地文件lib/index.js:167
await writeFile(registryPath, JSON.stringify(data, null, 2), 'utf8'); - 读取本地文件lib/index.js:235
if (existsSync(agentDir)) { - 删除本地文件递归lib/index.js:236
await rm(agentDir, { recursive: true, force: true }); - 读取本地文件lib/index.js:294
const raw = _readFile(p, 'utf8'); - 写入本地文件lib/index.js:302
mkdirSync(dir, { recursive: true }); - 写入本地文件lib/index.js:304
appendFileSync(p, JSON.stringify({ taskId, text: content, at: new Date().toISOString(), retried: true }) + '\n', 'utf8'); - 读取本地文件agent-process.js:27
if (existsSync(SYSTEM_NODE)) return SYSTEM_NODE; - 读取本地文件agent-process.js:32
if (existsSync(SYSTEM_NODE) && existsSync(SYSTEM_NPX_CLI)) return SYSTEM_NPX_CLI; - 写入本地文件agent-process.js:37
mkdirSync(dir, { recursive: true }); - 写入本地文件agent-process.js:42
writeFileSync(path, content, 'utf8'); - 写入本地文件agent-process.js:47
appendFileSync(path, line + '\n', 'utf8'); - 读取本地文件agent-process.js:51
try { return readFileSync(path, 'utf8'); } catch { return fallback; } - 读取本地文件agent-process.js:70
if (!existsSync(outboxPath)) return []; - 读取本地文件agent-process.js:83
if (!existsSync(outboxPath)) return; - 删除本地文件agent-process.js:90
try { unlinkSync(outboxPath); } catch {} - 读取本地文件agent-process.js:113
if (!existsSync(runtime)) { - 读取密钥环境变量agent-process.js:139
if (process.env.MIMO_API_KEY) env.MIMO_API_KEY = process.env.MIMO_API_KEY; - 读取密钥环境变量agent-process.js:140
if (process.env.DEEPSEEK_API_KEY) env.DEEPSEEK_API_KEY = process.env.DEEPSEEK_API_KEY; - 读取密钥环境变量agent-process.js:141
if (process.env.OLLAMA_API_KEY) env.OLLAMA_API_KEY = process.env.OLLAMA_API_KEY; - 执行外部命令来自配置/变量agent-process.js:144
const proc = spawn(nodeBin(), [runtime, agentId], { - 读取本地文件lib/artifacts.js:27
if (!existsSync(ARTIFACTS_DIR)) mkdirSync(ARTIFACTS_DIR, { recursive: true }); - 写入本地文件lib/artifacts.js:27
if (!existsSync(ARTIFACTS_DIR)) mkdirSync(ARTIFACTS_DIR, { recursive: true }); - 读取本地文件lib/artifacts.js:42
if (!existsSync(path)) { - 写入本地文件lib/artifacts.js:43
writeFileSync(path, JSON.stringify({ - 读取本地文件lib/artifacts.js:68
const obj = JSON.parse(readFileSync(path, 'utf8')); - 读取本地文件lib/artifacts.js:80
for (const name of readdirSync(ARTIFACTS_DIR)) { - 读取本地文件lib/artifacts.js:84
if (Date.now() - statSync(path).mtimeMs > TTL_MS) { - 删除本地文件lib/artifacts.js:85
unlinkSync(path); - 读取本地文件lib/task-ledger.js:30
return JSON.parse(readFileSync(ledgerPath(teamId), 'utf8')); - 写入本地文件lib/task-ledger.js:36
mkdirSync(join(path, '..'), { recursive: true }); - 写入本地文件lib/task-ledger.js:37
writeFileSync(path, JSON.stringify(data, null, 2), 'utf8'); - 读取本地文件agent-registry.js:31
if (!existsSync(REGISTRY_PATH)) return; - 读取本地文件agent-registry.js:32
const raw = await readFile(REGISTRY_PATH, 'utf8'); - 写入本地文件agent-registry.js:47
await mkdir(dir, { recursive: true }); - 写入本地文件agent-registry.js:49
await writeFile(REGISTRY_PATH, JSON.stringify(data, null, 2), 'utf8'); - 写入本地文件agent-registry.js:60
await mkdir(join(agentDir, 'inbox'), { recursive: true }); - 写入本地文件agent-registry.js:61
await mkdir(join(agentDir, 'outbox'), { recursive: true }); - 发起网络请求agent-runtime.js:87
const req = mod.request({ - 发起网络请求agent-runtime.js:127
const req = mod.request({ - 发起网络请求agent-runtime.js:195
const req = mod.request({ - 执行外部命令来自配置/变量lib/member-subprocess.js:157
const proc = spawn(DSH_BIN, args, {
扫描于 2026/11/1(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools@deepseek-ai/dsh-llm@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-web@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DeepSeek Harness 的自主团队协作插件:队长拆分任务,各成员有独立的 API 和插件,在隔离的 DSH 子进程里运行,通过 JSONL 邮箱通信
README
由 DeepSeek 最新模型翻译生成dsh-swarm
自主团队协作插件 v0.4.0:领队(Captain)自主拆分任务 → 常驻智能体分工执行 → 工件引用传递省 token → 任务账本看门狗保交付
核心能力
- 常驻智能体:每个智能体是一个独立 Node.js 进程(agent-runtime.js),循环「读 inbox → 跑任务 → 写 outbox」,无需每次冷启动
- 独立 API:每个智能体独立配置模型 / 服务商 / apiBaseUrl / apiKey(写入各自 state.json)
- 工件引用传递(v0.4.0):长产出自动落盘共享工件库,消息只传 art://<id> 引用 + 200 字摘要,需要全文时按引用展开——大幅节省 token
- 任务账本 + 看门狗(v0.4.0):任务状态机 pending → claimed → done/failed,失败自动重试(最多 3 次),claimed 超 5 分钟无进展自动重派——智能体崩溃不再丢任务
- 可视化 UI:DSH 界面内置团队面板,可视化创建/删除空白智能体、查看任务账本进度
- 内置联网:智能体自带 web_search / web_fetch(jina.ai),无需额外插件
与 agent-teams 的区别
| 维度 | agent-teams | dsh-swarm |
展开完整文档(README 剩余 1 节)
dsh-swarm
自主团队协作插件 v0.4.0:领队(Captain)自主拆分任务 → 常驻智能体分工执行 → 工件引用传递省 token → 任务账本看门狗保交付
核心能力
- 常驻智能体:每个智能体是一个独立 Node.js 进程(agent-runtime.js),循环「读 inbox → 跑任务 → 写 outbox」,无需每次冷启动
- 独立 API:每个智能体独立配置模型 / 服务商 / apiBaseUrl / apiKey(写入各自 state.json)
- 工件引用传递(v0.4.0):长产出自动落盘共享工件库,消息只传 art://<id> 引用 + 200 字摘要,需要全文时按引用展开——大幅节省 token
- 任务账本 + 看门狗(v0.4.0):任务状态机 pending → claimed → done/failed,失败自动重试(最多 3 次),claimed 超 5 分钟无进展自动重派——智能体崩溃不再丢任务
- 可视化 UI:DSH 界面内置团队面板,可视化创建/删除空白智能体、查看任务账本进度
- 内置联网:智能体自带 web_search / web_fetch(jina.ai),无需额外插件
与 agent-teams 的区别
| 维度 | agent-teams | dsh-swarm |
| 队员形态 | 同进程子代理 | 独立常驻进程 + 独立 API |
| 结果传递 | 全文经主会话中转 | 工件引用 + 摘要,按需展开 |
| 失败处理 | 任务丢失 | 账本重试 + 看门狗自动重派 |
| 适用场景 | 简单委派 | 复杂多角色协作 / 长任务 |
安装
复制到本地插件目录
cp -r dsh-swarm ~/.dsh/local-plugins/dsh-swarm
同步到 desktop 配置档副本(Windows 下 link: 不生效,是物理拷贝) robocopy "local-plugins\dsh-swarm" "profiles\desktop\node_modules\dsh-swarm" /MIR
重启 DSH(引擎启动时自动加载)
快速开始
1. 添加智能体(对话中说,或在团队面板点「添加」):
添加一个 Agent,ID 叫 researcher1,用 deepseek-chat,API 是 https://api.deepseek.com/v1
2. 组队干活(复杂任务时领队自动建队):
帮我调研 X 框架和 Y 框架的优劣,写一份对比报告 → 领队拆分 → researcher1 查资料 → researcher2 补充 → 汇总交付
3. 看进度:团队面板实时显示智能体状态与任务账本(⏳pending 🔄claimed ✅done 💀dead)
工具列表(10 个)
用户工具
| 工具 | 说明 |
| swarm_add_agent | 添加空白智能体(指定 agent_id / model / provider / api_base_url / api_key) |
| swarm_remove_agent | 删除智能体,停止其进程 |
| swarm_list_agents | 查看所有智能体状态与角色分配情况 |
Captain 工具
| 工具 | 说明 |
| swarm_create_team | 组建团队:自动给空白智能体分配角色(researcher/coder/analyst/reviewer),启动进程 |
| swarm_set_agent_prompt | 给智能体写角色提示词(内置 4 种模板或自定义全文) |
| swarm_send_task | 派发任务:写 inbox → 轮询 outbox → 返回结果(长结果返回 art:// 引用) |
| swarm_read_results | 非阻塞读取智能体已产出的结果 |
| swarm_read_artifact | 按 art://<id> 引用展开工件全文(支持 max_chars 分段) |
| swarm_status | 团队状态 + 任务账本(触发一次看门狗扫描) |
| swarm_disband | 解散团队,停止所有智能体进程(不删除智能体) |
架构
用户 / Captain(DSH 主会话) │ swarm_add_agent / swarm_create_team / swarm_send_task ↓ ┌─ Registry(~/.dsh/swarm/registry.json) ├─ 任务账本(~/.dsh/swarm/tasks/<teamId>/tasks.json)← 看门狗扫描(挂在 UI 轮询心跳上) └─ 共享工件库(~/.dsh/swarm/artifacts/<sha1>.json,7 天 TTL) ↓ inbox/outbox(JSONL 文件信箱) ┌────────────┬────────────┬────────────┐ │ agent A │ agent B │ agent C │ ← 各自独立 Node.js 常驻进程 │ researcher │ coder │ analyst │ 各自独立模型/API │ state.json │ state.json │ state.json │ └────────────┴────────────┴────────────┘ ↓ 长产出工件库 art://a1b2c3d4(全文落盘,消息只传引用+摘要)
数据流(一次任务的生命周期):
1. Captain 调 swarm_send_task → 账本记 pending → 投递 inbox → 标 claimed
2. 智能体进程轮询到任务 → 调 LLM(可带 web_search 工具循环)→ 产出
3. 产出 >800 字符 → 落盘工件库 → outbox 只写 {resultRef, summary, size}
4. Captain 轮询到结果 → 账本记 done → 返回引用+摘要给 Captain
5. Captain 需要全文 → swarm_read_artifact 展开
6. 异常路径:API 报错/超时 → 账本 failed → 自动 requeue → 看门狗重投 inbox;重试 3 次仍失败 → dead 留痕
角色模板
| 角色 | 职责 | 触发关键词(Agent ID) |
| researcher | 搜索、收集、整理资料 | research / search |
| coder | 写代码、调试、执行命令 | coder / dev / engineer |
| analyst | 数据分析、报告撰写 | analyst / data |
| reviewer | 代码审查、质量把关 | review / check |
空白 Agent 在 swarm_create_team 时按 ID 关键词自动匹配,也可用 swarm_set_agent_prompt 手动指定。
Web UI
插件注册两个 HTTP 端点(dsh-host-webserver):
- GET /__dsh_swarm__/state.json — Agent 快照 + 团队 + 任务账本(客户端 2 秒轮询,同时驱动看门狗心跳)
- POST /__dsh_swarm__/agents — 创建/删除 Agent({action: "add"|"remove", ...})
致谢
本插件参考了以下 MIT 开源项目的架构与接口模式:
- @nanmicoder/dsh-agent-teams — 客户端 UI 面板、webServer 路由模式
- DSH-better-sidebar — 侧边栏/悬浮面板 UI 模式
- @deepseek-ai/dsh-bridge-browser — 工具注册与 TEXT_OUTPUT 模式
- @liustack/modlens — 识图插件集成参考
v0.4.0 的工件引用传递与任务账本看门狗设计思想来自 CogniLink 类多 Agent 系统的共享语义内存与契约式协商理念的简化落地。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
wanghj040530/dsh-swarm
领队拆分任务,多智能体独立进程并行执行并可靠交付
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,778已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 549已汉化DSH
71.2
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,011已汉化DeepSeek 客户端
71
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 1,969已汉化DSH
70.7