3 分钟阅读

一条 Prompt 进入 Agent 后,到底经历了什么才变成代码?


你以为打了一行字,Agent 就直接开始写代码了?

这中间其实隔了至少五道工序:拼上下文、模型推理、工具循环、落盘编辑、验证收口。

看懂这条流水线,你才会明白为什么同一个 prompt 有时一次到位、有时反复返工——问题常常出在你看不见的中间环节。

Prompt 不是直接发给模型的

你输入的那句话,只是最终请求的很小一部分。

Agent 会先做一次「上下文装配」,把这些东西一起塞进发给模型的请求里:


  • 系统提示词:定义角色、工具用法、行为边界。
  • 项目说明书:比如 AGENTS.mdCLAUDE.md 里的构建命令和约定。
  • 可用工具清单:Read、Edit、Bash、Grep……每个工具的参数说明。
  • 历史消息:之前的对话和工具调用结果。
  • 环境信息:当前目录、操作系统、日期时间。

所以你写「修一下登录 bug」,模型实际看到的是几千甚至几万 token 的一整包材料。


这也解释了为什么 AGENTS.md 写得好,Agent 表现会明显变稳——它是每次请求都在场的常驻输入。

模型第一步往往不是写代码

收到装配好的上下文后,模型做的第一个决策通常是:先调工具,而不是直接输出

因为「修登录 bug」这个目标信息不够,它需要先侦察:

  1. 用 Glob/Grep 找到登录相关文件。

  1. 用 Read 读代码和报错日志。
  2. 必要时跑一下测试复现问题。

每调用一次工具,结果会被追加回上下文,模型再决定下一步——这就是 Agent 的核心循环:

1
模型推理 -> 发起工具调用 -> 拿到结果 -> 再推理 -> 再调用

这个循环可能转几圈到几十圈,直到模型认为信息足够,才会进入编辑阶段。


编辑代码不是「重写整个文件」

到了真正动手的时候,主流 Agent 用的是最小编辑,而不是整文件重写。

以典型的 Edit 工具为例,它要求:

  • 先读过目标文件,不能凭记忆改。
  • 给出精确的 old_stringnew_string,原文必须唯一匹配。
  • 一次只改一处,改坏了容易定位。

这样做有两个直接好处:diff 小、可审查;上下文里也不用来回搬运整个文件。

新建文件才会走整体写入。所以你看到的「Agent 改代码」,本质是模型生成了一批结构化参数,由工具层执行校验后才真正落盘。

改完不等于结束,还有验证收口

负责任的 Agent 流程不会停在「文件已保存」。

编辑之后通常还有一轮收口动作:

  • 跑测试或构建,确认没把别的地方弄坏。

  • 静态检查:lint、类型检查、编译报错。
  • 如果验证失败,把错误信息再喂回模型,进入新一轮循环。

这也是为什么一个复杂任务会跑很久:推理-工具-编辑-验证这个环会反复转,直到验证通过或 Agent 判断走不下去为止。

哪个环节最容易翻车

对应到日常使用,常见问题基本能映射到流水线的某一环:


  • 上下文装配差:需求描述含糊、AGENTS.md 缺失,模型只能瞎猜。
  • 侦察不足:没读关键文件就开改,改错位置。
  • 编辑粗糙:让 Agent 大段重写而不是小步编辑,diff 失控。
  • 跳过验证:跑完命令不看结果,错误一路带到最后。

想让 Agent 干活稳,其实就是把每一环的输入喂好:写清需求、维护好项目说明、要求小步修改、盯一下验证结果。

Meta(发布信息)

建议标题:

  • 一条 Prompt 是怎么变成代码的?
  • Agent 写代码前的 5 道隐藏工序
  • 你的 Prompt 进了 Agent 之后经历了什么
  • 看懂 Agent 流水线,Prompt 不再玄学

正文描述

你以为输入一句话 Agent 就直接写代码?其实中间隔着上下文装配、模型推理、工具循环、落盘编辑、验证收五道工序。这篇用一条流水线讲清 prompt 从输入到代码落地的全过程,并指出每个环节最容易翻车的点,适合想让 Coding Agent 干活更稳的开发者收藏。

参考资料

  • Kimi Code CLI 的系统提示词与工具定义(本地会话实际可见)
  • Claude Code / Codex 等主流 Coding Agent 的公开文档中关于工具循环与编辑工具的设计

话题标签

#AI编程 #CodingAgent #Prompt工程 #ClaudeCode #KimiCode #AI工具 #程序员 #LLM #开发效率 #Agent原理

封面: cover.png(由 baoyu-xhs-images 生成;若生成失败会在此注明原因)