forked from Octopus/octopus-workflow
79 lines
5.5 KiB
Markdown
79 lines
5.5 KiB
Markdown
# 项目复盘 — wechat-ops 个人微信 GUI 自动化值守 Agent
|
|
|
|
> 迭代周期:2026-09-29 一天(迭代0 环境搭建 → 迭代1 五功能 → 迭代2 DAG 就位)
|
|
> 方法:Loong Workflow 复盘清单(DATA / ANAL / ACT / LOOP / SAFE)
|
|
> 复盘人:kenyang + ZCode Agent
|
|
|
|
---
|
|
|
|
## 0. 项目快照
|
|
|
|
| 项 | 值 |
|
|
|---|---|
|
|
| 交付物 | GitHub + Loong Gitea 双远端 wechat-ops(skILL 包 + 服务器部署版,md5 一致) |
|
|
| 代码规模 | agent.py ~650 行 + vision.py + setup-server.sh + 守卫脚本 |
|
|
| 运行状态 | 阿里云 2核2G,auto/draft 值守中,可用内存 ~720Mi |
|
|
| 版本轨迹 | v0.1.0 初版 → v0.2.x 安全加固 → v0.3.x ima 知识库 → v0.4.x Loong 工作流捆绑 |
|
|
|
|
## 1. 数据(DATA)
|
|
|
|
**功能交付**:迭代1 五项全部实现并验证(独立Prompt/记忆/群@检测/链接阅读/图标模板匹配);ima OpenAPI 当天逆向对接(官方文档缺字段不一致,实测修正)。
|
|
|
|
**真实流量拦截记录**(守卫闸门的实战证据):
|
|
- 标题核验拦截误发:6+ 次(误定位到 第一财经/大刘家/杨家小极客/张秀英/纯臻群/刘家四兄弟姐妹)
|
|
- 白名单外跳过:9+ 次(张秀英门店运营群、2组1号、Service Accounts 等)
|
|
- 群 @ 闸门:未@消息全部仅记录不响应
|
|
|
|
**事故清单**(每条有日志/截图证据):
|
|
1. 私聊消息误发 227 人群(坐标偏移+无核验,用户手动撤回)
|
|
2. Escape 键打崩微信渲染→透明壳→自愈误判重启→登录会话丢失(被迫重扫码 3 次)
|
|
3. 定时任务队列被清空且重复触发 20 秒循环(FT 收到 ~50 条测试消息)
|
|
4. 工单误关 4 张(#6/#7/#8/#9 号映射错误,事后纠正)
|
|
5. linux-server.md 被存根覆盖丢失 90 行(git 历史恢复)
|
|
6. ima 官方文档字段与实际 API 不一致(id/name vs kb_id/kb_name)
|
|
|
|
## 2. 优点(可复用模式)
|
|
|
|
1. **安全闸门代码化且实战有效**:标题核验(空标题拒绝)、白名单、限速、静默、敏感词回退——全部误发被拦,零事故外泄。模式:闸门必须写成函数,不写成散文。
|
|
2. **自愈状态机**:托盘隐匿/透明壳/登录过期/过渡态保护,一夜之间无人工干预恢复值守。模式:每种故障先做"最坏情况审查"再加处理分支。
|
|
3. **像素级兜底 + 自学习模板**:FT 图标颜色候选 + 9×9 模板最小距离(校准:真身<10万,误配 270万+),核验成功后自学习存模板。
|
|
4. **知识库两级接入**:文件导出兜底 + OpenAPI 直连优先,当天完成无官方文档接口的逆向对接(实测修正字段名)。
|
|
5. **诚实文化**:幻觉试答拒绝发送;错误关票发状态修正评论;证据分级表述(已验证:证据 / 未验证:待确认)。
|
|
6. **真实用户即时反馈**:群里演示后,当晚有成员尝试部署、有成员购入服务器——开源定位(纯视觉替代付费 Proxy API)得到验证。
|
|
|
|
## 3. 缺点与根因(归因流程/工具,不归因个人)
|
|
|
|
| # | 缺点 | 根因(流程/工具缺口) |
|
|
|---|---|---|
|
|
| 1 | GUI 自动化固有脆弱:窗口自发隐匿、渲染透明壳、Escape 打崩渲染,全天 5+ 次异常 | 微信 Qt 客户端不可控;缺"故障注入"式预防测试,只有事后补丁 |
|
|
| 2 | 免费视觉模型定位误读(臻→甄、槽位名字偏差),需模板/模糊匹配补丁补偿 | 无离线评测集:视觉提示词从未做过基线测试,每个误读都是第一次见 |
|
|
| 3 | 定时任务重复触发 20 秒循环,根因未明(run_due_tasks 曾将未到期任务判为 due) | 缺"决策日志→断言"的最小复现方法论;护栏先于根因分析上线,护栏自身又制造新循环 |
|
|
| 4 | 群发误投事故 | 无"发送目标 dry-run"预检步骤;核验闸门是事故后补的 |
|
|
| 5 | 工单误关 4 张(映射错误) | 关票动作无"工单号↔标题"双重校验;单人无评审 |
|
|
| 6 | 文档被存根覆盖 90 行 | 文件同步用 cp 而非 git,缺 pre-commit 保护 |
|
|
| 7 | 测试污染真实会话(FT ~50 条消息) | 无测试专用会话/账号隔离机制 |
|
|
|
|
## 4. 行动项(ACT,≤5,每条有文件路径与完成判据)
|
|
|
|
| # | 行动项 | 文件 | 完成判据 |
|
|
|---|---|---|---|
|
|
| 1 | N-04:定时任务重复触发复现(利用 save_tasks([]) 溯源栈日志) | scripts/agent.py run_due_tasks | 同一任务 3 次评估仅触发 1 次发送 |
|
|
| 2 | N-05:白名单 difflib≥0.6 模糊匹配(已实现待回归) + 群名 OCR 变体测试用例集 | scripts/agent.py handle_trigger | 「纯甄AI赋能1688」命中白名单 |
|
|
| 3 | N-01:图片发送链路(表情包前置) | scripts/agent.py send_image | 测试图片送达 File Transfer |
|
|
| 4 | 上架前置:守卫脚本增加"凭证/隐私 HARD 扫描"进 CI(双远端推送前自动跑) | scripts/check-skill.sh + Loong Gitea workflow | push 即自动扫描 |
|
|
| 5 | ima 检索评测集:收集 10 条真实问题-期望文档对,做召回率基线 | references/ima-eval.md(新建) | 召回率报告存在且 ≥8/10 |
|
|
|
|
## 5. 闭环(LOOP)
|
|
|
|
- 本文写入 loong-workflow 仓库 retrospectives/
|
|
- ACT#1/#2 相关坑已沉淀 pitfalls-linux.md(#18/#19/#20)
|
|
- 迭代2 DAG 已发布 Loong Gitea wiki(wechat-ops-iter2/dag),N-01 工单已建(#14)
|
|
|
|
## 6. 无指责声明(SAFE)
|
|
|
|
所有失误(群发误投、误关工单、文档覆盖、护栏制造循环)归因于:**流程缺口**(无 dry-run、无双人评审、无离线测试集、护栏先于根因分析),不归因于任何人的能力或态度。相应修复均已落入上述 ACT 项。
|
|
|
|
## 7. 一句话总结
|
|
|
|
**一天内从裸机到开源值守 Agent,安全闸门零失效,但稳定性工程(故障注入测试、离线评测集、双人评审)仍是单人项目的最大短板——这三样是迭代2 的主攻方向。**
|