AI 工具最容易带来的错觉,是“写得更快”就等于“做得更快”。在真实工程里,速度只是表面,真正决定效率的是你能不能把一次对话变成一次可复现、可验证、可回滚的改动。
对 Android、Linux、脚本和日常工程来说,AI 最合适的位置不是“替你思考全部问题”,而是“帮你缩短搜索、整理和试错的路径”。前提是你给它一个稳定的工作流,而不是一段模糊的描述。
一、先定义结果,再定义提问
很多失败的 AI 协作,问题都不在模型,而在输入方式。人一上来就问“怎么修”,实际上还没说清楚要修到什么程度、允许改哪些文件、不能碰哪些接口。
我现在会先把任务写成三句话:
1 | 目标:这次要得到什么结果 |
这一步很朴素,但很关键。没有目标,AI 会发散;没有边界,AI 会给出不适合当前仓库的建议;没有证据,最后只能靠感觉判断“差不多好了”。
二、上下文要少,但必须精
对 AI 来说,大上下文不等于好上下文。真正有用的是那些会影响判断的材料,而不是整个仓库的截图式堆叠。
在 Android 项目里,通常只给这几类信息就够了:
- 相关模块的
build.gradle或libs.versions.toml - 失败任务的完整错误片段
- 关键源码附近的 30 到 80 行
- 本机 JDK、Gradle、SDK 的路径和版本
在 Linux 场景里,也尽量只给:
- systemd 单元或启动脚本
- 服务日志里的稳定错误
- 工作目录、用户、环境变量来源
- 和问题直接相关的配置文件
这样做的好处很直接:AI 更容易抓住真正的约束,你也更容易判断它有没有跑偏。
三、让 AI 先做诊断,不要直接改代码
我更倾向于把 AI 的第一步限定为“诊断”,而不是“生成补丁”。原因很简单,很多问题不是缺一段代码,而是缺一个正确的排查顺序。
一个实用的流程是:
- 让 AI 复述它理解到的目标和边界。
- 让它列出最可能的 3 个原因。
- 让它给出每个原因对应的验证命令。
- 只有在证据收敛后,才让它建议修改。
这对 Android 构建问题尤其有效。比如一个任务失败,常见原因可能是依赖冲突、编译器版本不一致、资源命名问题。先验证,再改动,通常比直接“猜一个修法”更省时间。
四、把命令和结果一起纳入闭环
AI 真正能提升效率的地方,不是写出一段看起来漂亮的方案,而是帮你把“改动”接到“验证”上。
我习惯让它同时输出两样东西:
- 要改什么
- 改完之后跑什么
如果是 Linux 服务,我会要求它把验证步骤写成可以直接执行的命令,比如检查 unit 状态、看日志、确认端口和进程。
如果是 Android,我会要求它明确到任务级别,比如只跑某个 assemble、test 或 lint 目标,而不是笼统地说“重新编译一下”。
这样做的价值在于,AI 不再只是一个建议来源,而是一个能把建议拉进现实验证链路的工具。
五、保留回滚入口,比“聪明修改”更重要
工程效率经常被误解成“少走一步”。其实更稳妥的效率,是每一步都能退回去。
所以我现在给 AI 的任务里,都会默认保留这些习惯:
- 小步提交,而不是一次性大改
- 修改前先记录当前状态
- 对临时脚本和实验性改动保持隔离
- 如果验证失败,先回到上一个稳定点,再换方案
在本地工作流里,AI 负责的是减轻认知负担,不是替代版本控制。你越清楚怎么回退,就越敢让它参与更深入的改动。
六、最适合 AI 的,不是“新需求”,而是“重复工程”
真正能稳定省时间的场景,往往不是最炫的生成任务,而是那些重复、细碎、但又不能粗心的工程动作:
- 整理日志并定位异常
- 把一段散乱的排查过程整理成步骤
- 从多个配置文件里找出冲突项
- 把脚本从“能跑”改到“能维护”
这些事手工做不难,但非常耗心力。AI 的价值在于把这类重复劳动前移,让你把注意力留给真正需要判断的地方。
结语
AI 工具进工程,关键不在“会不会生成”,而在“能不能被验证”。当你把目标、边界、证据和回滚都放进流程里,AI 才算真正进入了日常工作台,而不是停留在聊天框里。
- 本文链接: https://blog.hansong.icu/2026/07/11/ai_verified_workflow_20260711/
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。