@jun133/athlete 0.0.4 → 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 (92) hide show
  1. package/README.md +149 -91
  2. package/dist/cli.js +26562 -19473
  3. package/dist/cli.js.map +1 -1
  4. package/package.json +6 -1
  5. package/scripts/postinstall-playwright.mjs +1 -1
  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 +2 -2
  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 +3 -3
  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 +3 -1
  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//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 -0
  33. 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/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 -0
  34. 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/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 -0
  35. 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/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 -0
  36. 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/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 -0
  37. 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/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 -0
  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 -111
  46. package/spec/architecture//347/212/266/346/200/201/344/270/216/347/234/237/347/233/270/346/272/220.md +0 -117
  47. package/spec/architecture//350/277/220/350/241/214/346/227/266/345/276/252/347/216/257.md +0 -82
  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 -101
  51. package/spec/interfaces/InteractionShell.md +0 -85
  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 -51
  58. package/spec/modules/interactive-terminal.md +0 -112
  59. package/spec/modules/lightweight-context-runtime.md +0 -63
  60. package/spec/modules/provider-adapter.md +0 -20
  61. package/spec/modules/runtime-metrics.md +0 -132
  62. package/spec/modules/runtime-rules.md +0 -33
  63. package/spec/modules/session-resume-compact.md +0 -49
  64. package/spec/modules/task-state.md +0 -34
  65. package/spec/modules/telegram-private-chat.md +0 -291
  66. package/spec/modules/tool-registry.md +0 -79
  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 -105
  70. package/spec/overview/v0/350/214/203/345/233/264.md +0 -54
  71. package/spec/overview//344/272/247/345/223/201/345/256/232/344/271/211.md +0 -59
  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/P18-/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 +0 -36
  74. package/spec/principles/README.md +0 -39
  75. package/spec/repo//345/274/200/345/217/221/350/247/204/345/210/231.md +0 -39
  76. 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
  77. 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
  78. package/spec/testing/fixtures-/350/247/204/350/214/203.md +0 -20
  79. package/spec/testing//346/265/213/350/257/225/347/255/226/347/225/245.md +0 -97
  80. /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
  81. /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
  82. /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
  83. /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
  84. /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
  85. /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
  86. /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
  87. /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
  88. /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
  89. /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
  90. /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
  91. /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
  92. /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,111 +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
-
38
- ### 3. Skill Plane
39
-
40
- 目录:`src/skills/`
41
-
42
- 负责:
43
-
44
- - skill schema
45
- - discovery
46
- - matching
47
- - loading
48
- - workflow gating
49
-
50
- ### 4. Control Plane
51
-
52
- 目录:`src/tasks/` `src/team/` `src/background/` `src/worktrees/`
53
-
54
- 负责:
55
-
56
- - 任务真相源
57
- - 协议真相源
58
- - 队友状态
59
- - 后台作业状态
60
- - worktree 状态
61
-
62
- ### 5. Execution Plane
63
-
64
- 负责真正干活:
65
-
66
- - 文件读写
67
- - shell 命令
68
- - 背景任务
69
- - teammate worker
70
- - worktree 目录
71
- - MCP 浏览器
72
-
73
- ### 6. Orchestrator Layer
74
-
75
- 目录:`src/orchestrator/`
76
-
77
- 负责:
78
-
79
- - 复杂度判断
80
- - 最小任务图落盘
81
- - self / subagent / teammate / background 路由
82
- - lead slice 开始前的任务组织
83
-
84
- ## 当前最重要的架构边界
85
-
86
- ### 控制面
87
-
88
- 回答:
89
-
90
- - 现在有哪些任务
91
- - 谁该做、谁在做
92
- - 哪些正式协作在 pending
93
- - 哪些后台任务在跑
94
- - 哪些 worktree 仍然有效
95
-
96
- ### 执行面
97
-
98
- 回答:
99
-
100
- - 文件怎么改
101
- - 命令怎么跑
102
- - 浏览器怎么导航
103
- - 某个 worker 具体在执行什么
104
-
105
- ### 关键规则
106
-
107
- 1. 控制面不直接改文件。
108
- 2. 执行面不发明控制面真相。
109
- 3. orchestrator 负责调度,不负责具体文件改写。
110
- 4. tools 提供动作,skills 提供 workflow,二者不互相替代。
111
- 5. 主循环只做调度;closeout、verification signal、workflow gating 这类长期规则要下沉到独立模块。
@@ -1,117 +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
-
21
- 状态目录:`.athlete/tasks/`
22
-
23
- ### TeamStore
24
-
25
- 回答:
26
-
27
- - 现在有哪些 teammate
28
- - 各自角色和状态是什么
29
-
30
- 状态文件:`.athlete/team/config.json`
31
-
32
- ### ProtocolRequestStore
33
-
34
- 回答:
35
-
36
- - 哪些正式协作在 pending
37
- - 哪些已经 approved / rejected
38
-
39
- 状态目录:`.athlete/team/requests/`
40
-
41
- ### CoordinationPolicyStore
42
-
43
- 回答:
44
-
45
- - 现在允不允许做 plan decision
46
- - 现在允不允许运行 shutdown request
47
-
48
- 状态文件:`.athlete/team/policy.json`
49
-
50
- ### BackgroundJobStore
51
-
52
- 回答:
53
-
54
- - 哪些后台命令在跑
55
- - 谁发起的
56
- - 是否完成、失败、超时
57
-
58
- ### WorktreeStore
59
-
60
- 回答:
61
-
62
- - 哪些 worktree 存在
63
- - 绑定了哪个任务
64
- - 是否 active / kept / removed
65
-
66
- 状态文件:
67
-
68
- - `.athlete/worktrees/index.json`
69
- - `.athlete/worktrees/events.jsonl`
70
-
71
- ### MessageBus
72
-
73
- 负责:
74
-
75
- - inbox 投递
76
- - 消息审计
77
-
78
- 相关文件:
79
-
80
- - `.athlete/team/inbox/*.jsonl`
81
- - `.athlete/team/messages.jsonl`
82
-
83
- 它不是最终业务真相源,但它是协作事件流和审计层。
84
-
85
- ## 普通消息与正式协议的边界
86
-
87
- ### 普通消息
88
-
89
- 用于:
90
-
91
- - 通知
92
- - 提醒
93
- - 状态更新
94
-
95
- ### 正式协议
96
-
97
- 用于:
98
-
99
- - 会改变协作状态的沟通
100
-
101
- 当前协议类型:
102
-
103
- - `plan_approval`
104
- - `shutdown`
105
-
106
- 正式协议必须:
107
-
108
- - 有 `request_id`
109
- - 有 request / response 对应关系
110
- - 有持久化状态
111
-
112
- ## 当前规则
113
-
114
- 1. 新增状态前,先问是不是已有真相源应扩字段。
115
- 2. 能复用现有真相源,就不要新造平行 JSON 文件。
116
- 3. 任何需要跨 turn、跨 agent 保持一致的信息,都不能只存在 system prompt 里。
117
- 4. 普通消息不能代替正式审批。
@@ -1,82 +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
- - `runTurn` 继续专注模型请求、工具执行、continuation、verification、compact
23
- - teammate / subagent loop 不走 lead orchestrator
24
-
25
- ## 当前最重要的机器规则
26
-
27
- ### 计划规则
28
-
29
- 变更型动作默认要求先 `todo_write`。
30
-
31
- ### inbox 规则
32
-
33
- lead 和 teammate 的 inbox 在 turn 开头统一注入。
34
-
35
- ### verification 规则
36
-
37
- 发生文件改动或 mutating shell 后,会进入 verification 状态机。
38
-
39
- verification 不是无限提醒:
40
-
41
- - `pendingPaths` 会随 session 持久化,continuation 后仍然有效
42
- - 显式 build / test / verify 命令会记录为正式 verification attempt
43
- - 对轻量交付物(如 `validation/*.md`、`.txt`)的定向 `read_file` 检查,也会被记录为一次通过的轻量验证
44
- - 如果任务已经结束、输出文件已经存在且属于轻量交付物,finalize 会先尝试 auto-readback,再决定是否 pause 给用户
45
-
46
- ### 收口规则
47
-
48
- 当主目标已经满足时,runtime 会优先结束,而不是继续补做 task / todo / verification 文书动作。
49
-
50
- - 收口判断不只看模型文本,还看 `changedPaths`、`verificationState`、todo 完成度与本轮是否已有实质工具活动
51
- - 一旦进入“应该收口”的区间,`task_list` / `task_get` / `task_update` 会在工具集里被隐藏
52
- - 当 todo 已全部完成时,`todo_write` 也会在收口阶段从工具集中移除,避免重复 closeout
53
- - 旧 todo 过时但真实工作已完成时,不再把 stale todo 当成 finalize 的硬阻塞
54
-
55
- ### continuation 规则
56
-
57
- 工具步数过多时,不中断任务,而是自动续跑。
58
-
59
- ### compact 规则
60
-
61
- 上下文过长时,自动压缩请求上下文,不直接放弃任务。
62
-
63
- ### 浏览器 workflow 规则
64
-
65
- 在相关 skill 已加载且浏览器工具可用时:
66
-
67
- - 自然语言网页任务优先走 Playwright MCP 工具
68
- - shell 网页抓取只能作为 fallback
69
- - 在导航和 snapshot 之前,shell detour 会被 workflow guard 拦住
70
-
71
- ### 交互等待反馈
72
-
73
- 交互模式下,用户发出输入后、模型真正开始输出前,会显示短暂 spinner。
74
-
75
- 它属于 UI 层,不参与 agent 状态机本身。
76
-
77
- ## 设计要求
78
-
79
- 1. loop 只保留全局调度规则。
80
- 2. 具体模块细节下沉到各自目录。
81
- 3. 新增长期能力时,优先接到 runtime state、tool priority 或 workflow guard,而不是直接堆 prompt。
82
- 4. “应该结束”的判断必须落在机器层,不能只靠 prompt 提醒模型自觉收口。
@@ -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. 项目内经验沉淀
@@ -1,101 +0,0 @@
1
- # 目录结构到代码文件映射表
2
-
3
- ## 当前主要目录
4
-
5
- - `src/agent/`: 主循环、prompt、continuation、verification、closeout
6
- - `src/agent/checkpoint/`: checkpoint 归一化、推导、resume 输入、prompt block
7
- - `src/agent/runtimeMetrics/`: runtime metrics 累积与 runtime summary
8
- - `src/tools/`: 模型可见工具与 handler
9
- - `src/skills/`: skill schema、discovery、matching、loading、workflow guard
10
- - `src/mcp/`: MCP 总接入层
11
- - `src/mcp/playwright/`: Playwright MCP 配置、路径、artifact、调用归一化
12
- - `src/context/`: repo root、state root、AGENTS、skills、ignore 发现
13
- - `src/config/`: 配置读取、环境变量、runtime config、app paths
14
- - `src/tasks/`: 持久化 task 真相源
15
- - `src/team/`: teammate、消息、协议、policy
16
- - `src/background/`: 后台任务
17
- - `src/worktrees/`: 目录隔离
18
- - `src/subagent/`: 一次性子智能体
19
- - `src/interaction/`: 共享交互控制层与 shell 契约
20
- - `src/shell/cli/`: CLI shell 输入、输出、turn 展示、intro
21
- - `src/ui/`: CLI 文本格式化、runtime summary 和兼容导出
22
- - `src/telegram/`: Telegram 私聊通道、delivery、附件、CLI、process lock
23
- - `src/weixin/`: Weixin 私聊通道、OpeniLink client、delivery、context_token、CLI、process lock
24
-
25
- ## 当前 lightweight context 对应代码
26
-
27
- - `src/agent/promptSections.ts`: static / dynamic prompt layer
28
- - `src/agent/toolResultStorage.ts`: externalized tool result 落盘
29
- - `src/agent/toolResultPreview.ts`: tool payload 预览与 transport 压缩
30
- - `src/tools/files/toolResultArtifact.ts`: `.athlete/tool-results/...` 的紧凑 artifact read
31
- - `src/agent/contextBuilder.ts`: 使用轻量 payload 的请求上下文构建
32
-
33
- ## 当前 checkpoint / continuation 对应代码
34
-
35
- - `src/agent/checkpoint.ts`: checkpoint 对外导出面
36
- - `src/agent/checkpoint/base.ts`: checkpoint 默认结构与从 session 派生
37
- - `src/agent/checkpoint/state.ts`: checkpoint 归一化与生命周期更新
38
- - `src/agent/checkpoint/derivation.ts`: completedSteps / nextStep / artifact 推导
39
- - `src/agent/checkpoint/prompt.ts`: checkpoint 恢复输入与 prompt block
40
- - `src/agent/turnPersistence.ts`: turn 开始、yield、recovery、tool batch 的 session 持久化接线
41
- - `src/agent/managedTurn.ts`: continuation 输入通过 checkpoint 生成
42
-
43
- ## 当前 runtime metrics / 仪表盘 对应代码
44
-
45
- - `src/agent/runtimeMetrics.ts`: runtime metrics 对外导出面
46
- - `src/agent/runtimeMetrics/state.ts`: `runtimeStats` 归一化与事件累积
47
- - `src/agent/runtimeMetrics/summary.ts`: session runtime summary 生成
48
- - `src/agent/api.ts`: provider request timing 与 provider usage 采集
49
- - `src/agent/runTurn.ts`: tool execution、compression、recovery 等运行事件统计接线
50
- - `src/ui/runtimeSummary.ts`: 交互态 runtime summary 文本格式化
51
- - `src/interaction/localCommands.ts`: 共享本地命令语义与 `/runtime` / `/stats` / `/仪表盘` 路由
52
- - `src/ui/localCommands.ts`: CLI 默认输出适配与兼容导出
53
-
54
- ## 当前交互 shell 对应代码
55
-
56
- - `src/interaction/sessionDriver.ts`: 共享交互 session loop、multiline、interrupt、turn 生命周期
57
- - `src/interaction/shell.ts`: `InteractionShell` / `ShellInputPort` / `ShellOutputPort` / `InteractionTurnDisplay`
58
- - `src/shell/cli/readlineInput.ts`: CLI 输入适配
59
- - `src/shell/cli/output.ts`: CLI 文本输出适配
60
- - `src/shell/cli/turnDisplay.ts`: CLI spinner + stream renderer 适配
61
- - `src/shell/cli/intro.ts`: CLI banner 与 launch hints
62
- - `src/shell/cli/shell.ts`: CLI shell 组装
63
- - `src/ui/interactive.ts`: CLI 入口薄壳,组装 shell 并启动共享 driver
64
-
65
- ## 当前 Playwright MCP 对应代码
66
-
67
- - `src/mcp/config.ts`: MCP 配置归一化
68
- - `src/mcp/playwright/config.ts`: Playwright MCP 配置归一化与 server args
69
- - `src/mcp/playwright/paths.ts`: `.athlete/playwright-mcp/` 路径约定
70
- - `src/mcp/playwright/artifacts.ts`: artifact 目录准备、迁移、生成配置
71
- - `src/mcp/playwright/invoke.ts`: relative filename 归一化
72
- - `src/mcp/stdioClient.ts`: 真实 stdio MCP client
73
- - `src/mcp/toolAdapter.ts`: MCP tool 适配进 Athlete registry
74
- - `src/tools/runtimeRegistry.ts`: runtime registry 组装 built-in tools 与 MCP tools
75
-
76
- ## 当前 closeout / verification 对应代码
77
-
78
- - `src/agent/finalize.ts`: tool-less turn 的最终收口与 verification / pause 行为
79
- - `src/agent/closeout.ts`: closeout 阶段的工具过滤与 stale todo 容忍规则
80
- - `src/agent/verificationState.ts`: verification 真相源
81
- - `src/agent/verificationSignals.ts`: lightweight verification signals 与 auto-readback
82
- - `src/agent/runTurn.ts`: 调度这些规则,但不持有它们的内部实现细节
83
-
84
- ## 当前文档 / 验证位置
85
-
86
- - `skills/web-research/SKILL.md`
87
- - `skills/browser-automation/SKILL.md`
88
- - `spec/modules/lightweight-context-runtime.md`
89
- - `spec/modules/session-resume-compact.md`
90
- - `spec/modules/runtime-metrics.md`
91
- - `tests/playwright-mcp.test.ts`
92
- - `tests/browser-tool-priority.test.ts`
93
- - `tests/playwright-workflow-guard.test.ts`
94
- - `tests/agent-closeout.test.ts`
95
- - `tests/runtime-lightweight-context.test.ts`
96
- - `tests/runtime-checkpoint-resume.test.ts`
97
- - `tests/runtime-observability.test.ts`
98
- - `scripts/verify-runtime-lightweight-context-api.mjs`
99
- - `scripts/verify-runtime-checkpoint-api.mjs`
100
- - `scripts/verify-runtime-observability-api.mjs`
101
- - `validation/`
@@ -1,85 +0,0 @@
1
- # InteractionShell
2
-
3
- ## 作用
4
-
5
- `InteractionShell` 是共享交互控制层和具体外壳之间的正式边界。
6
-
7
- 它让 Athlete 的交互 session loop 可以复用同一个大脑,同时替换 CLI、桌面等不同壳。
8
-
9
- ## 当前真实能力
10
-
11
- ### 参与者
12
-
13
- - `InteractiveSessionDriver`: 共享交互控制器
14
- - `InteractionShell`: 壳总接口
15
- - `ShellInputPort`: 输入端口
16
- - `ShellOutputPort`: 输出端口
17
- - `InteractionTurnDisplay`: turn 展示端口
18
-
19
- ### 当前契约语义
20
-
21
- #### `ShellInputPort`
22
-
23
- 负责:
24
-
25
- - 读取普通输入
26
- - 读取 multiline 输入
27
- - 绑定 interrupt 事件
28
-
29
- 不负责:
30
-
31
- - 决定 task / runtime 真相
32
- - 自己执行 agent turn
33
-
34
- #### `ShellOutputPort`
35
-
36
- 负责:
37
-
38
- - 输出 `plain / info / warn / error / dim / heading / tool / interrupt`
39
- - 保持壳自己的展示风格
40
-
41
- 不负责:
42
-
43
- - 修改 session 真相
44
- - 决定本地命令语义
45
-
46
- #### `InteractionTurnDisplay`
47
-
48
- 负责:
49
-
50
- - 接收 turn 生命周期内的 `AgentCallbacks`
51
- - 展示流式 assistant / reasoning / tool 状态
52
- - 在 turn 结束或中断时 flush / dispose
53
-
54
- #### `InteractionShell`
55
-
56
- 负责把上面三部分组装给共享 driver 使用。
57
-
58
- ## 当前 CLI 实现
59
-
60
- - `src/shell/cli/readlineInput.ts`
61
- - `src/shell/cli/output.ts`
62
- - `src/shell/cli/turnDisplay.ts`
63
- - `src/shell/cli/shell.ts`
64
-
65
- CLI 当前通过这些适配器接入:
66
-
67
- - `readline`
68
- - `process.stdin` / `process.stdout`
69
- - `chalk`
70
- - spinner / stream renderer
71
-
72
- 这些都必须留在 CLI shell 内,不进入共享 driver。
73
-
74
- ## 规则
75
-
76
- 1. `InteractiveSessionDriver` 不能依赖 `readline`、stdio、`chalk`。
77
- 2. shell 只能提供输入、输出和 turn 展示适配,不能把控制面状态偷搬到壳里。
78
- 3. 本地命令的语义应落在共享交互层,shell 只负责把结果显示出来。
79
- 4. interrupt 的来源可以因壳不同而不同,但共享 driver 的 abort 语义必须一致。
80
-
81
- ## 未来方向
82
-
83
- - 桌面壳可以实现自己的 `ShellInputPort`,例如输入框提交、多行编辑器、停止按钮。
84
- - 桌面壳可以实现自己的 `ShellOutputPort` / `InteractionTurnDisplay`,例如富文本消息区和状态面板。
85
- - 未来如果出现 web / mobile 壳,也应优先复用这组契约,而不是复制一套 session loop。
@@ -1,23 +0,0 @@
1
- # ProviderAdapter
2
-
3
- ## 作用
4
-
5
- ProviderAdapter 把 Athlete 的请求发送到具体模型服务,并返回统一结果。
6
-
7
- ## 最小职责
8
-
9
- - 接收消息数组
10
- - 接收模型名
11
- - 接收工具定义
12
- - 返回 assistant 文本、reasoning、tool calls
13
- - 对常见 provider 错误提供可恢复语义
14
-
15
- ## 不负责
16
-
17
- - 任务拆分
18
- - 控制面状态判断
19
- - 工具执行
20
-
21
- ## 稳定边界
22
-
23
- 只要 adapter 还能提供统一输出,底层 provider 可以继续替换。
@@ -1,17 +0,0 @@
1
- # 接口契约
2
-
3
- 这一组文档不追求把所有 TypeScript 细节抄一遍。
4
-
5
- 它们只说明 Athlete 内核最关键的抽象边界:
6
-
7
- - provider adapter
8
- - runtime loop
9
- - session store
10
- - tool registry
11
- - interaction shell
12
-
13
- ## 使用规则
14
-
15
- 1. 接口文档写稳定边界,不写瞬时实现细节。
16
- 2. 新能力优先问“该落在哪个接口”,再问“该落在哪个文件”。
17
- 3. 如果某个改动让接口职责明显变混,优先拆接口。
@@ -1,28 +0,0 @@
1
- # RuntimeLoop
2
-
3
- ## 作用
4
-
5
- RuntimeLoop 负责驱动一个 turn,直到:
6
-
7
- - 完成
8
- - 暂停
9
- - yield
10
- - 报错
11
-
12
- ## 最小职责
13
-
14
- - 组装请求上下文
15
- - 读运行时状态
16
- - 调模型
17
- - 执行工具
18
- - 处理 continuation / compact / verification
19
-
20
- ## 不负责
21
-
22
- - 保存长期任务真相
23
- - 发明新工具
24
- - 实现具体业务流程
25
-
26
- ## 下一阶段要求
27
-
28
- 总指挥层可以成为 loop 的上游决策来源,但不能把 RuntimeLoop 变成一个巨大的业务文件。
@@ -1,22 +0,0 @@
1
- # SessionStore
2
-
3
- ## 作用
4
-
5
- SessionStore 负责保存和恢复任务现场。
6
-
7
- ## 最小职责
8
-
9
- - 创建 session
10
- - 追加消息
11
- - 保存 todo / verification / taskState
12
- - 加载既有 session
13
-
14
- ## 不负责
15
-
16
- - 任务板真相
17
- - teammate roster
18
- - worktree 生命周期
19
-
20
- ## 关键要求
21
-
22
- session 恢复不能破坏 Athlete 的耐跑能力。
@@ -1,21 +0,0 @@
1
- # ToolRegistry
2
-
3
- ## 作用
4
-
5
- ToolRegistry 负责统一管理模型可见工具。
6
-
7
- ## 最小职责
8
-
9
- - 返回工具定义
10
- - 按名称执行工具
11
- - 根据 mode / runtime 过滤工具集
12
-
13
- ## 不负责
14
-
15
- - provider 请求
16
- - session 存储
17
- - 任务真相维护
18
-
19
- ## 关键要求
20
-
21
- 无论未来 tools、skills、MCP 怎么扩,模型看到的动作入口都要保持统一。