从压缩视角看大模型:为什么 Agent 能理解模糊需求

0 阅读5分钟

导语

开发者在用 AI Coding Agent 时,经常会遇到一个现象:需求写得并不完整,Agent 却能补出一套还算像样的实现方案。

这不是因为模型真的知道业务现场,而是因为它把大量代码、文档、Issue、PR、技术问答里的模式压缩进了参数里。

但这个能力有边界。做工程落地时,理解这个边界比单纯夸模型聪明更重要。

正文

1. 模糊需求为什么能被模型理解

开发现场很少有完美需求。

常见输入可能是这样:

这个规则执行模块要支持一条规则跑多个 encounter。
部分失败不能影响整体。
返回要有汇总统计。
candidate_retrieval 不满足就直接未命中。

这段话并没有完整说明数据结构、接口协议、错误码、执行流程、字段含义。

但模型通常能补出一些合理结构,比如:

RuleExecutor
EncounterDataLoader
ExecutionItemResult
ExecutionSummary
is_hit
error_code
items[]

原因不复杂。

模型见过大量类似工程文本:接口文档、后端设计、异常处理、批量任务执行、结果汇总、规则引擎、测试用例。

它把这些模式压缩成了可复用的生成能力。

所以当需求里出现“批量”“部分失败”“汇总统计”“错误码”这些信号时,模型会自动展开成一套常见工程结构。


2. Agent 的理解,很依赖上下文管理

Agent 能不能做对,不只取决于模型参数,也取决于上下文给得是否足够。

比如让 Agent 改一个接口,如果只说:

改成新的返回结构

它大概率会乱猜。

如果补充:

统一返回结构为 code/message/data。
发送消息接口入参是 list<message>。
message 只包含 role 和 content。
返回字段只有 is_complete、detailed_rule_understanding、assistant_response。
删除无用 session 代码。

模型就能把任务拆得更准:

修改 schema
调整 controller
清理 service 中的 session 依赖
更新前端请求结构
补充错误响应
同步接口文档

这说明 Agent 的“读懂”,不是凭空发生的。

它需要上下文作为解压依据。

上下文越明确,模型越不需要脑补。脑补越少,工程风险越低。


3. Skill、RAG、工具调用,本质是把压缩拆到外部

在复杂系统里,不能只依赖模型参数里的压缩结果。

因为参数里的知识有几个问题:

不可控
不可追溯
不一定新
不一定符合当前项目约束

所以实际做 Agent 时,常见做法是把一部分知识放到外部:

Skill:沉淀固定流程和操作规范
RAG:补充项目文档、业务规则、接口说明
Tools:执行真实查询、测试、文件读写、构建命令
Memory:保留长期偏好和历史决策

这几个东西不是为了显得架构复杂,而是为了减少模型乱猜。

比如规则引擎里字段路径必须来自标准数据结构,这种约束就不应该只放在一句提示词里。更合理的做法是把数据结构、合法 path、字段类型、可用算子放到明确的上下文或校验工具里。

模型负责理解和生成,程序负责校验和执行。

这是 Agent 工程化的基本分工。

ChatGPT Image 2026年4月25日 11_43_06.png


4. 不能把“会补全”当成“能负责”

模型很擅长补全工程模板。

接口文档缺字段,它会补。 异常码缺分类,它会补。 前端页面缺状态,它会补。 单测缺用例,它也会补。

但补出来的东西未必符合当前系统。

比如:

它可能新增不存在的字段
它可能假设数据库表结构
它可能忽略历史兼容
它可能把业务失败写成系统异常
它可能让前端和后端返回结构不一致

这就是把语言规律直接当工程事实的风险。

模型压缩的是通用工程经验,不是你的项目真实状态。

所以在 Agent 开发里,一定要有校验层:

schema 校验
字段路径校验
类型校验
接口契约测试
单元测试
端到端测试
日志和回放

模型负责生成候选方案,工程系统负责把候选方案变成可信结果。


5. 提示词不是越长越好,而是越可执行越好

很多失败的 Agent 提示词有一个共同问题:写了很多原则,但没有给模型可执行约束。

比如:

要严谨
要高质量
要符合最佳实践
不要出错

这些话作用有限。

更有效的是:

只允许修改 backend/api/rule_executor 下的文件。
接口返回必须符合 BaseResponse。
field_path 必须来自 searchable_paths。
表达式只允许比较、布尔、in、len/any/all/sum/min/max。
遇到 encounter 不存在,返回 ITEM_NOT_FOUND。
允许部分 item 失败,并在 summary.failed_count 中统计。

这种提示词不是情绪要求,而是工程约束。

模型更容易根据这些约束展开任务,也更容易被测试验证。

结尾

大模型能理解模糊需求,是因为它压缩了大量语言和工程模式。

但在真实开发里,不能只依赖这种“压缩后的经验”。

Agent 要落地,需要把隐含知识外显出来:文档、Schema、工具、测试、校验、日志、回放,一个都不能少。

模型可以帮我们更快生成代码和方案,但工程质量仍然来自明确约束和可验证流程。

把模型当成一个强补全器,比把它当成一个全知工程师更安全。