docs(perf): 查清 36 个未注册工具的真因并纠正我的两处错误

实测定位(此前表述有误,一并纠正):
- 真因: tools.alsoAllow 声明 37 个 feishu_* 工具,仅 feishu_chat 注册成功;
  其余 36 个由 openclaw-lark 插件提供,而该插件在 plugins.entries 里被显式
  设为 enabled:false,因此未加载(已用 http server listening 日志确认只加载 6 个插件)
- 纠错1: 并非 tools.allow 为空数组 —— 实际 tools.allow 未设置、tools.alsoAllow 37 条
- 纠错2: 并非历史告警 —— 告警仍在持续(当天 20 次,最后 16:27:34)
- 补充两个互斥修法(精简声明 / 启用插件)及各自代价
This commit is contained in:
yangxuan
2026-09-16 16:31:06 +08:00
parent cb9c8f24e8
commit 94720f78cc
@@ -222,17 +222,45 @@ openclaw models list --provider deepseek
| 手段 | 动作 | 预期 |
|---|---|---|
| 收敛工具集 | 让高频 agent 少暴露「用不上」的工具(当前 `tools.profile=full`;本机 `tools.allow` 为空,需在 profile/插件注册层收窄) | 模型少做无效试探,轮次下降(⚠️ 需实测,见 §5) |
| 收敛工具集 | 让高频 agent 少暴露「用不上」的工具(当前 `tools.profile=full`;本机 `tools.allow` 未设置,`tools.alsoAllow` 有 37 条——**其中 36 条是无效声明**,见下方告警说明) | 模型少做无效试探,轮次下降(⚠️ 需实测,见 §5) |
| 提升单轮信息密度 | 在 agent 的 `AGENTS.md` 中要求「一次调用批量取证」:合并多次 `read`/`memory_search` 为一次 | 显著减少往返 |
| 并行取证 | 把可并行的只读操作交给 `subagents`(当前 `subagents.maxConcurrent=4` | 串行改并行 |
| 技能不必现装现用 | 需要什么技能**提前装好**,避免在对话中触发 ClawHub 审计+安装(实测单次 13.5–14s) | 消除最大单点等待 |
> ⚠️ **工具清单存在未注册条目**(实测):`tools.profile (full) allowlist contains unknown entries` 与 `tools.allow allowlist contains unknown entries` 各出现 **9 次**(首见 09-16 10:24:26),报的都是 `feishu_bitable_*` / `feishu_calendar_*` 等条目——即**配置里声明了、但插件没注册上**的工具。
>
> 注意两点:① 这**意味着 `full` profile 的允许清单本身是 openclaw 内置生成的**,不是本机 `tools.allow`(实测本机 `tools.allow` 为空数组、条目数 0)——所以「改白名单」要做在 **profile/插件注册层**,不是改那个空数组;② 这些是**历史告警**(首见 10:24,早于 16:13 的配置清理),清理后是否仍出现需重新核验:
>
> ⚠️ **有 36 个「声明了却不存在」的工具**(2026-09-16 复核,**告警仍在持续**:当天 20 次,最后一次 16:27:34):
> `tools.profile (full) allowlist contains unknown entries` 与 `tools.allow allowlist contains unknown entries` 各 10 次,报的全是 `feishu_bitable_*` / `feishu_calendar_*` / `feishu_task_*` 等。
**根因定位(实测)**:本机 `tools.alsoAllow` 声明了 **37 个** `feishu_*` 工具,但只有 **1 个真正注册成功**
```
alsoAllow 声明 37 个 ─┬─ ✅ 成功注册: feishu_chat feishu 插件提供,enabled: true
└─ ❌ 注册失败: 其余 36 个 ← openclaw-lark 插件提供
```
`openclaw-lark` 在配置里被**显式关闭**了:
```json5
"plugins": { "entries": {
"feishu": { "enabled": true }, // 只提供 feishu_chat
"openclaw-lark": { "enabled": false } // 36 个 feishu_* 工具的真正提供者 → 未加载
}}
```
验证:`grep "http server listening" 日志` → 实际只加载 **6 个插件**dingtalk-connector, feishu, memory-core, ollama, openclaw-weixin, searxng),**不含 openclaw-lark**。
**影响**`alsoAllow` 里那 36 条是**无效声明**——它们不报错,但也不生效;模型可能尝试调用不存在的工具而浪费一轮往返。
**两个互斥的修法(需决策,不建议同时做)**
| 方案 | 做法 | 代价 |
|---|---|---|
| **A. 精简声明**(推荐,契合 P0-2 | 从 `tools.alsoAllow` 删掉用不上的 `feishu_*` 条目 | 需先确认哪些飞书能力**真的要用** |
| **B. 启用插件** | `plugins.entries.openclaw-lark.enabled = true` | 真实注册 36 个工具,**工具面大幅变大**,可能反增轮次与上下文开销;且 lark 插件需飞书应用凭据/oauth 流程 |
> 复核命令(注意:告警**不是**历史遗留,会随每次配置重载/插件加载重现):
> ```bash
> grep -c "allowlist contains unknown entries" /tmp/openclaw/openclaw-$(date +%F).log
> grep "http server listening" /tmp/openclaw/openclaw-$(date +%F).log | tail -1 # 看实际加载了哪些插件
> ```
### P1-3 补上模型请求超时与 failover