人类与LLM Agent在处理信息方式上存在明显差异。人类处理信息更类似于循环神经网络(RNN),信息处理具有明显的逐步性与遗忘性;而LLM Agent则通过KV Cache保留大量上下文,因此容易出现上下文爆炸的问题。为了有效地利用LLM Agent的能力并防止上下文过载,我们制定了以下一系列标注原则,以减少token消耗并提高任务效率。
- 文件打开前先用
wc -l检查行数。 - 少于50行才允许直接用
cat展示。
- 大文件一律用
grep -n或sed -n精准定位,避免二次查找。 - 使用
inspect概览python文件结构。 - 用
sed -n 'a,bp'展示指定范围。
grep推荐用-A n -B m上下文参数预留上下文。- 一般设置5-10行为宜。
- 禁止使用
vim、nano等交互式编辑器。 - 推荐用
replace、sed -i或patch等非交互式工具修改文本。
- 少量修改避免全文重写。
- 使用
sed -i或replace等进行原地小范围修改。
- 对
pip install、编译日志、长命令输出等,先将输出重定向到文件。 - 优先用
tail -n 20 logfile判断命令是否成功。 - 若失败,再用
grep -Ei "error|warning|fail" logfile定位问题。
示例:
pip install package > pip_log.txt 2>&1
if tail -n 20 pip_log.txt | grep -q "Successfully installed"; then
echo "安装成功,无需查看详细日志。"
else
grep -Ei "error|warning|fail" pip_log.txt || tail -n 30 pip_log.txt
fi- 大任务拆分为独立小任务,各自管理上下文。
- 执行搜索时明确文件范围或日期范围,避免全局扫描。
- 永远使用绝对路径或明确的相对路径,减少上下文推断成本。
- 若Agent频繁修改后错误仍较大,人类可通过
wait或类似指令暂停Agent操作,并通过明确提示如I think I ignore xxx或I think I miss xxx强制Agent重新审视错误。 - 若Agent仍无法发现错误,人类应直接以
I think I am wrong because xxx方式介入编辑,强制纠正错误。 - 如果model在某一点一直进入循环, 人类应该通过
wait I think I was trapped xxx。
示例:见强制纠正。
- 写代码之前, 最好让模型自己先规划via verbal, 要不然很可能出错,并且module.
- 浏览code的时候,模型需要一点点打开,一点点分析才能正确。
- 若Annotator无法准确判断Agent某一步的动作是否合理,可让Agent继续执行,明确出错后再纠正。
- 纠正错误时,可保留之前错误的几步仅在当前步骤强制纠正,提高模型纠错能力。
- 给model summarize和delete工具
- 或许可以尝试对context分区,变成linsir说的那种
- 给LLM工具去并行的call多个llm
- replace 工具在有行号的情况下比较容易出错
- debug的时候不会用print,不会分析对应的stack
- 建议标注员手动干预,强制让agent与
ipython交互。这样避免bug在长文件里堆积。