让写手、运行机与审查者分工校验代码,最终交由人工裁决合入
30.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add stmcw1/DACW该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · tool
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 4 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 40 处,展示前 28 条)
- 删除本地文件递归build.mjs:38
rmSync(outDir, { recursive: true, force: true }); - 写入本地文件build.mjs:39
mkdirSync(outDir, { recursive: true }); - 读取本地文件build.mjs:42
const source = readFileSync(path.join(root, file), 'utf8'); - 写入本地文件build.mjs:45
writeFileSync(path.join(outDir, file.replace(/ ts$/, '.js')), output, 'utf8'); - 读取本地文件index.ts:256
stat = await fs.lstat(current); - 读取本地文件index.ts:277
const root = await fs.realpath(safeDir); - 写入本地文件index.ts:295
await fs.mkdir(parentDir, { recursive: true }); - 读取本地文件index.ts:299
const stat = await fs.lstat(targetPath); - 读取本地文件index.ts:308
const realParentDir = await fs.realpath(parentDir); - 写入本地文件index.ts:313
await fs.writeFile(targetPath, content, 'utf-8'); - 读取本地文件index.ts:319
const stat = await fs.lstat(target); - 读取本地文件index.ts:322
const realTarget = await fs.realpath(target); - 删除本地文件index.ts:341
if (entry.isDirectory()) await fs.rm(fullPath, { recursive: true, force: true }); - 删除本地文件index.ts:342
else await fs.unlink(fullPath); - 写入本地文件plugin.ts:736
await fs.mkdir(lexical, { recursive: true }); - 读取本地文件plugin.ts:738
const directory = await fs.realpath(lexical); - 读取本地文件plugin.ts:741
const entries = await fs.readdir(directory, { withFileTypes: true }); - 读取本地文件plugin.ts:749
const content = await fs.readFile(markerPath, 'utf-8').catch(() => ''); - 写入本地文件plugin.ts:766
if (!hasMarker) await fs.writeFile(markerPath, WORKSPACE_MARKER_CONTENT, 'utf-8'); - 读取本地文件runner.ts:57
fsSync.accessSync(full, fsSync.constants.X_OK); - 读取本地文件runner.ts:134
const nodeRes = cliJs && fsSync.existsSync(cliJs) ? this.resolveCommandPath('node') : null; - 执行外部命令来自配置/变量runner.ts:137
child = spawn(nodeRes.absPath, [cliJs, ...args], { - 执行外部命令来自配置/变量runner.ts:153
child = spawn(resolution.absPath, args, { - 执行外部命令固定命令runner.ts:218
const tk = spawn('taskkill', ['/pid', String(child.pid), '/f', '/t'], { stdio: 'ignore', windowsHide: true }); - 写入本地文件state_manager.ts:86
await fs.mkdir(this.stateDir, { recursive: true, mode: 0o700 }); - 写入本地文件state_manager.ts:100
await fs.rename(tmpPath, this.stateFilePath); - 删除本地文件state_manager.ts:111
await fs.unlink(tmpPath).catch(() => { }); - 读取本地文件state_manager.ts:123
const raw = await fs.readFile(this.stateFilePath, 'utf8');
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
防御式智能体编码工作流:写作者 → 确定性运行器 → 独立审查者 → 人工把关。dacw_run 工具在隔离工作区里编写、测试并审计代码,未经人工审查不会合并任何内容
README
由 DeepSeek 最新模型翻译生成点击 or click
DACW — 防御性智能体编程工作流
让 AI 写代码,让机器验代码,让人做最终裁决。
DACW 是一个 DSH Host 插件:写手子代理按增量协议产出代码,确定性运行机执行项目自带测试,独立审查者给出结构化裁决,最后停在人工闸门。所有失败与异常路径都收敛到 NEED_HUMAN,绝不自动合入。
特性
- 三权分立:写手只产出 JSON 变更集,运行机只执行白名单命令,审查者只输出裁决——没有任何一方能独立合入代码。
- 子代理零工具隔离:写手/审查者运行在 persona-only preset 上,插件在 agent/created 阶段用 ctx.tools.restrict({ allow: [] }) 剥除全部继承工具并校验可见工具为 0;隔离失败则拒绝创建子代理。
- 输出协议 v2:写手只输出相对基线的变更,未提及文件逐字节保留,明显减少 token,并避免"上轮通过的代码被改坏"。
- 确定性运行机:命令白名单(npm / pnpm / yarn / npx / node / python / python3 / pytest / cargo / go)、环境变量白名单、超时强杀进程树、输出截断。
- 结构化审查:裁决必须为精确 JSON,解析失败按 REJECTED 处理;PASS 但含可疑字样 → 人工闸门。
展开完整文档(README 剩余 1 节)
点击 or click
DACW — 防御性智能体编程工作流
让 AI 写代码,让机器验代码,让人做最终裁决。
DACW 是一个 DSH Host 插件:写手子代理按增量协议产出代码,确定性运行机执行项目自带测试,独立审查者给出结构化裁决,最后停在人工闸门。所有失败与异常路径都收敛到 NEED_HUMAN,绝不自动合入。
特性
- 三权分立:写手只产出 JSON 变更集,运行机只执行白名单命令,审查者只输出裁决——没有任何一方能独立合入代码。
- 子代理零工具隔离:写手/审查者运行在 persona-only preset 上,插件在 agent/created 阶段用 ctx.tools.restrict({ allow: [] }) 剥除全部继承工具并校验可见工具为 0;隔离失败则拒绝创建子代理。
- 输出协议 v2:写手只输出相对基线的变更,未提及文件逐字节保留,明显减少 token,并避免"上轮通过的代码被改坏"。
- 确定性运行机:命令白名单(npm / pnpm / yarn / npx / node / python / python3 / pytest / cargo / go)、环境变量白名单、超时强杀进程树、输出截断。
- 结构化审查:裁决必须为精确 JSON,解析失败按 REJECTED 处理;PASS 但含可疑字样 → 人工闸门。
- 可配置模型:写手/审查者可分别继承父会话路由,或从 DSH 已配置模型目录中选择;启动日志与结果对象显示实际生效的模型。
- 工作区安全闸门:仅接受空目录或本插件写入的合法 .dacw-workspace 标记;拒绝系统根、用户主目录、DSH_HOME/profile 目录;写入前做 realpath + 逐段符号链接校验。
- 审计记录:状态文件包含任务、文件清单摘要、测试输出与审查文本,HMAC-SHA256 签名。
工作流程
写手(JSON 变更集) → 协调器(校验 / 合并 / 落盘) → 运行机(项目测试) │ 失败 → 打回重写(最多 maxRounds 轮)审查者(JSON 裁决) → 人工闸门 NEED_HUMAN
1. 写手按协议 v2 输出变更。
2. 协调器做路径越权校验、合并基线并把工作区重置为合并集。
3. 运行机按项目类型执行测试(每轮重新嗅探)。
4. 审查者审计全量文件 + 地基文件(锁文件送 SHA256 摘要)。
5. 通过后返回 success: true、status: "NEED_HUMAN";其余路径同样收敛到人工闸门。
安装
前置要求(DSH 宿主环境):宿主需支持 agentPresets 与 subagents 服务(ctx.subagents / agentPresets,建议使用最新版 DSH)。它们用于创建写手/审查者专用零工具 preset 并强制执行子代理工具隔离;宿主版本过旧时 DACW 会触发 Fail-Closed 拒绝运行(不会静默降级为继承父会话工具),以保证隔离的安全底线。
前置:DSH 提供 ctx.subagents、agentPresets 服务与 spawn provider(@deepseek-ai/dsh-subagent-spawn-in-process);构建需要 Node ≥ 22.13;被测试项目的依赖需人工预装。
node build.mjs # 构建 dist/(Node 内置类型擦除,无需 typescript)
node selftest.mjs # 60 项回归自测
npm pack --pack-destination ../dacw-pack # 生成安装产物
在 DSH 插件管理器中执行 install_bundle,target 填 tarball 的绝对路径并加 file: 前缀(例如 file:/absolute/path/to/stmcw1-dacw-1.0.2.tgz)。安装后向 profile 插入 Host 行 dacw(bundle 包名 @stmcw1/dacw)。不要用目录路径安装——目录安装会绕过 files 白名单,把源码、测试与构建脚本一并装进 profile。
升级:改代码 → node build.mjs → npm pack → remove_bundle → install_bundle 同一 tarball → 重启 Harness。
使用
模型调用 dacw_run 工具:
| 参数 | 必填 | 说明 |
| task | 是 | 需求描述(自然语言,越具体越好) |
| workspace | 否 | 专用工作区;绝对路径或相对会话工作目录,省略则用配置值/会话工作目录 |
| task_id | 否 | 审计记录文件名后缀;省略自动生成 |
成功返回:
| 字段 | 说明 |
| success / status | 机器闸门结果;status 恒为 NEED_HUMAN |
| message | 人类可读结论 |
| workspace / files / round | 工作区、产出文件、终止轮次 |
| models | { writer, reviewer },实际生效的模型 |
| logs / elapsed_ms | 日志尾部与耗时 |
启动日志示例:
🧠 模型配置 | ✍️ 写手: deepseek-account/deepseek-flash(插件配置) | 🔍 审查者: 继承父会话路由(DSH 默认: deepseek-account/deepseek-flash)
工作流失败时工具抛出错误(附工作区、状态、轮次与日志尾部),不会把失败伪装成普通结果;所有路径都不提交、不合入。
模型配置
writerModel / reviewerModel 支持四种取值:
| 取值 | 行为 |
| null / "inherit" | 继承父会话路由(默认) |
| "provider/model" | 显式指定,并校验 provider 已在 DSH 中注册 |
| "model" | 按模型名在 DSH 已配置模型目录中解析唯一 provider |
| { provider?, model, reasoningEffort? } | 对象形式,reasoningEffort 透传给子代理 |
config:
writerModel: deepseek-account/deepseek-flash
reviewerModel: { model: deepseek-flash, reasoningEffort: high }
解析发生在每次工具调用开始时,DSH 设置变更即时生效;解析失败即 fail-closed,不会静默换用其他模型。
安全
DACW 会执行模型生成的代码与命令,不是容器级沙箱。请在专用或一次性环境、最小权限账号下使用,并始终保留人工终审。完整边界与免责声明见 SAFETY.md。
项目结构
| 路径 | 职责 |
| plugin.ts | DSH Host 半边:工具注册、子代理 preset、运行时工具隔离、模型解析、工作区闸门 |
| index.ts | 协调器:轮次、基线合并、运行机调度、裁决、人工闸门 |
| runner.ts | 运行机:命令解析、超时强杀、输出截断 |
| state_manager.ts | 状态:原子写、HMAC、串行队列 |
| build.mjs / selftest.mjs | 构建(TS → dist/)与回归自测 |
| cordis.patch.yml / locale/ / icon.png | 插件清单与展示资源 |
开发
- dist/ 由 build.mjs 用 Node 内置类型擦除生成,不依赖 typescript,也不入库。
- 提交前请执行 node build.mjs && node selftest.mjs。
- 完整配置项与默认值见 plugin.ts 的 DEFAULT_PLUGIN_CONFIG(cordis.patch.yml 的 config 可逐项覆盖)。
- 实验性项目,接口与行为可能变化。
状态
实验性开发者预览(当前版本 v1.0.2,bundle @stmcw1/dacw):构建冒烟与回归自测通过,并已在 DSH desktop profile 完成真实闭环验证(写手产出 → npm test 通过 → 独立审查 PASS → NEED_HUMAN),子代理工具隔离实测生效。欢迎 issue / PR。
许可证
本项目基于 MIT 许可证开源。
npm: @stmcw1/dacw · GitHub预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
stmcw1/DACW
让写手、运行机与审查者分工校验代码,最终交由人工裁决合入
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
智能体运行框架路由HarnessRouter/harnessrouter
智能体 harness 的统一接口。
★ 3,984已汉化DSH
71.3
这是你的仓库?认领条目