重构:架构重组 + 6轮缺陷修复
Phase 1: 工具模块统一 - 新建 tools/executor.rs — 统一工具执行器,消除 main/worker/daemon 三处重复 - tools/builtin.rs → tools/registry.rs - tools/mod.rs 新增 build_tools_list() / build_env_map(),daemon/main 共用 Phase 2: 主模块重组 context/ → core/ - core/pipeline.rs — 消息处理流水线 (从 main.rs 抽取 listen_loop) - core/session.rs — ChatSession 会话管理 - core/context.rs — 上下文构建 + token 估算 - core/summary.rs — 摘要管理 (溢出/空闲触发) - core/memory.rs — MemoryStore 长期记忆 - main.rs 精简至 ~200 行 Phase 3: listen 模式全局会话锁 + Pipeline 收尾 - PipelineContext 持有全局 conversation_lock,所有消息串行处理防串话 Phase 4: wechat/ → channel/ 重命名 缺陷修复: - daemon send_frame 失败后消息重回 waiting 队列 - daemon 审批通过后按 code_hash 精确执行,不重跑 LLM - listen 模式执行器从 session.current_user_id 动态获取用户 - listen 模式 LLM 用量统计传入实际 user_id - send_text 响应校验改用 serde_json::Value 宽松解析 - pi_subagent 工具 (JSON 事件流模式, RiskLevel::High, timeout clamp 1-300) - listen 审批超时 300s→60s,cancel_by_code 精确保护 - approval.rs 新增 cancel_by_code 方法同步 DB
This commit is contained in:
@@ -64,15 +64,15 @@ ias service
|
||||
│ main.rs → clap 子命令路由 │
|
||||
├─────────────────────────────────────────────────┤
|
||||
│ ┌──────────┐ ┌──────────┐ ┌───────────────┐ │
|
||||
│ │ WeChat │ │ LLM │ │ Tools │ │
|
||||
│ │ 长轮询 │ │ DeepSeek │ │ 内置工具 │ │
|
||||
│ │ HTTP API │ │ 流式对话 │ │ 审批管理 │ │
|
||||
│ │ Channel │ │ LLM │ │ Tools │ │
|
||||
│ │ 微信通道 │ │ DeepSeek │ │ 统一执行器 │ │
|
||||
│ │ 长轮询 │ │ 流式对话 │ │ 审批管理 │ │
|
||||
│ └────┬─────┘ └────┬─────┘ └──────┬────────┘ │
|
||||
│ │ │ │ │
|
||||
│ ┌────┴──────────────┴───────────────┴────────┐ │
|
||||
│ │ Context / Memory │ │
|
||||
│ │ ChatSession · Token Budget · 摘要压缩 │ │
|
||||
│ │ MemoryStore · 长期记忆 │ │
|
||||
│ │ Core / 主模块 │ │
|
||||
│ │ Pipeline · Session · Context · Summary │ │
|
||||
│ │ Memory · 长期记忆 │ │
|
||||
│ └──────────────────────┬──────────────────────┘ │
|
||||
│ │ │
|
||||
│ ┌──────────────────────┴──────────────────────┐ │
|
||||
@@ -109,26 +109,31 @@ ias service
|
||||
|
||||
```
|
||||
src/
|
||||
├── main.rs CLI 入口 + 命令实现 + 监听循环 + 工具执行器
|
||||
├── main.rs CLI 入口 + 命令实现 (~200行)
|
||||
├── cli.rs clap 子命令定义(login/listen/send/tool 等)
|
||||
├── logger.rs 日志初始化(终端 + 文件滚动)
|
||||
├── state.rs 本地文件状态(auth.json / runtime.json,无DB时降级)
|
||||
├── scheduler.rs 定时任务调度器
|
||||
├── context/ 上下文管理
|
||||
│ ├── types.rs ChatSession(checkpoint/messages/summaries)
|
||||
│ ├── builder.rs Token budget 估算 + 上下文构建 + 摘要触发
|
||||
│ └── tools.rs MemoryStore(HashMap<user_id, Vec<mem>>)
|
||||
├── db/ 数据库
|
||||
│ ├── mod.rs Database 连接池 + 迁移
|
||||
│ └── models.rs CRUD(auth/chat/usage/summary)
|
||||
├── llm/ 对话系统
|
||||
│ ├── types.rs Message / Role / ToolCall / StreamChunk / Usage
|
||||
├── core/ 主模块 — 消息处理流水线
|
||||
│ ├── mod.rs 模块声明
|
||||
│ ├── pipeline.rs 消息处理流水线(接收→上下文→LLM→持久化)
|
||||
│ ├── session.rs 会话管理(ChatSession, checkpoint, token budget)
|
||||
│ ├── context.rs 上下文构建(build_context, token 估算)
|
||||
│ ├── summary.rs 摘要管理(溢出触发, 空闲触发, LLM摘要生成)
|
||||
│ └── memory.rs 长期记忆(MemoryStore, read_summaries)
|
||||
├── channel/ 微信通道
|
||||
│ ├── mod.rs
|
||||
│ ├── types.rs iLink API 协议类型
|
||||
│ └── client.rs HTTP 客户端(login/poll/send/notify)
|
||||
├── llm/ LLM 对话系统
|
||||
│ ├── types.rs Message / Role / ToolCall / StreamChunk
|
||||
│ ├── provider.rs LlmProvider trait + SSE 解析
|
||||
│ ├── deepseek.rs DeepSeek 流式客户端
|
||||
│ └── conversation.rs Conversation(chat + chat_with_tools 工具循环)
|
||||
├── tools/ 工具系统
|
||||
│ ├── types.rs RiskLevel / SkillSpec / SkillResult / ExecutionContext
|
||||
│ ├── builtin.rs BuiltinRegistry 路由
|
||||
├── tools/ 工具模块
|
||||
│ ├── types.rs SkillSpec / SkillResult / RiskLevel
|
||||
│ ├── registry.rs BuiltinRegistry 路由器
|
||||
│ ├── executor.rs 统一工具执行器(Listen/Worker 双模式)
|
||||
│ ├── approval.rs ApprovalManager(确认码 + oneshot 通道)
|
||||
│ └── builtins/ 内置工具实现
|
||||
│ ├── datetime.rs 日期时间
|
||||
@@ -137,9 +142,9 @@ src/
|
||||
│ ├── fetch_page.rs 网页抓取
|
||||
│ ├── memos.rs 备忘录
|
||||
│ └── amap.rs 高德地图(POI/地理编码/路径/旅游规划)
|
||||
├── wechat/ 微信通道
|
||||
│ ├── types.rs iLink API 协议类型
|
||||
│ └── client.rs HTTP 客户端(login/poll/send/notify)
|
||||
├── db/ 数据库
|
||||
│ ├── mod.rs Database 连接池 + 迁移
|
||||
│ └── models.rs CRUD(auth/chat/usage/summary)
|
||||
├── daemon.rs 守护进程(持有 WeChat + DB,spawn worker)
|
||||
├── worker.rs Worker 进程(无状态 LLM 执行)
|
||||
└── ipc.rs Unix Domain Socket 帧协议
|
||||
|
||||
Reference in New Issue
Block a user