用 AI 写代码别只甩一句指令,这套工作流救过我的项目

年初我信了那句"一句话让 AI 写完整个项目"的说法。真上手做那个本地阅读器时,翻车了。

我给 Claude Code 一句"做个能看 epub 的桌面软件",它确实给了我一堆代码。跑起来才发现,界面不是我要的,翻页逻辑反了,搜索框点了没反应。问题不在模型笨,是我把"听话的执行者"当成了"懂我心思的同事"。

我想说的核心就一句:用 AI 写代码不能只甩一条指令,必须建立一套"把预期逐步固化"的工作流,才能交付贴合需求、少 bug 的作品。下面把这套打法和它背后的道理摊开讲。

为什么一条指令不够?因为 Agent(Codex、Claude Code 这类)本质是"听话的执行者"。你给的指令越模糊,它越按自己的理解自由发挥,产物就越容易跑偏。这不是能力短板,是机制使然------它不会读心,你的预期不写清楚,它就拿自己的默认理解来填。指望把提示词写得更长更完美来解决问题,方向就错了。

我后来沉淀出的流程是五步:环境搭建、产品设计、技术设计、产品实现、人工验证。

先把地基打牢。每个项目开 git 仓库,再写一份 AGENTS.md 当项目说明书------这个词得解释下,它是一份专门写给 AI 看的约定文件,核心就两条:每做一个功能提交一次 commit,跑通测试再交付。文件不用长,把硬规矩钉死就行,这是我为阅读器写的初版:

markdown 复制代码
# AGENTS.md

你是本项目的开发助手,交付前必须遵守以下规则。

## 提交规则
- 每完成一个独立功能,单独提交一次 commit
- commit message 格式:feat: 实现某功能
- 禁止把多个不相关的改动混在一个 commit 里

## 质量门禁
- 改动后必须跑通 `npm run test` 与 `npm run build`
- 本地能正常启动、核心流程能走通,才允许说"完成"

## 技术栈(禁止擅自更换)
- Electron + React + TypeScript
- 状态管理用 Zustand,不要引入 Redux
- 样式用 CSS Modules

## 明确不做的范围
- 不做笔记 / 标注
- 不做云同步
- 不做账号系统

这里顺带说几个术语。MVP 是最小可用产品,意思是第一版只做核心功能,别贪多。Electron / React / TS 是桌面应用的常用技术栈。前端是你看得见、能点的界面,后端是背后处理数据的逻辑------做 demo 时我们先碰前端、后端先不做处理。

接着做产品设计,只画 MVP,更要紧的是写清楚"不做什么"。阅读器第一版我就写死不做笔记、不做云同步、不做社交分享。边界划清了,AI 才不会自作主张给你堆用不上的东西。

技术设计这一步别省,把栈写进 AGENTS.md,AI 就不会今天一个框架明天一个库。

产品实现时,关键动作是给 AI 一个能自测的环境。借助 computer use 或 Chrome 插件------这两个是让 AI 真正操作电脑、打开页面去"看"效果的验证工具------让它点按钮、看反馈,自己确认"翻页按钮到底灵不灵",比我对着 diff 猜高效太多。

复杂项目我还会多一道:先只做前端、数据全用 mock,捏个 demo 验交互。比如阅读器我先不接真实 epub 解析,用假数据把翻页、进度记忆跑顺:

javascript 复制代码
// 先用 mock 数据把交互跑通,真实解析后面再接
const mockBooks = [
  { id: '1', title: '测试书A', content: '第一章内容......', progress: 0 },
  { id: '2', title: '测试书B', content: '示例正文......', progress: 30 },
]

function Reader() {
  const [books, setBooks] = useState(mockBooks)
  const [current, setCurrent] = useState(books[0])

  const turnPage = (step: number) => {
    const next = Math.min(books.length - 1, Math.max(0, 0 + step))
    setCurrent(books[next])
  }

  return <div>{current.content}</div>
}

这一步帮我在早期就发现一堆方向性错误。简单的小脚本,这道可以省。

最后一道关永远是人,亲自把功能走一遍。

说到底有三条原则谁都不能省:版本管理、给 AI 自测环境、人工验证。你参与得越多,掌控越强,但交付越慢。按需求的复杂度和重要性去权衡,别生搬硬套。

我的立场很明确:我是实用主义者,当前这个阶段,人还是得把控预期和质量,把决策权一股脑交给 AI 我不认同。也别把这流程当金科玉律------模型能力还在飞快进化,今天好用的方法明天未必,它本就不是终极答案。

AI编程落到行动上,三件事必须做:第一,建个 git 仓库,写份 AGENTS.md 要求它自测;第二,复杂需求走满设计环节,简单需求大胆裁剪;第三,无论多信 AI,务必亲自验收。

如果要给这套东西下一个总结:它的核心价值,是把"模糊需求 → 可信交付"这件事过程方法化了。利用AI编程只记一句,那就是:让 AI 能自己验证、你再验一遍,比写更长的提示词重要得多。

相关推荐
极客互动API1 小时前
极客互动-企业微信基于外部API接口实现AI客服自动接管外部联系人消息收发
java·微信·企业微信·ai编程·rpa
Sam_Deep_Thinking1 小时前
关于java final关键字的可见性
java·后端·面试·程序员
秋天的一阵风1 小时前
⚡上线 24 小时,13% 的付费团队连夜换到 Jev:它到底什么来头?
前端·人工智能·ai编程
狂师2 小时前
cloudflared,不需要服务器和公网 IP 的免费内网穿透,一条命令上手
服务器·程序员·开源
youcans_2 小时前
【嵌入式软件AI编程】16. Claude Code 与 VS Code 的协同开发
stm32·mcu·嵌入式·ai编程·claude code
demo007x3 小时前
我用 AI 做了一个跨平台的PopClip:拾趣Magpie
程序员·github·ai编程
xiezhr3 小时前
我用豆包 Seed-2.1-pro-0915 做了个「今天吃啥」,中午点菜这事终于不用纠结了
agent·ai编程
zzzzzz3104 小时前
每日一条技术记录:把碎片学习变成可复盘的知识卡片
程序员·markdown·沸点
csdn_aspnet5 小时前
用Claude Code重构遗留系统,老项目自动化重构实践,提示词与效果验证
ai·ai编程·claude·anthropic