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 新架构对比
This commit is contained in:
2026-06-09 20:52:24 +08:00
parent 937556917c
commit 23c7fbac62
30 changed files with 799 additions and 149 deletions
+34 -5
View File
@@ -1,16 +1,30 @@
//! JSON 工具定义 — 像 curl + jq 一样描述一个工具
//! ## JSON 工具定义格式
//!
//! 三要素:URL → 取节点 → 选字段
//! 本模块定义了一种"声明式工具"格式 —— 只需要写一个 JSON 文件就能注册一个新工具,
//! 无需改 Rust 代码、重新编译。
//!
//! ### 设计理念:像 curl + jq 一样描述工具
//!
//! ```json
//! {
//! "name": "stocks",
//! "description": "股票行情",
//! "url": "https://api.example.com/stocks",
//! "description": "股票行情查询",
//! "url": "https://api.example.com/stocks/{{code}}",
//! "method": "GET",
//! "headers": { "Authorization": "${env:API_KEY}" },
//! "extract": "data.items",
//! "fields": ["name", "price"]
//! }
//! ```
//!
//! ### 三要素
//! 1. **URL** — API 端点模板(支持 `{{var}}` 和 `${param:name:type}` 传参)
//! 2. **取节点** — `extract` 字段指定 JSON 点路径(类似 jq)
//! 3. **选字段** — `fields` 字段只保留需要的字段
//!
//! ### 参数推导
//! 自动从 URL/Body/Headers 中推导参数定义(无需手动写 parameters 字段),
//! 也支持显式 `parameters` 声明以获得更精确的类型描述。
use std::collections::HashMap;
@@ -60,7 +74,22 @@ impl<'de> serde::Deserialize<'de> for HttpMethod {
}
}
/// 一个 JSON 工具定义
/// ## JSON 工具定义ToolDef
///
/// 描述一个通过 HTTP API 调用的外部工具。
///
/// ### 字段说明
/// * `name` — 工具名称,用作 `call_capability` 的 name
/// * `description` — 工具描述(给 LLM 看的)
/// * `url` — URL 模板,支持 `{{var}}` 和 `${param:name:type}` 两种传参
/// * `method` — HTTP 方法(GET/POST/PUT/DELETE),默认 GET
/// * `headers` — HTTP 请求头,值可包含 `${env:KEY}`(环境变量)、
/// `${cmd:command}`(命令输出)、`${param:name:type}`(参数值)
/// * `body` — POST/PUT 的 JSON body 模板,同样支持变量替换
/// * `parameters` — 显式参数声明(可选,未声明时自动推导)
/// * `extract` — JSON 提取路径,如 "data.items"
/// * `fields` — 筛选要保留的字段
/// * `timeout` — 超时秒数,默认 30
#[derive(Debug, Clone, serde::Deserialize)]
pub struct ToolDef {
/// 工具名称,用作 call_capability 的 name