Commit Graph

9 Commits

Author SHA1 Message Date
wunianxiao e20cd19e57 chore: 增强日志追踪与代码格式化
- daemon: 添加 LLM 回合开始/结束标记日志,工具执行结果追踪
- daemon: 发送消费者日志增强(显示完整文本、截断用户 ID)
- conversation: 移除日志截断,输出完整工具调用参数和结果
- deepseek: 代码格式化,预留请求/响应摘要日志
- 删除 systemd/ias.service
2026-06-16 22:53:19 +08:00
wunianxiao f608c27f8a refactor: 移除文件状态并修复工具上下文关联 2026-06-16 20:18:34 +08:00
wunianxiao 1d78567102 清理废弃代码,重构长期记忆系统
核心变更:
- 删除 worker.rs + ipc.rs(废弃进程架构)
- 删除 ias listen 路径(cmd_listen / listen_loop / ToolExecutor)
- 合并 ias service → ias daemon --log-file
- 修复 main.rs call_capability 不处理上下文工具的 bug

MemoryStore 重构:
- write_for 空内容防御 + 精确去重
- 缓存结构 Vec<String> → Vec<(i32, String)>(用数据库 id 标识)
- 新增 delete_for / update_for 方法 + LLM 工具定义
- load_if_needed 避免每次消息查 DB
- 缓存 TTL(1h) + 每用户 200 条上限
- read_for limit 参数(默认 30 条)

daemon.rs:
- execute_tool 统一为递归派发,消除 call_capability 重复路由

净减少约 1400 行代码,0 warning,20 测试通过
2026-06-16 11:56:36 +08:00
wunianxiao 5a54368437 工具系统重构与定时任务管理
1. 工具抽象体系
   - 新增 Tool trait + ToolRegistry 注册表
   - 三种工具类型:ApiTool / StdioTool / ShellTool
   - 全局 REGISTRY (LazyLock) 作为主入口
   - BuiltinRegistry 简化为兼容层

2. 定时任务管理工具
   - 新增 manage_scheduled_tasks 工具(ApiTool)
   - 支持 list/add/update/delete/toggle 五种操作
   - 通过 LazyLock 延迟初始化数据库连接池

3. 定时任务分流
   - 新增 task_type 字段(model / system)
   - 模型可自由管理 model 任务
   - system 任务只读,修改操作被拒绝

4. CLI 支持
   - 新增 ias task 子命令(list/add/update/delete/toggle)

5. 清理
   - 删除废弃的 ias-auth 独立二进制
   - SkillResult 增加 Deserialize derive
   - 所有调用点更新为 crate::tools::xxx 新入口
2026-06-10 16:00:47 +08:00
wunianxiao f7d0781090 chore: 修复 clippy 错误(loop never loops → if-let)并应用自动修复 2026-06-10 10:17:25 +08:00
wunianxiao 713cbb7cc3 fix: 修复 daemon 架构中 3 个 blocking 正确性 bug
1. call_capability 元工具不可用
   - execute_tool() 中缺失 call_capability 处理分支
   - 添加解包 {name, prompt} → 提取目标工具并派发的逻辑

2. tool_call_id 传空字符串
   - Tool Consumer 中 tool_call_id 被 _ 忽略,ToolResult 传空串
   - 改为使用 LLM 原始 tool_call_id 传递

3. 高风险工具审批无限循环
   - Tool Consumer 无条件触发审批,approved_tool 从未被读取
   - ToolCall 新增 approved 字段,已批准的工具跳过审批
   - ToolExecutor 根据 approved_tool 设置标记

4. Session TTL 时间戳不更新(should-fix)
   - ToolResult 回喂时更新 last_access,防止长对话被误清理

5. 其他清理
   - load_memories 魔数字符串比较改为 starts_with
   - _sock_path 添加文档说明保留用于兼容
   - MessageKind::ToolCall 新增 approved: bool 字段
2026-06-09 22:10:39 +08:00
wunianxiao 23c7fbac62 feat: 为全部 39 个 Rust 源文件添加系统性中文注释
为整个项目添加了详尽的中文文档注释,覆盖所有模块:

入口与架构:
- main.rs — 架构图、数据流、4 个关键设计决策
- cli.rs — 所有 CLI 子命令中文化
- Cargo.toml — 每个依赖的作用说明
- channel/mod.rs — 渠道标识设计意图

核心守护进程与消息队列:
- daemon.rs — 三消费者架构图、审批流
- queue/* — 公平轮转算法、路由调度架构

LLM 层:
- types.rs — Role/Message/ToolCall 等每个字段含义
- provider.rs — Provider trait 设计 + SSE 解析
- conversation.rs — 工具循环流程图、摘要机制
- deepseek.rs — API 请求格式

上下文管理:
- context/types.rs — ChatSession 消息生命周期
- context/builder.rs — Token 预算管理策略
- context/tools.rs — MemoryStore 双写策略

工具系统:
- tools/mod.rs — 两层元工具架构图
- tools/approval.rs — 审批流程
- tools/definitions.rs — 声明式工具三要素
- tools/subprocess.rs — 执行流程 + 缓存策略

数据库与状态:
- db/* — 5 张表用途、回退策略
- state.rs — 文件存储回退方案
- scheduler.rs — SKIP LOCKED 防重复

已废弃模块:
- ipc.rs — 旧 UDS 协议
- worker.rs — 旧 vs 新架构对比
2026-06-09 20:52:24 +08:00
wunianxiao 937556917c refactor: worker进程 → tokio task 架构 + 多渠道消息队列 + JSON工具系统
核心变更:
- daemon: 废弃 worker 子进程模型,替换为 LLM/Tool/Send 三消费者 tokio task
- queue: 新增公平轮转 MessageQueue + QueueRunner 路由,严格 ChannelId 渠道隔离
- channel: ChannelId(platform + user_id) 统一渠道标识,替代散列 user_id+platform
- tools: 全部工具统一经由 execute_tool() → Tool Consumer 单一执行路径
- llm: chat_with_tools 返回 ChatResult,支持异步工具调用 → 保留/恢复 session
- tools: 新增 JSON 工具定义系统 (ToolDef) 及 SubprocessRunner (HTTP 模板引擎)
- bin: ias-auth 独立 JWT 生成器,ias-fetch headless Chrome 网页抓取
- 所有出站消息通过 Send Consumer 队列转发,无直接 send_text 调用
- Session TTL 清理 (5分钟),QueueRunner 通道容错
- cargo check 零警告,cargo test 23/23 通过
2026-06-09 16:32:49 +08:00
wunianxiao b2fe054eaf feat: 高德地图工具 + 多轮 bug 修复
新增:
- 高德地图 6 个内置工具: amap_poi_search, amap_geocode, amap_reverse_geocode, amap_route_plan, amap_travel_plan, amap_map_link
- CLI 子命令: ias tool amap (poi-search/geocode/route-plan/travel-plan/map-link)
- 工具优先级指南: build_capability_guide() 含 amap > weather > web_search 优先级
- DEFAULT_SYSTEM_PROMPT 内置工具优先级说明(不再依赖环境变量)

Bug 修复:
1. (HIGH) call_capability 参数契约修复 — 新增 unpack_call_params() 统一解包 prompt 字段
2. (MEDIUM) 天气 hours=0 不再调用逐时 API
3. (MEDIUM) 长期记忆 daemon 双写缓存+DB,无 DB 不丢失
4. (HIGH) 审批流程状态语义修复 — handle_reply 返回 ApprovalDecision,拒绝/过期不再当作通过
5. (HIGH) 审批有效期基于 expires_at 时间戳而非 receiver drop
6. (MEDIUM) 摘要保存改为 current_user_id 与读取一致
7. (MEDIUM) worker 审批通过后删除孤立 tool result,仅保留 approved_tool 状态放行

架构:
- daemon + worker IPC 架构 (Unix Domain Socket)
- build_capability_guide 共享函数消除 main.rs/worker.rs 重复
2026-06-03 17:01:04 +08:00