Agent 可靠性工程实战(一):先给智能循环装一只不可失忆的黑匣子
很多 Agent 教程从模型、提示词和工具调用开始演示效果很热闹却跳过了最先该解决的问题一次任务失败以后我们能否准确回答模型看到了什么、调用了什么、工具返回了什么、为什么停止。普通文本日志只记录人类觉得重要的句子无法支撑确定性回放。这个系列从一个名为ProofLoop的本地代码修复执行器开始第一篇只建骨架和事件账本不接真实模型。整个项目遵守一个边界模型可以提出动作宿主程序决定是否执行裁判程序决定结果是否合格。三者不能共用一团可随意修改的内存状态。我们先把每一步写成追加式 JSONL 事件让后续九篇都把runs/run_id/events.jsonl当输入。一、事件不是调试字符串而是状态事实传统日志写“正在运行测试”但这句话没有稳定字段换一句措辞就无法统计。事件则包含序号、任务编号、事件类型、时间和结构化载荷。序号负责定义因果顺序任务编号隔离并发执行事件类型形成可版本化协议。时间只用于观察耗时不能决定业务顺序因为系统时钟会回拨多线程也可能在同一微秒写入。下面的ledger.py使用标准库实现最小账本。每次追加先序列化为单行 JSON再刷新并同步文件描述符。它不能让磁盘永不损坏却把“Python 返回成功但数据仍停在用户态缓冲区”的窗口缩小。载荷只允许 JSON 类型模型原始回答若包含敏感信息应在进入账本前脱敏。from__future__importannotationsimportjsonimportosfromdataclassesimportasdict,dataclassfromdatetimeimportdatetime,timezonefrompathlibimportPathfromtypingimportAnydataclass(frozenTrue)classEvent:seq:intrun_id:strkind:strat:strpayload:dict[str,Any]classLedger:def__init__(self,path:Path,run_id:str)-None:self.pathpath self.run_idrun_id self.path.parent.mkdir(parentsTrue,exist_okTrue)self.next_seqself._count_lines()1def_count_lines(self)-int:ifnotself.path.exists():return0withself.path.open(encodingutf-8)ashandle:returnsum(1forlineinhandleifline.strip())defappend(self,kind:str,payload:dict[str,Any])-Event:eventEvent(seqself.next_seq,run_idself.run_id,kindkind,atdatetime.now(timezone.utc).isoformat(),payloadpayload,)encodedjson.dumps(asdict(event),ensure_asciiFalse,separators(,,:))withself.path.open(a,encodingutf-8)ashandle:handle.write(encoded\n)handle.flush()os.fsync(handle.fileno())self.next_seq1returneventdefmain()-int:ledgerLedger(Path(runs/demo-001/events.jsonl),demo-001)ledger.append(run_started,{goal:修复折扣计算})ledger.append(model_proposed,{tool:read_file,path:price.py})print(fevents2 next_seq{ledger.next_seq}path{ledger.path})return0if__name____main__:raiseSystemExit(main())运行输出events2 next_seq3 pathruns/demo-001/events.jsonl二、为什么选择 JSONL 而不是一个大 JSON一个大数组只有在任务结束时才能完整关闭进程中断时尾部括号可能缺失整个文件无法解析。JSONL 每行是独立记录已经同步的前缀仍然有效。它还允许流式读取不必把长任务全部装进内存。代价是跨事件约束需要读取器自己检查因此我们必须验证序号连续、任务编号一致、每行都能解析。记住一句不太直觉的话时间戳用于观察序号才用于证明先后。如果把时间当顺序NTP 校时或虚拟机暂停恢复会让事件“穿越”如果只相信文件行号手工拼接文件又可能隐藏缺口。显式seq让缺失和重复都可检测。importjsonfrompathlibimportPathdefload_events(path:Path)-list[dict]:events[]withpath.open(encodingutf-8)ashandle:forline_no,lineinenumerate(handle,start1):try:eventjson.loads(line)exceptjson.JSONDecodeErrorasexc:raiseValueError(fbroken json at line{line_no})fromexc expectedlen(events)1ifevent[seq]!expected:raiseValueError(fexpected seq{expected}, got{event[seq]})events.append(event)returnevents eventsload_events(Path(runs/demo-001/events.jsonl))print([event[kind]foreventinevents])运行输出[run_started, model_proposed]三、追加式不等于绝对不可篡改文件以追加模式打开只能防止业务代码无意覆盖不能防止拥有同一文件权限的进程重写历史。后续会加入摘要链和只读裁判此时先把所有状态变化变成事件避免“内存里已经重试三次磁盘只看到最终成功”的选择性记忆。异常也必须写事件工具超时、权限拒绝和预算耗尽不是日志噪声而是任务结论的一部分。另一个坑是把完整提示词、令牌或客户源码直接塞进账本。审计需要的是可验证引用不一定是原文。可保存内容摘要、相对路径和脱敏片段把敏感正文留在权限更严格的工件目录。账本越完整泄漏后的影响也越大所以可审计与最小披露必须一起设计。四、首篇交付什么本篇产物是ledger.py和runs/demo-001/events.jsonl。验收不是看终端出现两行文字而是重新启动程序后序号从 3 继续读取器能发现截断行与跳号两个任务不会写进同一目录。下一篇将直接读取这份事件文件中的model_proposed用tools.json判断read_file是否被授权并把允许或拒绝结果继续追加到同一账本。参考来源Dev.toThe Dirty Secret Behind AI AgentsPython 文档json — JSON encoder and decoder 觉得有用就点个赞 收藏方便回头查阅有疑问直接在评论区留言我看到都会回。 本文属于《Agent可靠性工程实战》系列持续更新关注不迷路。 文章里的代码都能直接跑。想要可直接 clone 的完整工程 配套部署脚本 / 踩坑清单评论一声或发邮件到cj2664qq.com我免费发你。如果你正好在做类似系统、或有工程化难题想找人做也欢迎邮件聊一句——我按实际情况评估能落地的就接单或出方案。评论和邮件都能直接找到我不用跳别的平台。

相关新闻

Python+Flask构建动漫数据可视化系统实战

Python+Flask构建动漫数据可视化系统实战

1. 项目概述:当动漫数据遇上Python可视化 去年帮朋友工作室处理一批动漫评分数据时,我用了三周时间手工整理Excel表格。看着密密麻麻的数字,突然意识到:为什么不用Python把这些数据变成会说话的图表?于是诞生了这个结合…

2026/7/30 15:57:24阅读更多 →
用了“盖州德溢”才发现名声大也有不足?

用了“盖州德溢”才发现名声大也有不足?

你们有没有那种感觉?就是看到某个东西特别火,直播间里一晚上卖几千单,评论区清一色“绝了”“回购N次”,但自己买回来一尝……emmm,也就那样吧。或者更惨一点,味道还行,但一看配料表&#xff0c…

2026/7/30 15:57:24阅读更多 →
5秒搞定麦克风静音:MicMute让你的Windows音频控制从未如此简单

5秒搞定麦克风静音:MicMute让你的Windows音频控制从未如此简单

5秒搞定麦克风静音:MicMute让你的Windows音频控制从未如此简单 【免费下载链接】MicMute Mute default mic clicking tray icon or shortcut 项目地址: https://gitcode.com/gh_mirrors/mi/MicMute 还在为视频会议中突然需要静音而手忙脚乱吗?或者…

2026/7/30 15:57:24阅读更多 →
AI写作工具在学术研究中的应用与测评

AI写作工具在学术研究中的应用与测评

1. 项目概述:AI写作工具如何改变学术研究生态去年帮导师审稿时,我发现一个有趣现象:超过60%的投稿论文都在致谢部分提到了AI辅助工具。这让我开始系统测试市面上主流的智能写作平台,特别是针对学术场景的专项功能。经过三个月深度…

2026/7/30 19:56:46阅读更多 →
高速信号回流路径设计盲区剖析

高速信号回流路径设计盲区剖析

一、高速信号回流基本原理:电流永远走阻抗最低路径,而非最短几何路径直流或者低频交流电流回流会沿着几何距离最短的地线回流至源端,但是高速数字信号的频率达到百兆赫兹以上,信号回流选择交流阻抗最小的路径,也就是高…

2026/7/30 19:56:46阅读更多 →
Argo CD 入门:为什么 GitOps 是云原生交付的未来?

Argo CD 入门:为什么 GitOps 是云原生交付的未来?

系列导读 你现在看到的是《Argo CD GitOps 实战之路:从入门到生产级自动交付》的第 1/10 篇,当前这篇会重点解决:用一张架构图讲清 GitOps 如何解决配置漂移,并手把手部署 Argo CD 实例。 上一篇回顾:这是系列首篇,我们先把整体背景和问题边界搭起来。 下一篇预告:第 …

2026/7/30 19:56:46阅读更多 →
Qwable 27B:当代码助手学会思考,你的AI编程伙伴升级了!

Qwable 27B:当代码助手学会思考,你的AI编程伙伴升级了!

Qwable 27B:当代码助手学会思考,你的AI编程伙伴升级了! 【免费下载链接】Qwable-3.6-27b 项目地址: https://ai.gitcode.com/hf_mirrors/Mia-AiLab/Qwable-3.6-27b 想象一下,你正在深夜调试一段复杂的Python代码&#xff…

2026/7/30 19:56:46阅读更多 →
如何高效使用A2UI组件目录:开发者终极指南

如何高效使用A2UI组件目录:开发者终极指南

如何高效使用A2UI组件目录:开发者终极指南 【免费下载链接】a2ui 项目地址: https://gitcode.com/GitHub_Trending/a2/a2ui A2UI组件目录是构建智能代理界面的核心基础设施,它通过JSON Schema标准化了代理与渲染器之间的通信协议。本指南将帮助你…

2026/7/30 19:56:46阅读更多 →
单片机计算机毕设之基于单片机的开关柜自动除湿换气控制系统 基于 STM32 的多设备联动柜体智能管控系统(013001)

单片机计算机毕设之基于单片机的开关柜自动除湿换气控制系统 基于 STM32 的多设备联动柜体智能管控系统(013001)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/7/30 19:54:46阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/30 15:03:16阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/30 12:22:27阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/30 15:13:02阅读更多 →
3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 🚀 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 你是否曾经因为iOS系统的严格…

2026/7/30 0:00:58阅读更多 →
[GESP202606 四级] 扫雷

[GESP202606 四级] 扫雷

B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…

2026/7/30 0:00:58阅读更多 →
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/30 0:27:26阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/30 4:47:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/30 15:43:46阅读更多 →