dsh-punky-swarm · 蟛蜞模式治理引擎
32/100
综合分
3
GitHub 星标
406
npm 周下载
—/5
用户评分
数据截至 2026/10/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-punky-swarmnpm 源 · dsh-punky-swarm 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 9 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过安装清单取自 packages/dsh-punky-swarm/package.json
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-punky-swarm @ 0.5.1
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/20 16:14:53
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 83 处,展示前 76 条)
- 读取本地文件lib/index.js:193
if (existsSync(mbBase)) { - 读取本地文件lib/index.js:194
for (const sid of readdirSync(mbBase)) { - 读取本地文件lib/index.js:196
if (!existsSync(mbRoot)) continue; - 读取本地文件lib/index.js:197
for (const bid of readdirSync(mbRoot)) { - 写入本地文件lib/index.js:1043
mkdirSync(root, { recursive: true }); - 发起网络请求lib/client.js:1548
const res = await fetch(url); - 写入剪贴板lib/client.js:1859
if (typeof location !== 'undefined' && navigator && navigator.clipboard) navigator.clipboard.writeText(location.href); - 发起网络请求lib/client.js:2059
const res = await fetch('/api/dsh-punky-swarm/config'); - 发起网络请求lib/client.js:2064
const res = await fetch('/api/dsh-punky-swarm/config', { - 读取本地文件lib/hot/config-watch.js:183
if (!existsSync(file)) return {}; - 读取本地文件lib/hot/config-watch.js:184
const parsed = parseJsonText(readFileSync(file, 'utf8')); - 读取本地文件lib/hot/config-watch.js:268
if (!existsSync(runtimeFile)) { - 读取本地文件lib/hot/config-watch.js:272
if (existsSync(runtimeFile)) { - 写入本地文件lib/hot/config-watch.js:315
mkdirSync(configDir, { recursive: true }); - 读取本地文件lib/hot/config-watch.js:317
if (existsSync(runtimeFile)) { - 读取本地文件lib/hot/config-watch.js:319
const init = parseJsonText(readFileSync(runtimeFile, 'utf8')); - 读取本地文件lib/api.js:195
const locks = existsSync(locksDir) ? readdirSync(locksDir).map((f) => { - 读取本地文件lib/api.js:195
const locks = existsSync(locksDir) ? readdirSync(locksDir).map((f) => { - 读取本地文件lib/api.js:196
try { return { lock: f, ...JSON.parse(readFileSync(join(locksDir, f), 'utf8')) }; } - 读取本地文件lib/assets.js:66
for (const entry of readdirSync(dir)) { - 读取本地文件lib/assets.js:68
if (statSync(p).isDirectory()) walk(p) - 读取本地文件lib/assets.js:78
const sa = statSync(a) - 读取本地文件lib/assets.js:79
const sb = statSync(b) - 读取本地文件lib/assets.js:82
return readFileSync(a).equals(readFileSync(b)) - 读取本地文件lib/assets.js:87
if (existsSync(targetDir) && !statSync(targetDir).isDirectory()) { - 删除本地文件递归lib/assets.js:88
rmSync(targetDir, { recursive: true, force: true }) - 删除本地文件递归lib/assets.js:97
rmSync(targetDir, { recursive: true, force: true }) - 写入本地文件lib/assets.js:220
mkdirSync(dirname(dest), { recursive: true }) - 写入本地文件lib/assets.js:235
mkdirSync(dirname(job.target), { recursive: true }) - 发起网络请求lib/bridge/trajectory.js:162
const res = await fetch(baseUrl + '/api/alerts?since=' + lastPollSince); - 读取本地文件lib/watch/lane-heartbeat.js:352
try { names = readdirSync(dir, { withFileTypes: true }); } catch { return; } - 读取本地文件lib/watch/lane-heartbeat.js:365
const m = statSync(p).mtimeMs; - 发起网络请求lib/acps/discovery-client.js:155
const requestImpl = request ?? ((url, options) => fetch(url, options)); - 读取本地文件lib/aip/tool-descriptor.js:29
return JSON.parse(readFileSync(new URL('../../package.json', import.meta.url), 'utf8')).version; - 读取本地文件lib/governance/preset-loader.js:55
raw = readFileSync(join(baseDir, id + '.json'), 'utf8'); - 读取本地文件lib/webui/runtime-config.js:345
if (!existsSync(runtimeFile)) return {}; - 读取本地文件lib/webui/runtime-config.js:346
const raw = readFileSync(runtimeFile, 'utf8'); - 写入本地文件lib/webui/runtime-config.js:363
mkdirSync(configDir, { recursive: true }); - 写入本地文件lib/webui/runtime-config.js:365
writeFileSync(tmp, JSON.stringify(overlay, null, 2) + '\n', 'utf8'); - 写入本地文件lib/webui/runtime-config.js:366
renameSync(tmp, runtimeFile); - 发起网络请求lib/acps/registry-client.js:252
const req = mod.request(reqOptions, (res) => { - 读取本地文件lib/acps/server.js:196
cert: endpoint.cert ? readFileSync(endpoint.cert) : readFileSync(generated.certFile), - 读取本地文件lib/acps/server.js:197
key: endpoint.key ? readFileSync(endpoint.key) : readFileSync(generated.keyFile), - 读取本地文件lib/acps/server.js:198
ca: readFileSync(generated.caFile), - 读取本地文件lib/acps/server.js:201
tls = { cert: readFileSync(endpoint.cert), key: readFileSync(endpoint.key), ca: readFileSync(ca) }; - 读取本地文件lib/panel/stream.js:106
if (!existsSync(f)) return null; - 读取本地文件lib/panel/stream.js:107
const b = JSON.parse(stripBom(readFileSync(f, 'utf8'))); - 读取本地文件lib/panel/stream.js:185
for (const f of readdirSync(d)) { - 读取本地文件lib/panel/stream.js:186
const st = statSync(join(d, f)); - 读取本地文件lib/engine/arch-context.js:28
if (existsSync(candidate)) - 读取本地文件lib/engine/arch-context.js:106
rules = parseArchRules(readFileSync(archFile, 'utf8')); - 写入本地文件lib/acps/certs.js:265
mkdirSync(dir, { recursive: true }); - 读取本地文件lib/acps/certs.js:273
if (existsSync(caFile) && existsSync(caKeyFile)) { - 读取本地文件lib/acps/certs.js:274
caCertPem = readFileSync(caFile, 'utf8'); - 读取本地文件lib/acps/certs.js:275
caKeyPem = readFileSync(caKeyFile, 'utf8'); - 写入本地文件lib/acps/certs.js:280
writeFileSync(caFile, caCertPem, { mode: 0o600 }); - 写入本地文件lib/acps/certs.js:281
writeFileSync(caKeyFile, caKeyPem, { mode: 0o600 }); - 读取本地文件lib/acps/certs.js:286
if (existsSync(certFile) && existsSync(keyFile)) { - 读取本地文件lib/acps/certs.js:287
certPem = readFileSync(certFile, 'utf8'); - 读取本地文件lib/acps/certs.js:288
keyPem = readFileSync(keyFile, 'utf8'); - 写入本地文件lib/acps/certs.js:301
writeFileSync(certFile, certPem, { mode: 0o600 }); - 写入本地文件lib/acps/certs.js:302
writeFileSync(keyFile, keyPem, { mode: 0o600 }); - 读取本地文件lib/tools/handoff-tools.js:85
try { return !existsSync(resolveArtifactIn(dir, p)); } catch { return true; } - 读取本地文件lib/tools/handoff-tools.js:208
const st = statSync(abs); readable = st.isFile() && st.size > 0; - 执行外部命令来自配置/变量lib/tools/git-utils.js:33
const out = execFileSync(gitBin(), args, { - 读取本地文件lib/watch/heartbeat/activity.js:83
if (statSync(resolveArtifact(cx, sessionId, batchId, rel)).mtimeMs > sinceTs) return true; - 读取本地文件lib/watch/heartbeat/activity.js:129
const m = statSync(resolveArtifact(cx, sessionId, batchId, rel)).mtimeMs; - 读取本地文件lib/watch/heartbeat/evidence.js:31
const st = statSync(p); - 执行外部命令来自配置/变量lib/state/command-exec.js:179
const r = spawnSync(command, { - 读取本地文件lib/engine/arch-context.ts:32
if (existsSync(candidate)) return candidate; - 读取本地文件lib/engine/arch-context.ts:123
rules = parseArchRules(readFileSync(archFile, 'utf8')); - 读取本地文件lib/governance/preset-loader.ts:68
raw = readFileSync(join(baseDir, id + '.json'), 'utf8'); - 发起网络请求lib/panel/gov-config.js:116
const res = await fetch('/api/dsh-punky-swarm/config'); - 发起网络请求lib/panel/gov-config.js:121
const res = await fetch('/api/dsh-punky-swarm/config', { - 发起网络请求lib/panel/main.js:26
const res = await fetch(url); - 写入剪贴板lib/panel/main.js:337
if (typeof location !== 'undefined' && navigator && navigator.clipboard) navigator.clipboard.writeText(location.href);
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 质量门禁拦截半成品
- 崩溃安全检查点续跑
引擎强制的护栏,专为 DeepSeek Harness 智能体集群打造:质量门禁拦下半成品,崩溃安全的检查点原地续跑——让 AI 团队不崩,而不只是能跑。
最近更新
在 GitHub 查看全部 →v0.5.12026-10-15
· dsh-punky-swarm v0.5.1
0.5.1 发布版:R-1(唯一发布阻塞)已解 —— 版本史与版本面结构性对齐;判据尺子固化为可重跑脚本;锚点类文档回补入库。
· 主要变更(v0.5.0..v0.5.1,2 commits)
发布面
· R-1 落版:package.json 早已是 0.5.0,而版本史顶部仍是「未发布(Unreleased)」、首版本标题停在 ## 0.4.4。本次真落——原「未发布」段体落版为 ## 0.5.0(2026-10-12)(段体一字未改),并在其上新建 ## 0.5.1(2026-10-14) 段;CHANGELOG 总行数 681 → 704;版本行 → 0.5.1。
· 锚点类文档入库(PA-1):docs/ 54 件逐件 git add -f(禁通配)。根因 = .gitignore:50 忽略整个 docs/,且 :49 记录 2026-10-10 已 rm --cached 49 件 ⇒ 属「在库 → 只在工作树」的退化(不是从未入库)。入库后三读数 37/37 符合预期(check-ignore 仍报 :50 = 规则未改)。
修复
· 注释断言的不变量为假(F-1):lib/sig-fingerprint.js:35 原注「不进 GateErrorCode union(拒码面恒 29 保持不变)」已为假 —— 实测 union = 37(contracts.ts 与 contracts.d.ts 双口径一致)。⇒ 改为指向 lib/types/contracts.ts 的 union 为唯一真源、不写数字(规模随授权批演进,写死即漂移源)。改动面 = 恰 1 减 1 加、两行均注释行,node --check 双态 exit 0。
· 判据命令漏计(D-04):原命令只覆盖双引号 ⇒ 26 ≠ 32。实测病根是两条叠加:
- 引号:+4(全在 lib/tools/lane-tools.js 的单引号 name);
- 扫描面:+2(lib/watch/lane-heartbeat.js 的 2 件 defineTool —— 不在 lib/tools/*.js 内)。
⇒ 「只补引号」天花板为 30,要摸到 32 必须扩扫描面。已固化为 scripts/audit/tool-face-count.mjs(按块解析 + 四口径阶梯 + 三态退出码)。
新增技能
· skills/video-team/:三层 7 角色 team skill(plan coordinator·designer / exec producer·captioner·motion-designer·audio-engineer / audit supervisor)+ constitution.md(6 章 24 条)+ 模板 6 件 + scripts/check-video-team-density.mjs(S1–S7 机检,含可达反例)。
· 安装 / 升级
npm i dsh-punky-swarm@0.5.1
· 已知项(登记,不影响本次发布)
· requiredKeys 基线 63 在五个候选口径下均复现不出(实测 24)⇒ 判「基线需订正」,已在批次 gap-list 登记,未进发布面。
· EXCLUDE_DIRS 为精确名集合(非前缀匹配)⇒ 抓不住 .tmp-* 变体;其当前安全性来自「位置(不在任何 walk 根内)而非过滤器」⇒ 已登记为防御缺口。
· docs/ 面引用均为「字符串提及」(探针 59 命中行逐条判过),不构成 CI 读依赖**。
v0.5.02026-10-10
· dsh-punky-swarm v0.5.0
0.5.0 定基线版:团队资产(team-asset)与 chain 声明面整体退役,装配改为「引擎基线 + 成员槽位 + 指引」;运行期 DAG 真源 = 批次 lanes[].deps + handoffs。
· 主要变更(v0.4.4..v0.5.0,218 commits)
引擎治理
· 成员回报唤醒修复:swarm_report 唤醒改为按 agent 亲缘(parentSession) 寻址;主路 subagent/end 唤醒改为按派发期登记的 ownerSessionId 寻址。修复前,后台批挂在命名黑板上时唤醒会落到非活跃会话而静默失败(后台批的成员永远叫不醒 Leader)。
· 完成类回报(completed)唤醒 Leader,与结算解耦;新增「可派发候选」提示。
· assign_check 在跑批期间不降档守卫(防止治理工具面被静默收窄)。
· auto-settle 配置开关(缺省保持兼容)。
· 建批期新增 consume × deps 对称性硬门。
指引与角色面
· 新增纪律 §0u「执行前经验检索(knowledge-first)」。
· role 注入面去路径化,新增 role_guide 取件口与 renderRoleGuide 单点渲染。
· 治理纪律口径入册为 27 条 / 9 组。
面板与性能
· 面板波 A / 波 B:主题令牌化、池化渲染、摘要与状态机口径。
· 性能三刀:watch tick 合并、governance 计数节流落盘、面板读放大并发化。
仓库面
· README 精简为项目介绍(中文 244 → 104 行 / 英文 242 → 102 行),不再承担文档跳转。
· docs/ 移出 git 索引(仍随 npm 包分发);仅保留被测试读盘的 2 份集成文档。
· 兼容性
· 目标宿主线:@deepseek-ai/dsh 0.2.0-rc.1;0.1.7 仅历史兼容、不再验证(peerDependencies 范围不动,不主动拒装)。
· 测试基线:154 个测试文件 / 1656 个测试 / 7940 条断言,全绿(Node 24)。
· 许可:AGPL-3.0-only。
· CI 状态
全绿。 本版发布时点(tag v0.5.0 → 3ecf4e8)CI 尚有两处红,均在发布后当日修复,main 现已全绿:
| 红灯 | 根因 | 修复 |
|---|---|---|
| T15 目录/文件声明形态二分 | 测试夹具平台缺陷:夹具用带尾斜杠的路径落盘,POSIX 下 writeFileSync('…/weird/') 抛 EISDIR(Windows 容忍) ⇒ 测试在引擎跑之前崩 | 3a8dc00:落盘前去尾斜杠,语义不变 |
| I-6(a) 对真实 home 零写入 | CI 环境前置缺失:断言要求真实 home 下有技能/预设文件,干净 runner 没有 ⇒ files=0 | 3a8dc00:CI 增一步预置最小基线(使守卫在 CI 上非空转) |
| e2-1 基线自洽 | 上述测试文件改动致基线 lines 漂移 | e7aff44:重算 baselines/test-baseline.json(tests/asserts 零变化) |
tag v0.5.0 已前移至 e7aff44(含上述三个修复提交),与 main 同指一处 ⇒ 取 v0.5.0 与取 main 得到同一份全绿状态。前移前已核实 3ecf4e8..e7aff44 仅动 ci.yml / baselines/ / test/ 三个文件、lib/ 零改动**,且两端 package.json 版本同为 0.5.0(发布内容无实质变化)。
v0.4.42026-09-08
· 0.4.4(2026-09-08)
· 批次事件结局分型(恢复与回收记账)
· 恢复路径记 crashed:进程崩溃重启后,恢复流程将崩溃前处于运行/评审中的 lane 置回待派发(idle),恢复事件为该类 lane 逐一记结局 crashed,并保留原态与既有审计字段——重派前可经事件流查询哪些 lane 系因崩溃中断。
· 回收处置记 interrupted:running lane 具备停滞证据、被显式回收脱离在飞态(置回 idle 待重派)时,回收事件记结局 interrupted。
· 默认开启、只记不改:结局记账自动生效,不构成新的成员状态、不改变既有成员迁移/拦截/结算语义,也不介入重派决策(重派仍走既有待派发→运行通道);未带结局的旧事件与旧批次读取零迁移兼容。
· 评审与验收结论结构化必填
· 评审(review)与验收(acceptance)产出的结论必须结构化携带三要素并置于报告头部:① 结论 approve / reject(显式二选一);② 阻断项清单(reject 时必列,验收侧与既有对账衔接);③ 跟进项清单(后续动作与遗留观察,可为空)。
· 空结论即评审未完成:缺失 approve / reject 结论、或以一句笼统表态(如「总体没问题」「建议合并」「验收通过」)替代三要素的,视为评审未完成,可打回补全(沿用既有驳回语义)。
· 批次级装配声明与规模批门禁
· wave_plan 建批新增可选顶层参数 assembly(批次级装配声明):managerPlan(编排牵头形态:raise=拉起编排 Manager 代管调度 / leader-direct=任务负责人直管派发)与 auditLane(验收归属 lane)必填,coordinatorLane / roles 可选。
· 规模批强制:三层批且 exec 层任务(lane)数达 3 个及以上时装配声明必填——声明缺失、结构非法、或所引 lane 不存在/层错配将拒绝建批(无批次落盘,补齐声明后重试);roles 词条格式异常仅告警、不阻断。
· 声明随批次持久化与回显:归一化声明写入批次数据顶层(可选字段、schema 不升;未声明不写键,既有批次零迁移),建批返回值附装配声明视图。
· 模式装配与纪律条文更新
· 难度路由扩档:模式预设难度路由在 A/B/C 之上新增规模批档 C+(三层批且 exec 层任务达 3 个及以上,与引擎装配门禁同一判定口径);此类批次进入运行后须先拉起编排 Manager(首个 exec 任务派发前完成),任务负责人的兜底代行与豁免留痕仅限普通批次,边界条文同步更新。
· 装配履职条文:按需装配的细拆/架构复核角色须先经代码图谱建立与复核代码索引(细拆与架构复核依据可追溯);评审/验收结构化结论条文见前节。
· 新增纪律条文:消费方契约摸底先行(实现消费宿主接口、外部 DSL 与框架扩展点前,先落契约摸底产物并作为实现前置契约)与宿主级自验证(产出完成判据须含真实宿主加载/启动冒烟,语法与局部级检查不作完成判据)。
· 发布整理
· 版本 0.4.3 → 0.4.4;变更记录整理与发布前内部口径清查。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-punky-swarm · 蟛蜞模式治理引擎
一个智能体是随叫随到的外包;一批被治理的智能体,才是一个部门。
把公司的制度做成软件、装进引擎:排期、质检、审批、容灾逐条由引擎跑。人退到只剩裁决——说清要什么,验收做出什么。
English: README.en.md
亮点
- 四道闸口,缺件不放行 —— 派发前查上游产物、合并前查计划结构、结算前查产物落盘、收尾前查验收完成。半成品到不了你手里。
- 判据在开工前写死 —— 验收标准落在计划层,审计按条对照;智能体只能提交,不能自己写结算。
- 按任务特点分配运行模式 —— 顺手小活直接干,不背治理开销;多环节的活走流水线,不建批不许动手。
- 一步一存档 —— 每完成一个子步骤存一档,崩了从存档续,做完的步骤不重做。
- 同一份活只许一个写者 —— 各用隔离工作区;冲突不自动合并、不静默覆盖,保留现场交人裁决。
- 复杂长任务必须建批 —— 不建批直接动手,引擎拒绝;评估会过期,防止一路闷头干下去。
- 拦得明白 —— 越界被拒时给的是「哪条规则拦的」+可验篡改的收据,不是一句泛化的拒绝。
- 全程留痕 —— 状态、交接、结算、门禁判定全落事件流,可回放、可导出审计;只读面板一眼看全。
为什么需要它
单个智能体好管:派活、盯活、验收,一个人管一个,管得过来。但它的价值到个体为止。
展开完整文档(README 剩余 1 节)
dsh-punky-swarm · 蟛蜞模式治理引擎 一个智能体是随叫随到的外包;一批被治理的智能体,才是一个部门。 把公司的制度做成软件、装进引擎:排期、质检、审批、容灾逐条由引擎跑。人退到只剩裁决——说清要什么,验收做出什么。 English: README.en.md 亮点 - 四道闸口,缺件不放行 —— 派发前查上游产物、合并前查计划结构、结算前查产物落盘、收尾前查验收完成。半成品到不了你手里。 - 判据在开工前写死 —— 验收标准落在计划层,审计按条对照;智能体只能提交,不能自己写结算。 - 按任务特点分配运行模式 —— 顺手小活直接干,不背治理开销;多环节的活走流水线,不建批不许动手。 - 一步一存档 —— 每完成一个子步骤存一档,崩了从存档续,做完的步骤不重做。 - 同一份活只许一个写者 —— 各用隔离工作区;冲突不自动合并、不静默覆盖,保留现场交人裁决。 - 复杂长任务必须建批 —— 不建批直接动手,引擎拒绝;评估会过期,防止一路闷头干下去。 - 拦得明白 —— 越界被拒时给的是「哪条规则拦的」+可验篡改的收据,不是一句泛化的拒绝。 - 全程留痕 —— 状态、交接、结算、门禁判定全落事件流,可回放、可导出审计;只读面板一眼看全。 为什么需要它 单个智能体好管:派活、盯活、验收,一个人管一个,管得过来。但它的价值到个体为止。堆数量更糟——十个智能体一起干活,谁先跑、谁等谁、谁写哪个文件、崩了从哪续,没有规则兜底,跑起来就是事故现场。堆出来的不是帮手,是更多要盯的外包。 外包靠人盯,部门靠制度。 一个人盯不过来,一套制度可以。制度装进引擎之后账也算得过来:部门要养编制,没活也得养;引擎里的规则按 token 租,有活才租。一个人、一套自动化的制度、一批随叫随到的智能体——这就是一人公司的全部构成。 多数多智能体产品卡在一条看不见的线上:它们给了你能力,没给你制度落座的位置。 这句话拆开看是三处毛病——状态留不住、目标守不住、任务说不清。 | 毛病 | 你得到的后果 | 引擎的对策 | | 状态留不住 | 上下文一压、会话一关,做过的事蒸发;中断一次等于从头再来 | 状态搬进文件当唯一事实源,按步存档 | | 目标守不住 | 聊着聊着需求就变了,没人察觉 | 目标开工前钉死,批次建好不重算 | | 任务说不清 | 只能说「帮我写个方案」 | 先分级,再按依赖分层,每轨声明交什么 | 工具调用级定轨 智能体跑偏,靠更强的能力治不了,得靠纪律治。就像走路刻在脊髓里而不占大脑——任务能不能走完,不取决于它当下多聪明,取决于有没有一套流程在兜着它。 判断权因此从智能体手里收走:开工前把契约立好(这一步交什么、什么算齐),一步做完先验收,检查不落在智能体的自觉上,而拦在它调用外部工具的链路上。 这件事只能在宿主把执行循环开放出来的那一层做。宿主只开放到能接外部协议,纪律只能在引擎外面手工拼装;开放到执行循环内部,纪律才装得进引擎、变成本能。 这套东西由三件组成:引擎给能力(分级、编排、门禁、锁、存档、护栏、只读面板);模式规范行为(角色、纪律、引导);指引教怎么用(分层角色手册、产物格式、模板)。三件随包安装,装完即是一支可运行的队伍。 纪律在引擎里,不在协议外 互联协议(MCP / ACP)解决「互相找得到、递得出任务」,最多组成聊天室。真正的流水线不长在互通上,长在验收上——前脚没站稳后脚不能迈,产物不齐绝不放行。 这类检查只有一个位置能长:宿主执行循环内部。只有循环自己知道这次调用前缺什么、产出了什么、谁在等这份产出。所以「让智能体记得做」和「引擎必须验」是两种治理,本引擎选后者。 市面上的东西大致分三类:单智能体编程产品(让一个智能体把活干成,设计目标里没有多线并行与产物契约)、多智能体编排框架(让几个智能体按拓扑说话,判据仍留在调用方手里)、判定工程类(有门禁有审查,但只有一条线)。单智能体产品缺编排,编排框架缺门禁,判定工程类只有一条线——本引擎把三样塞进同一个引擎。 装进来你会得到什么 三层门禁与批次/成员状态机 · 单写者锁 · 隔离工作区与存档点 · 任务难度门禁 · 显式消息通道(三个信箱、只写元数据、消费需确认)· 心跳与长跑探针 · 调用级护栏(六种裁决原语 + 可验篡改的拒绝收据,出厂规则为空、装上不改变行为)· 本地审计日志(默认开、不外发)· 只读监控面板。 另随包 5 套团队技能:软件工程、设计、调研、视频、写作。软件工程那套另含规格语言原文与适配层——写规格、查结构、验一致性都有据可依。 它管不到的地方 不判模型意图(护栏在工具调用层,生成与推理不在防线内);不是沙箱、不做联网网关、不检测绕过显式通道的侧信道;不提供一次性写入存储(哈希链防静默篡改,不防删除,也无第三方签名);判定不了调用者身份(留痕是记录与可见性,不是访问控制);单机进程内治理,不做跨机编排;护栏出厂规则为空,裁决恒放行。 所以它不宣称「防住了模型跑偏」。它提供的是一个位置选择:把可判定的越界与交付缺失拦在执行期,而不是等它变成一份事后报告。 谁该用 一个人或一个小型技术团队,做的是有验收标准的交付——代码、调研、设计、写作都算。三个条件同时成立才值得: 1. 你同时在推进好几件事,不是改一个函数; 2. 你需要产物链可追溯、失败可查、越界能拦; 3. 你不愿意在 Agent 说做完了之后,自己再当一遍审查者。 三条同时成立的人不多。但如果你恰好是这种人,市面上没有第二个选择——这不是调研结论,是当初自己动手写插件的原因。 安装 前置:已安装 DeepSeek Harness(dsh),Node.js ≥ 22。 dsh plugin add dsh-punky-swarm dsh web restart 备选:npm install -g dsh-punky-swarm 后 dsh plugin --profile <profile> add dsh-punky-swarm;开发路线可用 link: 指向本地包目录。 重启后会话区多出蟛蜞集群面板,团队技能自动同步到用户目录——安装即得,无需额外配置。 兼容性与许可 版本单一真源 packages/dsh-punky-swarm/package.json(变更见 CHANGELOG.md)。测试基线:204 个测试文件 / 2,147 个测试 / 10,560 条断言 / 0 条恒真(单一真源 baselines/test-baseline.json)。 peer 依赖:@deepseek-ai/dsh-tools(^0.1.0-rc.6 || ^0.1.1-rc.2 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-rc.1 || ^0.2.0-rc.1 || ^0.2.1-rc.2)与 @deepseek-ai/cordis(^4.0.1);零第三方运行时依赖。边界:单机进程内治理,无分布式同步、无成本控制、无模型路由,零云依赖、默认零网络暴露;失败即终态,不自动续跑。 许可:GNU AGPL v3(AGPL-3.0-only)为唯一许可;遵守 AGPL-3.0 可自由使用、修改、分发(含商用),修改后经网络提供服务须公开修改内容。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Punky971210/dsh-punky-swarm
dsh-punky-swarm · 蟛蜞模式治理引擎
相关插件 · 其他
模型破甲清洗YuJunZhiXue/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,148已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,266已汉化DSH
70.7
这是你的仓库?认领条目