docs(roadmap): 更新 Phase 5 完成状态和下一阶段计划

This commit is contained in:
徐涛
2026-07-05 09:04:44 +08:00
parent 5648b1d217
commit d3067e2f53
+32 -20
View File
@@ -1,13 +1,13 @@
# AG Core Roadmap
> 定稿日期:2026-05-11
> 最后更新:2026-07-04
> 最后更新:2026-07-05
## 愿景
AG Core 定位为构建 AI 智能体的底层工具箱,通过模块化、可插拔的架构,提供大模型调用、提示词工程、工具系统、记忆检索四大核心能力,支持快速组合出符合业务需求的智能体应用。
**当前状态**v0.1.0 已发布(2026-07-04)。Phase 0-4c 全部完成,Provider IR 重构 + LlmCycle 简化 + 7 个离线示例已交付。v0.2.0 已细分为 8 个增量 PhasePhase 5-12),本周开发启动
**当前状态**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 正式化)
---
@@ -334,13 +334,23 @@ pub struct ContextBudget { system, history, tools, tool_results, reserve }
| Step | 内容 | 文件范围 | 验证标准 |
|------|------|---------|---------|
| **5.1** | `ProviderConfig` 扩展:补 `timeout_secs`(def=30) + `max_retries`(def=3);新增 `ProviderConfig::from_env(prefix)` | `llm/provider.rs` + 各 Provider `new()` 构造函数 | `cargo test` + `from_env()` 单元测试 |
| **5.2** | `OllamaProvider`:基于 `GenericOpenaiProvider` 包装,改 base_url 为 `http://localhost:11434``ProviderType` 新增 `Ollama` | `llm/provider/provider.rs` + `llm/provider/ollama.rs`(新增) | `cargo build` — 纯类型级验证 |
| **5.3** | 公开枚举 `#[non_exhaustive]` 前置标记:`ProviderType` / `StopReason` / `FinishReason` / `EvictionPolicy` / `SlotMode`(预置) | 各枚举定义处 | 编译通过 + `cargo clippy` 0 警告 |
| **5.1** | `ProviderConfig` 扩展:补 `timeout_secs`(def=30) + `max_retries`(def=3);新增 `ProviderConfig::from_env(prefix)` | `llm/provider.rs` + 各 Provider `new()` 构造函数 | `cargo test` + `from_env()` 单元测试 |
| **5.2** | `OllamaProvider`:基于 `GenericOpenaiProvider` 包装,改 base_url 为 `http://localhost:11434``ProviderType` 新增 `Ollama` | `llm/provider/provider.rs` + `llm/provider/ollama.rs`(新增) | `cargo build` — 纯类型级验证 |
| **5.3** | 公开枚举 `#[non_exhaustive]` 前置标记:`ProviderType` / `StopReason` / `FinishReason` / `EvictionPolicy` / `SlotMode`(预置) | 各枚举定义处 | 编译通过 + `cargo clippy` 0 警告 |
**实际新增**2026-07-05 commit `98dfe6c`):
- 新增文件 1 个(`llm/provider/ollama.rs`72 行)
- 修改文件 2 个(`llm/provider.rs``from_env` + `Default` + 4 个字段;`memory/store.rs` EvictionPolicy 加 `#[non_exhaustive]`
- `ProviderType::Ollama` 变体 + `FromStr` 解析("ollama" → Ollama
- `OllamaProvider::new(base_url, api_key, model, timeout_secs)` + `with_client()` 构造函数
- `ProviderConfig::from_env(prefix)` 解析 `{prefix}_API_KEY` / `{prefix}_BASE_URL` / `{prefix}_MODEL` 环境变量
- 全量测试 182 → 190+8phase 5 新增 from_env 与 Ollama 相关单测)
- clippy 0 警告
**依赖**:无(三个 Step 互不冲突)
**优先级**P05.1+ P15.2+ P0 前置(5.3
**为何独立成 Phase**:三个改动零文件重叠,可以并行推进。它们是后续所有 Phase 的"门把手"——先做完热身再进入核心工作。
**状态**:✅ Phase 5 全部交付物已完成
---
@@ -470,7 +480,7 @@ pub struct ContextBudget { system, history, tools, tool_results, reserve }
```mermaid
graph BT
P5["Phase 5<br/>热身准备"]:::warmup
P5["<b>Phase 5: 热身准备</b><br/>ProviderConfig::from_env<br/>Ollama Provider<br/>#[non_exhaustive] 标记"]:::done
P6["Phase 6<br/>ToolDefinition IR"]:::core
P7["Phase 7<br/>SqliteStore"]:::core
P8["Phase 8<br/>MVP 出口 (rc.1)"]:::mvp
@@ -490,6 +500,7 @@ graph BT
P11 -.-> P7
classDef done fill:#4ade80,stroke:#16a34a,color:#1a1a1a
classDef warmup fill:#e2e8f0,stroke:#94a3b8
classDef core fill:#fbbf24,stroke:#d97706
classDef mvp fill:#4ade80,stroke:#16a34a
@@ -501,16 +512,16 @@ graph BT
### 关键里程碑
| 里程碑 | Phase 完成条件 | 可验证指标 |
|--------|---------------|-----------|
| **M1** | Phase 5 | 热身三项完成:`from_env()` 可用 / Ollama 类型存在 / `#[non_exhaustive]` 就位 |
| **M2** | Phase 6 | `ToolDef` 全量切换,`cargo test --all-targets` 全绿 |
| **M3** | Phase 7 | SqliteStore CRUD + 并发测试通过,进程重启数据不丢 |
| **M4** | **Phase 8 (rc.1)** | P0 五项全部交付,`cargo run --example quick_start` 跑通 |
| **M5** | Phase 9 | `submit_turn_stream` 流式事件序列验证通过 |
| **M6** | Phase 10 | ContextSlot 创建/切换/派生集成测试通过 |
| **M7** | Phase 11 | wiremock + 并发测试补强,测试总量 200+ |
| **M8** | Phase 12(可选) | P2 功能按需交付 |
| 里程碑 | Phase 完成条件 | 可验证指标 | 状态 |
|--------|---------------|-----------|------|
| **M1** | Phase 5 | 热身三项完成:`from_env()` 可用 / Ollama 类型存在 / `#[non_exhaustive]` 就位 | ✅ 2026-07-05 |
| **M2** | Phase 6 | `ToolDef` 全量切换,`cargo test --all-targets` 全绿 | ⏳ 待启动 |
| **M3** | Phase 7 | SqliteStore CRUD + 并发测试通过,进程重启数据不丢 | ⏳ 待启动 |
| **M4** | **Phase 8 (rc.1)** | P0 五项全部交付,`cargo run --example quick_start` 跑通 | ⏳ |
| **M5** | Phase 9 | `submit_turn_stream` 流式事件序列验证通过 | ⏳ |
| **M6** | Phase 10 | ContextSlot 创建/切换/派生集成测试通过 | ⏳ |
| **M7** | Phase 11 | wiremock + 并发测试补强,测试总量 200+ | ⏳ |
| **M8** | Phase 12(可选) | P2 功能按需交付 | ⏳ |
---
@@ -553,8 +564,8 @@ graph BT
## 下一步行动
1. **Phase 5 启动**ProviderConfig from_env + Ollama Provider + #[non_exhaustive] 前置,三个 Step 并行推进
2. **Phase 6 方案准备**:ToolDef 结构体定义 + 兼容转换,出实施笔记(实施时直接走代码评审)
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 验收
@@ -566,9 +577,10 @@ graph BT
- ✅ Phase 4a Core Glue — 全部交付物已完成
- ✅ Phase 4b Task Execution — 全部交付物已完成
- ✅ Phase 4c Session Memory — 全部交付物已完成
- ✅ Provider IR 重构 — 统一类型系统 + OpenAI/Anthropic/DeepSeek/Qwen 适配
- ✅ Phase 5 Warmup — ProviderConfig::from_env + OllamaProvider + `#[non_exhaustive]` 前置标记(ProviderType / StopReason / FinishReason / EvictionPolicy
- ✅ Provider IR 重构 — 统一类型系统 + OpenAI/Anthropic/DeepSeek/Qwen/Ollama 适配
- ✅ LlmCycle 简化 — IR 消息类型切换 + Phase 0 桥接层移除
- ✅ v0.1 Release — 技术债扫清、MockProvider 公开化、7 个离线示例、README + 错误消息友好化、CHANGELOG 初始化
- ✅ v0.1 Release — 技术债扫清、MockProvider 公开化、8 个离线示例(含 `simple_visit`、README + 错误消息友好化、CHANGELOG 初始化
- 📋 **v0.2 规划细化完成** — 8 个增量 PhasePhase 5-12),17 个可验证 Step,覆盖 P0-P2 全部 12 项功能 + ContextSlot
---