blog-demo · 运维与踩坑
开发工作流:减少重复,保留必要验证
从任务边界到分支、验证、提交和发布的仓库协作约定。
- 状态
- 维护中
- 最后核对
- 源码修订
e0d3baa2
开发工作流:减少重复,保留必要验证
本轮开发复盘(2026-09-06)。目标是减少重复读取、无效工具调用与返工;没有逐步骤 token 计量,不宣称具体节省比例。根目录 AGENTS.md 是每次任务的简短入口,本页按需阅读。
一次任务的顺序
- 确定边界:看状态和相关差异,区分用户内容与开发改动;把功能、内容、测试、文档的提交分组列清楚。
- 定位证据:搜索文件和符号,再读命中范围。已读设计上下文、工具文档和句柄继续使用,避免重新发现。
- 完成一个闭环:例如修改内容字段时,同步网站 schema、Studio 表单与保存、文档和相关测试;完成后再转向下一个问题。
- 按影响验证:将结果与输入版本、路径配置和浏览器环境对应起来。新改动影响哪部分,就重新验证哪部分。
- 提交与发布:先审查完整差异,再按组提交;普通推送只进入轻量 CI。版本准备允许多轮方案评审和局部验证,得到作者明确批准后才冻结候选并开始全面复核。明确区分已推送、Release 制品已生成、ECS 已部署与页面已更新。
这次最值得保留的改进
| 观察到的消耗 | 固定做法 |
|---|---|
| 多份长文一次输出被截断,随后又补读 | 先看标题/符号,再读有关范围;输出预算按资料量设置,不把一批读操作变成整库倾倒 |
| 在连接器、终端、浏览器之间重复查同一个状态 | 源码用本地文件,Git 用 Git,部署用 Actions 工具,界面用指定浏览器;得到权威结果后停止重复确认 |
| 浏览器连接超时后重复建立相同连接 | 先诊断一次;保留已有标签身份。静态上线证据可来自 HTTP 与 CI,但必须说明它不等同于现场交互验证 |
| 检查经过的版本与后来修改的版本混在一起 | 留一条临时验证记录:范围、输入版本/差异、命令、BASE、浏览器、结果、日志;有关输入改变才让对应结果失效 |
| 大量成功测试输出挤占上下文 | 完整日志留临时目录,返回退出码和简短汇总;失败时读取首个错误及周围上下文 |
| 分组提交后才发现原始内容末尾空行 | 在第一次提交前检查全体预期改动;新文件暂存后也检查。推送前再检查完整 outgoing diff |
| 全站改版完成后才回头检查编辑器 | 需求开始就列“网站 / Studio / 数据 / 测试 / 文档”的影响面 |
验证范围
| 改动 | 所需验证 |
|---|---|
| 仅 Markdown 维护文档或 AGENTS | 差异、内部链接、命令与实际实现一致性 |
| 内容或字段 | 内容/Studio 相关单测、检查、构建;新增衬线文字关注字表;展示改变时检查页面 |
| Studio 保存、提交或推送 | 服务端相关测试与 test:studio;临时仓库验证保存/提交,作者内容不参与;预览构建变更加 STUDIO_BUILD_TEST=1 |
| 网站 UI / 公共组件 | 检查、构建、单元与浏览器回归、有关视觉基线 |
| 路由、搜索或发布 | 使用正式域名与根路径构建;部署后检查实际生产入口 |
当前单元测试会创建临时内容文件,构建与检查也共用内容和 Astro 状态,不能盲目并行。只读搜索可以并行;对同一批源码的构建、写文件测试和字体生成依次执行。
浏览器相关开发和验证默认使用 Microsoft Edge。macOS 默认路径由 scripts/browser-path.mjs 解析;只有明确设置 BROWSER_PATH 或 EDGE_PATH 时才覆盖。
构建前不为“顺便看看”抓取行情。运行中的 Studio 与日常预览服务继续保留,测试使用独立端口并只关闭自己创建的进程。
简短日志模式
npm run check > /tmp/blog-check.log 2>&1
从工具返回读取退出码;失败再定向读取日志。不要用 npm run check | tail 将管道末尾成功误当作检查成功。日志是本次任务证据,不进入 Git。
临时交接笔记只保存当前目标、完成项、剩余项、改动范围、验证环境与结果、服务/部署标识;不要复制整段对话。规则发生变化才更新工作约定,避免每次复盘都堆叠新规则。
仍需坚持的门槛
节省 token 不等于减少必要测试、跳过视觉检查、把部署成功当作行情更新成功,或让旧测试结果覆盖新改动。优先消除重复工作,再降低每次读取与检查的输出量。
本轮 Studio 实施补充:先用一个最小草稿贯通保存与真实构建,尽早发现序列化和临时依赖路径问题,再扩展截图。异步界面测试等待可见完成状态,避免用点击结束推断数据已返回。