Levon's Blog

微信: L6241425

1. 文件写完了,Agent 却不知道

上一篇完成了 Session JSONL、上下文预算和自动 Compaction。Agent 已经能调用 read_filerun_bashwrite_file,但工具循环里还藏着一个故障窗口:

1
2
3
4
5
保存 Assistant Tool Call

执行 write_file

保存 Tool Result

假设文件已经替换成功,程序却在保存 Tool Result 前崩溃。重启后的 Session 只有 Tool Call,没有回执。Agent 无法判断工具根本没运行,还是已经运行但丢了结果。

这不是普通的 failed

1
2
failed  = 已确认工具执行失败
unknown = 无法确认副作用是否发生

如果把 unknown 当成失败并自动重跑,邮件可能发两次,付款可能扣两次,echo x >> audit.log 也会追加两行。本章要解决的就是这段空白:让工具执行留下可恢复的证据,再用证据完成原来的 Agent Turn。

阅读全文 »

1. 上下文管理

Agent 一次测试输出 10MB,一次工具轮次包含几十条消息,一个会话运行几小时后远远超过模型窗口。随后可能出现以下三个故障:

  • 日志挤掉系统指令、最近问题和相关代码;
  • 旧 Tool Call 与 Tool Result 可能在裁剪时被拆开,API 无法配对;
  • 每轮都重传巨大前缀,延迟、费用和 Prompt Cache 失效一起上升。

这三个故障指向同一条主线: 完整事实留在持久层;模型每次只看完成当前任务所需的 Prompt View。

上一课使用一个不断覆盖的 Checkpoint JSON。本课把它迁移为 append-only Session JSONL,并从 Pi、OpenClaw 与 Hermes 的当前实现中校正工具输出、Prompt View 和 Compaction 的边界。

源码结论核验于 2026-08-28:Pi e54d45d、OpenClaw 74d1852、Hermes 0abecf7。不同项目、同一项目的不同包也可能采用不同 Backend,不能只用项目名推断存储格式。

阅读全文 »

1. 给“缸中大脑”接上外部世界

单独看大语言模型,它很像一个“缸中大脑”:可以读懂输入并生成文本,却不会真的打开文件、访问天气接口或发送邮件。外部动作来自模型之外的程序。

这个程序通常称为 Agent Harness。它保存会话,向模型描述可用工具,执行模型请求的动作,再把环境结果送回模型。模型根据新结果决定下一步,直到任务结束。

模型可以提出“删除数据库”,却不能批准自己的请求。Harness 必须独立检查参数、权限和审批规则;提出动作的人不能同时成为授权动作的人。

1
2
3
4
5
6
7
8
9
10
用户目标

Harness 调用模型

模型选择下一步或请求工具

Harness 执行工具

环境结果回到模型
└─────────────── 循环

从工程运行时看,可以先记住四个部分:

1
2
3
4
model       判断下一步
harness 组织循环、状态与控制边界
tools 读取或改变外部世界
environment 返回文件、网页、命令等真实反馈

这是一种运行时拆法,不是行业唯一标准。规划、记忆、感知和行动则是另一种“能力视角”,用来描述 Agent 表现出了什么。一个最小 Agent 未必有独立规划器、长期记忆或反思模块,但一定要有人组织模型与环境之间的循环。Anthropic 对 Agent 运行时的拆解

阅读全文 »

先做一个小实验:

1
2
3
4
5
6
你:记住,部署博客前必须运行 hexo g。
Agent:好的。

关闭 Python,重新启动。

你:部署前要做什么?

如果程序只把对话放在内存里,Agent 答不出来。旧进程退出后,messages 已经消失。即使程序把这句话写进 JSON,模型也不会自动知道;Harness 还要读取文件,并把相关内容放进本次请求。

模型不记事,程序递纸条。内存、JSON、数据库,只是纸条放在哪里。

阅读全文 »

1. 常驻

  • Ponytail少写。 让 Agent 先复用现有代码、标准库和平台能力,少造抽象。
  • Agent Reach联网。 统一搜索网页、GitHub、社交平台和视频字幕。
  • Matt Pocock Skills管流程。 Engineering 负责澄清、诊断、评审和 TDD;Productivity 负责拷问、交接和 Agent 文档。
阅读全文 »
0%