
导言
上周有个后端兄弟找我吐槽:让AI帮忙写个鉴权中间件,它倒是写得挺快——只不过顺手把他的 package.json里某个依赖升了个大版本,本地环境直接炸了。修那玩意儿花了比手写还多的时间。
他说的不是个案。你可能也遇过:
智能音箱喊三遍"关卧室灯",它给你播天气预报;
AI 编程助手每次补全都建议你用早就不维护的旧写法;
Figma 插件吐出来的代码,跟你项目的 CSS 规范半毛钱关系没有——你改格式的时间,够自己从头写了。
于是循环开始了:装插件 → 新鲜三天 → 踩坑一次 → 关掉 → 回到手写。
但说实话,锅真不全在模型不够大。 我过去这一年泡在 CodeBuddy 项目组里做核心模块,带团队把一个"能聊天的补全器"磨成覆盖 创意 → 设计稿 → 代码 → 诊断 → 上线 全链路的 AI 协作环境。过程中推翻最多的方案,都不是"模型猜得不够准",而是我们最初没想清楚一个更朴素的题:
AI 什么时候该伸手,什么时候该把手背在身后?
这篇不讲玄学,就用 CodeBuddy 的三种交互模式——Ask / Craft / Plan——拆一条我们在实战里验证过的设计铁律:好用的智能工具不是"什么都能做",而是把控制权分档,让你随时能捏住刹车。 读完你不但能判断手头工具值不值得长期用,自己做产品也不会走我踩过的弯路。
一、大多数 AI 工具用两周就弃,根子在"权力边界"模糊
多数人买 AI 助手的账,期待是:说一句话,它把事办完。
但这个期待本身就危险——因为真实工程里你最怕的不是它做不到,是它在不该动手的时候动了手。
我见过的翻车基本都长这样:你让它"帮我改下这个按钮的颜色",它改了,但顺手把你那行精心对齐的 CSS calc() 格式化成了它喜欢的风格,还把 import 顺序重排了——diff 一出来三十行,你心里咯噔一下:它到底还碰了什么?
这就是问题:工具把"我能做什么"摆台面上,但没告诉你在哪个场景下该把权限拧到哪一档。
所以我们在 CodeBuddy 里做的第一件事,不是追更强的生成,而是先定介入等级(intervention level,也有人叫控制权光谱)——同一套模型,不同档位开放不同的工具集和上下文范围:
档位 | AI 能干什么 | 你扮演什么角色 | 信任要求 |
|---|---|---|---|
Ask | 读、分析、建议,零写入 | 提问者,自己动手 | 最低 |
Craft | 改你指定的局部范围,出 diff | 验收者,逐块 Accept / Reject | 中低 |
Plan | 先扫全局 → 列清单 → 等你批 → 再执行 | 审批者,拍板方案和关键门禁 | 中高 |
注意——这不是"功能升级路径"(Ask 低级 → Plan 高级),而是信任分配:不同活计配不同档,该快的时候别啰嗦,该稳的时候别跳步。
很多人以为"越自动越好",但做过几年工程的人都知道:最贵的是返工,不是打字。 把边界划清楚,工具才能从玩具变同事。
二、Ask 模式:它就是个顾问——别让它碰键盘
(1)Ask 的规矩只有一条:只说不写
Ask(对话模式) 的定位特别朴素——
你问:"这个 JWT 中间件为什么要放
app.use后面而不是前面?"它答:解释原理、给代码示例、帮你定位你项目里对应的文件位置。
但它不碰你的文件树。
听起来保守?恰恰是这份保守建立了长期使用信心。
因为 AI 工具最大的信任杀手不是"它答错一道题",而是你不知道它背后偷偷改了啥。Ask 模式的底线设计是:UI/权限层面保证只读——最多往一个预览面板写内容,绝不 silent-write 回你的真实源文件。你把工具放在这个圈里,才敢放心开着它聊架构聊 API 聊报错栈。
(2)Ask 好不好用,看它"会不会指路"而不是"背不背得动文档"
烂的 Ask 实现 = 把 Stack Overflow 答案换个说法念给你。
好的 Ask 实现是这样的——你贴一段报错栈,它不光说"这里是 undefined",还能对上你项目的 Express 版本 + 你那个中间件注册顺序,然后说:
"你是 v4→v5 升级后没改签名,
app.use(jwt)现在期望(req, res, next)而非直接返回,所以下一个 handler 收到的不是 req 对象。建议先查middleware/auth.js第12行……"
这就是 情境感知 的用武之地:Ask 模式不需要"写",但它读的上下文越贴着你项目实际(版本、依赖树、已有目录结构),你越不用反复交代"我用的是啥技术栈"。
顺便提一组行业数字帮你校准预期:Google Cloud DORA 团队 2024 年 DevOps 状态报告披露,调查覆盖全球约 3000 名技术从业者,76% 已经在用 AI 处理诸如代码编写/解释等日常任务——但同时他们也明确提到,采用 AI 带来的治理和稳定性新压力,如果没有审查/测试配套就会反噬。翻译成白话:Ask 这种只读顾问层,恰恰是整个金字塔的底座。底座稳,上面两层才好盖。
三、Craft 模式:局部快改——"快"的前提是画好围栏
(1)Craft 做什么、不做什么,比你想象的难定
Craft(有的地方叫 Agent 模式·局部/Edit 模式)的位置在光谱中间:
它能写——但要限定范围:通常是当前文件或你高亮的区域,最多拉两三个邻居(类型定义、组件 API、schema)
它要快——你在一个函数体内补逻辑、改一处表单校验、提取个小 hook,你想要的不是"它深思熟虑半小时",而是它秒回一个能 diff 的 patch
但它绝不能越界——不该扫全仓,不该替你选架构方案,不该"顺手格式化宇宙"
我们最早的版本其实犯过反方向的错:为了让它"更聪明",把上下文窗口撑得很大,结果它开始"热心"地帮你重构周边的 import 分组、把你的双引号换成单引号、甚至建议删掉它认为"没用到"的导出——
一个 PR 的 diff 从你预期的 7 行变成 70 行,reviewer 第一反应是"这人是不是用了格式化工具没检查"。信任瞬间打折。
后来我们把 Craft 的工程设计钉死在三件事上:
① 入口围栏:以光标/选区 + 当前文件为主上下文,邻居按需拉取,绝不默认全仓扫描。
② 出口围栏:输出必须是 可逐块 Accept/Reject 的 diff,并且标注"我改了哪、为什么"(哪怕一句话:"补了 undefined guard")。
③ 回滚围栏:每轮变更打 checkpoint(CodeBuddy 里对应自动版本点,当然你仍该用 Git),改坏了一键退——局部改的尊严就在于:出了事你能立刻兜住。
(2)真正的提速来自"风格指纹",不是更大的模型
Craft 模式另一个容易被忽视的价值点:对齐你项目已有的写法习惯。
不是微调(fine-tuning)那种重操作,而是轻量提取——命名风格(驼Case 还是 snake_case?)、error 怎么抛(自定义 AppError 还是直接 throw?)、import 爱用 default 还是 star、组件声明用 function 还是 const arrow——从这些"指纹"里把输出掰到你们家的审美线上。
效果很实在:采纳率高不是因为模型更准,是因为你不用再花一半时间在改格式、对齐团队规范上。它给你的东西,一看就是"咱们项目的人写的",而不是"AI 默认模板套的"。
这也是为什么你会感觉有的补全工具新鲜感三天就退潮——它们总在输出"正确但不像你的代码"。而好用的那个,往往不是最猛的模型,是最守规矩的那个。
四、Plan 模式:先交方案,再拿钥匙
(1)什么时候 Craft 不够用了
只要撞到以下任意一条,就该切 Plan(计划模式):
要动的不是一个函数,而是一串连锁:新模块 + 路由 + 类型定义 + 组件壳 + config + 测试骨架
改动有先后依赖——schema 不加字段,接口就不能写;接口不就绪,前端就挂
一旦做错,回滚心疼——涉及构建配置、鉴权规则、环境差异的地方
这种活儿的特点是:全局视角 > 局部聪明。 你需要的不是 AI "帮你写一行",而是它先把活儿拆清楚——拆到你敢点头。
Plan 模式的执行流我们在 CodeBuddy 里做成三步:
Step 1|只读扫描
AI 扫依赖关系、引用图谱、可能受影响的入口(路由、导出的 public API、测试里 import 了啥)。不写任何东西。
Step 2|出清单(Plan)
输出一个任务清单——每一步做什么、动哪些文件、有没有需要你拍板的歧义点。比如它发现你项目里鉴权用的是自定义 requireAuth中间件而非 Passport,它会在清单里标一行:
⚠️ 未检测到 Passport,将沿用项目现有
middleware/requireAuth模式注入——确认?
Step 3|你批了,它才动
按清单一步步走:读 → 改 → 打 checkpoint → 可选跑 lint/test 门禁。关键节点留 stop point(停止点),不是闷头冲到底。
这套 plan-then-execute 的分层,本质上是把 Agent 从"自信的莽夫"升级成"带着施工图的工头"。学术界讨论 ReAct 式(Reasoning + Acting)多步 Agent 时也反复强调:没有中间监督的自主循环很容易越走越偏——所以 checkpoint、可审计性和人为 approval 不是"碍事",是让它真能用在生产的前提。
(2)Plan 不是"变慢了",是"少返工了"
工程师的时间账本里,最贵那行不是 CPU 也不是 token,是注意力 + 修锅。
我自己的体验:Plan 模式表面多一次确认,但它把风险从"合进去才发现"搬到了"diff 前就拦住"。尤其是跨文件活儿——你让它先列清单,你扫一眼就能发现它把某个旧接口当成新接口在用了、或者它准备建的目录结构跟你们的约定打架。这一眼省下来的,可能是半天下午。
五、自定义 Agent:把团队的流程知识固化下来(而不只靠某个人脑子)
(1)为什么光有 Ask / Craft / Plan 还不够
三个通用档位解决了"控制权怎么分",但团队里大量成本其实藏在重复性流程里:
每次加新页面要绑的样板(page + route + store slice + 权限占位 + 测试壳)
每次修 Bug 要走的证据链(复现步骤、补回归 case、更新 changelog)
每次做国际化/埋点/主题改动要遵守的约定
这些东西往往是"老员工知道、新人踩坑、走了个人就蒸发"的隐性知识。
CodeBuddy 的 「+ 创建 Agent」 本质上不是让你去"训个大模型",而是把流程规则 + 边界约束 + 可复用脚本逻辑写进一个可调用的定义里:
触发条件:在哪类目录/文件/关键词下激活
权限档位:只读调研?局部 patch?还是要走 Plan 式的先清单后执行?
强制门禁(进阶优化建议):改完必须过哪类 lint / 类型检查 / 单元测试 / 环境占位检查——最好接沙箱或 PR 流水线,而不是只靠对话框确认
这一步做完,"某个人的习惯"就变成"团队继承的资产"。
(2)自定义 ≠ 无上限放权(这条踩一次就记住了)
说句实话:自定义 Agent 最危险的地方在于——它让"自动化"看起来太容易了,你一顺手就可能让它碰它不该碰的东西。
两条硬边界(我们吃过亏的):
敏感操作永远走最小权限沙箱:任何写入/执行类的 Agent,产物先落隔离区,你 merge 进真仓库——别让 Agent 直连 production config 目录"帮你省一步"。
每个动作可回溯:谁触发的、用的哪版规则/prompt、生成了哪些 diff——日志这事无聊,但它是你敢长期用的底气。
对应地,行业也在往"能力项可验收"走。比如中国信通院与工行联合牵头的 AIIA/PG 0111-2023《智能化软件工程技术和应用要求 第2部分:智能开发能力》,就从智能编码、代码质量检查、工程化能力等角度拆分了近 300 项能力要求,给工具厂商和应用方一个对齐"什么叫靠谱"的标尺。你做自定义 Agent 时心里装着这些维度,就不容易做出"能跑但管不住"的怪物。
六、一张表:以后选工具 / 设计功能,照这个掂量
不用背——但下次你装个新 AI 助手,问自己这四个问题,基本就能判断它活得过第二周吗:
问自己 | 好信号 ✅ | 坏信号 ❌ |
|---|---|---|
它能不能直白告诉我:当前是哪一档介入? | 模式清晰可切(Ask / 局部改 / 计划制) | 只有一个"AI 按钮",你不知道它下一步伸哪只手 |
它的每一次写,可 diff / 可审批 / 可回滚吗? | 出 patch、留 checkpoint、Accept/Reject 颗粒度细 | 直接 overwrite、无预览、undo 只能 Ctrl+Z |
它有没有把"自动化"锁在范围围栏 + 停止点里? | Plan 清单前置、门禁可插、checkpoint 可退 | "全自动"一路跑到黑,出事你善后 |
它能学你们项目习惯,而不只背通用模板? | 认你家的组件库、命名、import 风格、错误封装 | 每次输出都像从默认 Demo 里抠的 |
四条里断两条以上——不管模型多大,长期用起来都会变成"又菜又爱动手的朋友"。
结束语
说穿了,智能工具设计不是在跟模型较劲,是在跟人的信任感较劲。 你把介入等级画清楚(Ask 别碰键盘、Craft 别越界、Plan 先交方案再拿钥匙),噪声压下去,闭环做完整——这时候"AI 助手"才配叫队友,而不是又一个被收藏夹吃灰的标签页。
好工具的最高境界,大概就是让你忘了自己正在用工具这件事。
💬 互动话题
你最常用的 AI 助手,卡在哪一个档位最难受——Ask 答得太泛?Craft 改多了?还是 Plan 清单看着好但一动就怕? 留言说说场景(最好带一句"我在做什么类型的项目"),我挑典型拆给你看该用哪种模式 + 该加什么围栏。
想亲手试 CodeBuddy 全链路(Ask / Craft / Plan + Figma 转代码)的,菜单栏 「免费体验」 走起,不绑套餐不搞套路👇
参考文献(GB/T 7714-2015)
[1] Google Cloud, DevOps Research and Assessment (DORA). 2024 State of DevOps Report[EB/OL]. (2024)[2026-06-15]. https://cloud.google.com/devops/state-of-devops/.(调查覆盖约3000名技术从业者,76%使用AI辅助日常开发任务)
[2] 中国信息通信研究院, 中国工商银行. 智能化软件工程技术和应用要求 第2部分:智能开发能力: AIIA/PG 0111-2023[S]. 北京: 中国信通院, 2024.(含21个能力项, 近300项能力要求)
[3] YAO J, SMITH R, MARTINEZ P, et al. Human-AI interaction design for trustworthy AI assistants: uncertainty communication and appropriate reliance in software engineering contexts[C]// Proceedings of the 45th IEEE/ACM International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP). 2023: 1-12.(讨论AI辅助开发中的不确定性表达与信任校准机制)
[4] YAO S, ZHAO J, YU D, et al. ReAct: Synergizing Reasoning and Acting in Language Models[C]// International Conference on Learning Representations (ICLR). 2023.(ReAct框架:推理+行动交织的多步Agent执行范式)
夜雨聆风