状态变化感知
概述
状态变化感知是 ACI 设计原则三"帮助模型感知状态变化"的具体实现,要求每个动作都返回"对象状态的最小充分差异",而非原样转储整个环境。好的 agent 环境不是"命令执行器",而是"显式状态转移系统"。
关键内容
四个状态模块
| 模块 | 维护的状态 | 关键机制 |
|---|---|---|
| 文件状态 | 当前打开文件、窗口位置、行号、总行数 | File viewer 自动展示更新后窗口 |
| 搜索状态 | 候选文件集合、query 是否足够具体、下一步方向 | 总结式搜索 + refinement guidance |
| 执行状态 | 命令结果、成功/失败、输出摘要 | 无输出命令显式成功说明 |
| 交互协议状态 | 是否在有效协议内、格式是否正确 | thought/action 格式约束 + 格式错误重试 |
状态转移设计
每个动作对应明确的状态转移:
| 动作 | 改变的状态 |
|---|---|
open |
当前 file window 状态 |
scroll/goto |
当前 file viewport 状态 |
search_* |
候选定位状态 |
edit |
文件内容状态 |
pytest/python |
验证状态 |
format_error |
协议状态 |
设计原则
"每个动作都必须返回对象状态的最小充分差异,而不是原样转储整个环境。"
这意味着: - 编辑后不是展示整个文件,而是展示变更区域 - 搜索后不是列出所有匹配,而是给出匹配概览和收缩建议 - 测试后不是输出整页日志,而是回显失败/通过摘要
与人类开发的对比
人类程序员通过 IDE 的状态栏、文件标签、搜索结果面板等感知状态变化。SWE-agent 为 LM 设计了等效的状态感知机制——但更关键的是,它不是把人类 IDE 原样搬给模型,而是根据 LM 的 token 有限性和格式偏好重新设计。
来源
- raw/ChatGPT-Chat/ChatGPT-SWE-agent 论文核心观点/04-SWE agent 如何保证 搜索是否高效、编辑是否稳定、反馈是否足够、上下文是否可控、恢复机制是否.md — SWE-agent 五大保障机制分析
相关
- ACI 设计原则 — implements(状态可见性原则的具体实现)
- 环境反馈设计 — uses(状态变化通过反馈传递给 agent)
- Agent计算机接口 — part_of(ACI 的状态管理组件)