@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.
- package/README.md +149 -91
- package/dist/cli.js +26562 -19473
- package/dist/cli.js.map +1 -1
- package/package.json +6 -1
- package/scripts/postinstall-playwright.mjs +1 -1
- package/spec/README.md +49 -41
- package/spec//346/212/200/346/234/257/345/256/236/347/216/260/README.md +29 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/spec//347/224/250/346/210/267/345/256/241/351/230/205/README.md +27 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/spec/adr/ADR-0003-openai-compatible/344/274/230/345/205/210.md +0 -16
- package/spec/architecture//346/200/273/344/275/223/346/236/266/346/236/204.md +0 -111
- package/spec/architecture//347/212/266/346/200/201/344/270/216/347/234/237/347/233/270/346/272/220.md +0 -117
- package/spec/architecture//350/277/220/350/241/214/346/227/266/345/276/252/347/216/257.md +0 -82
- package/spec/implementation/README.md +0 -17
- 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
- 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
- package/spec/interfaces/InteractionShell.md +0 -85
- package/spec/interfaces/ProviderAdapter.md +0 -23
- package/spec/interfaces/README.md +0 -17
- package/spec/interfaces/RuntimeLoop.md +0 -28
- package/spec/interfaces/SessionStore.md +0 -22
- package/spec/interfaces/ToolRegistry.md +0 -21
- package/spec/modules/config-system.md +0 -51
- package/spec/modules/interactive-terminal.md +0 -112
- package/spec/modules/lightweight-context-runtime.md +0 -63
- package/spec/modules/provider-adapter.md +0 -20
- package/spec/modules/runtime-metrics.md +0 -132
- package/spec/modules/runtime-rules.md +0 -33
- package/spec/modules/session-resume-compact.md +0 -49
- package/spec/modules/task-state.md +0 -34
- package/spec/modules/telegram-private-chat.md +0 -291
- package/spec/modules/tool-registry.md +0 -79
- package/spec/modules/weixin-private-chat.md +0 -291
- package/spec/modules/workspace-isolation.md +0 -24
- package/spec/modules//346/211/251/345/261/225/346/234/272/345/210/266.md +0 -105
- package/spec/overview/v0/350/214/203/345/233/264.md +0 -54
- package/spec/overview//344/272/247/345/223/201/345/256/232/344/271/211.md +0 -59
- 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
- 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
- package/spec/principles/README.md +0 -39
- package/spec/repo//345/274/200/345/217/221/350/247/204/345/210/231.md +0 -39
- 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
- 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
- package/spec/testing/fixtures-/350/247/204/350/214/203.md +0 -20
- package/spec/testing//346/265/213/350/257/225/347/255/226/347/225/245.md +0 -97
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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,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 怎么扩,模型看到的动作入口都要保持统一。
|