docs(tools): fix calculator param names and channel list, document reload_config

- about-picobot tools reference listed calculator functions under an
  'action' column; the real parameter is 'function'. Rewrite the table with
  per-function input parameters (expression/values/x/decimals/base/a/b/p).
- Add missing reload_config entry.
- send_message schema now derives the available channel list dynamically
  instead of hardcoding feishu/cli_chat.
This commit is contained in:
xiaoxixi 2026-08-21 15:21:01 +08:00
parent 334e98d894
commit f7f3bb7f23
2 changed files with 27 additions and 16 deletions

View File

@ -194,6 +194,10 @@ Cron 不是一个带 `action` 的统一工具,而是七个独立工具;仅
无参数时返回可读报告;`json=true` 返回结构化报告。核心必需项、当前配置启用后必需的依赖、可选功能分别标记。`fd` 与 Debian/Ubuntu 的 `fdfind` 是同一个首选文件搜索程序;只有传统 `find` 会产生降级警告。浏览器启用时会检查 CLI、可执行路径并通过隔离的完整 offline doctor 分别验证浏览器安装、真实 headless 启动和环境。该工具只读,与 CLI `picobot health [--json]``/health` 斜杠命令以及 WebUI“配置 → 健康检查”复用同一个 `HealthService` 无参数时返回可读报告;`json=true` 返回结构化报告。核心必需项、当前配置启用后必需的依赖、可选功能分别标记。`fd` 与 Debian/Ubuntu 的 `fdfind` 是同一个首选文件搜索程序;只有传统 `find` 会产生降级警告。浏览器启用时会检查 CLI、可执行路径并通过隔离的完整 offline doctor 分别验证浏览器安装、真实 headless 启动和环境。该工具只读,与 CLI `picobot health [--json]``/health` 斜杠命令以及 WebUI“配置 → 健康检查”复用同一个 `HealthService`
## reload_config — 重载配置
重新读取并校验 PicoBot 配置,然后让 Gateway 优雅切换到新配置。无参数,仅 Root 交互 Agent 可用;仅在用户明确要求重新加载配置时调用,会先验证再切换,失败则保留旧运行代。
--- ---
## MCP 工具 ## MCP 工具
@ -220,19 +224,20 @@ Cron 不是一个带 `action` 的统一工具,而是七个独立工具;仅
## calculator — 计算器 ## calculator — 计算器
数学表达式计算和统计函数。 数学表达式计算和统计函数。`function` 指定要执行的计算。
| action | 说明 | | function | 相关参数 | 说明 |
|--------|------| |----------|----------|------|
| `evaluate` | 计算表达式 | | `evaluate` | `expression` | 计算表达式 |
| `sum` | 求和 | | `sum` / `count` / `range` | `values` | 求和 / 计数 / 极差 |
| `average` | 平均值 | | `average` | `values` | 平均值 |
| `median` | 中位数 | | `median` | `values` | 中位数 |
| `mode` | 众数 | | `mode` | `values` | 众数 |
| `stdev` / `variance` | 标准差/方差 | | `stdev` / `variance` | `values` | 标准差 / 方差 |
| `min` / `max` | 最小值/最大值 | | `min` / `max` | `values` | 最小值 / 最大值 |
| `log` | 对数 | | `log` | `x`, 可选 `base` | 对数base 默认 10 |
| `factorial` | 阶乘 | | `factorial` | `x` | 阶乘 |
| `round` | 四舍五入 | | `round` | `x`, `decimals` | 四舍五入 |
| `percentage_change` | 变化百分比 | | `percentage_change` | `a`(旧值), `b`(新值) | 变化百分比 |
| `percentile` | 百分位数 | | `percentile` | `values`, `p` | 百分位数p 0100 |
| `clamp` | `x`, `min_val`, `max_val` | 夹取到区间 |

View File

@ -70,12 +70,18 @@ target_chat_id 支持两种格式:<channel>:<chat_id>(发送到该聊天下
} }
fn parameters_schema(&self) -> serde_json::Value { fn parameters_schema(&self) -> serde_json::Value {
let channels = self
.available_channels
.iter()
.cloned()
.collect::<Vec<_>>()
.join(", ");
serde_json::json!({ serde_json::json!({
"type": "object", "type": "object",
"properties": { "properties": {
"target_chat_id": { "target_chat_id": {
"type": "string", "type": "string",
"description": "目标会话ID。支持两种格式: 1) <channel>:<chat_id> 发送到该聊天下最新活跃会话, 无则自动创建; 2) <channel>:<chat_id>:<dialog_id> 发送到指定会话, 过期则自动激活。channel 可选值: feishu, cli_chat" "description": format!("目标会话ID。支持两种格式: 1) <channel>:<chat_id> 发送到该聊天下最新活跃会话, 无则自动创建; 2) <channel>:<chat_id>:<dialog_id> 发送到指定会话, 过期则自动激活。channel 可选值: {channels}")
}, },
"content": { "content": {
"type": "string", "type": "string",