容易混淆的问题
这些说法听起来相近,但对应的动作完全不同:清空上下文、回退、开沙箱,还是回去读 diff。
| 容易混淆 | 区别 |
|---|---|
| 上下文窗口 / 训练数据 | 窗口是这次能看到的量,训练数据是模型学过的内容,两者不互通 |
| 清空 / 回退 / 压缩 | 开新对话 vs 撤销某几步 vs 用摘要替换前缀,损失程度不同 |
AGENTS.md / skills | 前者每次启动全文注入,后者只常驻描述,正文按需加载 |
| 子 agent / 并行 agent | 子 agent 是同一会话内的上下文隔离;并行是多份独立会话 |
| 工具调用 / 函数执行 | 模型只输出调用参数,执行的是 harness |
| MCP / 命令行工具 | 协议化的常驻工具接口 vs agent 临时 bash 调用 |
| 跳过确认 / 沙箱 | 前者取消人工闸门,后者限制破坏半径,不能互相替代 |
| 「已修复」/ 验证过 | 前者是模型自述,后者是你或 CI 实际跑过 |
| 改测试通过 / 代码正确 | 测试变绿只证明测试与实现一致,不证明行为正确 |
| 提示更长 / 结果更好 | 超过一定长度后,中段信息会被忽略,成本反而上升 |
| 本地模型 / 隐私安全 | 数据不出机器,但日志、缓存、提示词仍可能落盘 |
| agent 说测试通过 / CI 通过 | 自述 vs 在干净环境里重跑 |
| token / 字符 | 切分单位不同,中文与代码更碎,预算按 token 算 |
| prompt 缓存 / 模型记忆 | 缓存只省重复前缀的钱,不改变模型本身没有记忆 |
| 工具数量 / 能力 | 工具 schema 占窗口,挂太多反而更容易选错 |
上下文
- 窗口大就够用吗。 容量和效果不是一回事。历史越长,早期细节越容易被忽略,也越容易让模型拿着过期文件内容做判断。
- 压缩能保住细节吗。 保不住。摘要会丢行号、命令输出和已排除的方案,关键结论要在压缩后重新确认。
- 子 agent 能替代并行吗。 不能。子 agent 隔离上下文,并行买的是墙钟时间,两者可以叠加。
- 文档塞得越多越好吗。 不是。一份
llms.txt加两个具体文件路径,通常比整本手册更准也更省。 - 清空和压缩能混用吗。 先
rewind再压缩可以,顺序反了就失去回退能力,只剩一份摘要。
验证
- 它说测试过了就过了吗。 不算。要看它跑的命令、退出码和输出,最好自己重跑。
- 为什么它总在改测试。 让测试变绿的最短路径常常是放宽断言,提示里写死「不改测试」。
- 让另一个 agent 审查够吗。 只能当补充。两者看同一份 diff、带同一套偏差,容易漏掉同一类问题。
- 覆盖率够了就行吗。 不够。覆盖率只证明代码被执行过,不证明断言检查了正确的东西。
权限
- 沙箱里就能随便开 yolo 吗。 破坏半径小了,但容器仍可能读到挂载的凭据,也可能往外发数据。
- 隔离了还需要看 diff 吗。 需要。沙箱防破坏面,不防逻辑错误:代码写错、测试被改,容器里一样发生。
- 本地模型就没有隐私问题吗。 数据不出机器,但日志、缓存和提示词仍可能落盘。
- 只给读权限就安全吗。 不够。能读
~/.ssh、能跑env,就足以把凭据带出去。 - 沙箱要断网吗。 云端模型必须出网;断网只适合本地模型,或预先装好依赖的离线任务。
- 要挂 Docker socket 吗。 不要。挂进去等于把宿主机 root 权限交给容器里的进程。
模型与产品
- 换个工具就变强了吗。 同一个模型在不同 harness 里差别很大,差别来自工具集、系统提示和上下文策略。
- 「模型知道」和「模型读到」是一回事吗。 不是。知识截止决定它认不认识某个库,仓库约定只能从文件里读。
判断标准很朴素:换一个会话,按仓库里的文件重来一遍,能不能得到同样的结论。