AI 实践笔记

February 28

本文所有文字包括标点符号都是我古法手工编辑的

自动补全都没开

~

时间线

从 2024年开始, 我逐渐开始使用 AI 辅助编写side projects。

时间里程碑主要模型工具
2024/6自动补全-VSCode
Copilot
2024/11使用单Agentic交付外包项目Gemini-2.0
Claude-3.7-Sonnet
Cursor
Windsurf
2025/3Gap Year 🛏️--
2026/1Test-driven Development
Single Agent
GPT-5.2
Gemini-3-pro
Claude-Opus-4.5
VS Code
2026/2Test-driven Development
Agent Team
GPT-5.3-codex
Claude-4.6-Opus
VS Code
Codex
OpenCode

写下这些是希望我能时不时回头看看, 除了跟随浪潮, 我是否有尝试去 探索/推动 AI 的能力边界。


一些实践

我们完全可以把Agent当作人来看, 现行的工业实践在Agentic时代也是适用的。

TDD (Test-driven Development)

这是我大部分时间在使用的工作流,可以解决两个棘手的问题:

  1. 当下的context窗口较小
  2. 新增功能造成回退

TDD的步骤如下:

1. 用测试case替代需求描述

比如我有下面这个需求, 给indicator tags加上出现消失动画:

我将使用下面的方式去描述:

我需要在indicator tag出现消失时增加一个动画, 请按照下面的要求编写单元测试: 1. 构造五个indicator, [PRE, L, HDR, PAUSE, FPS], 接下来以 PAUSE 为例 2. t= 0ms, PAUSE 准备入场, PAUSE.xy == FPS.xy, PAUSE.opacity == 0 3. t=300ms, PAUSE 入场完成, PAUSE.x = FPS.x - PAUSE.width - margin, PAUSE.y = FPS.y, PAUSE.opacity = 1 4. 使用缓动曲线 easeSinOut 5. t=150ms, PAUSE.x = FPS.x - (PAUSE.width + margin) * easeSinOut(0.5), PAUSE.opacity = easeSinOut(0.5)

这样的描述将需求永久落盘到了可以重复使用的test harness, 在未来项目变得复杂的情况下也可以避免regression。

2. Agent首先跑一遍expected failing test

这一步通过构造错误, 触发编译器/lint的报错机制, 从而利用现成工具链帮助Agent提前定位需要修改的热点区域。 将注意力限制在比较小的范围, 减少context窗口损耗。

3. Agent使用最小change通过测试

抛开性能、架构等等思维负担, 把注意力放在 完整 实现功能上。

4. 在保证测试通过的情况下用更好的工程实践重构代码

根据此前patch进行重构, 把注意力集中到架构和性能优化上, 真正产出 高质量 的代码。

5. Commit staged files into logical chunks

需求完成, 提交commit。

6. 进入下一个任务


在Agentic时代,代码编写成本几乎为0,测试case将成为更重要的资产。


SKILLs

1. git-commit-logical-chunks

git 提交时根据提交内容编写简要的 commit msg 一直是一项重复但是很重要的工作, 正巧这项工作非常适合AI来做。 在使用过程中沉淀下了几条有用的规则:

Split uncommitted changes into atomic logical commits with project-style messages

这条是核心需求, 大多数时候(尤其是个人项目)我们想起来commit的时候已经是多个功能杂糅在一起的状态。 可以让AI阅读代码,把不同功能修改拆分提交。

DO NOT DELEGATE/BACKGROUND TASKS

这条是在多Agent协作还不成熟时遇到的问题, subagent如果在review过程中修改了文件, 交接工作时会导致上游agent错乱。 此时下游agent的context已经销毁, 最终导致worktree无法恢复。这个问题曾经导致我丢失了一整天的进度 😭。 当然, 如果认真地编写delegate prompt是可以避免这个问题的, 但是一朝被蛇咬, 我情愿多等一会儿。

Create a backup branch snapshot before any staging

agent可能会阅读修改编写patch来拆分功能, 此时会使用一些非常危险的命令, e.g. restore, reset, etc. 因此在任何操作之前, 先要求agent创建一个backup分支, 这样出错后永远都有一份backup。

© 2020 - 2026 Ruiyao Luo

26/02/28 15:20

PROD

#8092b35