摘要:2. 建立"经验文档",让 AI 越用越懂你
参考 Claude Code 创建者 Boris Cherny 的做法:建一个 Claude.Anthropic
《教练的常识》(Becoming a Coach: The Essential ICF Guide),[英] 乔纳森·帕斯莫尔(Jonathan Passmore)、[英] 特雷西·辛克莱(Tracy Sinclair) 著,中国人民大学出版社。《CCF中国教练联盟核心能力解读(通用能力版)》,FDCL五维教练团 著,中国法制出版社,2021年。
前言
近年 AI 发展迅猛,经常看到 AI 要取代这个、取代那个的消息,让人颇感焦虑。我想通过做一款高度复杂的应用,看下 AI 编程的能力边界。最复杂的应用莫过于操作系统。我认为如果未来存在所谓的“AI 操作系统”,那么它必然是开源的。因为对于任何闭源系统,借助 AI 编程都能被迅速复刻并开源。此外,该系统必然拥有前端界面以降低使用门槛,既能深度融合文本、图片、视频等模型能力,也能完美呈现这些多模态内容。
基于这些判断,我利用 drawnix 进行二次开发,创作了 Opentu(开图)。虽然 Opentu 距离真正的 AI 操作系统还有很长的路要走,但目前已具备许多功能:AI 图片生成、视频生成、图片预览、图片编辑、素材库、云端同步、Agent、Skill 等。所有代码均由 AI 编写,主要使用的 AI 编程工具包括:Claude Code、Cursor、Codebuddy、Trae,核心模型为 Claude Opus。
AI 确实很强,但目前仍只是一个高杠杆工具,需要人的引导。玩过杠杆的人都知道,提升 1% 的正确率意味着什么。如果是 10 倍杠杆,有经验的人可能带来 10 倍收益,而缺乏经验的人可能制造出 10 倍的“屎山”代码。但有了 AI 之后,非专业人员也能开发应用,经过学习同样能引导 AI 写出优质代码。如果员工的价值与产出成正比,那么会用 AI 写代码的员工价值会最大的。因为 AI 是杠杆,软件应用也是杠杆。因此,我认为人人都应该学习 AI 编程。基于此判断,我让妻子学习了 AI 编程。她从零经验开始,经过 2 周摸索,已经可以给 Opentu 提交 PR 了。她并非突然掌握了所有语法、框架和工程化细节,而是学会了三件事:
ICF(国际教练联合会)对教练的定义是:在一个发人深省和富有创造性的过程中与客户合作,激励客户最大限度地发挥个人和专业潜能。教练式编程就是指在 AI 编程中,我们通过深入洞察问题与反馈,将 AI 的潜能发挥到极致。在腾讯教练俱乐部的多次大咖分享中,我听到最多的一句话是:“教练是一面镜子”。教练像镜子般让客户看到真实的自己,并通过这种观察让客户更全面地看待待解决的问题,从而启发更多可能性。我有幸听过一次吴咏怡博士的分享,她的“六维认知模型”深受启发。所谓六维,即通过多个角度的“镜子”让客户看到问题全貌并深挖细节,逐步逼近问题本质。
[图 1] 六维认知模型,图片来源:吴咏怡博士朋友圈
六维反馈法
受吴咏怡博士的启发,我在 AI 编程中也总结了 6 个验收时洞察问题的维度:
维度
看什么
1. 看界面
长得对不对?有没有错位、遮挡?
2. 试交互
点击、滑动、输入,操作顺不顺?
3. 验逻辑
功能是否真正实现了?边界情况对不对?
4. 查日志
后台看命令行输出,前端看浏览器控制台日志
5. 看代码
代码结构是否合理?有没有重复或混乱? IDE 错误告警?
6. 用工具
浏览器 DevTools 看网络请求、元素结构等,也可以自己写一些监控工具来帮助分析细节
问题反馈的提示词模板:xxx 目前是什么情况,预期是什么情况,修复这个问题
对于界面(UI)问题,可以截图反馈给 AI,告诉它当前 UI 是什么情况,预期是什么情况。
“界面”和“交互”这两个维度,即便没有编程经验也能直观看出。这部分比较容易上手,大部分情况下反馈给 AI 后都能解决。
而对于“逻辑”,可能无法直观发现。可以让 AI 将相关逻辑提取为公共模块,并完善单元测试,通过单测来辅助发现问题。
如果前 3 步发现了问题,反馈给 AI 后仍未解决,则需要深入细节。
前言
近年 AI 发展迅猛,经常看到 AI 要取代这个、取代那个的消息,让人颇感焦虑。我想通过做一款高度复杂的应用,看下 AI 编程的能力边界。最复杂的应用莫过于操作系统。我认为如果未来存在所谓的“AI 操作系统”,那么它必然是开源的。因为对于任何闭源系统,借助 AI 编程都能被迅速复刻并开源。此外,该系统必然拥有前端界面以降低使用门槛,既能深度融合文本、图片、视频等模型能力,也能完美呈现这些多模态内容。
基于这些判断,我利用 drawnix 进行二次开发,创作了 Opentu(开图)。虽然 Opentu 距离真正的 AI 操作系统还有很长的路要走,但目前已具备许多功能:AI 图片生成、视频生成、图片预览、图片编辑、素材库、云端同步、Agent、Skill 等。所有代码均由 AI 编写,主要使用的 AI 编程工具包括:Claude Code、Cursor、Codebuddy、Trae,核心模型为 Claude Opus。
体验链接:opentu.ai/
GitHub 地址:github.com/ljquan/aitu
为什么说人人都能学会 AI 编程
AI 确实很强,但目前仍只是一个高杠杆工具,需要人的引导。玩过杠杆的人都知道,提升 1% 的正确率意味着什么。如果是 10 倍杠杆,有经验的人可能带来 10 倍收益,而缺乏经验的人可能制造出 10 倍的“屎山”代码。但有了 AI 之后,非专业人员也能开发应用,经过学习同样能引导 AI 写出优质代码。如果员工的价值与产出成正比,那么会用 AI 写代码的员工价值会最大的。因为 AI 是杠杆,软件应用也是杠杆。因此,我认为人人都应该学习 AI 编程。基于此判断,我让妻子学习了 AI 编程。她从零经验开始,经过 2 周摸索,已经可以给 Opentu 提交 PR 了。她并非突然掌握了所有语法、框架和工程化细节,而是学会了三件事:
更关键的是,她学会了一个“新手也能复制”的技巧:
AI 编程的核心技术:洞察与反馈
现在的 AI 编程工具基本能做到“指哪打哪”:你给需求,它很快能写出一版实现。
但只要需求足够复杂,几乎不可能一次性 100% 正确。初次实现达到 60%~80% 很常见,剩下的 20%~40% 才是主要成本所在。
所以 AI 编程的流程大体是:
在 A 模块新增/修改/删除 xxx [关键逻辑或验收标准],不确定的地方先问我)因此关键问题是:你能否看到所有的这 20%~40% ?
为什么需要人来验收?
因为 AI 无法自查。如果它能意识到自己错了,它早就改对了。作为人类,我们的核心价值不是“写代码”,而是“发现问题”和“指引方向”。
这就像教练与运动员的关系:AI 是那个天赋异禀但偶尔犯错的运动员,而你是教练。你的任务不是替它上场跑,而是像一面镜子,帮它发现自己看不到的问题,激发其潜能。
什么是教练式编程
ICF(国际教练联合会)对教练的定义是:在一个发人深省和富有创造性的过程中与客户合作,激励客户最大限度地发挥个人和专业潜能。教练式编程就是指在 AI 编程中,我们通过深入洞察问题与反馈,将 AI 的潜能发挥到极致。在腾讯教练俱乐部的多次大咖分享中,我听到最多的一句话是:“教练是一面镜子”。教练像镜子般让客户看到真实的自己,并通过这种观察让客户更全面地看待待解决的问题,从而启发更多可能性。我有幸听过一次吴咏怡博士的分享,她的“六维认知模型”深受启发。所谓六维,即通过多个角度的“镜子”让客户看到问题全貌并深挖细节,逐步逼近问题本质。
六维反馈法
受吴咏怡博士的启发,我在 AI 编程中也总结了 6 个验收时洞察问题的维度:
问题反馈的提示词模板:
xxx 目前是什么情况,预期是什么情况,修复这个问题对于界面(UI)问题,可以截图反馈给 AI,告诉它当前 UI 是什么情况,预期是什么情况。 “界面”和“交互”这两个维度,即便没有编程经验也能直观看出。这部分比较容易上手,大部分情况下反馈给 AI 后都能解决。 而对于“逻辑”,可能无法直观发现。可以让 AI 将相关逻辑提取为公共模块,并完善单元测试,通过单测来辅助发现问题。 如果前 3 步发现了问题,反馈给 AI 后仍未解决,则需要深入细节。
可以添加日志来辅助分析。我常用的提示词是:
xxx 实现不正确,添加日志帮助分析。加上日志后,复现对应场景,将输出的日志连同问题描述发送给 AI,通常都能修正。如果仍未修正,就需要进一步放大细节。有编码经验的朋友可以查看代码细节,若能定位到问题代码,大概率能修好。当然,我们也可以利用工具来查看细节。在 Opentu 中,我专门制作了一个“日志/调试”页面来辅助收集详细信息。
总而言之,AI 编程写出正确代码的关键在于:我们通过多维度,更敏锐、精确地洞察到问题所在,并反馈给 AI。在这个过程中,我们就像教练一样。虽然编程经验丰富的人在 AI 编程中更有优势,但前 4 个维度无需编程经验也能轻松掌握。因此,零基础的人也可以通过多维度反馈,引导 AI 写出正确的代码。
让 AI写出好代码的4 个最佳实践
写对代码只是及格线。对于复杂应用,需求会不断叠加。如果代码质量差,后续每加一个功能都是在“屎山”上堆砖,越堆越危险。
1. 基于模板项目起步,别从零开始
大模型有一个天然倾向:用最低成本实现需求。如果你让它从空白目录开始,大概率会得到一堆简陋的脚本文件。基于成熟模板,既可以减少生成公共代码的 Token 消耗,又能利用模板中包含的最佳实践和代码规范来约束 AI。基于模板开发,AI 编程工具能更好地遵循规范。我在用 AI 编码时也会不断沉淀和优化模板代码,目前模板项目尚未完善,暂不发布。
2. 建立"经验文档",让 AI 越用越懂你
参考 Claude Code 创建者 Boris Cherny 的做法:建一个
Claude.md规则文件,每次开发完新功能,把踩过的坑和总结写进去。AI 编程工具每次启动时会读取这个文件,相当于给 AI 装上了“项目记忆”。我写了一个自动化命令来做这件事:update-claude-md,每次代码变更后执行一下就行。
3. 持续重构,定期"打扫卫生"
AI 不会主动复用已有代码,经常重复造轮子。你需要定期提醒它:
A 页面的 xx 功能和 B 页面类似,提取成公共模块复用。在 Opentu 中,我将可复用的 UI 组件置于components目录,工具函数置于utils目录,以保持结构清晰。4. 用严格的类型检查当"安全网"
对于前端项目,建议使用 TypeScript 的严格模式。类型检查就像一张安全网,能在代码运行前拦截许多低级错误,减少你和 AI 之间的“返工”次数。
零基础入门指南
如果你完全没有编程经验,想开始 AI 编程,只需要学三样东西:
对于 2 和 3,都可以找相关视频学习,了解基本概念;记不住命令也没关系,可以让 AI 编程工具代劳。如果你还想学习一门编程语言,我建议选择 JavaScript。Jeff Atwood 曾提出过著名的“Atwood 定律”:“任何可以使用 JavaScript 编写的应用,最终都会由 JavaScript 编写。”去年,Anthropic 收购了热门开发者工具初创公司 Bun,而 Bun 正是一个基于 JavaScript 的运行时环境。
参考文献