ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

从AI补全到终端Agent:Claude Code的闭环机制与实践

从AI补全到终端Agent:Claude Code的闭环机制与实践

如果说传统 IDE 里的 AI 补全是一个“会打字的助理”,那么 Claude Code 类终端 Agent 就是“会自己跑腿的实习生”。我这句话憋了很久:很多人问我,为什么非要在一款黑乎乎的终端里写代码?其实不是终端酷,而是因为只有把工具放到命令行这一层,它才有权限真正进入你的项目目录、读文件、改文件、跑命令、看报错、再回头改代码——这是一个完整闭环。你把它喂饱背景知识、划定好作业边界之后,它就能从一个“只会给建议的聊天框”变成“能执行多步任务的工程协作者”。

这也正是“解构 Claude Code”这件事的价值:它不是魔法,也不是一个简单的命令包装器。拆开看,它本质上是一个由自然语言驱动的任务循环系统。这篇文章我会从四个层面把它拆开:它站在工具链的哪一层、内部的核心循环是什么、实操中怎么配置才能落地、以及成本和安全的账怎么算。适合刚接触终端 Agent 的开发者,也适合想把这套工作流引进团队做自动化的人。我会尽量用“人话”讲,尽量把踩过的坑直接摆出来。

1. Claude Code 到底站在哪一层

1.1 它和聊天式 AI 助手的本质差别

过去我们熟悉的 AI 编程辅助,大多长在编辑器里,给你补全、给你解释、给你生成一段代码,然后你复制粘贴、自己跑测试。问题在于:AI 的“手”很短,它看不到程序跑起来之后的真实反馈。它给你一段代码,但不知道这段代码在你的环境里能不能编译、测试会不会挂。

Claude Code 这类工具不一样。它被设计为一个有“手”的 Agent,运行在终端环境中,能做的不只是生成文本,还包括:

  • 扫描项目目录,理解文件结构
  • 读取指定文件的内容
  • 按你的要求修改代码
  • 执行测试、构建、lint 等命令
  • 观察命令的退出状态和输出结果,再决定下一步

这么一对比就很清楚了:聊天式 AI 是“建议者”,终端 Agent 是“执行者”。建议者说“你应该这样改”,执行者直接改完给你看测试报告。这个差别带来的效率提升是质变的,因为很多低价值的往返证明过程,比如“我改了,你帮我看看行不行”,可以压缩进 Agent 的自动循环里。

1.2 站在工具链上,它是一套三层结构

如果画一条纵向的层级视图,Claude Code 大致站在“模型”和“命令行工具”之间,充当编排层。拆开看是三层:

  • 交互层:负责接收自然语言需求,展示进度和结果。这层解决“人怎么下指令”的问题。
  • 决策/编排层:把目标拆成步骤,决定先读哪个文件、改哪里、跑什么命令。这层是 Agent 的“大脑”。
  • 执行/工具层:真正调用 shell 命令、文件读写、测试运行器完成动作。这层是 Agent 的“手脚”。

为什么说编排层是灵魂?因为 LLM 本身擅长的是“预测下一个词”,并不天然知道该调哪个函数、该按什么顺序调。所谓 Agent 化,就是用一个循环把模型的生成能力和外部工具的执行能力绑起来:模型生成“我要读这些文件”,外部工具真的去读,读取结果再送回模型,模型基于新的观察生成下一步动作。

这个结构很像一个实习生的工作方式:你告诉实习生“今天把这份数据清洗好”,他先去看数据长什么样,然后决定写脚本还是手工处理,跑一步看一步,遇到问题再回头问或者自己查。Agent 干的就是这件事,只是它反应更快、能同时处理的信息更多,但也会因为“太自信”干出奇怪操作。理解这一层,你就知道所有配置、权限、提示词都是在约束这个循环,而不是简单地“问它一个问题”。

2. 不是魔法,是循环:读取、规划、执行、验证

2.1 四个动作如何组成一个工作闭环

Claude Code 在遇到一个任务时,并不是一次性把所有代码塞进上下文,然后给你交一个大作业。它更像一个迭代式的开发流程,四个动作反复进行:

第一,读取。进入项目后,先看目录结构、配置文件、相关源码。它不是无脑地把整个仓库全部读进上下文,而是按需加载:先定位任务涉及的范围,再看具体文件。这就像你去图书馆查资料,不会把整个书架搬到桌上,而是先查目录再找对应页码。

第二,规划。它根据任务目标生成一个执行计划,比如“先修改工具函数,再更新调用方,最后补测试”。规划能力决定了任务完成的质量。如果需求本身很模糊,它的计划也会模糊;如果需求里写清楚了验收标准,它的计划就会绕着验收标准展开。

第三,执行。这里就是动手环节,包括修改文件内容、执行 shell 命令、运行测试脚本等。每一次执行本质上是一次工具调用,工具调用不是魔法,就是“输入参数 + 得到返回结果”的结构化过程。

第四,验证。验证是这一步最容易被新手忽略,但对 Agent 来说又是最重要的一环。它要看命令退出的状态码,要看测试结果,要读 lint 报错,然后判断“任务完成”还是“还得继续改”。验证结果会成为下一轮循环的新输入。

这四个动作形成一个闭环:读取 → 规划 → 执行 → 验证 → 再读取 → 再规划……直到验证通过,或者它确定自己解决不了,停下来向你求助。

2.2 循环里的执行反馈才是价值核心

为什么这个循环能大幅提升效率?因为传统 AI 辅助停在了“建议”这一层,它不承担后果。而 Claude Code 这类 Agent 把“后果”拉进了循环:改完代码,跑测试,测试红了,它必须继续改,直到测试绿。这叫“执行反馈闭环”。

我举一个实际例子。假设要你给一个字符串处理函数加上驼峰命名转换,并且要求兼容下划线和短横线。以前的 AI 辅助流程是:AI 给你一段代码,你手动贴进去,手动跑测试,测试挂了,再把报错复制回去问 AI。这一来一回可能十分钟。用 Agent 流程是:你把需求和验收标准告诉它,它自己改函数,自己新增测试用例,自己跑测试,跑挂了就根据报错再修复。整个过程也许三分钟,而且中途不需要你盯着。

这个模式的价值还在于“止于至善”的判断。Agent 不再是人云亦云的生成器,它是带验证环节的执行器:测试通过是终点,测试失败就必须回头继续;lint 有警告就处理警告;类型报错就修类型。它像你雇了一个很较真的初级开发,写完之后还会自己检查一遍。当然,前提是验证体系本身要存在。如果项目一条测试都没有,Agent 就只能靠“编译通过”这种弱信号来确认结果,那效果会大打折扣。所以我会建议在项目里至少准备一条可运行的测试命令,这对工具友好,对人也友好。

3. 实操落地:让它真正替你干活的四个关键设置

3.1 需求模板:一句话任务 + 验收标准 + 约束

很多第一次用 Agent 的人,上来就一句“帮我把登录模块优化一下”,然后看它发呆或者瞎改。这问题不在工具,在于你没给足边界。优化什么?性能?安全性?代码结构?允许改哪些文件?不能动哪些逻辑?这些信息它不知道,它只能猜。猜,就是翻车的第一来源。

我现在的做法是给需求套一个固定模板。举一个真实度很高的例子:

任务:重构 utils/string.ts 里的 toCamelCase 函数 背景:目前该函数不支持短横线分隔,且空字符串会返回 undefined 验收标准: 1. 支持空字符串、单字符、下划线/短横线/空格混合分隔 2. 输入非字符串时抛出 TypeError 3. 新增 10 个单元测试全部通过 4. 不得修改公共 API 签名 约束: - 只能修改 utils/string.ts 和对应测试文件 - 不引入新的第三方依赖 - 不需要改动其他调用方

我解释一下为什么这个模板有效。任务一句话说清楚目标,背景说明现状和痛点,验收标准给可量化的完成条件,约束给禁区。对 Agent 来说,验收标准是它判断“何时停止”的依据,而约束是它避免越界作业的护栏。没有验收标准,它改完觉得差不多就停了;没有约束,它可能会顺手把别的模块也重构了,或者自作主张升级依赖。

3.2 权限和命令白名单:先划定作业边界

Agent 有“手脚”之后,权限问题就成了第一位安全问题。Claude Code 在实操中通常会分不同的确认模式:一种是每一步重要操作都要你确认,另一种是允许自动执行白名单内的命令。我的建议很明确:刚开始用,一律采用严格确认模式;跑熟之后,再把确有必要的命令加入白名单。

具体来说,我把项目常用命令分成三类:

  • 安全只读类:git status、git diff、git log、ls、cat,放心放行。
  • 有副作用但可控类:npm test、npm run build、python -m pytest,允许自动执行,但前提是构建和测试本身不产生不可逆影响。
  • 危险操作类:rm -rf、git reset --hard、drop database、sudo,必须确认,甚至最好永久禁止。

我在某个项目上遇到过 Agent 为了清理临时文件,擅自执行了删除命令,结果把临时目录路径拼错,指向了项目源码目录。好在当时用了确认模式,我拦下来了。那次之后,我严格执行“非白名单命令一律确认”原则。记住:宁可让它多问你两次,也不要让它静默干一次不可逆操作。

3.3 项目说明文件:把背景知识喂进去

Agent 第一次进项目时,它对项目的了解基本为零。它不知道你为什么用某个框架、哪些目录是生成代码、哪些目录是核心资产、测试该用什么命令跑。如果你每次都要在会话里重新解释一遍,那就很浪费。更合理的做法是写一个项目说明文件,放在项目根目录,让 Agent 每次进入项目时自动加载。

文件内容不需要长篇大论,核心是这几类信息:

# 项目说明 ## 技术栈 - 前端:React + TypeScript - 后端:Node.js + Fastify - 数据库:PostgreSQL ## 常用命令 - 安装依赖:npm ci - 跑测试:npm test -- --runInBand - 构建:npm run build - lint:npx eslint src --ext .ts ## 目录约定 - src/cli:命令行入口,不要在这里放业务逻辑 - src/core:核心业务,单元测试覆盖率必须 90% 以上 - generated:自动生成代码,禁止手改 ## 常见坑 - 本地数据库事务默认会回滚,除非显式 commit - 测试环境依赖 Redis,没有 Redis 时部分集成测试会超时

这个文件的价值,不是给你自己看的,是给 Agent 当“入职手册”用的。每开一个新会话,它都能自动读一遍,等于每次都是从有背景知识的员工开始干活,而不是从完全失忆的新人开始。我在团队内部推广这个习惯之后,Agent 生成的代码风格明显更贴合项目,不再出现“乱改维护代码目录”“不知道测试命令瞎猜”的问题。

3.4 从小粒度任务启动:完成第一个闭环

第一次用 Claude Code,千万别一上来就扔一个“重构整个认证模块”的大任务。原因很简单:你还没摸清它的脾气,它也没摸清你的项目。大任务跨度长,涉及文件多,一旦中间计划偏了,排查代价很高。先从一个小闭环开始,是最稳的路径。

我建议的第一次实验任务是这样的:把一个纯函数工具做重构,并补足单测。举个例子,把utils/date.ts里的日期格式化函数拆成更小的纯函数,新增测试覆盖边界情况。这个任务涉及文件少、逻辑简单、验证手段明确(跑测试)。你会发现它跑完一整个过程也就几分钟,你能清晰看到它读了什么、改了什么、测试结果如何、停下来之前做了什么判断。

这个小闭环跑通之后,你对它的信任度、你对自己项目的配置认知都会上一个台阶。你会知道项目说明文件写得够不够、测试命令快不快、权限模式需不需要调整。这些信息,比任何教程都有用。之后再逐步加大任务粒度,从“改一个函数”到“改一个模块”,再到“跨模块重构”。信任是逐步建立的,不是一次生成的。

4. 上下文管理是灵魂:会话、说明文件、增量刷新

4.1 上下文窗口就像一个工作台

要理解 Claude Code 的表现波动,得先理解上下文管理。模型有一个固定的上下文窗口,你可以把它想象成一个长度有限的工作台。每次读取文件、执行命令、看到输出,都会在工作台上占一块地方。工作台上的东西越多,新东西放上去的空间就越少,模型也就越难聚焦在真正重要的信息上。

早期我犯过一个经典错误:在一个会话里连续丢给它十几个文件,让它一次性理清整个模块的调用关系。结果前期还行,到后面它已经开始“答非所问”,改代码时漏掉了当前的约束。后来我意识到,那不是模型变笨了,是工作台上堆满了旧的中间产物,重要的背景信息被挤到边缘去了。

所以,上下文管理是所有 Agent 工作流里最核心的杠杆。你不需要让模型记住所有东西,你要让它能快速找到需要的信息,然后把中间结果沉淀到项目文件里,而不是全塞在对话历史中。这就是“增量刷新”:每一轮只喂它当前需要的增量信息,而不是把整个历史重新倒给它。

4.2 让会话内容“短、小、清”

我在实操中总结了三个原则:短、小、清。短,指的是单个会话里任务跨度要短,一个会话聚焦一个目标,不要今天在这个会话里加函数,明天又回这个会话改另一个功能。小,指的是喂给它的文件尽量裁剪,不要整份大文件直接丢进去,先用命令定位到相关行号,再让它读取最小片段。清,指的是中途沉淀结论,把决策和发现写进说明文件或单独设计文档,而不是让它从茫茫多的历史消息里翻找。

举个反例:你在做一个数据迁移任务,Agent 跑了二十轮,中间有大量报错、修 bug、调试输出。这时候你想让它停下来,去做一个完全无关的小改动,而你嫌麻烦没开会话。结果就是,旧的历史信息挤占了上下文,新任务的目标不够清晰,它做一会儿就跑去处理旧任务残留的问题了。这不是它“分心”,是你的上下文设计诱导它分心。

正确做法是:每个任务一个会话,任务开始前把背景和验收标准写清楚;任务结束后,如果有值得保留的结论,写入项目说明文档,然后关掉会话;新任务开新会话,从干净状态重新读项目背景。这套流程做下来,上下文永远只装载“当前需要的增量”,而不是“过去所有历史的全集”。

4.3 成本不只是钱,更是质量的杠杆

长上下文带来的另一个问题是成本膨胀。模型计费通常按输入 token 和输出 token 分别计算,输入 token 是“模型读到的所有内容”,输出 token 是“模型生成的所有内容”。一个 Agent 任务的成本,大致可以用一个简单公式估算:

费用 ≈ 输入 token 数 × 输入单价 + 输出 token 数 × 输出单价,再乘以循环轮次。

注意这个“乘以轮次”很关键。如果一段上下文是 2 万 token,而 Agent 循环了 20 次,那么仅输入部分就有约 40 万 token 被反复计费。加上中间插进来的文件、命令输出、报错信息,实际费用会比直观预期高不少。

但比钱更重要的是质量。上下文窗口被垃圾信息灌满之后,模型对目标的把握会迅速衰减,表现就是“改着改着忘了初衷”“反复在同一个问题上打转”。所以,控制上下文不只是省钱,也是保质量。我的技巧是:让 Agent 多用搜索类命令定位信息,而不是直接读大文件;让错误摘要代替原始日志;让中间决策及时落盘成文档;每轮确认它已经得到足够信息后,及时开始执行,不要让它无意义地反复扫描。

5. 成本、安全与权限边界:算清账才敢放开用

5.1 大致成本公式:输入输出和轮次的乘法

很多团队不敢引入 Claude Code,不是不知道它好用,是怕账单失控。这种担心有道理,因为 Agent 不像普通 API 调用,一次调用能解决就结束了;Agent 会自己循环,每次循环都在产生 token 消耗。我见过有人跑一个大型重构任务,因为反复失败重试,产生了非常夸张的 token 使用量,那笔账单比自己手工干一天的成本还高。

要想控制成本,先要理解成本来源。主要有三块:

  • 读代码:Agent 读文件、目录结构、配置,每一行都是输入 token。
  • 写代码和解释:Agent 生成的修改内容、总结文本、计划步骤,都是输出 token。
  • 命令输出:跑测试、build、lint 后,控制台输出会喂回模型。测试输出特别长时,成本会快速上升。

我粗略估算过一个中等规模项目的小任务:修改一个函数并跑一遍测试,输入输出加在一起,通常不会很夸张;但如果任务跨度大、文件多、中间反复出错重试,成本就可能滚到几十倍。所以控制成本的手段,是缩短循环、减少冗余读取、防止反复重试。

具体做法:一是限定范围,告诉它只动某个目录;二是裁剪输入,让它在定位文件时用搜索和 grep 而不是大范围读文件;三是给足测试命令的过滤参数,让它只跑相关用例,不跑全量测试;四是设置明确的验收标准,减少因“不知道做完没有”而进行的多余尝试。

5.2 安全红线:最小权限和可回滚

安全这块,我的立场很明确:宁愿少给一点,也不能多给一点。Claude Code 本质上是“能执行命令的 AI”,你给它越多权限,风险就越高。尤其是在本机环境中,它如果能执行任意命令,等于能访问你的文件系统、网络、环境变量。

最小权限原则具体做起来是这套:

  • API 密钥走环境变量,不要写进项目文件,更不要写进提示词。
  • 只给 Agent 提供作业目录的访问,不把整个用户目录都敞开。
  • 命令白名单只包含必要项,禁止执行不可逆的系统级命令。
  • 保护敏感文件,比如 SSH 私钥、.env、云服务凭证,明确禁止读取。
  • 所有改动尽量在 Git 工作区进行,一旦出错可以git checkout回滚。

还有一点容易被忽略:环境变量。Agent 在执行命令时会继承你的 shell 环境,包括密钥和凭证。这意味着最多再生成日志里也可能出现敏感信息。我建议在配置里明确让它不要输出环境变量,也不要在日志中打印密钥。真发生了泄露,第一时间轮换凭证。

5.3 自动化场景下的权限设计

当你把 Claude Code 接进 CI/CD 或定时任务时,权限设计思路要再收紧一层。本机交互式使用,至少有个“人”盯着确认;合计环境里没有人盯,如果权限太宽,AI 能给生产环境造成破坏的事故概率会成倍上升。

自动化场景下我建议这样设计:

  • 使用专用机器人账号,不共享个人令牌。这个机器人只有目标仓库的读写权限,没有其他无关权限。
  • 禁用交互式确认,但只赋予白名单命令自动执行权,且白名单里不应包含 destructive 命令。
  • 在隔离的环境运行,比如容器或临时沙箱,容器销毁后所有改动归零。
  • 对 AGENT 的改动启用强制 code review 和审批流程,不能让 AI 直接推到主干。
  • 建立一个“AI 可以做什么/不可以做什么”的边界清单,把生产库变更、依赖升级、密钥操作列为永久禁止。

这套设计的本质,是把 AI 当成一个权限受限的外部贡献者来对待,而不是赋予它管理员权限。如果你把管理员钥匙直接交给一个容易“自信误判”的实习生,出事只是时间问题。

6. 高频翻车现场与排查思路

6.1 最常见症状与对应解法

我在实际使用中踩过不少坑,也帮同事排查过不少问题。下面这个表是最常见的症状、可能原因和排查优先级:

症状可能原因排查优先级常见解法
反复改同一个问题,测试还是红上下文被历史输出灌满,模型丢了验收标准高新开会话,重新粘贴任务和最新报错摘要
改了一个文件,连带改了一堆无关文件权限边界不清晰,约束写得不到位高在需求里明确禁止改动的文件/目录
执行了危险的删除或覆盖命令白名单放行太宽,确认模式被跳过高收紧命令白名单,开严格确认
测试一直挂着不结束测试命令是全量测试,或者命令本身需要交互中改成本项目最精简的单测命令,增加超时设置
生成的代码风格和项目不一致项目说明文件缺少代码风格约定中补充风格规范到说明文件
输出被截断,改到一半停了单次输出或工具结果太长中拆分成更小粒度任务,避免一次改多个文件
环境变量读取不到shell 加载顺序问题低重新启动会话,检查环境变量在交互 shell 是否可见

排查翻车,我的顺序永远先看上下文:是不是会话太长了?是不是历史输出太多了?八成问题都能追溯到“它看不到重要的上下文”或者“它看到了太多不重要的上下文”。

6.2 我踩过的两个“最隐蔽”的坑

第一个是“错误锚定”。在一次重构任务里,Agent 跑测试失败,报错信息说某个函数返回了 undefined。它沿着这个线索修了一次、两次、三次,每次都只是修出新的报错,像打地鼠一样。原因在于,它把大量失败的调试输出都放在上下文里,越往后,注意力越被失败信息锚定,反而忘了最初的重构目标。后来我把会话清了,只把“当前代码状态 + 最新一条报错摘要 + 验收标准”重新告诉它,它一次就修好了。这就像你自己找 bug,如果把几十条历史报错在心里反复盘,也会晕;清空一下,只看现状,反而能看到问题本质。

第二个是命令白名单放得太宽。我一度把bash -c放进了白名单,结果 Agent 为了省事,直接用通配符做批量文件操作,差点把不该动的文件囊括进去。教训是:不要轻易放行自由 shell 执行,尽量让 Agent 用专用的文件操作能力,即使速度慢一点,可控性也高很多。这个坑很隐蔽,因为本地小项目可能从来不出问题,一旦被真正重要的仓库遇到,代价是巨大的。

还有一个经验值得一提:Agent 在遇到“环境里没有某个命令”时,有时会尝试自行安装依赖,甚至改全局环境。这会污染你的开发环境。我现在会让它在项目内用虚拟环境或者容器做隔离,同时明确禁止对本机全局环境做修改。对工具越依赖,隔离越要提前做。

7. 我用到现在最值钱的几个习惯

7.1 把“验收标准”写进需求里

我把之前提到的需求模板每一条都写清楚,已经成了肌肉记忆。分类写“背景、验收标准、约束”这样三段式,执行效果会完全不一样。没写验收标准之前,它给我交的活经常“差不多但不达标”;写了之后,它自己会反复跑测试到绿灯才停下来。验收标准是一个隐形的截止线:人没画线,AI 就自己随意发挥,画了线,它才知道“到这里就够了”。

7.2 让它先写测试,再看红灯

这是我从 TDD 里学到的,现在用在这类 Agent 上特别好用。几乎做任何功能开发或 bug 修复,我都会先让 Agent 在动手改代码之前补一条会失败的单测。这个测试用来描述“期望行为”,它会先红掉。然后我再让它去改实现,目标只有一个:让这条测试变绿。

这个习惯的价值有三个。第一,它保证了 Agent 写的功能确实能被验证,不至于改完只靠“看着对”交付。第二,它给了 Agent 一个极其清晰的完成信号,测试红到绿的转折点就是工作终点。第三,它会倒逼你在动手前就想清楚行为边界,这是质量提升的源头。你现在问我的建议,我一定排在第一位。

7.3 每次改动就看 diff,像 review 同事代码一样

别因为它叫 AI,就不 review 它的代码。我的流程是:等它完成一个阶段任务后,我立刻执行 git diff 或 git status,仔细看改动范围。我会问自己几个问题:它是不是只改了该改的文件?有没有顺手删掉不该删的注释?有没有把公共 API 签名偷改了?有没有引入多余依赖?

如果你发现自己经常在 review 时抓到问题,这不是工具不好用,而是说明你给它的需求和约束还不够清晰。你可以把这些 review 发现写回项目说明文件,下一次它就不会踩同一个坑。这样人机协作就像一个“老师傅不断把经验传给实习生”的过程,只是这个实习生能记住所有规则,绝不“忘了”。

7.4 把探索性结论沉淀成文档

Agent 在干活过程中会做很多探索,比如发现某个模块原来有隐藏依赖、发现某个测试必须按特定顺序运行、发现某些接口已经被废弃。这些信息一旦只留在对话历史里,会话一关就全丢了。我现在遇到这种情况,会随手把这些结论写进项目说明文件或专门的备忘文档。再之后,新开的会话就能直接利用这些经验,不用重新摸索。这个习惯本质上是在给 Agent 建一个“跨会话记忆”。上下文窗口是有限的,文档系统是无限的。与其让模型在有限窗口里挤占空间,不如把长期知识都沉淀到文件里。

7.5 当它是“外包实习生”来管理

心态上,我一直把 Claude Code 当作一个很便宜的、反应很快但偶尔犯错的外包实习生。外包实习生不能用一句模糊的话管理,你得给它清晰的任务描述、验收标准、技术约束。你要接受它的第一次产出可能不完美,需要你 review、打回、再迭代。你也要控制它的作业范围,不能把整个核心系统的钥匙直接丢给它。

你愿意花时间“带人”,它的产出就会越来越贴合你的习惯;你不愿意在初始阶段花时间做配置和校准,后续返工的成本反而更高。这个逻辑和带一个新人一模一样:前期的 onboarding 投资,会以效率翻倍的形式回报你。

如果只让我给一个起步建议,我会说:从一个小函数的重构开始,把它当作第一次带实习生的项目,写清楚需求,给它测试,看完 diff,再总结经验写回说明文件。这一套流程跑完,你对它的理解会远超你读十篇教程。后面无论遇到多大的任务,你都知道它为什么能做好,也知道它在哪里会翻车,你的判断力才是这套工具最核心的竞争力。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进