Initial commit

This commit is contained in:
2026-07-10 08:31:27 +08:00
commit 2b74c30d36
134 changed files with 21801 additions and 0 deletions

125
docs/tool-contracts.md Normal file
View File

@@ -0,0 +1,125 @@
# Tool 合约
## 1. 定位
LLM 通过 **tool call** 表达意图Runtime 校验后执行 tool 或转为 **RuntimeEvent** 改变 phase。
**真 tool loop**:循环 tool 的返回值 append 到 agent `messages[]`;边界 tool 结束 burst。
不依赖「副作用列表」隐式推进(迁移方向,见 `architecture.md`)。
黑板与上下文:`tag-blackboard.md``context-assembly.md`
---
## 2. 调用者
| 调用者 | 可用 tool | 禁止 |
|--------|-----------|------|
| 总管 Agent | 见 §3 | 改 phase 直接写黑板;传 inputTagsaccept 产物 |
| Worker LLM | `ask_user``submit`(目标态) | 调度其他 skill写未声明 tag |
| 用户 / CLI | submit_input、approve、reject、accept | — |
| Runtime | 发射 event、拼接上下文、执行 worker | — |
---
## 3. 总管 Tool
### 3.1 循环 toolburst 内,不改 phase
| name | 作用 |
|------|------|
| `read_blackboard` | `tags: string[]` 读正文 |
| `list_workers` | 当前包可调度 skill 列表 |
| `list_artifacts` | 产物状态 |
### 3.2 边界 tool结束 burst
| name | 行为 |
|------|------|
| `run_worker` | 执行 skill`requiresApproval``approve_step` |
| `ask_user` | `waiting_user(input)` |
| `review_blackboard` | 向用户展示概况 → `input` |
| `finish` | `done` |
```ts
type RunWorkerParams = {
workerId: string;
reason: string;
requiresApproval: boolean;
roleId?: string;
};
```
Runtime 从 Worker Skill 读 `inputTags` / `outputTags`,总管 **不得传入**
### 3.3 Tool loop burst
```text
计数器 toolLoopBurstCount 在每次用户硬事件时归零:
user_submitted_input、user_confirmed_intake、user_approved_next_step、
user_rejected_next_step、user_accepted_artifact、user_rejected_artifact、…
running 内每轮 LLM+tool 使 burst+1超过 maxBurst默认 12可配置→ 强制 waiting_user
```
**maxBurst = 两次用户操作之间的上限**,非 Session 累计。
代码:`src/main-agent/tool-loop.ts``src/runtime/tool-registry.ts`
---
## 4. Worker Tool目标态
| name | 行为 |
|------|------|
| `ask_user` | `worker_questions` + resumeContext |
| `submit` | 校验 tag ⊆ outputTags → 写黑板 → `worker_completed` |
Phase A 仍用 JSON `outputs` + `askUser`,语义等价。
---
## 5. 用户硬事件
| waitingReason | 用户动作 |
|---------------|----------|
| `skill_selection` | 选包 |
| `intake` / `input` | 输入 |
| `approve_step` | approve / reject |
| `review_artifact` | accept / reject |
| `worker_questions` | 输入 |
| `revision` | 输入修改说明 |
---
## 6. 校验
```text
1. phase + waitingReason 允许该 actor
2. tool 参数 schema
3. workerId ∈ manifest 注册表
4. submit tag ⊆ outputTags
5. 总管不得带 inputTags
6. burst ≤ maxBurst
```
---
## 7. 代码对应
| 章节 | 文件 |
|------|------|
| 总管 tool loop | `src/main-agent/tool-loop.ts` |
| tool 定义 | `src/main-agent/tools.ts` |
| 解析/校验 | `src/runtime/tool-registry.ts` |
| worker | `src/worker/executor.ts` |
| 阶段机 | `src/runtime/phase-machine.ts` |
---
## 8. 已废弃
- 总管 JSON 一次性决策(保留 fallback 解析)
- `inputKeys` / `outputKeys`
- orchestrator 思维链逐步调度
-`PhaseEffect.invoke_main_agent` 链为主的路径(迁向 burst 入口)