@minonl/dia 0.0.0-stage → 0.0.2-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +253 -2
- package/bin/dia.js +5 -0
- package/dist/cli.js +7408 -0
- package/docs/acp-integration.md +136 -0
- package/docs/architecture.md +166 -0
- package/docs/cli.md +117 -0
- package/docs/dependency-registry.md +105 -0
- package/docs/deps.jsonl +7 -0
- package/docs/ecosystem-integration.md +155 -0
- package/docs/ecosystem-positioning.md +95 -0
- package/docs/entrypoints.md +83 -0
- package/docs/evolution-process.md +298 -0
- package/docs/history/framework-bootstrap.md +109 -0
- package/docs/host-control-surface.md +213 -0
- package/docs/index.md +80 -0
- package/docs/kit-install.md +339 -0
- package/docs/migrations/kb-golden.md +32 -0
- package/docs/migrations/llm-migration.md +49 -0
- package/docs/migrations/no-python.md +52 -0
- package/docs/migrations/yan-agent-current.md +52 -0
- package/docs/migrations/yan-agent-next.md +168 -0
- package/docs/migrations/yan-kb-parity.md +159 -0
- package/docs/migrations/yan-kb.md +120 -0
- package/docs/model-baseline-sidecar.md +220 -0
- package/docs/model-behavior.md +229 -0
- package/docs/monorepo.md +83 -0
- package/docs/overview.md +126 -0
- package/docs/patching.md +91 -0
- package/docs/persona-install.md +264 -0
- package/docs/platforms/index.md +66 -0
- package/docs/platforms/registry.json +54 -0
- package/docs/pricing.md +43 -0
- package/docs/proposals.md +76 -0
- package/docs/research/benchmarks-survey.md +96 -0
- package/docs/research/collaboration-theory.md +85 -0
- package/docs/research/dsh-superagent.md +97 -0
- package/docs/research/frameworks-survey-2.md +75 -0
- package/docs/research/h0/report.md +135 -0
- package/docs/research/h0/sample.json +34 -0
- package/docs/research/model-boundary-patterns.md +99 -0
- package/docs/research/opencode-session-scoping.md +84 -0
- package/docs/review/reuse-review.md +105 -0
- package/docs/review/verification-2026-10-28.md +49 -0
- package/docs/security/audits/2026-11-04.json +44 -0
- package/docs/security/credentials.md +95 -0
- package/docs/security/public-release.md +108 -0
- package/docs/security-sandbox.md +157 -0
- package/docs/status.md +158 -0
- package/docs/team-automation.md +169 -0
- package/docs/team.md +112 -0
- package/docs/versioning.md +237 -0
- package/docs/vision.md +161 -0
- package/package.json +45 -4
- package/packages/job/README.md +98 -0
- package/packages/job/bin/dia-job +1283 -0
- package/packages/job/config.example +5 -0
- package/packages/job/install.sh +37 -0
- package/packages/job/lib/config.sh +18 -0
- package/packages/job/lib/json.mjs +130 -0
- package/packages/job/lib/policy.sh +103 -0
- package/packages/job/package.json +10 -0
- package/packages/job/shim/yan-task +24 -0
- package/packages/job/tests/bootstrap.test.sh +115 -0
- package/packages/job/tests/install.test.sh +30 -0
- package/packages/job/tests/linux.test.sh +130 -0
- package/packages/job/tests/p2.test.sh +46 -0
- package/packages/job/tests/policy.test.sh +38 -0
- package/packages/wt/bin/dia-wt +1148 -0
- package/packages/wt/tests/check.test.sh +126 -0
- package/packages/wt/tests/clean.test.sh +126 -0
- package/packages/wt/tests/prune-merged.test.sh +169 -0
- package/packages/wt/tests/route.test.sh +112 -0
- package/packages/wt/tests/scope.test.sh +69 -0
package/docs/status.md
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# dia 状态页(单一事实源)
|
|
2
|
+
|
|
3
|
+
> 更新:2026-11-03(复核:`bun test tests` 286/39 全绿)。任何"现在做到哪了"的问题,以本页为准;其他文档是细节。
|
|
4
|
+
> 规则:状态必须能追到**命令/测试/提交**;没有证据的写"未验证"。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. 文档清单
|
|
9
|
+
|
|
10
|
+
> 三方合起来的现状看 [`overview.md`](overview.md);本页只管 dia 自己的阶段与证据。
|
|
11
|
+
|
|
12
|
+
| 文档 | 内容 | 状态(2026-11-03) |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| `overview.md` | **三方现状**:dia/yan/dabo 对照、能力面、缺口、文档地图 | 现行 |
|
|
15
|
+
| `vision.md` | **长期定位**:superagent/agent-team 工厂、平台经验库、fleet 边界 | 方向(不是现状) |
|
|
16
|
+
| `platforms/index.md` | **AI 工具平台经验库**:版本矩阵、断代与坑、验证命令、脱敏规则 | 现行(P0 持续补) |
|
|
17
|
+
| `security/credentials.md` | 凭据管理现状与调研待办(bw 分组粒度问题) | 待调研 |
|
|
18
|
+
| `HANDOFF.md`(仓库根) | 交接入口:复验判据 / 接手须知 / 坑 / 待决策指针 | 现行 |
|
|
19
|
+
| `status.md` | 本页:阶段、判决、待决策 | 现行 |
|
|
20
|
+
| `cli.md` | CLI 词表 + §4.1 实现状态 | 现行 |
|
|
21
|
+
| `persona-install.md` | persona/kit 安装:git → opencode/dsh 渲染 | 现行 |
|
|
22
|
+
| `monorepo.md` | core / kb / job / cli / wt 布局 | 现行 |
|
|
23
|
+
| `team.md` | 开发团队 4+3 | 现行 |
|
|
24
|
+
| `pricing.md` | 计价表与 `price` 命令 | 现行 |
|
|
25
|
+
| `dependency-registry.md` / `deps.jsonl` | 依赖登记格式(只追加) | **现行**:`deps.jsonl` 是单一事实源,`dia doctor` 派生校验(M1) |
|
|
26
|
+
| `versioning.md` | 多版本、semver、激活模式 | **部分**:多版本 + `use` 已实现;`activation` 未实现 |
|
|
27
|
+
| `architecture.md` | 三层职责、知识存储选型、抽取顺序 | **设计**(§7 待定已全部落定,见文内 2026-11-03 注) |
|
|
28
|
+
| `history/framework-bootstrap.md` | 早期启动与分发选型(已归档) | **归档**:方案未采用,实际分发是 `install.sh`,不要按它部署 |
|
|
29
|
+
| `entrypoints.md` | 用户入口矩阵 | **部分过时**:终端 dabo preset 已渲染;IM bridge 未写;`dia status` / `dia model` 不存在 |
|
|
30
|
+
| `kit-install.md` | kit 清单、渲染、生命周期 | **设计**:实现只有 `add/list/verify/remove`;`show/update/gc/create` 未做 |
|
|
31
|
+
| `patching.md` | 本地 patch | **未实现**(`unknown command`) |
|
|
32
|
+
| `team-automation.md` | 计划→实现→验证全自动循环 | **未实现**(D0.6–D0.9 只跑通 mock / ACP 驱动) |
|
|
33
|
+
| `proposals.md` | `team next` 目标候选 | **v0 已实现**(`dia team next`,纯规则打分) |
|
|
34
|
+
| `security-sandbox.md` | 沙箱单 seam、档位、fail-closed | **部分未实现**(S4–S7) |
|
|
35
|
+
| `security/public-release.md` | 公开 release 门禁 | **BLOCKED until audit** |
|
|
36
|
+
| `acp-integration.md` / `ecosystem-*.md` | ACP 与生态选型 | **设计 / 参考**(server 未做) |
|
|
37
|
+
| `model-behavior.md` / `model-baseline-sidecar.md` | 客户端模型调控、基准 sidecar | **有据,未实施**(D2) |
|
|
38
|
+
| `evolution-process.md` | `(T,D,O)`、V 型、压缩 | **理论**(D3 未实施) |
|
|
39
|
+
| `host-control-surface.md` | opencode/dsh 控制面 L0/L1/L2 | 参考 |
|
|
40
|
+
| `migrations/yan-agent-current.md` | yan → dia 迁移现状 | **现行** |
|
|
41
|
+
| `migrations/*`(其余) | 当时的迁移/清理结论 | **留痕**:可能已被推翻(`yan-kb-parity` 的「main 仍旧」已过期) |
|
|
42
|
+
| `research/*`、`review/*`、`research/h0/*` | 实验与验证报告 | **留痕** |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 2. 设计支柱 × 证据 × 判决
|
|
47
|
+
|
|
48
|
+
| # | 支柱 | 证据 | 判决 | 下一步 |
|
|
49
|
+
|---|---|---|---|---|
|
|
50
|
+
| 1 | 进化过程(观测→记录→蒸馏→评审→尝试→度量→调整) | 理论:混合主动、JCS、MHC;本系统**未验证** | **有理论依据,未实证** | 用 4-fixture 跑完整一圈 |
|
|
51
|
+
| 2 | `(T,D,O)` 多维状态 | 理论:types×levels、SA、信任校准;Δ/自报已被纠正 | **部分支持,需实验** | state 事件 + 一次样本 |
|
|
52
|
+
| 3 | 审计/冻结(H1/H2) | 29 测试、E2E 9 段、独立验证修复 P1/P2 | **支持(局部)** | 哈希链(M3) |
|
|
53
|
+
| 4 | 独立验证 | pilot 发现 10 问题、其中 2 个严重且自测全绿 | **支持** | 每里程碑固定执行 |
|
|
54
|
+
| 5 | 沙箱 | dsh 只文件;seatbelt 网络/路径/symlink 实测;状态保护未实现 | **部分** | S4–S7 |
|
|
55
|
+
| 6 | 知识索引 / 采集 | yan 103 篇基线;257 episode;源只读实测;opencode 会话跨 project 已覆盖 | **支持(管线)** | 保留策略 |
|
|
56
|
+
| 7 | 模型调控 | 五家源码对照;baseline/sidecar 设计 | **有据,未验证** | ModelSpec + canary |
|
|
57
|
+
| 8 | 验收双票 / 路由 | 用户决定;无实验 | **假设** | H13/H14 |
|
|
58
|
+
| 9 | 团 / 档位 | 无先例、无第二场景;已 defer | **无证据** | H4/H5(暂缓) |
|
|
59
|
+
| 10 | ACP / 生态 | 五家服务端 + acpx;无 dsh 桥 | **支持(参考)** | 先做 server |
|
|
60
|
+
| 11 | 团队 4+3 | 首次独立验证即回本 | **支持** | 固化为门禁 |
|
|
61
|
+
| 12 | 依赖/记录治理 | SBOM/PITR/GDPR/AU-11 标准 | **有据,未实现** | M1–M5 |
|
|
62
|
+
|
|
63
|
+
**一句话判决**:
|
|
64
|
+
> **"进化过程 + 审计/门禁 + 证据纪律 + 模型基准"有搞头;"引擎/团/档位"没有证据,已被降级。**
|
|
65
|
+
> 继续投入的条件:D1–D3 能跑出真实数据;否则停止扩张。
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 3. 计划状态
|
|
70
|
+
|
|
71
|
+
| 阶段 | 内容 | 状态 | 证据 |
|
|
72
|
+
|---|---|---|---|
|
|
73
|
+
| D0 | kb / ingest / audit / freeze / run / resume | **完成** | 29 测试 + E2E 9 段(Node+Bun) |
|
|
74
|
+
| D0.5 | 独立验证 + 修复 P1/P2/P5/P7/P10 | **完成** | `docs/review/verification-2026-10-28.md` |
|
|
75
|
+
| D0.6 | task 台账 + 团队状态机 + 验收门禁(mock) | **完成** | 43 测试 |
|
|
76
|
+
| D0.7 | ACP TeamDriver(opencode) | **成功/失败路径均跑通** | 成功→accept;失败→escalated;tokens 记账;只读副本+脱敏+清理 |
|
|
77
|
+
| D0.8 | ACP TeamDriver(dsh) | **成功/失败路径均跑通** | 每角色 profile(只读沙箱);4 次调用/34k tokens;失败→escalated |
|
|
78
|
+
| D0.9 | H9/H10:角色 JSON 契约 + 修复重试 | **实现+单元测试** | 68 测试;build/smoke/e2e(node+bun)通过;真实模型修复率待测 |
|
|
79
|
+
| D0.10 | H0:三层覆盖分类实验 | **推翻(严格口径)** | 20/140 抽样:17/20=85%;宿主适配缺口 3;成本未测;见 `docs/research/h0/report.md` |
|
|
80
|
+
| D0.11 | yan-agent 迁移 dia | **本机已切换;dsh host 已补;剩余项见清单** | `yan` persona 生效;dsh profile 3091;AGENTS/default agent 已切;见 `docs/migrations/yan-agent-current.md` |
|
|
81
|
+
| D0.12 | yan-kb → dia kb 能力矩阵 | **K2.5 next 已切;main 仍 old** | next 默认 dia + auto-index;old 可回滚;main/现网未替换;见 `docs/migrations/yan-kb-parity.md` |
|
|
82
|
+
| D0.13 | dia monorepo(core/kb/job/cli) | **M3b 完成;M4 归档** | `packages/kb`、`packages/job`、`packages/cli`;独立 `dia-job` 已归档;见 `docs/monorepo.md` |
|
|
83
|
+
| D0.14 | public release gate | **BLOCKED until audit** | 必须完成脱敏 + git 历史清洁 + `dia-security` pass;见 `docs/security/public-release.md` |
|
|
84
|
+
| D0.15 | dia global install + CLI package (M3a/M3b) | **完成** | `install.sh` + `packages/cli`;根 `src/cli.ts` 兼容;88 tests |
|
|
85
|
+
| D0.16 | Python 清理 | **完成** | experiments/TS + `packages/job/lib/json.mjs`;全仓无 python3;见 `docs/migrations/no-python.md` |
|
|
86
|
+
| D0.17 | persona/kit 安装形态(kit + 内联内容 + scope + 委派) | **完成** | `src/{kit,scope,active,env,doctor}.ts`;`tests/{kit,scope,env,active-doctor}.test.ts` |
|
|
87
|
+
| D0.18 | 生效版本指针 + 审计 | **完成** | `dia persona use/show`;`state/active.json(l)`;scope 先读指针 |
|
|
88
|
+
| D0.19 | 凭据注入(白名单 → 子进程) | **完成** | `dia env list/check/run`;不回显、redact、不进 argv |
|
|
89
|
+
| D0.20 | 组合自检 | **完成** | `dia doctor`(persona/kit/knowledge/dsh preset/wt;exit 0/1/2) |
|
|
90
|
+
| D0.21 | worktree 抽取 `packages/wt` | **完成** | 7 处 python→node;`dia wt`;4 套测试原样迁移全绿 |
|
|
91
|
+
| D0.23 | doctor 平台版本自检 | **完成** | `platform:opencode` / `platform:dsh` 报版本(缺宿主 = warn,不判红);`tests/active-doctor.test.ts` |
|
|
92
|
+
| D0.44 | 配置迁移走 LLM 任务 | **完成** | `docs/migrations/llm-migration.md`:升级只改声明;迁移=任务+判据+回滚;禁止代码里堆版本分支(安全敏感/原子场景例外) |
|
|
93
|
+
| D0.48 | npm 预发布 dist-tag | **完成** | `publish.yml` 按版本自动 `next`/`latest`;
|
|
94
|
+
| D0.47 | npm Trusted Publishing | **完成(待配置侧)** | `.github/workflows/publish.yml`:release published → OIDC → `npm publish --provenance`;`publishConfig.provenance=true`;仓库不放 token。npmjs 侧需配 Trusted Publisher(repo + workflow 名) |
|
|
95
|
+
| D0.46 | npm 包准备 | **完成(待发布)** | 去掉 `private`、`publishConfig.access=public`、`files` 含 `packages/{wt,job}`;`npm pack` + 本地全局安装实测通过 |
|
|
96
|
+
| D0.45 | 发版脚本 | **完成** | `scripts/release.sh <patch|minor|major|x.y.z> [--dry-run]`:干净 main + 同步校验 → bump → tag → push → `gh release create`(私有仓默认不发 npm) |
|
|
97
|
+
| D0.43 | broker 取用写主审计链 | **完成** | `DIA_BW_AUDIT_CHAIN=1` 时成功取用追加 `audit.jsonl`(tool=bw、note=ENV=item,无值);默认关,避免测试/日常噪声;失败只留 `bw.jsonl` |
|
|
98
|
+
| D0.42 | env run 接 bw 白名单 | **完成** | `dia env run --bw KEY=item …`:白名单 + broker 取用合并注入;子进程环境剔除 `BW_SESSION`/`BW_PASSWORD`;`serve --passwordfile` 支持启动解锁;`tests/bw-cli.test.ts` |
|
|
99
|
+
| D0.41 | accept 接 CI 门禁 | **完成** | `dia team accept <id> --pr N [--repo R] [--merge]`:先验 `gh pr checks` 全绿,绿才接受;`--merge` 顺带 squash 合并;`tests/team.test.ts` |
|
|
100
|
+
| D0.39 | 合并门禁脚本 | **完成** | `scripts/pr-merge.sh`:CI 全绿才 `gh pr merge`(私有仓无 branch protection);`tests/pr-merge.test.ts` |
|
|
101
|
+
| D0.40 | bw broker launchd 模板 | **完成** | `packaging/launchd/com.minzhao.dia-bw-broker.plist.template` + README(load/unload/检查) |
|
|
102
|
+
| D0.38 | bw broker 常驻进程 + 审计行 | **完成** | `dia env bw serve/get`:unix socket(0600,不监听 TCP)、单进程持有 session;每次取用写 `audit/bw.jsonl`(env/item/task/ok,**不记值**);client 优先走 broker,不在才回落本地 session;`tests/bw-broker.test.ts` |
|
|
103
|
+
| D0.37 | 团队快照移出 run 目录 | **完成** | 快照落系统临时目录(`snapshots.json` 登记,结束即删);角色会话不再能顺着相对路径摸到验收证据;277 tests |
|
|
104
|
+
| D0.36 | bw 单会话 broker(POC) | **完成** | `dia env bw status/unlock/lock/run`:session 只落 0600 文件、永不打印/进 argv;`--map KEY=item` 只注入声明键;子进程环境剔除 `BW_SESSION`/`BW_PASSWORD`;取不到即 fail-closed;`tests/bw*.test.ts` |
|
|
105
|
+
| D0.35 | dsh 驱动自动修复对齐 ACP | **完成**(团队产出 + 人工补齐) | 抽出 `repairRedteamHighs`(ACP/dsh 共用):high → builder 修 → 复跑判据(20MB buffer / 600s)→ 复检;dsh 成功路径写 `run.json`;268 tests |
|
|
106
|
+
| D0.34 | 判据证据由 gate 现场重跑 | **完成**(团队升级后人工补齐) | gate 只认任务台账的 judge,在 `run.json` 记录的 workspace 里重跑;忽略任何角色写的 `judge.json`;mock run 不再能当验收证据;`tests/team.test.ts` 覆盖 |
|
|
107
|
+
| D0.33 | audit off-box checkpoint | **完成**(团队产出) | `DIA_AUDIT_CHECKPOINT`:两阶段(pending 公告 → 落盘 → 确认)、`checkpoint_id`、路径校验(绝对/不在审计目录/非常规文件);`protection=anchored:*` 判定;248 tests |
|
|
108
|
+
| D0.32 | doctor 渲染产物检查 | **完成**(团队产出) | `persona.renderDrift`(只读,复用 compareDir 口径)+ `persona.render` 检查:宿主产物被改/丢失 → warn 并给 `dia persona render <id>`;跳过场景不拉红;237 tests |
|
|
109
|
+
| D0.31 | redteam high 自动修复 | **完成** | `team gate` 遇 high 判 fail;`run --acp` / `run --dsh` 同一套闭环:high 回灌 builder 修一轮 → 复跑判据(`run.json` 的 workspace)+ 复检一轮,仍不达标则 escalated;`redteam.json` 带 `repaired/round`;`tests/team-acp.test.ts` 两条驱动路径均覆盖 |
|
|
110
|
+
| D0.30 | 清理过期内容 | **完成** | `docs/framework-bootstrap.md` → `docs/history/`(归档并标注不采用);删除 `doctor.ts` 未用常量;全仓无 `deps.yaml` 残留引用 |
|
|
111
|
+
| D0.29 | audit 哈希链(M3) | **完成**(团队自动循环 + 人工修正) | `audit append` 写 `seq/prev_hash/hash`;`audit verify --chain`;锚点 `audit/head.json`(原子写,截断/锚点缺失 fail-closed);mkdir 锁串行化写入;坏行判链断点;离箱检查点 `DIA_AUDIT_CHECKPOINT`(两阶段公告/确认写、head→checkpoint 顺序、写失败回滚、同域伪造/回滚/未公告行检出、缺失/损坏 fail-closed、未配置仅告警);`tests/audit.test.ts` 46 例 |
|
|
112
|
+
| D0.28 | ACP 默认超时 10 分钟 | **完成** | `DEFAULT_ACP_TIMEOUT=600000`(180s 实测会掐断 builder);`tests/team.test.ts` |
|
|
113
|
+
| D0.27 | doctor 知识索引新鲜度 | **完成**(团队自动循环产出) | `packages/kb` 的 `indexStatus`(只读探测,不建目录)+ doctor 三态:目录缺失 fail / 索引缺失·落后·外部根 warn(带重建命令)/ 一致 ok;`tests/active-doctor.test.ts` |
|
|
114
|
+
| D0.26 | `dia deps list/record` | **完成** | 追加与派生视图进 CLI;`tests/deps-cli.test.ts` |
|
|
115
|
+
| D0.25 | 依赖登记迁移 JSONL + 校验(M1) | **完成** | `docs/deps.jsonl`(只追加,同 id 取最后一行)+ `src/deps.ts`(PATH/版本/路径探测)+ `doctor` 的 `deps` 项;`tests/deps.test.ts` |
|
|
116
|
+
| D0.24 | 平台注册表(单一事实源) | **完成** | `docs/platforms/registry.json`(支持范围/实测版本/坑)+ `src/platforms.ts` 版本判定 + `doctor` 派生视图;`install.sh` 分发注册表;`tests/platforms.test.ts` |
|
|
117
|
+
| D0.22 | 安装/自检一致性修复 | **完成** | `doctor` 多 persona 逐项自检;`scope` 旧 lock 缺 `content` 时读 `dia.json` 兜底;`render --check` 跳过宿主自写 `cordis.yml`;`persona add --force`(先备份) |
|
|
118
|
+
| D1 | doctor 依赖校验(M1)+ audit 哈希链(M3) | **M1 完成;M3 未开始** | `src/deps.ts` + `doctor` 的 `deps` 项;哈希链未做 |
|
|
119
|
+
| D2 | ModelSpec + 首次基准 + 事故 sidecar | **未开始** | 设计完成 |
|
|
120
|
+
| D3 | state 事件 + `(T,D,O)` 视图 | **未开始** | 设计完成 |
|
|
121
|
+
| D4 | 私有 canary(PR + episode) | **未开始** | 设计完成 |
|
|
122
|
+
| — | 热更新边界 | **persona 不热更(H19)**;工具新增可公告(H17),移除仅 `in-history` | 实现能力探测 |
|
|
123
|
+
| — | watchdog 抽取 | **defer**(2026-11-04) | 无 license、测试不可移植 |
|
|
124
|
+
| — | 团 / 档位 | **defer** | H4/H5 未验证 |
|
|
125
|
+
| — | npm 发布 / ACP server | **未开始** | package `private: true` |
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 4. 团队与门禁
|
|
130
|
+
|
|
131
|
+
- 固定:架构 / 实现 / 验证 / 档案;按需:红队 / 研究 / 发布。
|
|
132
|
+
- 门禁:无判据不开工;**无独立验证不合并**;行为改动人批;自签 = 违规。
|
|
133
|
+
- 首轮指标:独立验证发现率 100%(实现者自测全绿)。
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 4.1 已定(2026-10-28)
|
|
138
|
+
|
|
139
|
+
- 默认生效时机:**next-session**(运行中会话不惊动)。
|
|
140
|
+
- patch 范围:**限定**——提示词/知识/技能实现可改;capabilities/安全策略/凭据不可改。
|
|
141
|
+
- 版本:semver + `breaking` 标记;dia 建议、硬检查强制;模型审查只补充不推翻。
|
|
142
|
+
|
|
143
|
+
## 5. 待决策
|
|
144
|
+
|
|
145
|
+
1. D1 先做 doctor 还是 audit 哈希链?
|
|
146
|
+
2. D2 的 ModelRunner 以 dsh 为首,是否需要同时接 opencode?
|
|
147
|
+
3. D3 的 state 事件是否先只做"深度 + 障碍"两类?
|
|
148
|
+
4. D4 的 PR 题源是否只在本地生成、不进任何远程?
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## 6. 不做什么(防止漂移)
|
|
153
|
+
|
|
154
|
+
- 自建沙箱 / 重试 / 压缩(复用 dsh)。
|
|
155
|
+
- 公共市场 / 自动安装。
|
|
156
|
+
- 多引擎运行时。
|
|
157
|
+
- 无证据的团/档位扩张。
|
|
158
|
+
- 未经过独立验证就宣布完成。
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# 全自动团队:人只在验收介入
|
|
2
|
+
|
|
3
|
+
> 日期 2026-10-28。目标:**计划→实现→验证→对抗→修复全自动循环;人只在验收阶段拍板。**
|
|
4
|
+
>
|
|
5
|
+
> **状态(2026-11-03 更新)**:部分实现。已落地:`dia team run --mock|--acp|--dsh`、`gate/accept/reject`、`task` 台账;
|
|
6
|
+
> **redteam 的 high 级反驳会自动回灌 builder 修一轮**(复跑判据 + 复检,仍不达标才 escalated),gate 对 high 直接判 fail;
|
|
7
|
+
> `--acp` 与 `--dsh` 两条驱动路径共用同一闭环与同一判据。
|
|
8
|
+
> 未落地:多轮修复后的模型重打分、验收包的机器可读格式。
|
|
9
|
+
> 前提:每个角色是宿主里的独立 persona;编排由确定性脚本驱动;模型只做角色内判断。
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. 自动机
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
queued
|
|
17
|
+
→ planning (planner:计划 + 验收判据 judge + 任务拆解)
|
|
18
|
+
→ building (builder:worktree 内实现 + 测试)
|
|
19
|
+
→ verifying (verifier:独立只读,三态结论)
|
|
20
|
+
→ redteaming (redteam:反驳清单,每条可复现)
|
|
21
|
+
→ fixing (builder:逐条回应/修复;≤N 轮)
|
|
22
|
+
↑__________________________|
|
|
23
|
+
→ awaiting_acceptance (生成验收包,停下)
|
|
24
|
+
→ accepted / rejected
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**人在哪**:只在 `awaiting_acceptance` 出现;其余阶段人可看但不需要操作。
|
|
28
|
+
**谁能停**:确定性门禁(预算/判据缺失/连续失败)可自动升级到 `escalated`,同样停在人面前。
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 2. 角色与权限(能力包络)
|
|
33
|
+
|
|
34
|
+
| 角色 | 工具 | 读/写 | 不许 |
|
|
35
|
+
|---|---|---|---|
|
|
36
|
+
| **planner** | read, grep | 只读 | 写代码、改判据 |
|
|
37
|
+
| **builder** | bash, git, edit(仅 worktree) | 写 | 自签验收、改 judge |
|
|
38
|
+
| **verifier** | bash(只跑判据) | 只读 | 改代码、与 builder 同上下文 |
|
|
39
|
+
| **redteam** | read, bash(只复现) | 只读 | 空泛吐槽、改判据 |
|
|
40
|
+
| **lead(脚本)** | 无模型 | 编排/记账 | 代替任何角色判断 |
|
|
41
|
+
|
|
42
|
+
**硬规则**:builder ≠ verifier;verifier 只认命令+输出;`无法判定 ≠ 通过`。
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 3. 确定性门禁(脚本判,不看模型)
|
|
47
|
+
|
|
48
|
+
| 门 | 判据 | 失败 |
|
|
49
|
+
|---|---|---|
|
|
50
|
+
| 有判据 | `judge` 非空且可执行 | 回 planning |
|
|
51
|
+
| 测试 | builder 的测试命令 exit 0 | 回 building |
|
|
52
|
+
| 验证 | `verify.json` 含 `conclusion` 三态 + 证据 + commit | 回 verifying |
|
|
53
|
+
| 对抗 | `redteam.json` 每条有触发/后果/复现/严重度 | 回 redteaming |
|
|
54
|
+
| 自签 | verifier ≠ builder(会话/身份不同) | **拒绝** |
|
|
55
|
+
| 预算 | 轮数 ≤3、token/时长/成本 ≤上限 | `escalated` |
|
|
56
|
+
| 验收 | 以上全过 + packet 完整 | 停在人面前 |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 4. 验收包(人只看这个)
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
runs/<task-id>/
|
|
64
|
+
├── plan.md # 目标、判据、拆解
|
|
65
|
+
├── diff.patch # 变更
|
|
66
|
+
├── test.log # 测试命令与输出
|
|
67
|
+
├── verify.json # 三态结论 + 证据
|
|
68
|
+
├── redteam.json # 反驳清单 + 处置
|
|
69
|
+
└── packet.md # 一页摘要:改了什么、风险、没做什么、结论
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
人只做:`dia team accept <id>` / `reject <id> --reason ...`。
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 5. 失败与升级
|
|
77
|
+
|
|
78
|
+
| 情况 | 行为 |
|
|
79
|
+
|---|---|
|
|
80
|
+
| 验证不通过 | 回 building,带证据修复(≤3 轮) |
|
|
81
|
+
| 同一失败重复 2 次 | 停止,标 `escalated`,附两次证据 |
|
|
82
|
+
| 预算超限 | 停止,附成本/轮数 |
|
|
83
|
+
| 判据不可执行 | 回 planning,要求可执行判据 |
|
|
84
|
+
| 需要政策/权限变更 | 标 `needs-human`,进验收包 |
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 6. 编排实现(不重写运行时)
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
dia team run <task-id>
|
|
92
|
+
├─ TeamDriver:start(role) / prompt(session, text) / collect(session) / close
|
|
93
|
+
├─ 首个驱动:opencode ACP(session/new → mode=role → prompt → 读事件)
|
|
94
|
+
├─ 次驱动:dsh ACP(profile 每角色一个)
|
|
95
|
+
└─ 所有角色产物落 runs/<task-id>/,脚本校验后才进入下一阶段
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
- 角色 = persona(`dabo-planner` / `dabo-builder` / `dabo-verifier` / `dabo-redteam`);
|
|
99
|
+
- **模型**:由对应 `dabo-<role>` profile / 用户配置决定;需要覆盖时 `DIA_DSH_MODEL=provider/model`(也接受 JSON 数组)。
|
|
100
|
+
代码不再写死模型(2026-11-01 移除 `example/*` 硬编码)。
|
|
101
|
+
- **前提**:每个角色要有对应 dsh profile(`dsh --profile dabo-planner` 等)。当前 dabo persona 只渲染 `dabo` 一个
|
|
102
|
+
profile,角色 profile 属 M5(团落地)范围;缺失时 `dsh` 会直接报 profile 不存在。
|
|
103
|
+
- 每个角色独立会话,**不共享上下文**;只传文件产物(plan/diff/report);
|
|
104
|
+
- 编排器不调用模型,只调度与校验。
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 7. 非目标
|
|
109
|
+
|
|
110
|
+
- 不自动合并、不自动发布、不自动外发。
|
|
111
|
+
- 不允许 verifier 与 builder 同会话。
|
|
112
|
+
- 不允许没有判据就进入 acceptance。
|
|
113
|
+
- 不把"模型说通过"当通过。
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 7.1 实现状态(2026-10-28)
|
|
118
|
+
|
|
119
|
+
| 件 | 状态 |
|
|
120
|
+
|---|---|
|
|
121
|
+
| task ledger(add/list/status/done,done 需 judge+evidence) | ✅ |
|
|
122
|
+
| runs 目录 + 验收包六件 | ✅ |
|
|
123
|
+
| 门禁(六件齐全、verify 三态、证据非空、findings 合法) | ✅ |
|
|
124
|
+
| accept / reject | ✅ |
|
|
125
|
+
| `team run --mock` 状态机 | ✅(用于验证门禁) |
|
|
126
|
+
| **ACP 驱动(opencode)** | ✅ 跑通成功/失败路径 |
|
|
127
|
+
| **ACP 驱动(dsh)** | ✅ 每角色独立 profile(`dabo-{role}`),跑通成功路径 |
|
|
128
|
+
| dsh 用量 | ✅ 从 session 日志增量采集(实测 4 次调用 / 34k tokens,含 redteam) |
|
|
129
|
+
| 输出归一化 | ✅ PASS/FAIL/verdict → 三态;redteam issues → findings |
|
|
130
|
+
| H9 角色契约 | ✅ planner/verifier/redteam prompt 写死 JSON 字段与示例 |
|
|
131
|
+
| H10 修复循环 | ✅ 非法 JSON → 带 offset 重试一次;dsh 重试带 repo/judge/diff 上下文;二次失败升级 |
|
|
132
|
+
| 证据闸门 | ✅ 空/占位证据(`(no evidence)`)不可过 gate;planner 解析失败写 packet 并 escalated |
|
|
133
|
+
| 角色 persona(planner/builder/verifier/redteam) | ✅ 已装到 `~/.config/opencode/agents/dabo-*.md` |
|
|
134
|
+
| verifier/redteam 只读 | ✅ agent `edit: deny` + **只读工作副本**(shell 写也打不到原仓库) |
|
|
135
|
+
| 快照脱敏/清理 | ✅ 排除 `.env*`/`.npmrc`/`.git/config`/密钥;结束自动删(`DIA_KEEP_SNAPSHOTS=1` 保留) |
|
|
136
|
+
| 失败修复循环(≤3 轮) | ✅ opencode/dsh 均实测:`judge exit 1` → 4 次尝试 → `escalated`,gate/accept 拒绝 |
|
|
137
|
+
| dsh 角色只读 | ✅ planner/verifier/redteam profile 设 `sandbox-policy: read-only`;实测 `touch` 被拒(exit=1,文件未创建) |
|
|
138
|
+
| 成本/用量记账 | ✅ tokens 落 `runtime/model-calls.jsonl` + 每任务 `usage.json`(金额待价目表) |
|
|
139
|
+
|
|
140
|
+
## 8. 最小落地顺序
|
|
141
|
+
|
|
142
|
+
1. **task ledger + runs 目录**(状态机与产物);
|
|
143
|
+
2. **`dia team run` 骨架**(无模型也能跑状态机,先回放假产物);
|
|
144
|
+
3. **接入一个驱动**(opencode ACP),让 planner/builder 能产出;
|
|
145
|
+
4. **接入 verifier/redteam**,打开自动循环;
|
|
146
|
+
5. **验收包 + accept/reject**。
|
|
147
|
+
|
|
148
|
+
**只读隔离验证(2026-10-28)**:verifier 在 `runs/<id>/verify-ws-0` 副本里跑判据并通过;原仓库只保留 builder 的改动。
|
|
149
|
+
`opencode debug agents` 可见 `edit: * deny` 追加在 agent 规则末尾。
|
|
150
|
+
|
|
151
|
+
**已跑通的样例(2026-10-28)**:
|
|
152
|
+
任务「创建 answer.txt=42」,判据 `grep -qx 42 answer.txt`;
|
|
153
|
+
planner 出计划 → builder 写文件 → verifier 亲自跑判据(通过,4 条证据)→ redteam 看 diff(0 findings)
|
|
154
|
+
→ `team gate` ok → `team accept`。
|
|
155
|
+
产物:`plan.md / builder-0.md / verify.json / test.log / diff.patch / redteam.json / packet.md`。
|
|
156
|
+
|
|
157
|
+
判据:用一个真实小任务跑完整圈,人在 acceptance 只做一次 accept/reject;全程无人工触发 verifier。
|
|
158
|
+
|
|
159
|
+
**自动化回归(2026-11-01,2026-11-04 补 dsh high 修复闭环)**:`tests/team-acp.test.ts` 用假 ACP 服务器(`tests/fixtures/fake-acp.mjs`)跑通
|
|
160
|
+
`team run --acp` 与 `--dsh`:planner → builder → verifier(通过/不通过两条路径)→ redteam → gate / accept,
|
|
161
|
+
**不花模型钱**、结果确定;覆盖 `escalated`(退出码 30)、无判据 `E_TASK`,以及 high → builder 修复 + `redteam-2` 复检
|
|
162
|
+
(清零 → awaiting_acceptance;仍 high 或判据非 0 → escalated,两条驱动路径各三例)。真实模型链路仍需人工跑一次。
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
## 隔离边界(2026-11-04)
|
|
166
|
+
|
|
167
|
+
- verifier / redteam 跑在**系统临时目录的快照**里,路径名不含 `task id`(无法反推 `runs/<id>`)
|
|
168
|
+
- `runs/<id>` 以 `0700` 创建;验收证据(`judge.json`/`run.json`)由 gate 现场重跑判据生成/覆盖
|
|
169
|
+
- **不是沙箱**:同一 OS 用户的进程仍可用绝对路径读写 `~/.local/share/dia`;要真隔离需要宿主级只读沙箱(dsh sandbox / 容器),当前不属于 dia 范围
|
package/docs/team.md
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# 团队章程:谁来做 dia(开发团队)
|
|
2
|
+
|
|
3
|
+
> 日期 2026-10-28。
|
|
4
|
+
> **2026-10-28 升级**:开发团队执行模式改为**全自动循环**(计划→实现→验证→对抗→修复),**人只在验收阶段介入**;
|
|
5
|
+
> 状态机、门禁、验收包见 `docs/team-automation.md`。本文保留角色定义与章程。
|
|
6
|
+
> 先区分两层,别混:
|
|
7
|
+
> - **产品团队**:dabo 的 9 个角色(大波/点子/爪子/炸毛/秤/记性/管家/信箱/磨爪)——是 agent 产品内部的角色。
|
|
8
|
+
> - **开发团队**:做 dia 这个框架的人/agent 分工——本文。
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. 现状(诚实版)
|
|
13
|
+
|
|
14
|
+
| 项 | 现状 |
|
|
15
|
+
|---|---|
|
|
16
|
+
| 固定组员 | **没有**。只有主 agent(我)+ 按需子 agent |
|
|
17
|
+
| 角色是否落地 | 产品 9 角色只在文档里;开发角色没有定义 |
|
|
18
|
+
| 实际分工 | 我同时做架构/实现/验证;研究、红队用一次性子 agent |
|
|
19
|
+
| 最大风险 | **实现者与验证者是同一个人**,自签验收 |
|
|
20
|
+
|
|
21
|
+
**结论**:现在不是"团队",是"一个人 + 临时工"。
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 2. 建议的固定组员(4 个)
|
|
26
|
+
|
|
27
|
+
"固定"不等于常驻进程,而是:**每个里程碑必须经过这个角色,且它有明确的输入/输出契约**。
|
|
28
|
+
|
|
29
|
+
| 角色 | 职责 | 输入 | 输出 | 不许 |
|
|
30
|
+
|---|---|---|---|---|
|
|
31
|
+
| **主控(人)** | 意图、优先级、裁决、批准 | 设计/证据/风险 | 决策、批准/否决 | 替 agent 写代码/做技术判断 |
|
|
32
|
+
| **架构(planner)** | 设计、假设、ADR、拆任务 | 需求/证据 | `docs/*.md`、H 条目、任务拆解 | 写实现、给自己签验收 |
|
|
33
|
+
| **实现(builder)** | 代码、测试、文档同步 | 设计与判据 | diff + 测试输出 | 改判据、自签验收 |
|
|
34
|
+
| **验证(verifier)** | 独立跑判据、三态结论 | diff + 测试 + 判据 | 验证报告(通过/不通过/无法判定) | 改代码、与实现同上下文 |
|
|
35
|
+
| **档案(archivist)** | 证据、依赖、基线、历史 | 验证报告/探针结果 | `deps.jsonl`、`baselines/`、决策记录 | 写无日期无判据的裸事实 |
|
|
36
|
+
|
|
37
|
+
**硬规则**:实现者 ≠ 验证者;验证者不得与实现者共享上下文(独立子 agent,只读 diff + 测试输出)。
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 3. 按需组员(3 个,不进固定编制)
|
|
42
|
+
|
|
43
|
+
| 角色 | 何时启用 | 为什么不做固定 |
|
|
44
|
+
|---|---|---|
|
|
45
|
+
| **红队(redteam)** | 里程碑评审、合并前、安全相关改动 | 成本高,且需要"陌生视角",常驻会钝化 |
|
|
46
|
+
| **研究(researcher)** | 生态/基准/理论取证 | 项目式任务,完成即解散 |
|
|
47
|
+
| **发布(ops)** | 打包、CI、launchd、版本 | 低频,可按阶段启用 |
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 4. 工作流(全自动,人只在验收)
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
人给意图
|
|
55
|
+
→ 架构:设计 + 可证伪判据 + 拆任务(自动)
|
|
56
|
+
→ 实现:代码 + 测试(自动)
|
|
57
|
+
→ 验证:独立角色,只读 diff/测试,出三态(自动)
|
|
58
|
+
→ 红队:反驳清单(自动)
|
|
59
|
+
→ 修复循环(≤3 轮,自动)
|
|
60
|
+
→ 验收包 → 人 accept / reject
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
详见 `docs/team-automation.md`。
|
|
64
|
+
|
|
65
|
+
**门禁**:
|
|
66
|
+
1. 没有判据不开工;
|
|
67
|
+
2. 没有独立验证不合并;
|
|
68
|
+
3. 行为类改动必须人批;
|
|
69
|
+
4. 自签验收 = 违规(记入 `security_debt` 同类)。
|
|
70
|
+
5. 证据缺失(命令 + 输出)= 无法判定。
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 5. 交付物契约(控制上下文成本)
|
|
75
|
+
|
|
76
|
+
| 角色 | 交付物 | 长度上限 |
|
|
77
|
+
|---|---|---|
|
|
78
|
+
| 架构 | 设计文档 / ADR | 1 页/决策 |
|
|
79
|
+
| 实现 | diff + 测试命令与输出 | diff 原样,输出摘要 |
|
|
80
|
+
| 验证 | 三态报告 + 证据 | 半页 |
|
|
81
|
+
| 红队 | 反驳清单 | 每条 4 要素 |
|
|
82
|
+
| 档案 | 登记行 / 基线 JSON | 结构化,不写散文 |
|
|
83
|
+
|
|
84
|
+
**原则**:agent 之间只传**结论 + 证据指针**,不传完整会话(避免上下文膨胀)。
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 6. 指标(团队自身)
|
|
89
|
+
|
|
90
|
+
| 指标 | 目标 |
|
|
91
|
+
|---|---|
|
|
92
|
+
| 自签率(实现者自己签验收) | **0** |
|
|
93
|
+
| 独立验证发现的问题数 / 总问题数 | ≥30% |
|
|
94
|
+
| 返工率(因判据不清导致) | ↓ |
|
|
95
|
+
| 证据缺失的结论数 | 0 |
|
|
96
|
+
| 每位固定角色的上下文成本 | 可估算、可上限 |
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 7. 与"进化过程"的关系
|
|
101
|
+
|
|
102
|
+
- 人机两个引擎:人是主控;电子脑内部再分架构/实现/验证/档案。
|
|
103
|
+
- V 型:人守顶端;遇到障碍(判据不清、价值冲突)由架构/验证上升请示。
|
|
104
|
+
- 团队是**过程的一部分**,不是目的;角色可以增减,但"独立验证"和"人批行为"两条不能省。
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 8. 立即要做的三件事
|
|
109
|
+
|
|
110
|
+
1. **设独立验证**:每个里程碑用独立子 agent 复核(只读 diff + 测试),我先执行。
|
|
111
|
+
2. **定交付物模板**:设计/验证/红队/档案四份,长度上限如上。
|
|
112
|
+
3. **角色产品化(后置)**:等 dia 能渲染 preset 后,把这些角色做成 dsh/opencode 的 agent 定义。
|