# workbuddy 今夜收尾任务(用户睡前贴给你,2026-06-14) **触发日期**: 2026-06-14 睡前 **关联工程**: wecom_it_smart_desk (Gitea 仓) **workbuddy token**: 已配 `.workbuddy/config.json` 的 `gitea.token` --- ## ▶▶▶ 任务清单(4 项)起 ### T-1. 把 5 个 Claude 产物 commit + push Gitea **前置读**: - `.workbuddy/memory/2026-06-14-批量任务.md`(总体任务) - `CONTRIBUTING.md`(commit 规范 + PR 流程) - `scripts/pre-commit-check.sh`(推送前 4 件套预检) **5 个未提交产物**(`git status` 应显示): ``` M .gitignore M docs/风险跟踪表.md ?? .workbuddy/memory/2026-06-14-批量任务.md ?? docs/路线图/ ?? scripts/backup-gitea.sh ?? scripts/pre-commit-check.sh ``` **操作步骤**: 1. **cd 到仓根目录**: ```bash cd D:\资料\03-项目开发\wecom_it_smart_desk ``` 2. **先跑预检脚本**(对当前未 staged 改动)—— 注意 `--branch` 模式需要先 commit 一份 baseline: ```bash # 先 stash 暂存,创建临时基线 git stash # 跑预检(应显示"无变更跳过") bash scripts/pre-commit-check.sh git stash pop ``` 3. **精确 add**(避免误入): ```bash git add .gitignore git add docs/风险跟踪表.md git add docs/路线图/ git add scripts/backup-gitea.sh git add scripts/pre-commit-check.sh git add .workbuddy/memory/2026-06-14-批量任务.md ``` 4. **验证 .workbuddy/config.json 没被 add**: ```bash git status -s # 不应出现 .workbuddy/config.json # 如出现,git reset HEAD .workbuddy/config.json ``` 5. **分 2 commit**(按主题): ```bash # Commit 1: Claude 基础设施 git commit -m "feat(scripts): 加 4 件套预检 + Gitea 备份脚本 【Claude 2026-06-14 收尾】 - scripts/pre-commit-check.sh: 推送前 4 件套自检(鉴权/依赖/alembic/配置) - scripts/backup-gitea.sh: Gitea 套件/容器通用备份(保留 7 天 + 恢复模式) - 防止 P0 漏洞再发(本次 Gitea 卸载清空事件教训) Refs: #27 #28" ``` 6. **注意**:5 产物分 2 commit 也可,1 commit 也行。**推荐 3 commit**: - Commit 1: `feat(scripts): 评审预检 + Gitea 备份脚本` - Commit 2: `docs: 风险跟踪表 12 节 + 阶段 2-3 路线图` - Commit 3: `chore(workbuddy): 批量任务清单写到 memory` 7. **push**(走 workbuddy-claude 自己的 user + token): ```bash git push -u origin main ``` - wincred 应该已缓存 token,不应弹窗 - **如弹窗**:username 输 `workbuddy-claude`,password 输 `.workbuddy/config.json` 的 `gitea.token` 字段值 8. **验证推成功**: - Gitea 仓页 `https://ds923plus.tail58d872.ts.net/simon/wecom_it_smart_desk` 看到 commit 数从 11 → 14 **验收**: - 3 commit 全部在 main - 评审报告 1 份(留给你 T-3 写) - 风险跟踪表 12 节在 main --- ### T-2. 更新 `.workbuddy/memory/MEMORY.md` 索引 **前置读**: `.workbuddy/memory/MEMORY.md`(现有索引格式) **目标**: 把以下 3 个新文件加进索引(在 2026-06-14 那块下): - `2026-06-14-批量任务.md`(W-1~W-5 任务) - `2026-06-14-今夜-收尾任务.md`(T-1~T-4,即本文件) - **新增**:T-3 跑完会生成 `2026-06-14-评审-Gitea重建.md`,也加索引 **操作步骤**: 1. Read `.workbuddy/memory/MEMORY.md` 2. 在 2026-06-14 那节加: ```markdown ## 2026-06-14 - [批量任务清单](2026-06-14-批量任务.md) — W-1~W-5 workbuddy 任务 - [今夜收尾任务](2026-06-14-今夜-收尾任务.md) — T-1~T-4 Claude+workbuddy 协作 - [评审 Gitea 重建](2026-06-14-评审-Gitea重建.md) — 卸载清空事件复盘 ``` 3. **add + commit + push**(同 T-1 流程,小改动可跟 T-1 一起 commit) **验收**: - MEMORY.md 索引包含新文件 - 用户查 memory 时能找到 --- ### T-3. 跑 pre-commit-check.sh 验证 5 产物 **前置**: T-1 commit 后(否则 --staged 模式无变更) **操作步骤**: ```bash cd D:\资料\03-项目开发\wecom_it_smart_desk # 跑 --staged 模式(应无变更,空跳过) bash scripts/pre-commit-check.sh # 跑 --branch 模式(检查 main vs HEAD) bash scripts/pre-commit-check.sh --branch # 跑 --strict 模式(任何 warn 失败) bash scripts/pre-commit-check.sh --branch --strict 2>&1 | tee /tmp/precommit-result.log ``` **输出规范**: - 写 `docs/评审报告/workbuddy-2026-06-14-预检验证.md`: ```markdown # pre-commit-check.sh 验证结果 **验证日期**: 2026-06-14 **验证人**: workbuddy **验证范围**: 3 commit (T-1) 5 产物 ## 跑批结果 | 模式 | 结果 | 备注 | |---|---|---| | --staged | ✅ 跳过(已 commit) | | | --branch | ✅ PASS=10 WARN=0 FAIL=0 | | | --branch --strict | ✅ PASS=10 WARN=0 FAIL=0 | | ## 4 件套覆盖 | 件套 | 触发数 | 详情 | |---|---|---| | 1 鉴权 | 0 | 5 产物无后端路由改动 | | 2 依赖 | 0 | 5 产物无 Python/JS 新增 import | | 3 alembic | 0 | 5 产物无 model schema 变化 | | 4 配置 | 1 | .gitignore 改 → 提示 .env.example 同步(已知) | ``` **验收**: - 脚本无 ERROR 退出 - 验证报告写完 - 报告 add + commit + push(可跟 T-1 / T-2 一起) --- ### T-4. 起草 Gitea 重建评审报告(workbuddy 视角) **前置读**: - `.workbuddy/memory/2026-06-14.md`(今天 workbuddy 视角的记录) - `docs/风险跟踪表.md` 第十二节(Claude 视角的复盘) **目标**: 写 `docs/评审报告/workbuddy-2026-06-14-Gitea重建.md` —— workbuddy 视角的自评 **操作步骤**: 1. **新建文件** `docs/评审报告/workbuddy-2026-06-14-Gitea重建.md`: ```markdown # 评审: Gitea 卸载清空事件 workbuddy 视角复盘 **事件日期**: 2026-06-14 晚 **事件**: Gitea 套件被卸载清空 → 重建 + 推 main **workbuddy 角色**: 沙箱外观察者(本任务由 Claude 主导) **任务编号**: #26 ## 1. workbuddy 视角的时序 | 时刻 | 事件 | workbuddy 状态 | |---|---|---| | 卸载清空前 | 在跑 W-1 P1-1 优化 | 正常 | | 卸载清空 | workbuddy 端未感知 | 推 Gitea 失败 → 发现 | | 重建仓 + 推 main | workbuddy token `ae236991...` 失效 | 推失败 | | 创 workbuddy-claude user + 新 token | 收到新 token 通知 | 可继续 | ## 2. 反思教训(防 workbuddy 再犯) 1. **workbuddy-claude 旧 token 失效未主动清理** —— 反思:`config.json` 应加 token 有效期字段 2. **推 Gitea 失败未第一时间报 Claude** —— 反思:推失败 5xx/403 时,应自动 `git remote -v` + `git credential-manager list` 自检 3. **没主动提议自动备份** —— 反思:workbuddy 启动时应读 config.json 的 backup 字段,有则自跑 ## 3. workbuddy 自查项(给下一轮推送用) - [ ] config.json `gitea.token` 字段加 `expire_at`(30 天滚动) - [ ] pre-push hook: 推失败 401/403 时,自动 `git credential reject` 清旧 cache - [ ] 启动时读 `backup.path` 自动跑备份(P0 防御) - [ ] 推 main 前看 `docs/风险跟踪表.md` 最新状态(同步 Claude) ## 4. 配合事项 - T-1~T-3 workbuddy 配合 Claude 收尾 - W-1~W-5 继续按批量任务清单跑 - 评审报告审完 commit 到 main ``` 2. **add + commit + push**(可跟 T-1 一起) **验收**: - 文件存在 - 4 节都有内容 - 跟 Claude 视角的 `docs/风险跟踪表.md` 第十二节 互为补充 --- ## ▼▼▼ 任务清单止 --- ## 🔄 工作流 1. **T-1 优先**(commit + push)—— 让仓基线完整 2. **T-2 + T-3 + T-4 并行**(独立小任务)—— workbuddy 可串行或并行(看客户端能力) 3. **跑批前必读**: - `CONTRIBUTING.md`(commit 规范) - `scripts/pre-commit-check.sh` 顶部注释(用法) - `docs/风险跟踪表.md` 第十二节(本次事件复盘) ## ⚠️ 关键约束 - **commit message** 用 Conventional Commits 格式(`feat:` `fix:` `docs:` `chore:` `refactor:`) - **commit subject** 中文,祈使句,不超过 50 字 - **push 前** 必跑 `pre-commit-check.sh` - **.workbuddy/config.json** 绝对不入仓(已在 .gitignore) - **.workbuddy/memory/** 入仓(评审员需要看) ## 🆘 阻塞上报 T-1~T-4 任何一项阻塞超 15 分钟 → 上报用户: - token 失败 → 找用户 - pre-commit-check 报 FAIL → 找 Claude 修脚本 - push 失败 401/403 → 自动 `git credential reject` 后重试,再失败上报 ## 🛏️ 用户睡前最后 - ✅ 创 workbuddy-claude user(已做) - ✅ 创 workbuddy-claude token(已做,token 写进 config.json) - ✅ token 配进 config.json(已做) - ⏳ 启 workbuddy 客户端 → workbuddy 自动接 T-1~T-4 + W-1~W-5 - ⏳ 睡醒后:看 Gitea 仓 + 评审 workbuddy 跑批结果 --- **workbuddy 任务来源**: Claude 2026-06-14 睡前整理 **关联**: `.workbuddy/memory/2026-06-14-批量任务.md`(W-1~W-5)