用 YAML 定义智能体集群并协同完成任务
26.1/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add c2j/dsh-swarmforge该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · skill
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 69 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/8) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 58 处,展示前 33 条)
- 写入本地文件src/git/byline.ts:44
await mkdir(dirname(hookPath), { recursive: true }) - 写入本地文件src/git/byline.ts:45
await writeFile(hookPath, commitMsgHook, 'utf8') - 写入本地文件src/git/byline.ts:46
await chmod(hookPath, 0o755) - 读取本地文件src/git/byline.ts:52
return await readFile(path, 'utf8') - 读取本地文件src/git/operations.ts:159
content = await readFile(path, 'utf8') - 写入本地文件src/git/operations.ts:168
await mkdir(dirname(path), { recursive: true }) - 写入本地文件src/git/operations.ts:170
await writeFile(path, `${prefix}${added.join('\n')}\n`, 'utf8') - 执行外部命令固定命令src/git/runner.ts:16
execFile( - 读取本地文件src/git/worktrees.ts:38
if (registeredPaths(list.stdout).has(await realpath(path))) return { path, created: false } - 写入本地文件src/git/worktrees.ts:46
await mkdir(join(projectRoot, '.worktrees'), { recursive: true }) - 读取本地文件src/git/worktrees.ts:63
return (await stat(path)).isDirectory() - 写入本地文件src/service/runtime.ts:24
await Promise.all(directories.map((directory) => mkdir(directory, { recursive: true }))) - 写入本地文件src/service/runtime.ts:27
await writeFile(join(projectRoot, '.swarmforge', 'roles.tsv'), `role\tworktree\treceive-mode\n${rows.join('\n')}\n`, 'utf8') - 读取本地文件src/service/runtime.ts:30
await readFile(tasksPath, 'utf8') - 写入本地文件src/service/runtime.ts:33
await writeFile(tasksPath, '', 'utf8') - 读取本地文件src/service/runtime.ts:39
const content = await readFile(join(projectRoot, '.swarmforge', 'anchors.tsv'), 'utf8') - 写入本地文件src/service/runtime.ts:52
await mkdir(join(projectRoot, '.swarmforge'), { recursive: true }) - 写入本地文件src/service/runtime.ts:54
await writeFile(join(projectRoot, '.swarmforge', 'anchors.tsv'), `role\tanchor-session\n${rows.join('\n')}\n`, 'utf8') - 写入本地文件src/service/service.ts:144
await writeFile(this.taskBodyPath(name), text, 'utf8') - 写入本地文件src/service/service.ts:154
await writeFile(join(this.handoffsPath(HANDOFF_PATHS.projectOutbox), file), formatDeliveredHandoff(record), 'utf8') - 读取本地文件src/service/service.ts:162
content = await readFile(this.tasksPath(), 'utf8') - 读取本地文件src/service/service.ts:179
return await readFile(this.taskBodyPath(name), 'utf8') - 删除本地文件src/service/service.ts:202
await unlink(this.taskBodyPath(name)).catch((error: unknown) => { if (!isNotFound(error)) throw error }) - 读取本地文件src/service/service.ts:231
const files = (await readdir(directory)).sort(compareHandoffFilenames) - 写入本地文件src/service/service.ts:251
await writeFile(staging, formatDeliveredHandoff(approved), 'utf8') - 写入本地文件src/service/service.ts:252
await rename(staging, pending.path) - 写入本地文件src/service/service.ts:253
await rename(pending.path, join(this.handoffsPath(HANDOFF_PATHS.projectOutbox), pending.file)) - 删除本地文件src/service/service.ts:262
await unlink(pending.path) - 写入本地文件src/service/service.ts:263
await writeFile(join(this.options.projectRoot, '.swarmforge', 'notify', `reject-${record.task}`), '', 'utf8') - 读取本地文件src/service/service.ts:281
const files = (await readdir(directory)).sort() - 读取本地文件src/service/service.ts:283
const content = await readFile(join(directory, file), 'utf8') - 读取本地文件src/service/service.ts:295
content = await readFile(source, 'utf8') - 读取本地文件src/spawn/spawner.ts:93
const content = await readFile(confPath, 'utf8')
扫描于 2026/10/31(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-loop@deepseek-ai/dsh-agent-loop-testkit@deepseek-ai/dsh-agent-presets@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-commands@deepseek-ai/dsh-llm给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- YAML定义智能体集群
- 协同完成任务
README
由 DeepSeek 最新模型翻译生成dsh-swarmforge
多智能体编排插件,适用于 DeepSeek Harness。
dsh-swarmforge 让你在 dsh 里定义、生成并运行智能体集群。声明一组智能体,给它们分配角色和工具,然后让它们协同完成一项任务。
功能特性
- 声明式集群定义 —— 用 YAML 描述智能体、角色和工具授权。
- 并行执行 —— 智能体并发运行,结果实时流式回传。
- 子代理生成 —— 智能体可以在运行过程中生成子代理,处理子任务。
- 工具授权 —— 精确控制每个智能体能调用哪些工具。
- 会话隔离 —— 每个智能体拥有独立上下文,互不污染。
- 钩子 —— 在智能体生命周期的关键节点挂载钩子,介入执行流程。
展开完整文档(README 剩余 1 节)
dsh-swarmforge
多智能体编排插件,适用于 DeepSeek Harness。
dsh-swarmforge 让你在 dsh 里定义、生成并运行智能体集群。声明一组智能体,给它们分配角色和工具,然后让它们协同完成一项任务。
功能特性
- 声明式集群定义 —— 用 YAML 描述智能体、角色和工具授权。
- 并行执行 —— 智能体并发运行,结果实时流式回传。
- 子代理生成 —— 智能体可以在运行过程中生成子代理,处理子任务。
- 工具授权 —— 精确控制每个智能体能调用哪些工具。
- 会话隔离 —— 每个智能体拥有独立上下文,互不污染。
- 钩子 —— 在智能体生命周期的关键节点挂载钩子,介入执行流程。
安装
npm install dsh-swarmforge
或者用 npx:
npx dsh-swarmforge init
快速开始
在项目根目录创建 swarm.yaml:
name: research-swarm
agents:
- name: planner
role: 把任务拆解成子任务 tools:
- task.create
- task.list
- name: researcher
role: 收集信息 tools:
- web.search
- web.fetch
replicas: 3
- name: writer
role: 汇总结果,撰写报告 tools:
- file.write
运行集群:
dsh swarm run swarm.yaml
配置
顶层字段
| 字段 | 类型 | 说明 |
| name | string | 集群名称,必填 |
| agents | array | 智能体定义列表,必填 |
| provider | string | 服务商,默认继承 dsh 配置 |
| maxConcurrency | number | 同时运行的智能体上限,默认 4 |
| timeout | number | 单个智能体超时时间,单位秒,默认 300 |
智能体字段
| 字段 | 类型 | 说明 |
| name | string | 智能体名称,集群内唯一 |
| role | string | 角色描述,会作为系统提示词注入 |
| tools | array | 允许调用的工具列表 |
| replicas | number | 副本数量,默认 1 |
| model | string | 覆盖默认模型 |
| hooks | object | 生命周期钩子 |
钩子
钩子让你在智能体执行前后插入逻辑:
agents:
- name: researcher
role: 收集信息 hooks: beforeRun: ./hooks/before-run.ts afterRun: ./hooks/after-run.ts onError: ./hooks/on-error.ts
每个钩子文件导出一个默认函数:
export default async function (ctx) {
console.log(智能体 ${ctx.agent.name} 开始运行);
return ctx;
}
子代理
智能体可以在运行时生成子代理:
const subagent = await ctx.spawn({
name: "fact-checker",
role: "核对事实",
tools: ["web.search"],
});
const result = await subagent.run("核对这份报告里的数据");
子代理继承父代理的服务商配置,但拥有独立会话。
命令行
dsh swarm init # 生成示例 swarm.yaml
dsh swarm run <file> # 运行集群
dsh swarm validate <file> # 校验配置
dsh swarm list # 列出当前项目里的集群
API
import { Swarm } from "dsh-swarmforge";
const swarm = new Swarm({
name: "research-swarm",
agents: [
{ name: "planner", role: "拆解任务", tools: ["task.create"] }, { name: "researcher", role: "收集信息", tools: ["web.search"], replicas: 3 }, ], });
swarm.on("agent:start", (agent) => {
console.log(${agent.name} 启动);
});
swarm.on("agent:finish", (agent, result) => {
console.log(${agent.name} 完成:${result.summary});
});
await swarm.run("调研 2025 年边缘计算市场");
事件
| 事件 | 参数 | 触发时机 |
| swarm:start | — | 集群开始运行 |
| swarm:finish | results | 所有智能体结束 |
| agent:start | agent | 单个智能体启动 |
| agent:finish | agent, result | 单个智能体完成 |
| agent:error | agent, error | 单个智能体报错 |
| subagent:spawn | parent, child | 生成子代理 |
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
c2j/dsh-swarmforge
用 YAML 定义智能体集群并协同完成任务
相关插件 · 技能 / 提示词
人设统管ZiChuanLan/agent-purge
一份系统提示词,喂给多个 coding…
★ 931已汉化DSH
73.8
人物画像蒸馏titanwings/distilly
Distilly — 把他们的思考方式提炼成可复用的技能,供任何智能体或机器人使用。原名 Colleague Skill(原同事 Skill)。
★ 25,659已汉化DSH
71.3
推理工作空间套件Tiger3807861189/J-Space-Cognition-Suite
J-Space 是面向复杂推理、大型仓库工程、子代理协作与授权安全分析的推理时工作空间和控制套件。
★ 2,957已汉化DSH
70.5
两阶段工具锚定预设xiaobright/dsh-anchored-standard
实验性 DeepSeek Harness agent preset…
★ 3,742已汉化DSH
70.1
智能体工作流编排nrslib/takt
不再日夜盯着 AI 编码智能体。
★ 1,402已汉化DSH
70
Agent 运行时手册Electricitysheep/dsh-handbook
DeepSeek Harness dsh 从 0 到 1 深度手册:安装/插件开发/性能调优/实测案例/同模型多…
★ 827已汉化DSH
68.7