@jun133/athlete 0.0.5 → 0.0.6

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.
Files changed (91) hide show
  1. package/README.md +151 -98
  2. package/dist/cli.js +24213 -20514
  3. package/dist/cli.js.map +1 -1
  4. package/package.json +3 -1
  5. package/scripts/postinstall-playwright.mjs +10 -10
  6. package/spec/README.md +49 -41
  7. package/spec//346/212/200/346/234/257/345/256/236/347/216/260/README.md +29 -0
  8. package/spec//346/212/200/346/234/257/345/256/236/347/216/260//344/270/273/345/276/252/347/216/257/344/270/216/350/260/203/345/272/246.md +60 -0
  9. package/spec//346/212/200/346/234/257/345/256/236/347/216/260//344/273/223/345/272/223/347/272/246/346/235/237//345/274/200/345/217/221/350/247/204/345/210/231.md +14 -0
  10. package/spec//346/212/200/346/234/257/345/256/236/347/216/260//344/273/223/345/272/223/347/272/246/346/235/237//346/234/254/345/234/260/345/221/275/344/273/244/344/270/216/346/265/201/347/250/213.md +20 -0
  11. package/spec//346/212/200/346/234/257/345/256/236/347/216/260//344/273/223/345/272/223/347/272/246/346/235/237//346/265/213/350/257/225/347/255/226/347/225/245.md +48 -0
  12. package/spec//346/212/200/346/234/257/345/256/236/347/216/260//344/273/243/347/240/201/345/234/260/345/233/276//347/233/256/345/275/225/345/210/260/344/273/243/347/240/201/346/230/240/345/260/204.md +51 -0
  13. package/spec//346/212/200/346/234/257/345/256/236/347/216/260//345/205/263/351/224/256/346/250/241/345/235/227/Telegram/347/247/201/350/201/212.md +31 -0
  14. package/spec//346/212/200/346/234/257/345/256/236/347/216/260//345/205/263/351/224/256/346/250/241/345/235/227//344/272/244/344/272/222/347/273/210/347/253/257.md +26 -0
  15. package/spec//346/212/200/346/234/257/345/256/236/347/216/260//345/205/263/351/224/256/346/250/241/345/235/227//345/221/275/344/273/244/350/241/214/344/272/247/345/223/201/351/235/242.md +27 -0
  16. package/spec//346/212/200/346/234/257/345/256/236/347/216/260//345/205/263/351/224/256/346/250/241/345/235/227//345/244/232/346/231/272/350/203/275/344/275/223/350/260/203/345/272/246.md +79 -0
  17. package/spec//346/212/200/346/234/257/345/256/236/347/216/260//345/205/263/351/224/256/346/250/241/345/235/227//345/256/277/344/270/273/350/277/220/350/241/214/350/276/271/347/225/214.md +74 -0
  18. package/spec//346/212/200/346/234/257/345/256/236/347/216/260//345/205/263/351/224/256/346/250/241/345/235/227//345/267/245/344/275/234/345/214/272/344/270/216/345/271/266/350/241/214/351/232/224/347/246/273.md +55 -0
  19. package/spec//346/212/200/346/234/257/345/256/236/347/216/260//345/205/263/351/224/256/346/250/241/345/235/227//345/276/256/344/277/241/347/247/201/350/201/212.md +33 -0
  20. package/spec//346/212/200/346/234/257/345/256/236/347/216/260//345/205/263/351/224/256/346/250/241/345/235/227//346/211/251/345/261/225/346/234/272/345/210/266.md +179 -0
  21. package/spec//346/212/200/346/234/257/345/256/236/347/216/260//345/205/263/351/224/256/346/250/241/345/235/227//346/216/247/345/210/266/351/235/242/350/264/246/346/234/254.md +32 -0
  22. package/spec//346/212/200/346/234/257/345/256/236/347/216/260//345/205/263/351/224/256/346/250/241/345/235/227//351/205/215/347/275/256/347/263/273/347/273/237.md +31 -0
  23. package/spec//346/212/200/346/234/257/345/256/236/347/216/260//346/200/273/344/275/223/346/236/266/346/236/204.md +115 -0
  24. package/spec//346/212/200/346/234/257/345/256/236/347/216/260//347/212/266/346/200/201/344/270/216/347/234/237/347/233/270/346/272/220.md +129 -0
  25. package/spec//347/224/250/346/210/267/345/256/241/351/230/205/README.md +27 -0
  26. package/spec//347/224/250/346/210/267/345/256/241/351/230/205//344/272/247/345/223/201/345/256/232/344/275/215.md +78 -0
  27. package/spec/{principles/P06- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/06-}/344/270/212/344/270/213/346/226/207/350/246/201/350/203/275/345/216/213/347/274/251.md +5 -5
  28. package/spec/{principles/P08- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/08-}/346/205/242/346/223/215/344/275/234/346/224/276/345/220/216/345/217/260.md +1 -1
  29. package/spec/{principles/P13-session → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/13-session}/346/230/257/344/273/273/345/212/241/347/216/260/345/234/272.md +5 -5
  30. package/spec/{principles/P15-provider → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/15-provider}/345/277/205/351/241/273/345/217/257/346/233/277/346/215/242.md +12 -12
  31. package/spec//347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/17-/346/211/251/345/261/225/351/235/240/344/272/213/344/273/266/347/224/237/351/225/277.md +71 -0
  32. package/spec/{principles/P18- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/18-}/344/270/273/345/276/252/347/216/257/345/222/214/346/226/207/344/273/266/351/203/275/344/270/215/350/203/275/351/225/277/350/203/226.md +37 -37
  33. package/spec/{principles/P20- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/20-}/345/244/226/351/203/250/344/272/213/345/256/236/345/277/205/351/241/273/347/273/221/345/256/232/350/257/201/346/215/256.md +48 -48
  34. package/spec/{principles/P21- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/21-}/346/262/241/351/252/214/350/277/207/345/260/261/344/270/215/350/203/275/346/224/266/345/217/243.md +46 -46
  35. package/spec/{principles/P22- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/22-}/351/230/266/346/256/265/346/216/250/350/277/233/345/277/205/351/241/273/346/234/211/346/234/272/345/231/250/347/212/266/346/200/201.md +40 -40
  36. package/spec/{principles/P23- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/23-}/346/226/207/346/234/254/351/223/276/350/267/257/345/277/205/351/241/273/347/250/263/345/256/232/345/217/257/350/257/273.md +38 -38
  37. package/spec/{principles/P24- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/24-}/351/224/231/350/257/257/345/205/274/345/256/271/344/270/215/350/203/275/351/253/230/344/272/216/346/255/243/347/241/256/346/200/247.md +38 -37
  38. package/spec//347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/25-/346/226/260/351/241/271/347/233/256/344/270/215/344/270/272/346/227/247/346/256/213/344/275/231/344/277/235/346/264/273.md +66 -0
  39. package/spec//347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/README.md +37 -0
  40. package/spec//347/224/250/346/210/267/345/256/241/351/230/205//347/263/273/347/273/237/345/205/250/346/231/257.md +57 -0
  41. package/spec//347/224/250/346/210/267/345/256/241/351/230/205//351/241/271/347/233/256/350/214/203/345/233/264.md +59 -0
  42. package/spec/adr/ADR-0001-/345/215/225/346/250/241/345/274/217/345/205/250/346/235/203/351/231/220.md +0 -16
  43. package/spec/adr/ADR-0002-/345/215/225agent/350/265/267/346/255/245/345/271/266/351/242/204/347/225/231/345/244/232agent/350/276/271/347/225/214.md +0 -19
  44. package/spec/adr/ADR-0003-openai-compatible/344/274/230/345/205/210.md +0 -16
  45. package/spec/architecture//346/200/273/344/275/223/346/236/266/346/236/204.md +0 -115
  46. package/spec/architecture//347/212/266/346/200/201/344/270/216/347/234/237/347/233/270/346/272/220.md +0 -120
  47. package/spec/architecture//350/277/220/350/241/214/346/227/266/345/276/252/347/216/257.md +0 -139
  48. package/spec/implementation/README.md +0 -17
  49. package/spec/implementation//346/250/241/345/235/227/347/272/247/345/274/200/345/217/221/344/273/273/345/212/241/345/215/225.md +0 -55
  50. package/spec/implementation//347/233/256/345/275/225/347/273/223/346/236/204/345/210/260/344/273/243/347/240/201/346/226/207/344/273/266/346/230/240/345/260/204/350/241/250.md +0 -176
  51. package/spec/interfaces/InteractionShell.md +0 -93
  52. package/spec/interfaces/ProviderAdapter.md +0 -23
  53. package/spec/interfaces/README.md +0 -17
  54. package/spec/interfaces/RuntimeLoop.md +0 -28
  55. package/spec/interfaces/SessionStore.md +0 -22
  56. package/spec/interfaces/ToolRegistry.md +0 -21
  57. package/spec/modules/config-system.md +0 -77
  58. package/spec/modules/interactive-terminal.md +0 -139
  59. package/spec/modules/lightweight-context-runtime.md +0 -80
  60. package/spec/modules/provider-adapter.md +0 -45
  61. package/spec/modules/runtime-metrics.md +0 -162
  62. package/spec/modules/runtime-rules.md +0 -65
  63. package/spec/modules/session-resume-compact.md +0 -55
  64. package/spec/modules/task-state.md +0 -41
  65. package/spec/modules/telegram-private-chat.md +0 -291
  66. package/spec/modules/tool-registry.md +0 -137
  67. package/spec/modules/weixin-private-chat.md +0 -291
  68. package/spec/modules/workspace-isolation.md +0 -24
  69. package/spec/modules//346/211/251/345/261/225/346/234/272/345/210/266.md +0 -141
  70. package/spec/overview/v0/350/214/203/345/233/264.md +0 -55
  71. package/spec/overview//344/272/247/345/223/201/345/256/232/344/271/211.md +0 -61
  72. package/spec/principles/P17-/346/211/251/345/261/225/351/235/240/344/272/213/344/273/266/347/224/237/351/225/277.md +0 -32
  73. package/spec/principles/README.md +0 -47
  74. package/spec/repo//345/274/200/345/217/221/350/247/204/345/210/231.md +0 -39
  75. package/spec/repo//346/234/254/345/234/260/345/221/275/344/273/244/344/270/216/346/265/201/347/250/213.md +0 -32
  76. package/spec/testing/fail-first-/347/254/254/344/270/200/346/211/271/346/265/213/350/257/225/345/210/227/350/241/250.md +0 -11
  77. package/spec/testing/fixtures-/350/247/204/350/214/203.md +0 -20
  78. package/spec/testing//346/265/213/350/257/225/347/255/226/347/225/245.md +0 -108
  79. /package/spec/{principles/P01- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/01-}/344/270/200/344/270/252/345/276/252/347/216/257/344/270/200/344/270/252/346/231/272/350/203/275/344/275/223.md" +0 -0
  80. /package/spec/{principles/P02- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/02-}/345/212/240/344/270/200/344/270/252/345/267/245/345/205/267/345/217/252/345/212/240/344/270/200/344/270/252/345/244/204/347/220/206/345/231/250.md" +0 -0
  81. /package/spec/{principles/P03- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/03-}/345/205/210/350/256/241/345/210/222/345/206/215/345/212/250/346/211/213.md" +0 -0
  82. /package/spec/{principles/P04- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/04-}/345/244/247/344/273/273/345/212/241/346/213/206/347/273/231/345/255/220/346/231/272/350/203/275/344/275/223.md" +0 -0
  83. /package/spec/{principles/P05- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/05-}/347/237/245/350/257/206/346/214/211/351/234/200/345/212/240/350/275/275.md" +0 -0
  84. /package/spec/{principles/P07- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/07-}/344/273/273/345/212/241/345/233/276/350/246/201/350/220/275/347/233/230.md" +0 -0
  85. /package/spec/{principles/P09- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/09-}/344/273/273/345/212/241/345/244/252/345/244/247/345/260/261/345/210/206/347/273/231/351/230/237/345/217/213.md" +0 -0
  86. /package/spec/{principles/P10- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/10-}/351/230/237/345/217/213/344/271/213/351/227/264/350/246/201/346/234/211/347/273/237/344/270/200/345/215/217/350/256/256.md" +0 -0
  87. /package/spec/{principles/P11- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/11-}/351/230/237/345/217/213/350/207/252/345/267/261/350/256/244/351/242/206/344/273/273/345/212/241.md" +0 -0
  88. /package/spec/{principles/P12- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/12-}/345/267/245/344/275/234/345/214/272/345/222/214/344/273/273/345/212/241/350/246/201/351/232/224/347/246/273.md" +0 -0
  89. /package/spec/{principles/P14- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/14-}/346/211/247/350/241/214/347/272/246/346/235/237/344/270/215/346/230/257/345/256/211/345/205/250/347/255/226/347/225/245.md" +0 -0
  90. /package/spec/{principles/P16- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/16-}/351/205/215/347/275/256/345/217/252/350/203/275/346/234/211/344/270/200/344/270/252/345/205/245/345/217/243.md" +0 -0
  91. /package/spec/{principles/P19- → /347/224/250/346/210/267/345/256/241/351/230/205//345/256/252/346/263/225/345/216/237/345/210/231/19-}/345/205/210/345/206/231/345/244/261/350/264/245/346/265/213/350/257/225/345/206/215/345/206/231/345/256/236/347/216/260.md" +0 -0
@@ -1,32 +0,0 @@
1
- # P17 扩展靠事件生长
2
-
3
- ## 原则
4
-
5
- 扩展不能只靠往 system prompt 里继续堆规则,应该沿着清晰的扩展点生长。
6
-
7
- ## 为什么
8
-
9
- Athlete 未来一定会长:
10
-
11
- - skills
12
- - 更多工具
13
- - 更多角色
14
- - 更多运行时通知
15
-
16
- 如果没有扩展点,主循环和工具层都会越来越胖。
17
-
18
- ## 在 Athlete 里的含义
19
-
20
- 当前扩展入口主要有三种:
21
-
22
- - tool registry
23
- - skills
24
- - MCP
25
-
26
- 下一阶段要补的是更明确的 runtime / lifecycle 事件点。
27
-
28
- ## 当前对应
29
-
30
- - `src/tools/runtimeRegistry.ts`
31
- - `src/skills/catalog.ts`
32
- - `src/mcp/`
@@ -1,47 +0,0 @@
1
- # 宪法原则
2
-
3
- 这一组文档是 Athlete 当前唯一有效的架构原则集合。
4
-
5
- 它们直接服务于实现、重构、删旧和长期维护。
6
-
7
- ## 当前原则体系
8
-
9
- ### 核心 12 条
10
-
11
- - `P01-一个循环一个智能体.md`
12
- - `P02-加一个工具只加一个处理器.md`
13
- - `P03-先计划再动手.md`
14
- - `P04-大任务拆给子智能体.md`
15
- - `P05-知识按需加载.md`
16
- - `P06-上下文要能压缩.md`
17
- - `P07-任务图要落盘.md`
18
- - `P08-慢操作放后台.md`
19
- - `P09-任务太大就分给队友.md`
20
- - `P10-队友之间要有统一协议.md`
21
- - `P11-队友自己认领任务.md`
22
- - `P12-工作区和任务要隔离.md`
23
-
24
- ### 当前工程铁律
25
-
26
- - `P13-session是任务现场.md`
27
- - `P14-执行约束不是安全策略.md`
28
- - `P15-provider必须可替换.md`
29
- - `P16-配置只能有一个入口.md`
30
- - `P17-扩展靠事件生长.md`
31
- - `P18-主循环和文件都不能长胖.md`
32
- - `P19-先写失败测试再写实现.md`
33
- - `P20-外部事实必须绑定证据.md`
34
- - `P21-没验过就不能收口.md`
35
- - `P22-阶段推进必须有机器状态.md`
36
- - `P23-文本链路必须稳定可读.md`
37
- - `P24-错误兼容不能高于正确性.md`
38
-
39
- ## 使用规则
40
-
41
- 1. 新原则必须长期有效,且跨多个模块成立。
42
- 2. 临时实现细节不要升格成原则。
43
- 3. 若与当前实现冲突,应优先修正文档或实现,不能长期并存。
44
- 4. 若只是模块约束,优先写到 `modules/`、`implementation/` 或 `adr/`。
45
- 5. Athlete 仍处于高频重构阶段;错误旧逻辑、错误旧测试、错误旧兼容如果阻碍主干修复,应删除或重写,不为错误行为保活。
46
- 6. 本项目当前优先级是“正确、稳定、可维护”,不是“尽量少改旧代码”。
47
- 7. 若任务存在显式 acceptance / closeout 契约,该契约也是机器真相源的一部分;缺文件、缺证据、缺验证都不能收口。
@@ -1,39 +0,0 @@
1
- # 开发规则
2
-
3
- ## 总则
4
-
5
- Athlete 是 harness 工程,不是一次性脚本。
6
-
7
- 所有改动优先保护:
8
-
9
- 1. 耐跑底盘
10
- 2. 控制面真相
11
- 3. 扩展边界
12
-
13
- ## 文件规则
14
-
15
- 1. 单文件默认不超过 300 行。
16
- 2. 超过 300 行时必须检查是不是耦合过多。
17
- 3. 能拆目录就拆目录,能拆文件就拆文件。
18
- 4. 一个文件只做一件主要事情。
19
- 5. 一个模块尽量只保留一个主要变更理由。
20
-
21
- ## 架构规则
22
-
23
- 1. 控制面判断不偷塞进工具细节。
24
- 2. 工具只通过注册表接入。
25
- 3. 新状态优先进入现有真相源,不先新建平行 JSON。
26
- 4. skills 负责知识与流程,不替代工具动作。
27
- 5. 总指挥层负责调度,不负责具体文件改写。
28
-
29
- ## 文档规则
30
-
31
- 1. SPEC 写当前真实能力与未来方向,但两者必须分开。
32
- 2. docs 偏解释和维护,spec 偏约束和边界。
33
- 3. ADR 只记录关键决定,不拿来写宣传。
34
-
35
- ## 测试规则
36
-
37
- 1. 关键骨架改动先补失败测试。
38
- 2. 修过的真实 bug 尽量固化成回归测试。
39
- 3. 不为了覆盖率堆低价值测试。
@@ -1,32 +0,0 @@
1
- # 本地命令与流程
2
-
3
- ## 常用命令
4
-
5
- ```powershell
6
- npm install
7
- npm run build
8
- npm run typecheck
9
- npm test
10
- npm run dev
11
- ```
12
-
13
- ## 推荐开发流程
14
-
15
- 1. 先确认改动落在哪一层
16
- 2. 先补或设计测试
17
- 3. 再改实现
18
- 4. 运行 `npm test`
19
- 5. 最后更新 SPEC / docs
20
-
21
- ## 写 SPEC 的流程
22
-
23
- 1. 先写当前真实能力
24
- 2. 再写未来方向
25
- 3. 检查有没有把两者混在一起
26
- 4. 检查单文件是否过胖
27
-
28
- ## 写代码的流程
29
-
30
- 1. 先找真相源
31
- 2. 再找工具入口
32
- 3. 最后再看 UI 是否要同步
@@ -1,11 +0,0 @@
1
- # fail-first 第一批测试列表
2
-
3
- ## 先补的测试
4
-
5
- 1. 总指挥层不会破坏现有 continuation
6
- 2. 总指挥层不会绕过 task board 真相源
7
- 3. lead 能在 subagent / teammate / background 之间做正确分流
8
- 4. skills 元数据缺失时有明确失败结果
9
- 5. skill 加载后能被后续 turn 正确识别
10
- 6. reviewer / verifier 角色不会越权修改任务分配
11
- 7. 单文件拆分后 registry 与 runtime 行为不变
@@ -1,20 +0,0 @@
1
- # fixture 规范
2
-
3
- ## 原则
4
-
5
- fixture 只保留能说明问题的最小状态。
6
-
7
- ## 推荐 fixture 类型
8
-
9
- - task board 样例
10
- - protocol request 样例
11
- - team inbox 样例
12
- - worktree index 样例
13
- - compact / resume session 样例
14
- - skill metadata 样例
15
-
16
- ## 规则
17
-
18
- 1. 一个 fixture 只服务一个测试主题。
19
- 2. 不把大量无关状态塞进同一个 fixture。
20
- 3. 真实 bug 的 fixture 优先长期保留。
@@ -1,108 +0,0 @@
1
- # 测试策略
2
-
3
- ## 目标
4
-
5
- 测试优先保护 Athlete 的骨架,
6
- 不是为了表面覆盖率。
7
-
8
- ## 当前重点
9
-
10
- - 主循环没坏
11
- - context / continuation / recovery 没坏
12
- - lightweight context externalization 没坏
13
- - checkpoint / reload / resume 没坏
14
- - runtime stats / runtime summary 没坏
15
- - task / background 没坏
16
- - team / protocol / policy 没坏
17
- - worktree isolation 没坏
18
- - skill catalog 与 skill loading 没坏
19
- - Playwright MCP 接线、优先级与 artifact 路由没坏
20
- - provider capability / fallback / reasoning 行为没坏
21
- - browser capability workflow guard / priority 没坏
22
- - document capability / acceptance signal 没坏
23
- - one-shot closeout contract 没坏
24
- - interactive quit guard 不会漏掉运行中的后台进程
25
- - post-completion closeout 不会退回无意义循环
26
-
27
- ## 当前测试类型
28
-
29
- ### 1. 骨架测试
30
-
31
- 保护架构约束,不让主骨架被改坏。
32
-
33
- ### 2. 缺陷回归测试
34
-
35
- 真实 bug 修掉后,把 bug 固化成测试。
36
-
37
- ### 3. 结构预算测试
38
-
39
- 保护主循环和关键控制面文件不继续长胖。
40
-
41
- ## 当前已覆盖的重点
42
-
43
- - runtime registry / tool visibility
44
- - skill metadata / discovery / loading / gating
45
- - continuation / compact / recovery
46
- - lightweight context externalization
47
- - checkpoint 持久化 / reload / resume
48
- - runtime metrics 持久化 / reload / summary
49
- - finalize / closeout gating
50
- - lightweight verification signals
51
- - unified acceptance signals
52
- - orchestrator routing / dispatch
53
- - protocol / policy / task board truth source
54
- - Playwright 默认值与 artifact 路由
55
- - browser capability-first tool priority
56
- - shell detour workflow guard
57
- - provider capability profile
58
- - document-read capability routing / phase advance
59
- - one-shot CLI terminal closeout
60
- - interactive quit kill-or-continue confirmation
61
- - post-completion todo/task loop prevention
62
-
63
- ## 命令
64
-
65
- 默认本地测试:
66
-
67
- ```powershell
68
- npm test
69
- ```
70
-
71
- 只做测试编译:
72
-
73
- ```powershell
74
- npm run test:build
75
- ```
76
-
77
- 核心测试集:
78
-
79
- ```powershell
80
- npm run test:core
81
- ```
82
-
83
- 真实 API 验证(不进入默认 `npm test`):
84
-
85
- ```powershell
86
- npm run verify:runtime-context-api
87
- npm run verify:runtime-checkpoint-api
88
- npm run verify:runtime-observability-api
89
- ```
90
-
91
- ## 当前原则
92
-
93
- 1. 骨架测试优先。
94
- 2. 回归测试优先。
95
- 3. 默认测试不要强依赖不稳定外部 API。
96
- 4. 真实 API / 真实浏览器验证可以做,但不要强塞进默认 `npm test`。
97
- 5. runtime observability 这类能力必须同时覆盖:
98
- - 结构化持久化
99
- - reload 后一致性
100
- - 用户可读 summary
101
- - 真实 API 验证
102
- 6. 生态去耦类测试要优先保护“上层不认生态字符串,只认 capability / signal / transition”。
103
-
104
- ## 不建议的做法
105
-
106
- - 为了数量堆很多低价值小测试
107
- - 把不稳定的真实 API 测试塞进默认 `npm test`
108
- - 只测 prompt 文案,不测底层机器状态