@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
@@ -0,0 +1,57 @@
1
+ # 系统全景
2
+
3
+ ## 用一句人话说
4
+
5
+ Athlete 是一个会自己持续推进任务、会拆解复杂工作、会把任务分给不同执行通道、并且能把整个过程记下来的智能体系统。
6
+
7
+ ## 它怎么工作
8
+
9
+ 你可以把它想成三层:
10
+
11
+ ### 1. 主 Agent
12
+
13
+ 这是总指挥。
14
+
15
+ 它负责:
16
+
17
+ - 理解目标
18
+ - 判断任务复杂度
19
+ - 决定是自己做,还是拆给别的执行者
20
+ - 跟踪当前进度、阻塞和合流点
21
+
22
+ ### 2. 控制面
23
+
24
+ 这是账本和现场。
25
+
26
+ 它负责记住:
27
+
28
+ - 现在有哪些任务
29
+ - 谁在做
30
+ - 哪个任务被什么阻塞
31
+ - 哪些后台任务仍在跑
32
+ - 哪些 worktree 仍有效
33
+ - 当前 session、checkpoint、runtime 状态到了哪一步
34
+
35
+ ### 3. 执行与通道
36
+
37
+ 这是手脚和外壳。
38
+
39
+ 它负责:
40
+
41
+ - 读写文件
42
+ - 跑命令
43
+ - 下载文件
44
+ - 调用外部能力
45
+ - 通过 CLI、Telegram、Weixin 和未来其他宿主接收输入、回传结果
46
+
47
+ ## 为什么它不是单兵系统
48
+
49
+ 因为它已经在做这些事:
50
+
51
+ - 让 lead 提前组织任务
52
+ - 让 teammate 和 background 各自承担不同执行方式
53
+ - 让 worktree 隔离并行改动
54
+ - 让宿主共用同一条核心运行主路径
55
+ - 让 skill 和外部能力通过统一扩展口进入系统
56
+
57
+ 这说明 Athlete 的主心骨已经不是“一个人自己拼命干”,而是“一个主 Agent 组织整个工作系统往前跑”。
@@ -0,0 +1,59 @@
1
+ # 项目范围
2
+
3
+ ## 当前已经在范围内
4
+
5
+ ### 耐跑底盘
6
+
7
+ - session 作为任务现场
8
+ - checkpoint 与 continuation
9
+ - 上下文压缩
10
+ - verification / acceptance / closeout
11
+ - runtime stats 和可见 summary
12
+
13
+ ### 总指挥能力
14
+
15
+ - 主 Agent 的任务预处理
16
+ - 任务拆分与最小任务图
17
+ - lead / teammate / background / subagent 路由
18
+ - wait / merge / blocked / ready 的机器语义
19
+
20
+ ### 控制面
21
+
22
+ - SQLite 控制面账本
23
+ - 任务、队友、协议、后台、worktree 的正式真相源
24
+
25
+ ### 扩展与通道
26
+
27
+ - tools
28
+ - skills
29
+ - MCP
30
+ - CLI
31
+ - Telegram 私聊
32
+ - 微信私聊
33
+
34
+ ## 当前明确不在范围内
35
+
36
+ - 面向大众的图形化编排平台
37
+ - 复杂商业化 swarm 市场
38
+ - 跨项目长期人格记忆
39
+ - 为了热闹而默认开一堆 agent 并发
40
+ - 没有控制面约束的自治军团
41
+
42
+ ## 下一阶段优先级
43
+
44
+ 当前阶段优先继续强化这些能力:
45
+
46
+ 1. 主 Agent 的总指挥层
47
+ 2. 复杂任务拆分、派工、等待与合流
48
+ 3. 更清晰的技能扩展口和宿主扩展口
49
+ 4. reviewer / verifier / planner 这类专门角色的演进边界
50
+ 5. 面向更多宿主的统一接入主路径
51
+
52
+ ## 范围判断规则
53
+
54
+ 如果一个新需求同时满足下面两条,就应该往后放:
55
+
56
+ - 会削弱耐跑底盘
57
+ - 不能明显增强总指挥能力、控制面能力或标准扩展口
58
+
59
+ Athlete 当前优先做“更会组织、更会持续推进”,不是“看起来更像万能 AI”。
@@ -1,16 +0,0 @@
1
- # ADR-0001:默认 Agent 模式优先,保留 Read-Only 辅助模式
2
-
3
- ## 背景
4
-
5
- Athlete 起家的核心能力是“在终端里持续把任务做完”,而不是只做分析。
6
-
7
- ## 决策
8
-
9
- 1. 默认心智模型以 `agent` 模式为主。
10
- 2. `read-only` 保留,用于分析、审阅、低风险探索。
11
- 3. 核心规格和扩展方向优先围绕 `agent` 模式设计。
12
-
13
- ## 后果
14
-
15
- - Athlete 保持“能干活”的产品性格
16
- - 同时仍保留安全一些的分析入口
@@ -1,19 +0,0 @@
1
- # ADR-0002:强主 Agent 起步,预留多 Agent 边界
2
-
3
- ## 背景
4
-
5
- Athlete 当前最强的价值来自耐跑主 Agent。
6
-
7
- 同时,复杂任务又确实需要 subagent、teammate、background、worktree。
8
-
9
- ## 决策
10
-
11
- 1. 主 Agent 仍是系统核心。
12
- 2. 多 Agent 是按需能力,不是默认军团模式。
13
- 3. 下一阶段优先补“总指挥层”,不是先做大规模 swarm。
14
-
15
- ## 后果
16
-
17
- - 能保住当前耐跑底盘
18
- - 以后还能继续扩到多 Agent
19
- - 不会过早进入复杂协作失控状态
@@ -1,16 +0,0 @@
1
- # ADR-0003:OpenAI-Compatible 优先
2
-
3
- ## 背景
4
-
5
- Athlete 要做 harness,而不是绑死在某一家 provider 上。
6
-
7
- ## 决策
8
-
9
- 1. 当前 provider 接口优先兼容 OpenAI-compatible。
10
- 2. provider 选择属于配置问题,不属于业务设计问题。
11
- 3. 上层 runtime、tools、orchestrator 不依赖某一家的专属行为。
12
-
13
- ## 后果
14
-
15
- - Athlete 更容易切换模型与服务商
16
- - 后续扩展更稳定
@@ -1,115 +0,0 @@
1
- # 总体架构
2
-
3
- ## 一句话
4
-
5
- Athlete 是一个终端里的智能体运行系统:
6
-
7
- - 一个主循环驱动模型与工具
8
- - 一组落盘状态构成控制面
9
- - 一组工具与 worker 构成执行面
10
- - 一层 orchestrator 负责 lead 的任务组织与派工
11
-
12
- ## 当前主要分层
13
-
14
- ### 1. Runtime Kernel
15
-
16
- 目录:`src/agent/`
17
-
18
- 负责:
19
-
20
- - turn loop
21
- - system prompt 组装
22
- - continuation / compact / recovery
23
- - todo / verification / runtime state
24
- - 最终收口
25
- - 轻量验证信号与 auto-readback
26
-
27
- ### 2. Tool Plane
28
-
29
- 目录:`src/tools/` `src/mcp/`
30
-
31
- 负责:
32
-
33
- - 向模型暴露动作
34
- - 参数解析
35
- - 机器约束检查
36
- - 调用底层能力
37
- - 统一治理 metadata、fail-closed 暴露过滤、routing hint 与 signal 校验
38
-
39
- ### 3. Skill Plane
40
-
41
- 目录:`src/skills/`
42
-
43
- 负责:
44
-
45
- - skill schema
46
- - discovery
47
- - matching
48
- - loading
49
- - workflow gating
50
-
51
- ### 4. Control Plane
52
-
53
- 目录:`src/tasks/` `src/team/` `src/background/` `src/worktrees/`
54
-
55
- 负责:
56
-
57
- - 任务真相源
58
- - 协议真相源
59
- - 队友状态
60
- - 后台作业状态
61
- - worktree 状态
62
-
63
- ### 5. Execution Plane
64
-
65
- 负责真正干活:
66
-
67
- - 文件读写
68
- - shell 命令
69
- - 背景任务
70
- - teammate worker
71
- - worktree 目录
72
- - MCP 浏览器
73
-
74
- ### 6. Orchestrator Layer
75
-
76
- 目录:`src/orchestrator/`
77
-
78
- 负责:
79
-
80
- - 复杂度判断
81
- - 最小任务图落盘
82
- - 从 task / team / background / worktree 真相源派生任务 lifecycle
83
- - self / subagent / teammate / background 路由
84
- - lead slice 开始前的任务组织
85
-
86
- ## 当前最重要的架构边界
87
-
88
- ### 控制面
89
-
90
- 回答:
91
-
92
- - 现在有哪些任务
93
- - 谁该做、谁在做
94
- - 哪些正式协作在 pending
95
- - 哪些后台任务在跑
96
- - 哪些 worktree 仍然有效
97
-
98
- ### 执行面
99
-
100
- 回答:
101
-
102
- - 文件怎么改
103
- - 命令怎么跑
104
- - 浏览器怎么导航
105
- - 某个 worker 具体在执行什么
106
-
107
- ### 关键规则
108
-
109
- 1. 控制面不直接改文件。
110
- 2. 执行面不发明控制面真相。
111
- 3. orchestrator 负责调度,不负责具体文件改写。
112
- 4. tools 提供动作,skills 提供 workflow,二者不互相替代。
113
- 5. 主循环只做调度;closeout、verification signal、workflow gating 这类长期规则要下沉到独立模块。
114
- 6. tool priority、browser-first、document routing、MCP fail-closed 之类策略属于机器层,不属于 prompt 路由表。
115
- 7. task readiness、ownership、handoff legality、worktree binding reality 由机器从既有真相源派生,不靠 prompt 记忆。
@@ -1,120 +0,0 @@
1
- # 状态与真相源
2
-
3
- ## 目标
4
-
5
- Athlete 要跑长任务、协作任务和恢复任务,关键状态不能只放在 prompt 里。
6
-
7
- 必须有落盘真相源。
8
-
9
- ## 当前真相源
10
-
11
- ### TaskStore
12
-
13
- 回答:
14
-
15
- - 有哪些任务
16
- - 哪些任务被阻塞
17
- - 谁被指派
18
- - 谁正在做
19
- - 任务绑定了哪个 worktree
20
- - orchestrator task 的 objective / kind / handoff metadata 是什么
21
-
22
- 状态目录:`.athlete/tasks/`
23
-
24
- ### TeamStore
25
-
26
- 回答:
27
-
28
- - 现在有哪些 teammate
29
- - 各自角色和状态是什么
30
-
31
- 状态文件:`.athlete/team/config.json`
32
-
33
- ### ProtocolRequestStore
34
-
35
- 回答:
36
-
37
- - 哪些正式协作在 pending
38
- - 哪些已经 approved / rejected
39
-
40
- 状态目录:`.athlete/team/requests/`
41
-
42
- ### CoordinationPolicyStore
43
-
44
- 回答:
45
-
46
- - 现在允不允许做 plan decision
47
- - 现在允不允许运行 shutdown request
48
-
49
- 状态文件:`.athlete/team/policy.json`
50
-
51
- ### BackgroundJobStore
52
-
53
- 回答:
54
-
55
- - 哪些后台命令在跑
56
- - 谁发起的
57
- - 是否完成、失败、超时
58
-
59
- ### WorktreeStore
60
-
61
- 回答:
62
-
63
- - 哪些 worktree 存在
64
- - 绑定了哪个任务
65
- - 是否 active / kept / removed
66
-
67
- 状态文件:
68
-
69
- - `.athlete/worktrees/index.json`
70
- - `.athlete/worktrees/events.jsonl`
71
-
72
- ### MessageBus
73
-
74
- 负责:
75
-
76
- - inbox 投递
77
- - 消息审计
78
-
79
- 相关文件:
80
-
81
- - `.athlete/team/inbox/*.jsonl`
82
- - `.athlete/team/messages.jsonl`
83
-
84
- 它不是最终业务真相源,但它是协作事件流和审计层。
85
-
86
- ## 普通消息与正式协议的边界
87
-
88
- ### 普通消息
89
-
90
- 用于:
91
-
92
- - 通知
93
- - 提醒
94
- - 状态更新
95
-
96
- ### 正式协议
97
-
98
- 用于:
99
-
100
- - 会改变协作状态的沟通
101
-
102
- 当前协议类型:
103
-
104
- - `plan_approval`
105
- - `shutdown`
106
-
107
- 正式协议必须:
108
-
109
- - 有 `request_id`
110
- - 有 request / response 对应关系
111
- - 有持久化状态
112
-
113
- ## 当前规则
114
-
115
- 1. 新增状态前,先问是不是已有真相源应扩字段。
116
- 2. 能复用现有真相源,就不要新造平行 JSON 文件。
117
- 3. 任何需要跨 turn、跨 agent 保持一致的信息,都不能只存在 system prompt 里。
118
- 4. 普通消息不能代替正式审批。
119
- 5. task lifecycle 不是单独落盘的新 JSON;它由 `TaskStore` + `TeamStore` + `BackgroundJobStore` + `WorktreeStore` 的现有事实派生。
120
- 6. handoff 缺失或冲突时必须 fail-closed,例如:缺失 teammate、缺失 background job、失效 worktree 绑定。
@@ -1,139 +0,0 @@
1
- # 运行时循环
2
-
3
- ## 当前 loop 在做什么
4
-
5
- 当前主循环负责 5 件事:
6
-
7
- 1. 组装 system prompt
8
- 2. 注入运行时状态
9
- 3. 调模型
10
- 4. 执行工具
11
- 5. 判断继续、yield、暂停、结束
12
-
13
- 当前 lead 路径接法:
14
-
15
- - `runManagedAgentTurn`
16
- - `prepareLeadTurn`
17
- - `runAgentTurn`
18
-
19
- 也就是说:
20
-
21
- - orchestrator 在 lead slice 开始前先做任务组织与派工
22
- - 派工前先从 task / team / background / worktree 真相源派生任务 lifecycle
23
- - `runTurn` 继续专注模型请求、工具执行、continuation、verification、compact
24
- - teammate / subagent loop 不走 lead orchestrator
25
-
26
- 当前 one-shot CLI 也走同一套 machine truth,只是终端外壳不同:
27
-
28
- - `src/cli.ts`
29
- - `src/cli/support.ts`
30
-
31
- one-shot 结束时必须把 terminal transition / verification / acceptance 收敛成稳定 closeout contract 输出。
32
-
33
- 交互式 CLI 退出时还有一条独立规则:
34
-
35
- - 如果当前项目没有运行中的后台进程,`quit` 直接退出
36
- - 如果有运行中的后台进程,必须先列出它们,再由用户二选一:
37
- - kill 全部后台进程并退出
38
- - 取消退出继续运行
39
- - kill 不彻底时必须 fail-closed,不允许带着不可见孤儿进程假装退出成功
40
-
41
- ## 当前最重要的机器规则
42
-
43
- ### 计划规则
44
-
45
- 变更型动作默认要求先 `todo_write`。
46
-
47
- ### 任务编排规则
48
-
49
- lead 编排不再只看 task status 字段,而是看机器派生的 lifecycle:
50
-
51
- - `blocked`
52
- - `ready`
53
- - `active`
54
- - `completed`
55
-
56
- 并同时判断:
57
-
58
- - runnableBy 是 lead / teammate / nobody
59
- - handoff 是否有合法控制面事实支撑
60
- - worktree 绑定是否仍然有效
61
-
62
- 如果 teammate / background / worktree 的事实缺失或冲突,lead 路径会阻断新的派工,而不是继续默许推进。
63
-
64
- ### inbox 规则
65
-
66
- lead 和 teammate 的 inbox 在 turn 开头统一注入。
67
-
68
- ### verification 规则
69
-
70
- 发生文件改动或 mutating shell 后,会进入 verification 状态机。
71
-
72
- verification 不是无限提醒:
73
-
74
- - `pendingPaths` 会随 session 持久化,continuation 后仍然有效
75
- - 显式 build / test / verify 命令会记录为正式 verification attempt
76
- - 对轻量交付物(如 `validation/*.md`、`.txt`)的定向 `read_file` 检查,也会被记录为一次通过的轻量验证
77
- - 如果任务已经结束、输出文件已经存在且属于轻量交付物,finalize 会先尝试 auto-readback,再决定是否 pause 给用户
78
- - acceptance / verification 的跨生态判断统一经过 signal 层,不直接匹配某个 adapter 工具名
79
-
80
- ### 收口规则
81
-
82
- 当主目标已经满足时,runtime 会优先结束,而不是继续补做 task / todo / verification 文书动作。
83
-
84
- - 收口判断不只看模型文本,还看 `changedPaths`、`verificationState`、todo 完成度与本轮是否已有实质工具活动
85
- - 一旦进入“应该收口”的区间,`task_list` / `task_get` / `task_update` 会在工具集里被隐藏
86
- - 当 todo 已全部完成时,`todo_write` 也会在收口阶段从工具集中移除,避免重复 closeout
87
- - 旧 todo 过时但真实工作已完成时,不再把 stale todo 当成 finalize 的硬阻塞
88
-
89
- ### continuation 规则
90
-
91
- 工具步数过多时,不中断任务,而是自动续跑。
92
-
93
- ### runtime transition 规则
94
-
95
- continue / recover / yield / pause / finalize 不再只靠零散布尔值和字符串拼接。
96
-
97
- - runtime 会产出结构化 transition:`action + reason code + detail`
98
- - `checkpoint.flow.lastTransition` 持久化最近一次关键 runtime 决策
99
- - `checkpoint.flow.reason` 只是从结构化 transition 派生的紧凑视图,不再是独立真相源
100
- - continuation / resume / recovery / closeout 都应优先读取这一层机器状态,而不是反推 prompt 文案
101
-
102
- ### compact 规则
103
-
104
- 上下文过长时,自动压缩请求上下文,不直接放弃任务。
105
-
106
- ### 浏览器 workflow 规则
107
-
108
- 在相关 skill 已加载且浏览器工具可用时:
109
-
110
- - 自然语言网页任务优先走 browser capability 工具
111
- - shell 网页抓取只能作为 fallback
112
- - 在导航和 snapshot 之前,shell detour 会被 workflow guard 拦住
113
-
114
- 这里的“浏览器工具”可以由 Playwright MCP 提供,也可以由别的 adapter 提供;上层规则只认 browser capability / browser step。
115
-
116
- ### 文档 workflow 规则
117
-
118
- 当 file introspection 或 tool recovery 指向专用文档能力时:
119
-
120
- - 上层优先走 `document.read` / `spreadsheet.read` capability
121
- - 文档 phase 推进只认 `document_read_completed` signal
122
- - 不把 MinerU 名字继续塞进 acceptance / phase / route-change 主体
123
-
124
- ### 交互等待反馈
125
-
126
- 交互模式下,用户发出输入后、模型真正开始输出前,会显示短暂 spinner。
127
-
128
- 它属于 UI 层,不参与 agent 状态机本身。
129
-
130
- ## 设计要求
131
-
132
- 1. loop 只保留全局调度规则。
133
- 2. 具体模块细节下沉到各自目录。
134
- 3. static system prompt 只承载高层 operating contract,不重复 machine-enforced 的 workflow / verification / closeout 细则。
135
- 4. 新增长期能力时,优先接到 runtime state、tool priority 或 workflow guard,而不是直接堆 prompt。
136
- 5. “应该结束”的判断必须落在机器层,不能只靠 prompt 提醒模型自觉收口。
137
- 6. runtime 的关键转移原因必须可持久化、可测试、可区分,不能只留在 status 文本里。
138
- 7. lead orchestrator 只消费 task lifecycle 这种派生控制面事实,不新增平行 orchestration 真相源。
139
- 8. provider / browser / document 的生态差异可以停留在 adapter 层,但不能上浮成主循环规则。
@@ -1,17 +0,0 @@
1
- # implementation
2
-
3
- 这一组文档只回答一个问题:
4
-
5
- **Athlete 下一阶段应该先做什么。**
6
-
7
- ## 当前优先级
8
-
9
- 1. 保住耐跑底盘
10
- 2. 增加总指挥层
11
- 3. 标准化 skills 扩展口
12
-
13
- ## 不在这一阶段优先级前排的事
14
-
15
- - 大规模自治 swarm
16
- - 跨项目人格记忆
17
- - 过早行业大而全
@@ -1,55 +0,0 @@
1
- # 模块级开发任务单
2
-
3
- ## Phase 1:保底
4
-
5
- ### 目标
6
-
7
- 在不破坏当前耐跑能力的前提下继续演进。
8
-
9
- ### 任务
10
-
11
- 1. 补强 continuation / compact / recovery 相关测试
12
- 2. 把主循环继续瘦身,避免后续总指挥逻辑直接堆进去
13
- 3. 明确当前 control plane 字段与职责
14
-
15
- ## Phase 2:总指挥层
16
-
17
- ### 目标
18
-
19
- 让主 Agent 更会决定“什么时候该用哪一招”。
20
-
21
- ### 任务
22
-
23
- 1. 增加 orchestrator 目录与基础类型
24
- 2. 定义任务拆分、派工、等待、收结果的最小流程
25
- 3. 支持在 lead 层统一选择:
26
- - 自己做
27
- - 派 subagent
28
- - 派 teammate
29
- - 丢 background
30
- 4. 增加 reviewer / verifier / planner 的边界设计
31
-
32
- ## Phase 3:skills 标准化
33
-
34
- ### 目标
35
-
36
- 让 skills 成为稳定扩展口,而不是散装提示词。
37
-
38
- ### 任务
39
-
40
- 1. 定义 skill metadata 规范
41
- 2. 定义 skill 的触发方式与加载方式
42
- 3. 定义 skill 与角色、工具、任务的关系
43
- 4. 补技能加载、缺技能、错技能的测试
44
-
45
- ## Phase 4:再往外扩
46
-
47
- ### 目标
48
-
49
- 从 coding harness 扩到更广的复杂任务。
50
-
51
- ### 任务
52
-
53
- 1. 文档与表格类增强
54
- 2. 浏览器 / 外部系统类能力
55
- 3. 项目内经验沉淀