徐涛
|
4686063ca8
|
docs: 标记 Phase 13 完成 + 追加 v0.3.0 CHANGELOG 条目
- CHANGELOG.md: 追加 v0.3.0 (unreleased) 条目
- Breaking Changes: 类型路径变更(request.rs/response.rs → provider/openai.rs,
公共 ToolChoice re-export 路径不变)+ ChatResponse / LegacyStreamEvent 删除
- Added: ContextSlot::fork / merge + MergeStrategy 枚举(#[non_exhaustive])
- Changed: 3 个旧 types 文件删除 + 所有 wire-format 类型迁入 openai.rs
- Fixed: Phase 9 实施审查修复(PreRequest hook + 死代码清理 + 2 个集成测试)
- Migration Guide: v0.2.0-rc.1 → v0.3.0 路径迁移示例
- 修复 M9 里程碑验收 #11(CHANGELOG 条目)和审查结论 CONDITIONAL PASS 条件清单 #1
- docs/roadmap.md:
- 顶部最后更新日期 → 2026-07-08(Phase 13 完成 + M9 里程碑达成)
- 末尾"v0.3.0 规划完成"状态行从"Phase 13-19 待逐步实施"更新为"Phase 13 完成,
Phase 14-19 待实施(Document → 向量存储 → 摘要 → 引擎 → 调度 → 知识图谱)"
|
2026-07-09 06:19:43 +08:00 |
|
徐涛
|
c36668071e
|
fix(agent): Phase 9 实施审查修复
- cycle.rs: run_tool_loop 实现 PreRequest hook(之前 `let _ = hook_executor.as_ref()` 是空操作,
导致 hook-based logging/monitoring 在流式工具循环中失效;现在与 submit_with_tools 行为对齐,
含 should_block 检查,阻断时通过 StreamEvent::Error 事件化)
- session.rs: 删除 submit_turn_stream 末尾的 `let _ = hook_executor;` 死代码(Arc 引用生命周期
由 Arc 自动管理)
- session.rs: 新增 2 个集成测试覆盖方案 §4 Step 5:
- submit_turn_stream_end_to_end:mock provider → 消费流 → finalize_turn 后 cost_so_far
正确更新(10/5 tokens)+ turn_index=1 + default slot 包含 user/assistant 消息
- submit_turn_stream_triggers_turn_hooks:OnTurnStart 在 submit_turn_stream 返回流前
触发(计数=1)+ OnTurnEnd 在 finalize_turn 前不触发(计数=0)+ finalize_turn 后触发(计数=1)
- docs/16-phase9-streaming-experience.md: 标注 finalize_turn Phase 10 签名变更(new_messages_from_cycle
+ Result 返回),Step 5 测试实现位置
- 测试 288 passed / 0 failed(基线 286 + 2 新增),clippy 0 警告,doc 0 warning
|
2026-07-08 23:19:24 +08:00 |
|
徐涛
|
d4f27b5865
|
refactor(types): 删除旧类型文件和 ChatResponse
- 删除 src/llm/types/old_stream.rs(45 行,LegacyStreamEvent 内部死代码)
- types/mod.rs 删除 pub mod old_stream; 与 ChatResponse 结构体定义
- 前置验证 A 通过:parse_chunk_stream / map_legacy_to_ir / LegacyToIrEventStream /
ChunkToLegacyEventStream / LegacyStreamEvent 零外部调用方
- 前置验证 B 通过:cargo doc --no-deps 中无 ChatResponse 引用
- cycle.rs:88 的 #[allow(deprecated)] 保留(LlmCycle impl 中无 ChatResponse 引用,
与 ChatResponse 无关;按方案文档"若不相关则无需改动"原则保留原状)
- stream.rs 已在 Step 13.2 commit 中同步简化为 module doc + pub use
- 同步更新 docs/roadmap.md:Phase 13 状态 ⏳→✅,M9 里程碑 + 完成日期,
Mermaid 依赖图 P13 pending→done,"下一步"指向 Phase 14
- Breaking Change:agcore::llm::types::ChatResponse 已删除
(v0.1.0 起标记 #[deprecated],请改用 MessageResponse)
|
2026-07-08 22:59:31 +08:00 |
|
徐涛
|
1c0e1e0ed1
|
refactor(types): response.rs 类型移入 provider/openai.rs
- 删除 types/response.rs(177 行)
- 所有 OpenAI wire-format 响应类型迁入 provider/openai.rs,可见性 pub(crate):
TokenLogprob / TopLogprob / Logprobs / URLCitation / Annotation / OpenaiAudio /
Choice / OpenaiChatResponse / Delta / ChunkChoice / OpenaiChatChunk
- From<OpenaiChatMessage> for Delta 与 From<OpenaiChatResponse> for OpenaiChatChunk
同步迁入 openai.rs
- types/mod.rs 删除 pub mod response; 与对应 re-export
- convert_response 同步降级为 pub(crate) 以匹配 OpenaiChatResponse 可见性
- stream.rs: OpenaiChatChunk import 路径改为 crate::llm::provider::openai
- stream.rs 同步简化为 module doc + pub use 重导出(合并 Step 13.3 的清理动作,
避免遗留 dead_code 警告来回)
- mod.rs: ChatResponse 的两个 From impl 同步删除(impl 内引用的 OpenaiChatResponse
/ OpenaiChatChunk / Delta / ChunkChoice 已不在 types 模块),结构体保留到 Step 13.3
- 公共 re-export 路径 agcore::llm::types::OpenaiChatResponse/Chunk 等已删除
(Breaking Change,见 CHANGELOG)
|
2026-07-08 22:58:18 +08:00 |
|
徐涛
|
760de46623
|
refactor(types): request.rs 类型移入 provider/openai.rs
- 删除 types/request.rs(187 行)
- 所有 OpenAI wire-format 类型迁入 provider/openai.rs,可见性 pub(crate):
StreamOptions / OpenaiTool / AudioParam / PredictionContent / UserLocation /
Approximate / WebSearchOptions / OpenaiChatRequest
- types/mod.rs 删除 pub mod request; 与对应 re-export
- convert_request 同步降级为 pub(crate) 以匹配 OpenaiChatRequest 可见性
- 公共 re-export 路径 agcore::llm::types::OpenaiChatRequest 等已删除(Breaking Change,见 CHANGELOG)
|
2026-07-08 22:55:17 +08:00 |
|
徐涛
|
f8df6a9421
|
refactor(types): ToolChoice 移入 tool.rs
- ToolChoice 枚举与 serde impl 从 types/request.rs 迁入 types/tool.rs
- mod.rs re-export 从 request::ToolChoice 改为 tool::ToolChoice(公共 agcore::llm::types::ToolChoice 路径保持不变)
- request_v2.rs import 路径更新为 crate::llm::types::tool::ToolChoice
- OpenaiChatRequest 字段类型引用更新为 super::tool::ToolChoice(Step 13.1 删除 request.rs 后此临时 import 同步消除)
|
2026-07-08 22:53:46 +08:00 |
|
徐涛
|
802518b5fe
|
feat(agent): 实现 ContextSlot fork/merge
- 新增 MergeStrategy 枚举(#[non_exhaustive],为 Phase 16 Summarize 预留)
- 新增 ContextSlot::fork() 从父 slot 派生独立子 slot(Full / Focused 策略)
- 新增 ContextSlot::merge() 将子 slot 消息合入父 slot(Append / Replace 策略)
- 防御性检查:禁止 self-merge、跨 session merge、合并到 Readonly slot
- 重构 AgentSession::derive_slot 复用 fork() 消除重复代码
- 新增 9 个内联测试覆盖 fork/merge happy path 与 error path
- agent.rs 追加 MergeStrategy re-export(agcore::agent::MergeStrategy 路径可用)
|
2026-07-08 22:52:38 +08:00 |
|
徐涛
|
993118f661
|
docs(roadmap): 将 v0.3+ 展望更新为 v0.3.0 详细规划
新增 Phase 13-19 共 7 个增量交付阶段,覆盖技术债清理、Document 系统、向量
存储持久化、摘要自动生成、Agent 执行引擎、Agent Switch 与 SubAgent 调度、
知识图谱及双通道检索。同步更新里程碑、依赖关系图及风险说明
|
2026-07-06 23:10:18 +08:00 |
|
徐涛
|
4348e4bf3e
|
docs: 添加 LangChain & LangGraph 功能调研笔记
|
2026-07-06 21:55:03 +08:00 |
|
徐涛
|
0dc91faa43
|
docs(roadmap): 标记 Phase 11 测试与检索补强已完成
|
2026-07-06 15:30:52 +08:00 |
|
徐涛
|
b4e5c7d651
|
docs(phase11): 记录 Phase 11 方案文档与实施偏差
|
2026-07-06 14:53:00 +08:00 |
|
徐涛
|
71abe881ed
|
feat(core): 完成 Phase 11 测试与检索补强
- 新增 VectorRetriever trait 与 InMemoryVectorRetriever 引用实现
- 补充 Provider roundtrip wiremock 测试与 MemoryStore 并发测试共 23 个
- 修复 openai 429 retry-after header 解析(与 anthropic 对齐)
|
2026-07-06 14:52:49 +08:00 |
|
徐涛
|
2af92cd554
|
docs(roadmap): 标记 Phase 10 ContextSlot 上下文管理已完成
- 顶部状态行更新:Phase 0-10 全部完成,11 个离线示例,254 测试
- Phase 10 状态:Step 10.1/10.2/10.3 全部标记 ✅
- 详细实际新增:agent/context.rs (~430 行) + agent/error.rs 3 个变体 +
agent/session.rs 改造(slots 字段 + 5 个管理方法 + submit_turn/finalize_turn
增量追加写回) + context_slot_demo 示例 + 43 个新测试
- finalize_turn 签名变更记录(new_messages_from_cycle 参数 + Result 返回)
- 依赖关系图 P10 节点标 ✅
- 里程碑 M6 → ✅ 2026-07-07
- 下一步行动:Phase 10 → Phase 11(测试与检索补强)
- 已完成阶段列表追加 Phase 10 完整说明
- 最后更新日期:2026-07-06 → 2026-07-07
|
2026-07-06 09:53:44 +08:00 |
|
徐涛
|
635942248b
|
feat(core): 新增 Phase 10 ContextSlot 多上下文分区管理
- 新增 ContextSlot 类型(Full / Focused / Readonly 三种模式,
New / Derived / Static 三种来源),支持 JSON blob 批次持久化
- AgentSession 新增 slots 字段与 5 个管理方法
(create_slot / switch_slot / list_slots / derive_slot / delete_slot),
自动创建 "default" slot
- submit_turn / finalize_turn 改造为基于当前 slot 的增量追加写回,
确保 Focused 模式"读时过滤"语义不丢失数据
- finalize_turn 签名变更(新增 new_messages_from_cycle 参数,
返回 Result<(), AgentError>),向后兼容列于 docs/17
- 新增 3 个 AgentError 变体(SlotReadonly / SlotNotFound / SlotAlreadyExists)
- 新增分支对话示例 context_slot_demo(法律咨询→两个派生方向→切换→隔离验证)
- 新增 43 个测试覆盖持久化、Focused 过滤、Readonly 阻断、delete 保护、
派生逻辑、流式 finalize_turn、key 注入防护等场景
- 方案文档:docs/17-phase10-contextslot.md(含 §5 推荐方案、§6 实施建议、
§9 实施计划,经过 4 轮方案/计划/实施审查 + 1 轮非阻塞建议修复)
|
2026-07-06 09:46:04 +08:00 |
|
徐涛
|
fe51961202
|
docs(roadmap): 标记 Phase 9 流式体验增强已完成
- 顶部「当前状态」「最后更新」同步到 Phase 0-9 完成
- Phase 9 Step 9.1 标记完成并新增「实际新增」段落
- Mermaid 依赖图 P9 节点 class 从 p1 切换为 done
- 里程碑 M5 标记 ✅ 2026-07-06
- 下一步行动与已完成列表同步更新(指向 Phase 10)
|
2026-07-06 05:43:47 +08:00 |
|
徐涛
|
212cfcc916
|
feat(core): 新增 Phase 9 流式体验增强 submit_turn_stream
- 新增 StreamEvent::ToolExecutionStarted/Completed 变体(apply_to 元事件)
- 新增 LlmCycle::submit_with_tools_stream + run_tool_loop(spawn + mpsc 状态机)
- 新增 AgentSession::submit_turn_stream + finalize_turn(手动同步状态)
- CycleConfig 加 Clone derive
- 新增 9 个单元测试 + 2 个集成测试(211 passed)
- clippy 0 警告,存量 0 回归
docs: 追加 Phase 9 实施方案(docs/16-phase9-streaming-experience.md)
|
2026-07-05 23:37:37 +08:00 |
|
徐涛
|
88d00ac927
|
docs(roadmap): 补充 Phase 8 修复 commit 85b92ae 与最终行数
Phase 8 章节实际新增小节从 6 commits 改为 7 commits(含 docs(roadmap)
自身 + 实施后修复 commit 85b92ae),并同步行数:
- quick_start 57 → 60 行(追加 trailing newline + 错误处理改进)
- end_to_end 237 → 246 行(除零修复 + drop 注释 + EchoTool 一致化)
- 新增 docs(roadmap) commit 项(标记 Phase 8 + M4 里程碑)
- 新增 fix(examples) commit 项(6 项审查问题:1 🔴 + 2 🟡 + 3 💭)
'已完成 / 进行中阶段' 列表同步补充 Phase 8 行末的三方审查修复标注。
|
2026-07-05 21:10:24 +08:00 |
|
徐涛
|
358e971094
|
feat(core): 新增 Phase 8 MVP 集成出口方案文档
|
2026-07-05 21:04:31 +08:00 |
|
徐涛
|
85b92ae9d4
|
fix(examples): 修复 Phase 8 端到端示例审查发现的 6 项问题
按 PM/SA/Code Reviewer 三方审计报告修复:
🔴 阻塞修复:
- CalcTool 除零 panic: `a / b` 改 `a.checked_div(b).ok_or_else(...)`,
b=0 时返回 ToolError::InvalidArguments 而非 panic
🟡 警告修复:
- end_to_end.rs 持久化验证注释与实际不符: 显式 drop(backend) 让注释
描述与 Arc 释放顺序一致
- quick_start EchoTool 参数验证: 用 args.get("text").and_then().ok_or_else()
替换 as_str().unwrap_or("") 静默降级, 缺失/类型错误时返回显式错误
💭 一致性修复:
- end_to_end.rs EchoTool 与 quick_start 一致化 (format!("收到: {text}"))
- quick_start mock 响应文本 "已通过 echo 回传" → "EchoTool 已收到并完成回传"
- quick_start 断言改为检查 "收到", 与方案字面要求一致
- quick_start 末尾追加 POSIX trailing newline
验收: cargo test 200/0 + clippy 0 警告 + doc 0 warning + 10 示例 exit 0
|
2026-07-05 21:00:36 +08:00 |
|
徐涛
|
57b2fbaaed
|
docs(roadmap): 标记 Phase 8 MVP 集成出口已完成,v0.2.0-rc.1 标签
Phase 8 全部 Step 完成(8.1 API 稳定性扫尾 + 8.2 quick_start + 8.3
end_to_end),更新 roadmap 同步:
- 顶部「当前状态」补充 v0.2.0-rc.1 标签信息
- Phase 8 章节 3 个 Step 全标 ✅;新增「实际新增」6 commits 小节
- 依赖关系图 P8 节点 class 从 mvp 改为 done
- M4 里程碑标 ✅ 2026-07-05
- 「下一步行动」从 Phase 8 改为 Phase 9 + v0.2.0 正式版规划
- 「已完成 / 进行中阶段」列表追加 ✅ Phase 8
|
2026-07-05 20:06:43 +08:00 |
|
徐涛
|
2c8e31919d
|
feat(examples): 新增 end_to_end 端到端集成示例
展示真实场景集成: 3 工具 (EchoTool + CalcTool + NoteTool) +
3 轮对话 (计算 → 记笔记 → 回忆) + SqliteStore 持久化跨连接验证。
关键设计:
- Provider 自动检测: AG_LLM_* 环境变量齐全时用真实 LLM (from_env),
否则降级 MockProvider + 9 条预设响应 (含真实工具调用序列)
- NoteTool 展示 MemoryStore trait 解耦: 直接持有 Arc<dyn MemoryStore>,
绕过 AgentSession 封装 (key 前缀 "note:" + list 过滤)
- CalcTool ponytail 方案: 手写 'a op b' 解析, 不引入 rhai 依赖
- 持久化验证: drop(bundle) + drop(session) → backend Arc 引用归零 →
SqliteStore Connection 自动 close → 重开连接读取数据存活
规模: 237 行 (含完整注释); clippy 0 警告; cargo run exit 0。
|
2026-07-05 20:04:44 +08:00 |
|
徐涛
|
c6651c9b75
|
feat(examples): 新增 quick_start 最小可运行示例
展示 Agent / BaseTool / AgentBuilder / AgentSession 四层抽象的
最小可行集成:MockProvider + EchoTool + submit_turn("你好"),
EchoTool 真正被 LLM 调用并产出 "收到" 字样,零外部配置。
规模: 57 行(含注释),clippy 0 警告 + cargo run exit 0。
|
2026-07-05 20:01:13 +08:00 |
|
徐涛
|
e636e16820
|
test(core): 验证 Phase 8 Step 8.1 commit 1-3 零回归
cargo test --all-targets: 200 passed / 0 failed
cargo clippy --all-targets -- -D warnings: 0 警告
cargo doc --no-deps: 0 warning
Step 8.1 四个增量 commit 全部交付,零 deprecated warning。
|
2026-07-05 19:50:57 +08:00 |
|
徐涛
|
1c89d23ba2
|
docs: v0.2.0-rc.1 CHANGELOG + 版本号 + README 示例列表
- CHANGELOG.md 新增 [0.2.0-rc.1] 条目(Added/Changed/Non-exhaustive/
Deprecated/Fixed/Migration Guide 六节)
- Cargo.toml version: 0.1.0 → 0.2.0-rc.1
- README 示例列表: 7 → 10(新增 quick_start / end_to_end /
simple_visit),依赖版本 0.1 → 0.2
验收: 人工 review + git diff 确认版本号与示例数对齐。
|
2026-07-05 19:50:10 +08:00 |
|
徐涛
|
5b4343a051
|
refactor(agent): StepStatus::Completed 切换至 MessageResponse
StepStatus::Completed 字段类型从废弃的 ChatResponse 切换为 IR 层
MessageResponse,同时清理 task_agent_demo.rs 的 3 处废弃类型引用:
- ChatResponse → MessageResponse (字段映射见 §3.1.2)
- OpenaiChatMessage::assistant_text(t) → Message::assistant(t)
- FinishReason::Stop → StopReason::Stop (Option 包裹同步移除)
移除 src/agent/task.rs 的两处 #[allow(deprecated)] 与
examples/task_agent_demo.rs 顶部 #![allow(deprecated)],零
deprecated warning。
验收: cargo build + clippy -D warnings + test --all-targets 全绿;
cargo run --example task_agent_demo exit 0。
|
2026-07-05 19:48:59 +08:00 |
|
徐涛
|
6e1182e64c
|
feat(core): 14 个公开枚举标记 #[non_exhaustive]
为 v0.2.0-rc.1 API 稳定性收尾。覆盖:
- P0 核心 IR: Message / ContentBlock / ContentBlockType / StreamEvent / HookEvent
- P0 Error: AgentError / LlmError / ToolError / MemoryError / PromptError
- P1 其他: MemoryStrategy / StepStatus / ToolChoice / ResponseFormat
明确不加的: 内部 wire-format (OpenaiChatMessage 等) /
语义已收敛 (Role/ServiceTier 等) / 使用面窄 (Permission 等)。
示例侧的 3 处 Message exhaustive match (prompt_composer /
conversation_memory_demo) 补全 `_` 通配分支,零行为变化。
验收: cargo build + clippy -D warnings + test --all-targets 全绿 (200 passed)
|
2026-07-05 19:47:03 +08:00 |
|
徐涛
|
b8f4fe0fe3
|
docs(AGENTS.md): 添加进度同步规范,明确 roadmap 更新要求
|
2026-07-05 17:40:22 +08:00 |
|
徐涛
|
7574f9c24c
|
docs(roadmap): 标记 Phase 7 SqliteStore 已完成
更新当前状态描述、Phase 7 交付物详情、里程碑 M3 状态、依赖性图谱及下一步行动
|
2026-07-05 17:25:32 +08:00 |
|
徐涛
|
c82af60f81
|
feat(memory): 实现 SqliteStore 持久化
- 新增 src/memory/store/sqlite_store.rs(SqliteStore + 9 个内联测试)
- 基于 rusqlite 0.32(bundled),使用 Arc<Mutex<Connection>> + spawn_blocking
- WAL 模式 + synchronous=NORMAL + busy_timeout=5s + PRAGMA user_version
schema 版本管理
- created_at 归一化为 UTC 的 RFC 3339 TEXT,字典序等价时间序
- 错误精细映射:SqliteFailure/InvalidQuery → InvalidInput;
FromSqlConversionFailure → Serialization;其他 → Storage
- 9 个测试覆盖 CRUD、upsert、prefix/since/offset+limit 过滤、
10 写者 × 10 次并发、持久化 round-trip、trait-box 互换兼容性
依赖:
- rusqlite = { version = "0.32", features = ["bundled"] }
- time 增补 features: parsing, formatting, macros
- dev-dependencies: tempfile = "3"
测试:199 → 200 pass(191 原有 + 9 新增)
|
2026-07-05 17:13:28 +08:00 |
|
徐涛
|
c8a91f6eaf
|
refactor(memory): 将 store.rs 拆分为模块目录,仅结构搬移
- 将 src/memory/store.rs 单体文件拆分为模块根 + store/ 目录结构
- InMemoryStore(struct + impl + Default + 6 个内联测试)整体提取到
src/memory/store/in_memory.rs
- store.rs 保留 MemoryStore trait 与 EvictionPolicy/EvictionConfig
- 外部消费者导入路径 crate::memory::store::MemoryStore 不变
|
2026-07-05 17:09:45 +08:00 |
|
徐涛
|
13edacd775
|
feat(memory): 添加 SqliteStore 持久化方案文档
|
2026-07-05 16:54:29 +08:00 |
|
徐涛
|
821cea8e60
|
feat(docs): 更新 roadmap,标记 Phase 6 交付完成
Phase 6 ToolDef IR 的 5 个子步骤全部标注已完成,新增实际变更摘要,更新里程碑状态及下一步行动计划
|
2026-07-05 10:49:50 +08:00 |
|
徐涛
|
517ef7db32
|
docs: 添加 Phase 6 ToolDefinition IR 正式化实施方案
|
2026-07-05 10:46:46 +08:00 |
|
徐涛
|
4cf5918b9c
|
refactor(llm): 移除 ToolDefinition 别名与遗留 deprecation 抑制点
完成 ToolDef IR 切换的最后清理:移除 ToolDefinition 别名与
OpenaiToolDefinition 的公共 re-export;各调用点(cycle/registry/mcp/agent)
直接使用 ToolDef 并清理对应的 #[allow(deprecated)] 抑制点;新增
roundtrip 测试验证 ToolDef 序列化兼容性。
|
2026-07-05 10:32:35 +08:00 |
|
徐涛
|
9da9b83167
|
feat(llm): 切换至 ToolDef IR 并适配 OpenAI Provider
将 MessageRequest.tools 切换为 Provider 无关的 ToolDef IR;
ToolDefinition 别名切换指向 ToolDef,registry/mcp 构造去掉
strict 字段;OpenAI 适配层通过 From 转换将 ToolDef 转为
OpenaiToolDefinition wire format。Anthropic 适配层字段名一致
无需改动,openai_compat/ollama 委托 GenericOpenaiProvider 无影响。
|
2026-07-05 10:14:32 +08:00 |
|
徐涛
|
b1875192fd
|
feat(llm): 引入 ToolDef IR 类型
新增 Provider 无关的工具定义中间表示 ToolDef,配套实现双向 From 转换;
旧 OpenaiToolDefinition 标记 doc(hidden)。本次仅新增类型,不影响现有
代码路径。
|
2026-07-05 10:06:52 +08:00 |
|
徐涛
|
d3067e2f53
|
docs(roadmap): 更新 Phase 5 完成状态和下一阶段计划
|
2026-07-05 09:04:44 +08:00 |
|
徐涛
|
5648b1d217
|
style(tools, llm): 统一导入顺序与代码格式
|
2026-07-05 08:19:13 +08:00 |
|
徐涛
|
98dfe6c1ed
|
feat(llm): 完成 Phase 5 热身准备(Ollama / non_exhaustive / ProviderConfig)
Phase 5 三个 Step 全部落地:
Step 5.2 — Ollama Provider
- 新增 OllamaProvider newtype 包装(默认 localhost:11434/v1,零 API key)
- ProviderType 新增 Ollama 变体与 FromStr 解析
Step 5.3 — #[non_exhaustive] 前置标记
- ProviderType / StopReason / FinishReason / EvictionPolicy 加 #[non_exhaustive]
- 编译期兼容护栏,避免下游 silent break
Step 5.1 — ProviderConfig 扩展
- 加 timeout_secs / max_retries 字段、Default、from_env(prefix)
- create_provider 各分支通过 pub(crate) from_parts 一次性构造并注入 timeout
(同时避开 Anthropic 的 default_headers 与双重 client 构造)
- map_reqwest_error 改为方法读取 self.timeout_secs(移除硬编码 120s)
- AnthropicProvider::with_timeout 同值短路,with_client 标 #[deprecated]
- DeepSeek / Qwen 加公开 with_client,new_with_client 走代理
- 7 个新测试:5 个 from_env 单元测试 + 3 个 timeout 传导 wiremock
(OpenAI Chat / DeepSeek / Anthropic)
- Cargo.toml 加 temp-env dev-dep
|
2026-07-05 08:12:40 +08:00 |
|
徐涛
|
9e476e79bb
|
merge: 合并 release/v0.1 全部修改(4 个 commit 含 v0.2 路线图与 Phase 5 实施方案)
|
2026-07-05 07:32:23 +08:00 |
|
徐涛
|
3bd135ec98
|
docs(roadmap): 添加 Phase 5 warmup 实施方案
明确 Step 5.2 Ollama Provider、Step 5.3 non_exhaustive 前置标记、
Step 5.1 ProviderConfig 扩展三个独立 Step 的执行顺序与交付物
|
2026-07-05 07:32:19 +08:00 |
|
徐涛
|
76f3235ed7
|
docs(roadmap): 更新 v0.2 规划为 8 个增量 Phase 并细化实施步骤
|
2026-07-04 10:32:24 +08:00 |
|
徐涛
|
6315f2d008
|
docs: 添加 opencode 子代理调度分发与合并机制调研笔记
|
2026-07-04 10:19:54 +08:00 |
|
徐涛
|
fba78f5f33
|
docs(roadmap): 更新路线图为 v0.2 生产就绪规划
同步 v0.1.0 发布状态,将 v0.2+ 扩展项重
组为 12 项基础功能和 ContextSlot 上下文管
理,明确 v0.3+ 展望及边界范围
|
2026-07-04 08:11:09 +08:00 |
|
徐涛
|
3c1a3ee62e
|
docs: 修正 v0.1 release URL 到实际 remote
CHANGELOG.md:91 的对比链接从 github.com/anomalyco/agcore
改为实际 remote git.archgrid.xyz/xt/agcore(Gitea 1.26.1),
避免 tag 发布后 CHANGELOG 链接 404
v0.1.0
|
2026-07-04 07:07:01 +08:00 |
|
徐涛
|
8dcd1f2482
|
docs(v0.1): 同步 roadmap 并初始化 CHANGELOG
- docs/roadmap.md:更新顶部状态至 v0.1 发布完成(182 测试 / 0 警告 / 7 离线示例),末尾追加 v0.1 发布里程碑章节
- CHANGELOG.md:按 Keep a Changelog 规范记录 0.1.0 的 Added / Changed / Deprecated / Fixed / Removed 及版本基线
|
2026-07-04 06:54:13 +08:00 |
|
徐涛
|
602bd43fce
|
fix(llm,docs): 修复 Phase C 审查发现的两个警告
- LlmError::Request 变体补可操作建议:请检查 Provider 端点地址(base_url)和网络连通性
- README.md Mermaid 依赖图删除 Agent --> Prompt 边(编译级不存在)
- README.md 依赖规则文本同步:明确 agent 实际编译依赖为 llm/tools/memory,与 prompt 无直接依赖(system prompt 以 &str 传入)
参考审查:PM Director + SA Director 对 Phase C 的联合审查结论
|
2026-07-04 06:35:21 +08:00 |
|
徐涛
|
a52588cd0f
|
docs: 完善 README 完整版
- 8 节结构:定位 / 快速上手 / 核心模块 / 架构图 / 依赖关系 / 环境变量 / 参考项目 / 许可证
- 快速上手代码段(MockProvider)已验证在外部 crate 离线可编译运行
- 核心模块表覆盖五大模块(llm / prompt / tools / memory / agent)
- ASCII 架构关系图 + Mermaid 模块依赖关系图 + 依赖规则说明
- 环境变量表列出 simple_visit 示例所需变量与推荐值
- 参考项目章节引用 4 个公开 Agent Harness 项目(OpenClaw / Hermes / OpenHuman / OpenHarness)
- 许可证章节同步改为 Apache-2.0 单协议,附标准 boilerplate 并指向 LICENSE 文件
|
2026-07-04 06:21:36 +08:00 |
|
徐涛
|
4fdc62754c
|
feat(errors): 错误消息面向最终用户友好化
- memory::MemoryError 英文 → 中文 + 操作建议(namespace 拼写 / 后端存储 / 数据兼容性)
- llm::LlmError 各变体补充修复建议(API key / 超时 / 上下文压缩)
- tools::ToolError 各变体补充修复指引(注册工具 / 检查 Schema / 调权限 / MCP 握手)
- prompt::PromptError 各变体补充修复指引(注册子模板 / 检查语法 / 调深度限制)
- agent::AgentError::Config 中文化 + 提示需调用的 builder 方法名
|
2026-07-04 06:21:31 +08:00 |
|
徐涛
|
9f5e8702a2
|
chore(license): 添加 Apache-2.0 标准 LICENSE 文件
- 新增 LICENSE(Apache License 2.0 全文,Copyright 2026 AG Core Contributors)
- 项目由双协议改为 Apache-2.0 单协议
|
2026-07-04 06:21:24 +08:00 |
|