news 2026/6/14 14:25:57

Agent 系列(20):Harness 实战——从单文件到生产级模块包

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Agent 系列(20):Harness 实战——从单文件到生产级模块包

从演示代码到可复用包

Article 19 用一个 900 行的harness_full_demo.py演示了 8 层防护。这个文件足够说明概念,但不适合复用:所有层耦合在一起,无法单独测试,无法被其他项目引用。

生产级 Agent 项目需要的是一个可以import的包

harness/ ├── __init__.py 公共 API 导出 ├── registry.py Layer 2:ActionRegistry + PermissionLevel ├── budget.py Layer 3:PermissionBudget(含 refund()) ├── sandbox.py Layer 4:sanitise_input + sandboxed_eval ├── audit.py Layer 6:ImmutableAuditLog(哈希链) ├── rollback.py Layer 7:RollbackCoordinator └── harness.py 统一入口:AgentHarness

本文从包设计开始,覆盖三个关键 API 决策,最后展示两种集成方式:纯 Python standalone 和 LangGraph 图嵌入。


模块设计

registry.py — Layer 2

classPermissionLevel(Enum):READ=1WRITE=2ADMIN=3IRREVERSIBLE=4@dataclassclassRegisteredAction:name:strlevel:PermissionLevel budget_cost:intdescription:strhandler:Any# Callable 或 BaseToolclassActionRegistry:defregister(self,action:RegisteredAction)->None:...defget(self,name:str)->RegisteredAction:...# 不存在 → PermissionErrordefis_allowed(self,name:str)->bool:...defnames(self)->list[str]:...

get()而非__getitem__:统一抛出PermissionError,不暴露 KeyError 内部细节。


budget.py — Layer 3

classPermissionBudget:defspend(self,action_name:str,cost:int)->None:ifself.remaining<cost:raiseBudgetExhaustedError(...)self.remaining-=costdefrefund(self,action_name:str,cost:int)->None:self.remaining=min(self.total,self.remaining+cost)

新增refund():Article 19 中预算在审批前扣除、被拒绝后不退还。生产包修正了这个设计——IRREVERSIBLE 操作被拦截时,harness.py主动调用refund(),保持预算精度。


sandbox.py — Layer 4

INJECTION_PATTERN=re.compile(r"(ignore.*(previous|above|prior)|forget.*instruction|"r"you are now|act as|jailbreak|bypass|"r"override.*system|system.*override|"# 两种词序都覆盖r"</s>|\n\n###|###\s*system|<\|im_start\|>|system prompt)",re.IGNORECASE,)

注意两个细节:

  1. 同时覆盖SYSTEM OVERRIDE(system 在前)和override.*system(override 在前)
  2. \n\n###匹配真实换行,不是字面量\\n\\n###

这两个 bug 在 Article 21 的对抗测试中被发现并修复。


audit.py — Layer 6

clas
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 14:25:09

终极多平台直播解决方案:obs-multi-rtmp深度指南

终极多平台直播解决方案&#xff1a;obs-multi-rtmp深度指南 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 你是否还在为不同直播平台之间的配置切换而烦恼&#xff1f;是否希望一次推…

作者头像 李华
网站建设 2026/6/14 14:25:09

MPC823微处理器DC电气特性解析与通信系统硬件设计实践

1. MPC823微处理器&#xff1a;通信与控制的基石在嵌入式系统&#xff0c;尤其是工业控制、网络接入设备和通信网关的设计中&#xff0c;选对一颗“心脏”级别的微处理器只是第一步。更关键的是&#xff0c;你能否真正理解并驾驭它的物理特性&#xff0c;让它在你的电路板上稳定…

作者头像 李华
网站建设 2026/6/14 14:24:08

MPC8540 RapidIO接口错误处理与消息单元深度解析

1. MPC8540 RapidIO接口&#xff1a;高性能嵌入式通信的核心引擎在嵌入式系统&#xff0c;尤其是通信基础设施、工业控制和高端网络设备的设计中&#xff0c;处理器间的数据交换速度和可靠性直接决定了整个系统的性能天花板。当多个处理单元需要协同处理海量数据流时&#xff0…

作者头像 李华
网站建设 2026/6/14 14:22:49

2026论文降AI率工具:11款工具实测谁更高效?

2026 年学术审核标准持续收紧&#xff0c;论文重复率、AIGC 检出率已成为毕业答辩和期刊投稿的硬性门槛。随着知网、维普、Turnitin 等主流平台检测算法不断升级&#xff0c;越来越多的学者开始关注如何有效降低 AI 生成痕迹与重复率。然而&#xff0c;市面上各类降重、去 AI 工…

作者头像 李华
网站建设 2026/6/14 14:19:02

嵌入式I2C总线协议深度解析与MPC8323E实战配置指南

1. I2C总线协议深度解析&#xff1a;从两根线到复杂通信如果你在嵌入式领域摸爬滚打过一段时间&#xff0c;一定绕不开I2C这个老朋友。它不像SPI那样需要一堆片选线&#xff0c;也不像UART那样对时钟同步要求苛刻&#xff0c;仅凭两根线——一根时钟线SCL&#xff0c;一根数据线…

作者头像 李华