Files
openclaw-config/workspace-resume/weekly-reports/2026/2026-W38-改进周报.md
T

125 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 改进周报 (2026-W38)
**周期:** 2026-09-14 ~ 2026-09-16(本周至今,周三)
**生成方式:** self-improving-agent 技能
**数据来源:** `.learnings/` 日志、会话 transcript、workspace 配置文件实测
---
## 一、本周概览
| 指标 | 数量 |
|------|------|
| 新增学习条目 (LRN) | 5 |
| 新增错误条目 (ERR) | 1 |
| 新增需求条目 (FEAT) | 0 |
| 已解决 | 3 |
| 已升级到配置文档 | 1 条(涉及 TOOLS.md、MEMORY.md 两个文件) |
| 待处理 | 2 |
> 说明:`.learnings/` 本周**首次启用**(此前不存在),因此本轮为回溯补录——
> 把此前散落在会话中的教训固化下来,避免下次再踩。
---
## 二、关键发现
### 🔴 1. 陈旧路径导致「技能找不到」假象
**类型:** correction **状态:** ✅ 已修复
`AGENTS.md` 指向 `skills/weekly-report-g5/SKILL.md`,该路径**不存在**(实测返回 `ENOENT`)。
在用技能实际是 `skills/weekly-report/SKILL.md``weekly-report-g5` 只存在于 Skill Workshop 提案目录。
- **影响:** AGENTS.md 是每次会话必读文件,错误路径会浪费工具调用,更可能让后续会话误判「技能不存在」而重复造轮子。
- **动作:** 已修正路径,并补登自我改进技能条目。
### 🟠 2. 文档描述与实际行为不符
**类型:** correction **状态:** ✅ 已升级
`TOOLS.md` / `MEMORY.md` 曾称 `send_weekly_report.py` 会「同步元数据到 db」。逐条核对脚本行为后确认:该脚本**从不写 SQLite**,只有两个落盘动作——
| 动作 | 目标 |
|------|------|
| `archive_report()` | Markdown → `weekly-reports/YYYY/` |
| `sync_to_mysql()` | MySQL `resume` 库 |
- **风险:** 后续会话会误以为 SQLite 已自动入库,从而漏跑 `sync_reports_db.py`,造成本地索引与 Markdown **静默不一致**
- **动作:** 已修正两份文档表述。
### 🟡 3. shell 日期推导会「静默算错」
**类型:** knowledge_gap **状态:** 待处理
2026-09-16(周三)实测:
| 表达式 | 结果 | 判定 |
|--------|------|------|
| `date -d 'monday this week'` | `2026-09-21` | ❌ 下周一 |
| `date -d 'last monday'` | `2026-09-14` | ✅ 本周一 |
- **风险:** 不报错、直接算出一周之后的区间,属「静默错误」,比崩溃更难发现。
- **对策:** 周报日期范围一律以**用户提供的任务日期**为准,不用表达式推导。
### 🟡 4. 【已更正】我曾把「非待处理」误判为「待处理」
**类型:** correction **状态:** ✅ 已更正
⚠️ **本条是本次复盘中最值得记的教训:我自己犯了一个「读错来源」的错。**
首轮我报告「Skill Workshop 有两个 pending 的 `weekly-report-g5` 提案,虚高待办数」。该结论**不成立**——我读的是提案目录里 `PROPOSAL.md` 头部自带的 `status: proposal`,那只是**静态正文标记**,不代表生命周期状态。用权威入口核实后:
| 提案 | 真实状态 |
|------|----------|
| `weekly-report-g5-20260626…` (v1) | `stale`(基线变动,无法再应用) |
| `weekly-report-g5-20260821…` (v2) | `applied`(内容确已并入在用技能) |
| `list --status pending` | **No skill proposals matched** |
- **正确做法:** 判断提案状态**只用 `skill_workshop list`**。同理,任何「状态类」结论都应以对应工具/接口为准,而非文件表面内容。
- **动作:** 已更正本条与 `.learnings` 记录。经复核**无需清理提案**——本就不存在 pending,删除反而会丢掉 v2 已应用的历史记录。
- **副产品:** 顺带确认这两个目录现仅存 `PROPOSAL.md`,原 `proposal.json`/`rollback.json` 已不在(2026-08-28 时还在),说明其间有 skill-collection-review 自动化做过迁移清理。
> 🎯 **这正是本技能的价值所在**:如果不做这轮复盘,这个误判会一直留在记录里,下次还可能照着错误结论去删东西。
### 🟢 5. 中文检索召回不可靠
**类型:** knowledge_gap **状态:** 待处理
`sessions_search` 两次中文错误关键词查询均返回空,但同一会话 transcript 中确实存在对应内容。
- **风险:** 会给出「什么都没发生」的假信号,让复盘遗漏真实错误。
- **对策:** 错误复盘以 `.learnings/` 为主数据源,`sessions_search` 空结果不当作「无此事」。
---
## 三、本周已修复的错误
| 编号 | 问题 | 结果 |
|------|------|------|
| ERR-20260916-001 | `/tmp` 下运行脚本报 `ModuleNotFoundError` | ✅ 已解决(用 `PYTHONPATH` 指定模块路径) |
**根因:** Python 只把**脚本所在目录**加入 `sys.path`cwd 不在其中。
**教训:** 临时脚本要么写在 workspace 内,要么运行前显式设 `PYTHONPATH`
---
## 四、下周改进重点
1. **已完事项复核** —— 本周两项均已当场完成:AGENTS.md 技能路径与格式残留已修正;提案核实后确认**无需清理**(不存在 pending)。
2. **沉淀状态判断约定** —— 把「状态类结论只以工具/接口为准」写入规范:提案查 `skill_workshop list`、周报日期以用户提供为准。
3. **沉淀运行约定** —— 把「PYTHONPATH / 脚本位置」、`date -d 'last monday'` 写进周报技能,避免下次再撞。
4. **持续记录** —— 本周起 `.learnings/` 已常态化启用,后续教训即时入账,不再依赖回溯补录。
---
## 五、方法论沉淀
本轮确立的复盘原则:
- **只用可核实证据** —— 每条结论都有实测输出或文件依据,不写推测性「体会」。
- **状态只看权威入口** —— 文件表面的 `status` 字段不代表真实生命周期状态(本轮实际踩坑)。
- **区分「报错」与「静默错误」** —— 静默错误优先级更高,因为它不会被发现。
- **能修就当场修** —— 陈旧路径、文档不符等确定性缺陷直接修复,不留到「下次」。
- **结论需自检** —— 把误判写进记录后再核实,是有效的纠错方式(本轮靠它推翻了自身结论)。
---
*归档时间:2026-09-16*
*日志位置:`.learnings/LEARNINGS.md`、`.learnings/ERRORS.md`*