feat(docs): 更新 roadmap,标记 Phase 6 交付完成

Phase 6 ToolDef IR 的 5 个子步骤全部标注已完成,新增实际变更摘要,更新里程碑状态及下一步行动计划
This commit is contained in:
徐涛
2026-07-05 10:49:50 +08:00
parent 517ef7db32
commit 821cea8e60
+25 -12
View File
@@ -7,7 +7,7 @@
AG Core 定位为构建 AI 智能体的底层工具箱,通过模块化、可插拔的架构,提供大模型调用、提示词工程、工具系统、记忆检索四大核心能力,支持快速组合出符合业务需求的智能体应用。
**当前状态**v0.1.0 已发布(2026-07-04)。Phase 0-5 全部完成,Provider IR 重构 + LlmCycle 简化 + 8 个离线示例已交付(新增 `simple_visit.rs`)。v0.2.0 已细分为 8 个增量 PhasePhase 5-12),其中 Phase 5 已完成Ollama Provider + `#[non_exhaustive]` 兼容性护栏 + `ProviderConfig::from_env`,下一步进入 Phase 6 (ToolDef IR 正式化)。
**当前状态**v0.1.0 已发布(2026-07-04)。Phase 0-6 全部完成,Provider IR 重构 + LlmCycle 简化 + 8 个离线示例已交付(新增 `simple_visit.rs`)。v0.2.0 已细分为 8 个增量 PhasePhase 5-12),其中 Phase 5Ollama Provider + `#[non_exhaustive]` 兼容性护栏 + `ProviderConfig::from_env` Phase 6ToolDef IR 正式化)已完成,下一步进入 Phase 7 (SqliteStore 持久化)。
---
@@ -362,11 +362,11 @@ pub struct ContextBudget { system, history, tools, tool_results, reserve }
| Step | 内容 | 验证标准 |
|------|------|---------|
| **6.1** | `types/tool.rs` 新增 `ToolDef` 结构体 + `From<ToolDef> for OpenaiToolDefinition` + 反向 `From` | 单元测试 roundtrip |
| **6.2** | `types/mod.rs` 切别名 `pub type ToolDefinition = ToolDef``MessageRequest.tools``Vec<ToolDef>` | `cargo build` 编译断点 |
| **6.3** | `cycle.rs` 4 个方法签名 + `registry.rs` `definitions()` 签名更新 | `cargo build` |
| **6.4** | Provider 适配层(openai.rs / anthropic.rs / openai_compat.rs):`build_request()` 内做 `ToolDef → wire-format` 转换 | `cargo test` 每个 provider 测试 |
| **6.5** | 所有测试/示例中 `ToolDefinition``ToolDef` 修复;移除旧 `#[deprecated]` alias | `cargo test --all-targets` 全绿 |
| **6.1** | `types/tool.rs` 新增 `ToolDef` 结构体 + `From<ToolDef> for OpenaiToolDefinition` + 反向 `From` | 单元测试 roundtrip |
| **6.2** | `types/mod.rs` 切别名 `pub type ToolDefinition = ToolDef``MessageRequest.tools``Vec<ToolDef>` | `cargo build` 编译断点 |
| **6.3** | `cycle.rs` 4 个方法签名 + `registry.rs` `definitions()` 签名更新 | `cargo build` |
| **6.4** | Provider 适配层(openai.rs / anthropic.rs / openai_compat.rs):`build_request()` 内做 `ToolDef → wire-format` 转换 | `cargo test` 每个 provider 测试 |
| **6.5** | 所有测试/示例中 `ToolDefinition``ToolDef` 修复;移除旧 `#[deprecated]` alias | `cargo test --all-targets` 全绿 |
**边界切割技巧**
- Step 6.1 → 6.2 之间是安全 checkpoint:新类型存在但旧代码照常编译
@@ -376,6 +376,19 @@ pub struct ContextBudget { system, history, tools, tool_results, reserve }
**依赖**:无(仅与 Phase 5.3 有枚举兼容关系)
**优先级**P0
**实际新增**2026-07-05 commit `4cf5918` / `9da9b83` / `b187519`,详见 `docs/13-phase6-tooldef-ir.md`):
- 修改文件 8 个:`llm/types/tool.rs``llm/types/mod.rs``llm/types/request_v2.rs``llm/cycle.rs``llm/provider/openai.rs``tools/registry.rs``tools/mcp.rs``agent/agent.rs`
- `ToolDef` IRname / description / parameters,无 `strict`)新增于 `types/tool.rs`,配套双向 `From` 转换
- `OpenaiToolDefinition` 降级为 `#[doc(hidden)]`,仅供 OpenAI 适配层内部消费
- `MessageRequest.tools` 切换为 `Vec<ToolDef>`
- `ToolDefinition` 别名最终完全移除(直接使用 `ToolDef`
- 4 处 `#[allow(deprecated)]` 抑制点全部清理(cycle/registry/mcp/agent);残留 `#[allow(deprecated)]` 均与 `ChatResponse` / `with_system_prompt` 等其他弃用项无关
- 新增 roundtrip 测试 `message_request_with_tools_roundtrip`(断言 `strict` 字段不泄漏到序列化输出)
- Anthropic 适配层字段名一致零改动;openai_compat/ollama 委托 `GenericOpenaiProvider` 零改动
- 全量测试 190 → 191+1Phase 6 新增 roundtrip);clippy 0 警告
**状态**:✅ Phase 6 全部交付物已完成
---
#### Phase 7: SqliteStore 持久化
@@ -481,7 +494,7 @@ pub struct ContextBudget { system, history, tools, tool_results, reserve }
```mermaid
graph BT
P5["<b>Phase 5: 热身准备</b><br/>ProviderConfig::from_env<br/>Ollama Provider<br/>#[non_exhaustive] 标记"]:::done
P6["Phase 6<br/>ToolDefinition IR"]:::core
P6["<b>Phase 6: ToolDef IR</b><br/>Provider 无关工具定义"]:::done
P7["Phase 7<br/>SqliteStore"]:::core
P8["Phase 8<br/>MVP 出口 (rc.1)"]:::mvp
P9["Phase 9<br/>流式体验增强"]:::p1
@@ -515,7 +528,7 @@ graph BT
| 里程碑 | Phase 完成条件 | 可验证指标 | 状态 |
|--------|---------------|-----------|------|
| **M1** | Phase 5 | 热身三项完成:`from_env()` 可用 / Ollama 类型存在 / `#[non_exhaustive]` 就位 | ✅ 2026-07-05 |
| **M2** | Phase 6 | `ToolDef` 全量切换,`cargo test --all-targets` 全绿 | ⏳ 待启动 |
| **M2** | Phase 6 | `ToolDef` 全量切换,`cargo test --all-targets` 全绿 | ✅ 2026-07-05 |
| **M3** | Phase 7 | SqliteStore CRUD + 并发测试通过,进程重启数据不丢 | ⏳ 待启动 |
| **M4** | **Phase 8 (rc.1)** | P0 五项全部交付,`cargo run --example quick_start` 跑通 | ⏳ |
| **M5** | Phase 9 | `submit_turn_stream` 流式事件序列验证通过 | ⏳ |
@@ -564,10 +577,9 @@ graph BT
## 下一步行动
1. **Phase 6 启动**ToolDef 结构体定义 + 5 步逐文件切割(types → cycle/registry → providers → 适配层 → 测试迁移)
2. **Phase 7 启动**SqliteStore`rusqlite` + `bundled`),可与 Phase 6 并行
3. **示例先行**每完成一个 Phase 立即更新对应示例,验证通过后再合入
4. **里程碑追踪**:以 Phase 8MVP 出口)为 v0.2.0-rc.1 节点,逐 Phase 验收
1. **Phase 7 启动**SqliteStore`rusqlite` + `bundled`),可与 Phase 6 并行
2. **示例先行**:每完成一个 Phase 立即更新对应示例,验证通过后再合入
3. **里程碑追踪** Phase 8MVP 出口)为 v0.2.0-rc.1 节点,逐 Phase 验收
**已完成 / 进行中阶段**
- ✅ Phase 0 Foundation — 全部交付物已完成
@@ -578,6 +590,7 @@ graph BT
- ✅ Phase 4b Task Execution — 全部交付物已完成
- ✅ Phase 4c Session Memory — 全部交付物已完成
- ✅ Phase 5 Warmup — ProviderConfig::from_env + OllamaProvider + `#[non_exhaustive]` 前置标记(ProviderType / StopReason / FinishReason / EvictionPolicy
- ✅ Phase 6 ToolDefinition IR — `ToolDef` 新类型 + 双向 `From` 转换 + 别名彻底移除 + `#[allow(deprecated)]` 清理(cycle/registry/mcp/agent);Anthropic 零改动;roundtrip 测试覆盖
- ✅ Provider IR 重构 — 统一类型系统 + OpenAI/Anthropic/DeepSeek/Qwen/Ollama 适配
- ✅ LlmCycle 简化 — IR 消息类型切换 + Phase 0 桥接层移除
- ✅ v0.1 Release — 技术债扫清、MockProvider 公开化、8 个离线示例(含 `simple_visit`)、README + 错误消息友好化、CHANGELOG 初始化