徐涛
|
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
|
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 |
|
徐涛
|
2d0d5c1592
|
feat(examples): 新增 Phase B 7 个离线可运行示例
新增 7 个示例覆盖全 Phase 公共 API(不依赖 API key 即可运行):
- agent_session_demo:AgentBuilder → AgentSession → SessionMemory
- custom_tool:BaseTool 注册 + invoke/invoke_all + 权限检查
- prompt_composer:PromptTemplate + PromptComposer + validate_messages
- task_agent_demo:JsonPlanParser + Step 状态机 + 错误路径
- conversation_memory_demo:滑动窗口 + 多角色 + 隔离
- knowledge_search_demo:KnowledgeStore + 关键词检索 + 停用词过滤
- streaming_events_demo:submit_stream 事件消费 + 队列耗尽错误路径
|
2026-07-03 15:50:51 +08:00 |
|
徐涛
|
7b2d2db322
|
feat(llm): 公开 MockProvider 并修复测试与 API 一致性
- 新增 src/llm/mock.rs:公开 MockProvider,实现 chat 与 chat_stream
(chat_stream 从 MessageResponse 拆解为 StreamEvent 序列),含 5 个内联测试
- src/llm.rs 注册 pub mod mock,供示例与外部 crate 引用
- src/agent/session.rs 测试改用 crate::llm::mock::MockProvider,
删除内嵌私有副本,统一公开路径
- src/prompt.rs re-export validate_messages,与 PromptComposer 对齐公开路径
|
2026-07-03 15:50:39 +08:00 |
|
徐涛
|
c084c57e2c
|
refactor(core): 扫清 v0.1 Phase A 技术债
- 修复测试编译回归:补全 session.rs/cycle.rs 测试模块导入;
convert.rs 2 处 irrefutable if let 改为 let
- composer.rs 迁移至 IR:OpenaiChatMessage → Message,
ContentField/OpenaiContentPart → ContentBlock;删除 set_message_name
和 build_request;developer 消息映射为 Message::System
- knowledge.rs 锁修复:std::sync::Mutex → tokio::sync::Mutex;
search() 优化锁粒度(锁内仅 clone IDs,避免锁内异步 IO)
- 标记 ChatResponse / ToolDefinition 为废弃(#[deprecated(since = "0.1.0")]),
内部使用点加 #[allow(deprecated)] 抑制警告
- clippy 清零:合并冗余 if、手动 strip_prefix 改 strip_prefix、
多处 dead_code 抑制、测试代码清理
|
2026-07-03 15:19:37 +08:00 |
|
徐涛
|
c2c0d498ee
|
docs(v0.1): 添加发布实施计划文档
|
2026-07-03 14:13:30 +08:00 |
|
徐涛
|
e54edbc037
|
feat(agent): 移除未使用的导入并简化条件表达式
|
2026-07-03 13:55:24 +08:00 |
|
徐涛
|
9e4f50c955
|
feat(llm): LlmCycle 切换 IR 消息类型,移除 Phase 0 桥接层
核心改动:
- LlmCycle.messages 从 Vec<OpenaiChatMessage> 切换为 Vec<Message>,
移除 Phase 0 引入的 chat_message_to_message / message_to_chat_message
转换函数
- 移除 LlmCycle.system_prompt 字段(FIX-D),调用方通过
Message::system_text() + with_messages() 管理系统提示;
with_system_prompt() 标记 #[deprecated] 保留为过渡期 shim
- submit_stream 简化(FIX-E):Item = StreamEvent 不再带 Result 包装,
错误用 StreamEvent::Error 传出;self.messages 不再自动 push_message,
调用方在收到 MessageComplete 后手动调用 cycle.push_message()
- compact.rs 适配 Message 类型 + ContentBlock 估算;microcompact
跳过 is_error:true 的 ToolResult(FIX-F),保留 LLM 错误诊断
- ConversationMemory 持久化从 OpenaiChatMessage 切换为 Message
- ToolInvocation 增加 tool_call_id 字段(FIX-A),
invoke/invoke_all 签名增加 tool_call_id 参数
调用方迁移:
- AgentSession::submit_turn 用 Message::system_text() + with_messages()
- simple_visit example 同步迁移
测试 177 passed / 0 failed(compact 新增 5 个单元测试覆盖 FIX-F + 估计全变体)。
|
2026-07-02 22:48:00 +08:00 |
|
徐涛
|
a74c24b6fe
|
feat(llm): 重写 Provider 适配层,支持 OpenAI Chat / Anthropic / DeepSeek / Qwen
重写 OpenaiChatProvider:移除 Phase 0 临时桥接,实现真实流式状态机
(ContentBlockStart / *Delta / ContentBlockEnd / ToolCallEnd),
MessageComplete.full_response 由 PartialMessageResponse::finalize 产出。
新增 AnthropicProvider:实现 Messages API + SSE 事件序列
(message_start → content_block_start → content_block_delta →
content_block_stop → message_delta → message_stop),
529(overloaded)映射为 RateLimit;thinking signature 由
partial.set_thinking_signature 内部写入。
新增 DeepSeekProvider / QwenProvider:OpenAI-compatible 协议的
newtype 包装,共享 GenericOpenaiProvider 的 HTTP / SSE / 转换逻辑;
Qwen 通过 extra_headers 注入 X-DashScope-SSE: enable。
新增 convert.rs 公共转换模块:从 Phase 0 cycle.rs / Phase 0
OpenaiProvider 桥接层提取 from_openai / to_openai /
content_to_blocks / blocks_to_content,避免跨 Provider 重复逻辑。
新增 wiremock dev-dependency + 14 个集成测试:
- OpenaiChatProvider:基础文本 / 401 / 500 / 流式 MessageComplete
- AnthropicProvider:基础 / 401 / 529 / 流式 SSE 序列 / max_tokens 默认值
- DeepSeek / Qwen:基础文本响应
171 个测试全部通过(之前 157,新增 14)。
|
2026-07-02 22:24:30 +08:00 |
|
徐涛
|
7c299f1cfd
|
feat(llm): 新增 IR 类型层 + 切换 LlmProvider trait 签名
引入跨 Provider 统一的新类型系统:
- Message 扁平大枚举(System/User/UserImage/Assistant/ToolResult)
- MessageRequest + MessageResponse + StreamEvent(高精度 IR)
- PartialMessageResponse 含 apply_to/finalize 汇聚算法
- ProviderType enum 扩展 + ProviderCapabilities
切换 LlmProvider trait 签名为 chat(MessageRequest) → MessageResponse,
chat_stream 返回 Stream<Item = Result<StreamEvent, LlmError>>,新增 capabilities()。
StreamEvent 命名冲突处理:旧变体迁移至 old_stream::LegacyStreamEvent,
stream.rs 通过 pub use 重新导出新高精度事件。
OpenaiProvider 添加 Phase 0 临时桥接(MessageRequest ↔ OpenaiChatRequest 转换),
标注 ponytail: Phase 0 临时桥接 标记,Phase 1 重写时移除。
测试 147 passed / 0 failed(新增 31 个新类型测试)。
|
2026-07-02 21:58:07 +08:00 |
|
徐涛
|
925c8f9729
|
docs: 更新方案文档,补充 StreamEvent 迁移和 OpenaiProvider 桥接方案
|
2026-06-30 22:59:05 +08:00 |
|
徐涛
|
832ebf2665
|
docs(phase0): 新增 Phase 0 实施计划文档
定义类型层落地计划,涵盖新类型定义、Trait 签名切换及上游适配方案
|
2026-06-30 22:22:12 +08:00 |
|
徐涛
|
000cd2022d
|
feat(llm): 实现 Provider 重构方案并更新文档
根据复核反馈修正以下内容:
- 补充 §2.4 中扁平大枚举对 9e 依赖验证的说明
- 消除 §2.3 MessageComplete 冗余字段
- 明确 Phase 0 add-only 策略和 trait 签名切换时点
- 补充 HTTP mock 策略和兼容性验证标准
|
2026-06-26 08:12:12 +08:00 |
|
徐涛
|
ac7fca8b40
|
feat(docs): 新增 LLM Provider 重构方案文档
|
2026-06-25 23:07:22 +08:00 |
|
徐涛
|
f639229d09
|
docs: 添加 commit body 规则,禁止逐文件列举变更
|
2026-06-24 17:00:43 +08:00 |
|
徐涛
|
4423024974
|
docs: 更新 compact 主题状态为已推演
|
2026-06-22 08:43:48 +08:00 |
|
徐涛
|
3babc5567f
|
enhance(docs): 补全 compact 在 IR 上的改法推演结论
|
2026-06-22 06:52:04 +08:00 |
|
徐涛
|
3ddd0b6d80
|
enhance(docs): 更新 system prompt 双重表达冲突推演结论为方案 D
|
2026-06-22 06:34:11 +08:00 |
|
徐涛
|
80d44ee687
|
docs(AGENTS): 添加 Commit 提交流程说明
|
2026-06-19 08:23:00 +08:00 |
|
徐涛
|
ee7fcab71c
|
docs(9): 完善 Anthropic 流式状态机设计推演结论
|
2026-06-18 06:51:13 +08:00 |
|
徐涛
|
8c9324350b
|
docs(9d): 补全 OpenAI 流式转换推演结论
|
2026-06-18 06:34:20 +08:00 |
|
徐涛
|
c0eae92b10
|
docs: 更新方案9推演结论并调整StreamEvent设计
|
2026-06-17 22:55:47 +08:00 |
|
徐涛
|
8686a2e1d6
|
docs(llm): 新增 LLM Provider 统一接口设计文档
|
2026-06-15 23:07:33 +08:00 |
|
徐涛
|
829be90d19
|
docs: 新增示例程序方案文档
|
2026-06-11 22:49:27 +08:00 |
|
徐涛
|
ce1f1aaca0
|
feat(agent): 实现 Phase 4c 会话级记忆功能
- 新增 `SessionMemory` 结构体,基于 `MemoryStore` 按 namespace 隔离键值数据
- `AgentBuilder` 增加 `session_memory_backend` 配置入口
- `RuntimeBundle` 透传 `session_memory_backend` 字段
- `AgentSession` 将内联 `HashMap` 替换为完整的 `SessionMemory`,`set_session_data` 和 `get_session_data` 改为异步方法
- 新增 3 个内联测试,全量测试从 113 增至 116,clippy 0 警告
|
2026-06-11 22:14:15 +08:00 |
|
徐涛
|
4de7db0b2c
|
docs(roadmap): 更新 Phase 4b 状态为已完成
|
2026-06-11 21:57:10 +08:00 |
|
徐涛
|
2b189880a9
|
feat(agent): 实现 Agent Runtime 核心胶水层 (Phase 4a)
- 添加 Agent trait、AgentSession、RuntimeBundle、AgentBuilder
- 添加 Plan/Step/StepStatus 任务规划数据结构
- 添加 AgentError 统一错误类型(聚合 LlmError/ToolError/MemoryError)
- 实现 submit_turn 单轮对话流程(含 hook 触发与 cost 累计)
- 扩展 LlmCycle 支持 Arc<dyn LlmProvider>
- 扩展 HookEvent 添加 OnTurnStart/OnTurnEnd
- 更新 roadmap 状态
|
2026-06-11 21:45:28 +08:00 |
|
徐涛
|
59ec0f5597
|
docs(roadmap): 将 Phase 4 拆分为 4a/4b/4c 三个独立子阶段
|
2026-06-10 22:38:32 +08:00 |
|
徐涛
|
be595a6771
|
docs(agent-runtime): 补充 SessionMemory 设计与多 context 切换备忘
- 在方案文档中新增 `SessionMemory` 作为会话级记忆桥接组件
- 将 AgentSession 的 `agent_name: String` 改为 `agent: Arc<dyn Agent>`
- RuntimeBundle 新增 `session_memory_backend` 可选字段
- 新增 `docs/note-context-switch-design.md` 记录多 context 切换方案
- 更新 Roadmap 状态并补充 Phase 4 范围界定
- Phase 4 仅实现 SessionMemory 数据结构与 API,ContextManager 延后至 v0.2+
|
2026-06-10 22:22:18 +08:00 |
|
徐涛
|
75f8736931
|
feat(docs): 添加 OpenCode 借鉴的 Agent 切换与 Prompt 动态扩展项
|
2026-06-10 08:35:56 +08:00 |
|
徐涛
|
b539f37eeb
|
docs: 添加 OpenCode Agent 切换机制调研笔记
|
2026-06-10 06:52:24 +08:00 |
|
徐涛
|
336920554a
|
docs(agent): 补充 Phase 4 Agent Runtime 方案文档与设计决策记录
|
2026-06-09 22:32:59 +08:00 |
|
徐涛
|
63c50e1fc7
|
docs(roadmap): 补充 v0.2+ 扩展项与参考项目调研沉淀
|
2026-06-09 22:32:48 +08:00 |
|
徐涛
|
0c51bb78a6
|
docs(roadmap): 更新 Phase 3 记忆系统为已完成状态
|
2026-06-09 21:34:25 +08:00 |
|
徐涛
|
2ecc0b4001
|
feat(memory): 添加记忆系统模块
|
2026-06-08 08:42:43 +08:00 |
|
徐涛
|
1fe7f02281
|
docs(memory): 更新记忆系统方案文档
|
2026-06-07 23:01:28 +08:00 |
|
徐涛
|
6dc7ee492f
|
docs(memory): 精简记忆系统方案,移除知识图谱和基于召回价值的淘汰策略
|
2026-06-07 22:42:53 +08:00 |
|
徐涛
|
b571f530f8
|
docs: 新增知识图谱与高级检索设计文档(Phase 4 备用)
|
2026-06-07 22:42:49 +08:00 |
|
徐涛
|
59994bf55e
|
chore: 将编辑器最大行宽从 100 调整为 120
|
2026-06-07 22:42:42 +08:00 |
|
徐涛
|
fb1c530358
|
feat(memory): 添加知识图谱标签复用查询与容量约束
|
2026-06-07 13:35:32 +08:00 |
|
徐涛
|
f818bd59f5
|
chore: 添加 .codegraph 目录到 gitignore
|
2026-06-07 13:27:26 +08:00 |
|
徐涛
|
8573c6eb92
|
docs(记忆系统): 添加记忆系统设计方案
|
2026-06-07 13:24:49 +08:00 |
|
徐涛
|
692bff5751
|
feat(docs): 更新路线图 Phase 2 工具系统完成状态
将所有 Phase 2 待办项标记为已完成,更新当前状态和下一步行动
|
2026-06-07 10:57:20 +08:00 |
|
徐涛
|
b6e7acfb0f
|
feat(tools): 添加工具系统框架与 MCP 协议客户端
|
2026-06-07 10:57:15 +08:00 |
|
徐涛
|
e598f6d3ee
|
docs(5-tool-system): 更新工具系统方案文档,完善 Phase 2 实现细节
- 在 BaseTool 中添加 ToolContext 执行上下文参数,包含 session_id、trace_id 和取消令牌
- 更新 LlmCycle 工具循环逻辑:修正消息推送顺序,新增 max_tool_turns 独立字段
- 补充 McpClient 子进程运行时状态 ChildProcessState 设计
- 添加消息压缩 maybe_compact() 方法描述
- 明确 submit_stream_with_tools() 推迟至 Phase 3 实现
- 更新实现计划中各步骤的详细变更
|
2026-06-07 10:23:36 +08:00 |
|
徐涛
|
5d6bb5e983
|
feat(tools): 完善工具系统设计方案并添加扩展性分析
更新工具系统方案文档,补充 Token 消耗分析、错误分类策略、`submit_request()` 重构说明及流式事件职责划分,新增第9节未来扩展性分析,明确 `ToolContext` 注入、`ToolEntry` 元数据、
`ToolOutput` 枚举等扩展路径,更新实现计划以保持与设计一致
|
2026-06-07 10:13:19 +08:00 |
|
徐涛
|
0d58d07ab1
|
docs: 添加工具系统方案设计文档
|
2026-06-03 23:16:59 +08:00 |
|
徐涛
|
dd9c5be1fe
|
docs(roadmap): 更新路线图至 Phase 1 完成状态
|
2026-06-03 09:00:44 +08:00 |
|
徐涛
|
993ae0eb4b
|
feat(prompt): 添加提示词工程模块并扩展LLM周期接口
新增 `prompt` 模块,包含模板引擎、组合器和错误类型,同时在`LlmCycle`中增加直接操作消息历史的方法和`submit_messages`接口
|
2026-06-03 06:18:16 +08:00 |
|
徐涛
|
7f5513adf3
|
docs(prompt): 添加提示词工程方案设计文档
|
2026-06-02 22:19:15 +08:00 |
|
徐涛
|
ea1e5c7f7e
|
docs(roadmap): 更新 Phase 0 状态标记为已完成
|
2026-06-02 09:00:46 +08:00 |
|
徐涛
|
32f3edaf19
|
feat(llm): 实现 Phase 0 剩余四个模块
实现 ProviderRegistry、HookExecutor、StreamEvents 和 Auto-compaction 模块,并集成到 LlmCycle 中
|
2026-06-02 08:51:42 +08:00 |
|
徐涛
|
69b6dd942b
|
docs: 将方案文档从 specs 目录迁移至 docs 目录
|
2026-06-01 23:06:50 +08:00 |
|
徐涛
|
99b304e120
|
chore(config): 添加 OpenCode 配置文件
|
2026-06-01 23:06:43 +08:00 |
|
徐涛
|
0267da93f1
|
docs(agents): 完善 AGENTS.md 中的工作准则和规范细节
补充精准变更原则的约束条件,更新测试要求为更严格的核心逻辑验证策略,
细化依赖升级的分级策略,新增 Git Scope 推导规则和示例,
重构模块组织章节并提供完整目录结构示例,新增文档方案规范章节
|
2026-06-01 23:06:19 +08:00 |
|
徐涛
|
af5a580b5e
|
feat(llm): 添加 Provider 工厂方法和枚举类型
- 新增 `ProviderType` 枚举和 `FromStr` 解析,支持通过环境变量选择 Provider
- 新增 `ProviderConfig` 结构体和 `create_provider` 工厂方法,统一 Provider 创建
- 更新示例代码使用新的工厂模式,移除直接实例化 OpenaiProvider 的方式
- 移除 Assistant 消息中未使用的 `reasoning_content` 字段
|
2026-05-14 13:15:30 +08:00 |
|
徐涛
|
f7e73dd561
|
feat(examples): 添加 LLM 单轮对话示例
|
2026-05-14 09:00:27 +08:00 |
|
徐涛
|
28635e28d5
|
feat(llm): 添加 tracing 日志与 ContentField 扩展
为 OpenAI 消息类型引入 ContentField 以支持 string 和 array 两种 content 格式,新增 reasoning_content 字段;添加 tracing 日志初始化函数及请求
/响应日志;修正多处文件末尾换行与 import 顺序。
|
2026-05-14 09:00:22 +08:00 |
|
徐涛
|
e22c176643
|
feat(llm): 替换 ToolChoice 的自动派生为手动序列化
处理自定义 JSON 序列化逻辑,支持字符串值(`none`/`auto`/`required`)和对象格式(`{"type":"function","function":{"name":"..."}}`)。反序列化时向前兼容两种格式。
|
2026-05-14 08:36:08 +08:00 |
|
徐涛
|
a4b7b3b9f9
|
feat(llm): 重构 types.rs 为完整的 OpenAI 兼容类型系统
将 `types.rs` 拆分为模块化目录,所有类型派生 `Serialize/Deserialize`,
并新增 `OpenaiChatChunk`、`Role` 扩展等 30+ 缺失类型
消除对 `cycle/usage.rs` 的反向依赖,`Usage`/`CostTracker` 移至 `types/usage.rs`
|
2026-05-13 20:51:05 +08:00 |
|
徐涛
|
54387a5f64
|
chore: 移除 .gitignore 中的 Git 换行符并添加项目忽略目录
|
2026-05-12 09:11:56 +08:00 |
|
徐涛
|
91d32a6a82
|
feat(llm): 添加 LLM 调用周期核心模块
新增 LLM 调用生命周期引擎,包含 Provider 抽象、OpenAI 兼容实现、
可重试机制及 Token 用量追踪。移除原有的占位测试代码。
添加所需的 Rust 依赖(tokio、reqwest、serde 等)。
|
2026-05-12 06:06:24 +08:00 |
|
徐涛
|
b21e163be0
|
docs(AGENTS.md): 更新交互要求,要求全程使用中文
|
2026-05-12 06:06:16 +08:00 |
|
徐涛
|
2f58c803bf
|
chore: 增加代码格式规整规则。
|
2026-05-11 21:54:14 +08:00 |
|
徐涛
|
93de86e02d
|
docs(specs): 添加项目Roadmap文档。
|
2026-05-11 14:51:00 +08:00 |
|
徐涛
|
16c3e14cb6
|
docs(llm): 增补 LLM 调用周期控制实施方案
|
2026-05-11 13:22:57 +08:00 |
|
徐涛
|
7ce6216a5f
|
chore: 更新AGENTS.md指引文件
|
2026-05-11 13:22:16 +08:00 |
|
徐涛
|
9145b4d24f
|
docs(llm): 添加 LLM 调用周期控制实施方案
新增文档 `specs/llm-call-lifecycle.md`,详细描述了 LLM 调用周期控制的目标、范围、模块设计、依赖及测试计划。
|
2026-05-07 10:41:54 +08:00 |
|
徐涛
|
2b523a3e72
|
docs: clarify commit message description rule
|
2026-05-07 10:41:18 +08:00 |
|