Merge Documents main into account durability plan branch
Why: keep r2/r3 proposal updates rebase-friendly before PR. Evidence: origin/main at fetch time. Impact: Documents feature tip includes latest main. Refs: feature/svc-account-durability-plan
This commit is contained in:
@@ -8,10 +8,10 @@ product_contract_source: ce-plan-bootstrap
|
||||
|
||||
# 多人协作存储与分布式演进方案 - Plan
|
||||
|
||||
修订:r2;确认状态:**已批准(2026-10-11 用户指示「按方案开始改造」)**;推进状态:U1–U7 **代码与测试已合入**(Backend [#164](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Backend/pulls/164);Dev [#410](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/410)/[#439](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/439)/[#442](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/442);闭卡 [#424](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/424) 等)。正确性矩阵 A1–A7 与 B1 冒烟已绿(CI/SELF);容量合同 B2/B3/B5 contract 与 C2 正式双实例负载 **测量中/待回填**;双主机 C3、运维演练 C4/C5 未做。**不承诺容量数字,不放行第二实例承接写请求**,直至检查单对应项有可复核证据。
|
||||
修订:r2.1;确认状态:**已批准(2026-10-11 用户指示「按方案开始改造」)**;推进状态:U1–U7 **代码与测试已合入**(Backend [#164](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Backend/pulls/164);Dev [#410](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/410)/[#439](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/439)/[#442](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/442);闭卡 [#424](https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/424) 等)。正确性 A1–A7 与 B1 已绿(CI/SELF)。容量合同 B2/B3/B5 contract 与双实例 C2 **本机 SELF 窗口已跑通**(见[容量报告](../records/2026-10-12-u7-capacity-window-report.md));**SELF≠GATE/REPLAY**,双主机 C3、运维演练 C4/C5 未做——**仍不放行第二实例承接写请求**。
|
||||
需求来源:2026-10-11 用户要求完善 SQLite、PostgreSQL/pgvector、Redis 分工;随后确认“10–100 人,多人多项目多会话并行,未来支持多服务分布式”。
|
||||
需求负责人:weichen;方案编制:Codex;实施及运维负责人:待指定。更新时间:2026-10-12(Asia/Shanghai)。
|
||||
关联任务:方案卡已归档 `.task/archive/feature-collaboration-storage-plan.md`;U1–U7 实施卡均已归档;当前收尾与容量窗口见 Dev `.task/feature-u7-capacity-wrap-measure.md`。放行检查单:Dev `docs/release-multi-instance.md`。
|
||||
关联任务:方案与 U1–U7 实施卡已归档;容量收尾见 Dev `.task/feature-u7-capacity-wrap-measure.md`。放行检查单:Dev `docs/release-multi-instance.md`。
|
||||
正文中的源码路径以 Agent-System-Dev 为根;工作包中的 `internal/` 简写指 `modules/backend/internal/`;文内相对链接以本文为根。
|
||||
|
||||
## 1. 推荐结论与边界
|
||||
@@ -246,8 +246,8 @@ SQLite 本身支持可靠事务与多人经同一应用访问;WAL 提升读写
|
||||
|
||||
必需观测:API P95/P99与预期/非预期错误,DB pool wait/连接数/慢查询/锁等待,队列长度/最老年龄,run 租约/过期写拒绝/未知副作用,SSE cursor lag/补查次数,Redis 错误与降级,检索耗时/召回抽样,备份时间与恢复结果。日志只记录 request/run/owner 的安全标识,不记录 DSN、密钥或文档正文。
|
||||
|
||||
r1 为方案与 SELF 调查记录。r2 起:U1–U7 代码与测试已合入且正确性 CI 绿;容量阈值的正式测量、双主机部署目标、灾难恢复运维演练仍待窗口证据。本地 SELF 压测不能冒充 GATE/REPLAY 放行。部署与第二实例写流量仍未授权。
|
||||
r1 为方案与 SELF 调查记录。r2 起:U1–U7 代码与测试已合入且正确性 CI 绿。r2.1:本机双实例 contract 容量窗口(ladder / 60m / 2h)SELF 全过,见[容量报告](../records/2026-10-12-u7-capacity-window-report.md)。本地 SELF 不能冒充 GATE/REPLAY 放行;双主机与运维演练仍缺。部署与第二实例写流量仍未授权。
|
||||
|
||||
方案静态审阅及修订处置见[审阅记录](../records/2026-10-11-collaboration-storage-plan-review.md)。进程级黑盒相对库级 Manager 测试的漏检教训见[经验条目](../records/2026-10-12-lesson-http-multi-instance-vs-manager-tests.md)。Agent 审阅不替代人工批准或实现验收。
|
||||
|
||||
首选下一增量是 **完成本机容量测量窗口并回填检查单**(`--seed contract` + 双实例 `ladder` / `sustained60m` / `sustained2h`,入口 `tests/load/collaboration/`;结果写入 Dev `docs/release-multi-instance.md` 与本仓容量报告)。其后候选项:**C3 双主机验证**(需用户指定第二主机)或 **C4/C5 运维演练**(PG/Redis 断连恢复与备份恢复)。不要在容量与双进程负载未过前开放第二实例写。各实现任务启动前复核在途 PR 与依赖 SHA,再按 Dev 的 evidence/task-sync/组合验证流程交付。
|
||||
首选下一增量是 **独立 REPLAY 最小容量集**(至少 `run_load.sh --seed contract --profile ladder --instances 2`)以提升放行证据等级;或其候选项:**C3 双主机验证**(需用户指定第二主机)或 **C4/C5 运维演练**。在 GATE/REPLAY 与 C3 未齐前,不要开放第二实例写。各实现任务启动前复核在途 PR 与依赖 SHA,再按 Dev 的 evidence/task-sync/组合验证流程交付。
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
# U7 容量测量窗口报告(SELF,2026-10-12)
|
||||
|
||||
来源标注:**SELF**(本机隔离栈执行;非 CI GATE、非独立 REPLAY)。不得单独据此放行第二实例写流量或双主机部署。
|
||||
|
||||
## 1. 环境与被测对象
|
||||
|
||||
| 项 | 值 |
|
||||
|---|---|
|
||||
| 主机 | Linux,32 逻辑 CPU,122 GiB RAM(约 98 GiB available),磁盘 1.9T/余 1.1T |
|
||||
| k6 | v2.3.0(Homebrew 固定位 `/home/linuxbrew/.linuxbrew/bin/k6`) |
|
||||
| 拓扑 | 双 `serve` 进程共享隔离 PG(`u7load`),`--tier team --auth on --mock --disable-exec-tools` |
|
||||
| Dev HEAD(任务分支测量时) | `b6f78b503ee2e3d6f71663d5330a18adbe743239`(ladder/s60 证据点;s2h 同工作区续跑) |
|
||||
| Backend gitlink | `5e8ada727c358438f8ff9f94eabb697e99fe28dc` |
|
||||
| Documents gitlink(测量时) | `8d0810bd35f4934e0ad37fb96d7bab6d7a732473` |
|
||||
| 入口 | Dev `tests/load/collaboration/run_load.sh --seed contract --instances 2` |
|
||||
|
||||
## 2. 数据集(B5 contract)
|
||||
|
||||
每段窗口独立灌库(编排脚本每次 `DROP/CREATE u7load_app`,无法跨次复用):
|
||||
|
||||
| profile | results 目录 | messages | knowledge | seed 耗时 |
|
||||
|---|---|---|---|---|
|
||||
| ladder | `tests/load/collaboration/results/20261012-064730/` | 1 000 000 | 100 000 | ≈12.0 s |
|
||||
| sustained60m | `…/20261012-070510/` | 1 000 000 | 100 000 | ≈14.5 s |
|
||||
| sustained2h | `…/20261012-081025/` | 1 000 000 | 100 000 | ≈11.2 s |
|
||||
|
||||
拓扑:10 seed 用户 × 5 项目 × 10 会话;约 10% knowledge `owner=''`(共享基座);**未**写入 `knowledge_vectors`。
|
||||
|
||||
## 3. 负载结果(阈值:读 P95≤300ms、P99≤1s、失败率≤0.1%;SSE P95≤1s;dup_seq=0)
|
||||
|
||||
| profile | 读 P95 | 读 P99 | fail_rate | checks | expected_contention | SSE A p95 | SSE B p95 | dup_seq | orphan runs |
|
||||
|---|---|---|---|---|---|---|---|---|---|
|
||||
| ladder(10→30→100,~12m) | 15.5 ms | 44.3 ms | 0 | 134922/0 | 549 | 17.5 ms | 33.0 ms | 0 | 0 |
|
||||
| sustained60m(~60m @30 VU) | 3.9 ms | 6.5 ms | 0 | 504399/0 | 69 | 5.7 ms | 4.4 ms | 0 | 0 |
|
||||
| sustained2h(~2h @30 VU) | 6.2 ms | 13.5 ms | 0 | 1008771/0 | 477 | 3.9 ms | 4.2 ms | 0 | 0 |
|
||||
|
||||
命令(每段):
|
||||
|
||||
```bash
|
||||
tests/load/collaboration/run_load.sh --seed contract --profile <ladder|sustained60m|sustained2h> --instances 2
|
||||
```
|
||||
|
||||
原始产物(gitignore,留在任务 worktree `results/<ts>/`):`k6-summary.json`、`sse-probe-a.json` / `-b.json`、`seed-manifest.json`、`invariants.txt`。任务卡经 `make evidence` 写入阈值复核脚本输出(SELF)。
|
||||
|
||||
## 4. 结论与边界
|
||||
|
||||
- **容量合同(B2/B3/B5/B4/C2)本机 SELF 全过**:阈值与不变量满足建议合同;数字绑定上表 SHA 与 results 目录。
|
||||
- **仍不放行第二实例写**:检查单要求 CI GATE 或独立 REPLAY 才用于放行;本报告仅为 SELF。C3 双主机、C4/C5 运维演练、B6 pgbench 未做。
|
||||
- **不承诺跨机/生产容量**:mock 模型、同机双进程、NVMe/本机 PG;换硬件或真实模型须重测。
|
||||
|
||||
## 5. 建议下一步
|
||||
|
||||
1. 独立审阅者 REPLAY 最小集(至少 `ladder --seed contract --instances 2`)后,方可讨论双进程写放行。
|
||||
2. 用户指定第二主机后跑 C3。
|
||||
3. 排期 C4/C5 运维演练;可选 B6 pgbench 只读基线。
|
||||
Reference in New Issue
Block a user