8dcd1f2482
- docs/roadmap.md:更新顶部状态至 v0.1 发布完成(182 测试 / 0 警告 / 7 离线示例),末尾追加 v0.1 发布里程碑章节 - CHANGELOG.md:按 Keep a Changelog 规范记录 0.1.0 的 Added / Changed / Deprecated / Fixed / Removed 及版本基线
4.7 KiB
4.7 KiB
Changelog
本项目所有重要变更均记录于此文件。格式参考 Keep a Changelog。
0.1.0 - 2026-07-04
首个公开版本。涵盖 Phase 0-4c 的全部核心能力、Provider IR 重构、LlmCycle 简化,以及面向用户的 7 个离线示例。
Added
LLM 调用周期(Phase 0)
- 统一 IR 类型层:
Message、ContentBlock、MessageRequest、MessageResponse、ToolDefinition、StopReason LlmProvidertrait + 4 个 Provider 实现:OpenAI Chat Completions、Anthropic Messages、DeepSeek(OpenAI 兼容)、Qwen(OpenAI 兼容)ProviderRegistry:多 Provider 注册与发现LlmCycle:重试策略 + 用量追踪 + 自动 tool 循环 + Auto-compactionHookExecutor:OnTurnStart / OnTurnEnd / OnPlanStepComplete 等生命周期钩子StreamEvents:AssistantTextDelta / ToolExecutionStarted / MessageComplete 等流式事件
提示词工程(Phase 1)
PromptTemplate:变量插值 + 条件渲染PromptComposer:system/user/assistant/tool_result 消息链组合
工具系统(Phase 2)
ToolRegistry:注册、发现、并行调用、超时控制BaseTooltrait(含ToolContext执行上下文)McpClient:stdio transport(StreamableHttp 已预留接口)PermissionChecker:白名单 / 黑名单 / 自定义权限
记忆系统(Phase 3)
MemoryStoretrait +InMemoryStore默认实现ConversationMemory:sliding window / 全量模式,集成llm::compactKnowledgeStore:知识页面存储MemoryRetriever:TextOverlap Dice 系数评分EvictionPolicy:None / Ttl / Capacity 三种淘汰策略
Agent 运行时(Phase 4a/b/c)
Agenttrait:name / system_prompt / tool_definitionsAgentSession+RuntimeBundle+AgentBuilder:链式构造 + 依赖注入AgentError:Llm / Tool / Memory / HookBlocked / LimitExceeded / Config / PlanParse / Other 8 个变体TaskAgenttrait +JsonPlanParser:自主执行 + 外部驱动Plan/Step/StepStatus:纯数据结构SessionMemory:基于MemoryStore的会话级 key-value 桥接
面向用户的资产
agcore::llm::mock::MockProvider:公开的 Mock Provider,支持chat+chat_stream,无需 API key 即可运行示例- 7 个离线可运行示例(
cargo run --example ...):prompt_composer— 模板变量插值 + 消息链构建custom_tool— 工具注册 + 权限检查agent_session_demo— AgentBuilder → AgentSession → submit_turn 完整链路task_agent_demo— JsonPlanParser → Plan → Step 状态机conversation_memory_demo— SessionMemory 命名空间隔离knowledge_search_demo— KnowledgeStore + 停用词过滤streaming_events_demo— 流式事件消费
Changed
LlmCycle切换到 IR 消息类型:内部消息从OpenaiChatMessage切到统一Message类型,移除 Phase 0 的桥接转换层(方案:docs/10c-phase2-llm-cycle-simplify.md)- Provider IR 重构:
LlmProvidertrait 签名同步切到MessageRequest/MessageResponse;新增 Anthropic / DeepSeek / Qwen Provider(方案:docs/10-llm-provider-refinement.md、docs/10b-phase1-provider-adaptation.md) AgentBuilder扩展session_memory_backend:Phase 4c 接入会话级记忆- 错误消息面向最终用户友好化:
AgentError/LlmError/ToolError/MemoryError/PromptError全部改写为带可操作建议的友好消息 composer.rsIR 迁移:PromptComposer内部从OpenaiChatMessage切到Message/ContentBlock,与新类型系统保持一致knowledge.rs锁修复:std::sync::Mutex→tokio::sync::Mutex,避免 MutexGuard 跨.await持有
Deprecated
ChatResponse— 自 0.1.0 起标记为 deprecated,请改用MessageResponseToolDefinition— 自 0.1.0 起标记为 deprecated(仍直接对应 OpenAI wire-format);v0.2 将引入 IR 工具类型
Fixed
- 修复 Provider IR 重构后
session.rs/cycle.rs测试模块的导入缺失回归 - 修复
knowledge.rs::search()中 MutexGuard 跨.await持有的潜在阻塞 - 清零全部 clippy 警告(
#[allow(dead_code)]已在最低必要范围使用)
Removed
- 移除 Phase 0 的
OpenaiChatMessage ↔ Message桥接层(LlmCycle 简化后已无外部调用方)
版本基线
| 指标 | 数值 |
|---|---|
cargo build --all-targets |
✅ 通过 |
cargo test --all-targets |
✅ 182 passed / 0 failed |
cargo clippy --all-targets -- -D warnings |
✅ 0 警告 |
| 离线示例 | ✅ 7 个全部 cargo run 退出码 0 |
| 许可证 | Apache-2.0 |