Files
llm-intelligence/reports/openclaw/OPENCLAW_CAPABILITY_BACKLOG.md

142 lines
12 KiB
Markdown
Raw Normal View History

# OpenClaw Capability Backlog
本文件用于持续沉淀 OpenClaw 在 `llm-intelligence` 项目推进和自我优化过程中暴露出的能力缺口。
记录原则:
- 只写真实 review 暴露的问题
- 每个问题都要说明影响
- 每个建议都要可执行、可验证
---
## 当前未修复问题速查表(截至 2026-05-15 21:31
| # | 问题 | 优先级 | 首次暴露 | 修复状态 | 影响次数 |
|---|------|--------|----------|----------|----------|
| 1 | 验证器 `rg` 依赖误报 | P0 | 05-07 22:50 | ✅ **已修复**05-10 14:30 确认 `grep` 替换完成) | 10 次 |
| 2 | 验证器退出码设计 | P0 | 05-07 22:50 | ⚠️ 部分(`rg` 误报消除,但三级状态仍未实现) | 10 次 |
| 3 | session 历史工具/业务错误区分 | P1 | 05-07 22:50 | ❌ 未修复 | 11 次 |
| 4 | cron 无主动状态报告机制 | P1 | 05-07 22:50 | ❌ 未修复 | 11 次 |
| 5 | subagent spawn 未传递 workspace | P1 | 05-07 22:50 | ❌ 未修复 | 11 次 |
| 6 | 验收脚本无法检测构建 | P1 | 05-08 09:05 | ❌ 未修复 | 10 次 |
| 7 | 环境变量/API Key 缺失未自动检测 | P1 | 05-08 09:05 | ⚠️ 部分(已写入 review 标准步骤,但未固化到 prompt | 11 次 |
| 8 | 文件修改后未触发 commit 提示 | P2→P1 | 05-08 09:05 | ❌ 未修复 | 12 次 |
| 9 | cron review 无 delta 时空转 | P1 | 05-08 09:12 | ❌ 未修复 | 12 次 |
| 10 | 验证模式伪进展artifact_present 局限) | P1 | 05-08 14:30 | ❌ 未修复 | 9 次 |
| 11 | **项目提交停滞commit stagnation** | **P0** | **05-08 21:30** | **❌ 未修复(虽有新 commit但工作区长期非干净问题仍在** | **14 次** |
| 12 | review 报告未触发修复动作 | P2→P1 | 05-08 21:30 | ❌ 未修复 | 9 次 |
| 13 | BACKLOG 文件膨胀导致 review 成本递增 | P1 | 05-09 09:30 | ⚠️ 部分(已实施分层归档,但主文件仍在增长) | 7 次 |
| 14 | **untracked 核心代码未入版本控制** | **P0** | **05-10 21:30** | **❌ 未修复(本轮仍有大量 untracked 文件)** | **10 次** |
| 15 | **CI 配置存在但未验证运行** | **P1** | **05-10 21:30** | **✅ 已修复05-14 16:23 已补齐 `.github/workflows/ci.yml``verify_phase5.sh` PASS** | **8 次** |
| 16 | **Phase 6+ 范围未定义** | **P1** | **05-10 21:30** | **❌ 未修复** | **5 次** |
| 17 | collection_stats vs collector_stats 表名不一致 | P2 | 05-11 09:30 | ✅ **已澄清为误报**05-11 14:30 确认 verify_phase2.sh 与 schema 一致) | 1 次 |
| 18 | **无 .gitignore 文件** | **P1** | **05-11 14:30** | **❌ 未修复** | **3 次** |
| 19 | **review 误报传播** | **P1** | **05-11 14:30** | **❌ 未修复** | **7 次** |
| 20 | **untracked 文件统计遗漏** | **P1** | **05-11 14:30** | **❌ 未修复** | **5 次** |
| 21 | **验收脚本瞬时回归缺少稳定性标记** | **P1** | **05-12 22:46** | **❌ 未修复(仍缺 transient / repeated / reproducible 标记)** | **5 次** |
| 22 | **无 delta 场景缺少老化风险优先策略** | **P2** | **05-12 22:46** | **❌ 未修复** | **3 次** |
| 23 | **日报归档路径门禁失配** | **P0** | **05-13 00:15** | **✅ 已复核05-14 16:23 再验证未复现,`verify_phase3.sh` PASS** | **1 次** |
| 24 | **综合验收错误聚合误导根因判断** | **P1** | **05-13 00:15** | **❌ 未修复** | **3 次** |
| 25 | **snapshot truth 与 current truth 漂移未被显式提示** | **P1** | **05-14 09:31** | **❌ 未修复** | **5 次** |
| 26 | **Phase 6 稳定性门禁失败缺少样本窗口摘要** | **P1** | **05-14 15:10** | **❌ 未修复** | **4 次** |
| 27 | **Phase 6 稳定性门禁未区分前置条件缺失 vs 真实采集失败** | **P1** | **05-14 21:30** | **❌ 未修复** | **3 次** |
| 28 | **脚本型 Go 仓库缺少可测试入口发现能力** | **P1** | **05-15 15:11** | **❌ 未修复** | **2 次** |
| 29 | **长命令部分回传时缺少保守结论模板** | **P1** | **05-15 21:31** | **❌ 未修复** | **1 次** |
---
## Review 日志
### 2026-05-15 21:31第 25 次 reviewnight-review
> **前置说明**:距上一次 review05-15 15:11约 **6 小时 18 分钟**。本轮没有拿到足够新证据去推翻 afternoon 的主判断Phase 1~5 当前仍 PASS但 Phase 6 不能在证据不足的情况下直接改写成 PASS。与此同时工作区持续堆积 tracked/untracked 变更而最新 commit 未前进,说明版本化收口继续老化。
#### 本次新增发现
- **Phase 1~5 当前继续 PASS**`verify_pre_phase6.sh` 本轮再次完整通过。
- **night 时点无证据证明主 blocker 已消失**`verify_phase6.sh` 本轮只回传到前半段 PASS未拿到完整结束输出因此不能把历史活跃 blocker 直接宣告解除。
- **工作区非干净风险继续老化**tracked 修改和 untracked 新文件仍然很多,但最近提交未前进。
- **仓库已明确给出推荐验证入口**`Makefile``README.md``scripts/verify_phase*.sh` 都提供了更可信入口,说明 agent 默认策略需要更主动地发现这些入口。
#### 问题 28P1再次确认脚本型 Go 仓库缺少可测试入口发现能力
- **21:31 状态**:本轮继续确认本仓库的可信入口是 `verify_pre_phase6` / `verify_phase6` / `run_daily.sh` 等项目脚本,而不是通用语言惯性命令。
- **问题影响**
- reviewer 或 agent 若先跑错误入口,会得到假阴性或低价值结果
- review 成本上升,因为需要再次回到仓库声明的真实入口
- 同类脚本型仓库会重复暴露相同问题
- **优化建议**
1. review/verification 默认先搜 `Makefile`、verify 脚本、README 中的“常用命令/门禁入口”
2. 若仓库显式声明入口,优先使用声明入口而不是语言通用命令
3. 将“入口不适配”与“测试失败”分开标注
- **优先级**P1
- **建议验证方法**:后续在脚本型 Go 仓库中,先读取 `Makefile`/README再检查 agent 是否直接选择仓库声明入口,而不是默认 `go test ./...`
#### 问题 29P1长命令部分回传时缺少保守结论模板
- **21:31 状态**:本轮 `verify_phase6.sh` 已回传多条 PASS但未在当前对话拿到完整结束输出如果没有明确模板review 很容易在“部分好消息”下过度乐观,或反过来因为等待完整输出而卡死。
- **问题影响**
- 容易把“部分通过”错误表述为“全部通过”
- 也可能因为追求完整输出导致 cron review 超时
- 对低频 review 任务尤其危险,因为一轮结论可能被后续长期复用
- **优化建议**
1. 当长命令只返回部分输出时,模板强制要求写明 `partial runtime evidence``old blocker not disproven`
2. 为 review 类 cron 任务增加“最小证据阈值”:超过阈值就允许先落保守结论,不必无限等待
3. 在 backlog / review 模板中增加“完整结束输出是否已获得”字段
- **优先级**P1
- **建议验证方法**:在长命令故意延迟或只部分回传的场景下,检查 agent 是否能稳定写出“部分通过、旧 blocker 未证伪”的保守结论,而不是误报 PASS 或无期限阻塞
### 2026-05-15 15:11第 24 次 reviewafternoon-review
> **前置说明**:距上一次 review05-15 09:30约 **5 小时 41 分钟**。本轮没有出现新的主 blocker但稳定性窗口比 morning 更差:最新 7 条 `collector_stats` 中仅 **4 条成功、3 条失败**,成功率约 **57.14%**。3 条失败全部是 **严格真实模式缺 API Key**,说明 Phase 6 仍在被前置条件缺失污染,而且问题在老化。
#### 本次新增发现
- **Phase 1~5 当前继续 PASS**`verify_pre_phase6.sh` 仍全绿,说明主链路与前置门禁未回退。
- **Phase 6 唯一 live blocker 仍是稳定性门禁**`verify_phase6.sh` 继续表现为 `pass=15 fail=1`
- **稳定性窗口较 morning 进一步恶化**:从 `5/7` 成功下降到 `4/7` 成功,不能再沿用上午窗口数字。
- **失败样本仍全部指向前置条件缺失**:最近 3 条失败都为 `严格真实模式下必须提供 API Key`
- **通用 `go test ./scripts/...` 在本仓库给出假阴性**:命令返回 `matched no packages` / `no packages to test`,但仓库声明的 `verify_phase*.sh` 却能提供有效验证结果。
#### 问题 25P1再次确认snapshot truth 与 current truth 漂移未被显式提示
- **15:11 状态**:同日两次 review 的主 blocker 没变,但严重度已变化;如果 afternoon 不 live 复验,仍会沿用 morning 的 `5/7` 窗口,低估风险老化。
- **问题影响**
- 同日数小时内窗口数字会变化,旧结论若不失效会直接误导风险判断
- backlog 和 follow-up 可能继续引用过时窗口,影响优先级排序
- **优化建议**
1. review 模板在涉及样本窗口时强制写“sample timestamp / sample size / sample freshness”
2. 若当前窗口与上一轮数值不同,必须显式写出 `window changed``old sample expired`
3. 对同日多次 review 的窗口漂移单独累计,而不是只记泛化的误报传播
- **优先级**P1
- **建议验证方法**:后续若同日两次 review 的窗口成功率变化,检查新报告是否显式指出窗口已变化,而不是继续复用上一轮数字
#### 问题 27P1再次确认Phase 6 稳定性门禁未区分前置条件缺失 vs 真实采集失败
- **15:11 状态**:最新 7 条样本中 3 条失败全部来自 `openrouter`,且错误一致为 `严格真实模式下必须提供 API Key`
- **问题影响**
- 稳定性统计继续把环境/调度问题混进 collector 运行失败
- review 读者可能误把 57.14% 成功率解读为采集器代码不稳定
- 修复资源会被错误投向代码层,而不是运行环境/统计口径
- **优化建议**
1.`verify_phase6.sh` 或其依赖查询中增加失败分类,至少区分 `precondition-missing``collector-runtime-failure``external-provider-failure`
2. 对缺 API Key / 缺 DB 权限这类前置条件失败单独统计并显式展示
3. 输出中附最近 N 条失败样本摘要,避免只给一个成功率数字
- **优先级**P1
- **建议验证方法**:制造一条缺 API Key 失败和一条真实采集失败,确认 Phase 6 输出能分别标记类别,并在 review 中直接映射到不同修复路径
#### 问题 28P1脚本型 Go 仓库缺少可测试入口发现能力
- **15:11 状态**:本轮尝试常见 Go 测试入口 `go test ./scripts/...`,结果为 `matched no packages` / `no packages to test`;但仓库真实可执行门禁位于 `Makefile``scripts/verify_phase*.sh`
- **问题影响**
- agent 若按通用语言惯性选命令,会得到假阴性,误判仓库“不可测试”或“测试失败”
- review 成本上升,因为需要人工再纠正到项目自定义验证入口
- 跨项目迁移时,这类误用会持续产生噪声
- **优化建议**
1. 在 OpenClaw review/verification 流程中优先发现并使用 `Makefile``package.json scripts`、仓库显式 verify 脚本,而不是默认语言通用命令
2. 若检测到 `go test ./...` 或其子路径返回 `no packages to test`,应把它标记为“入口不适配”而非“测试失败”
3. 在 review 模板中增加一条“验证入口发现结果”,明确当前仓库推荐的最小可信命令
- **优先级**P1
- **建议验证方法**:在至少一个脚本型 Go 仓库中复现 `no packages to test`,确认 agent 最终能回退到项目声明的 verify 脚本,并把错误类型归为入口不适配