Harvey LAB执行框架:六大模块harness目录结构与职责划分完全解析【免费下载链接】harvey-labsA benchmark built to evaluate and improve agent capabilities for supporting legal work.项目地址: https://gitcode.com/GitHub_Trending/ha/harvey-labsHarvey LABLegal Agent Benchmark是一个开源法律 Agent 基准项目用于评估 LLM Agent 完成真实法律工作的能力。其核心就是位于项目根目录的harness 执行框架——它负责装载任务、驱动模型循环调用工具、沙箱内产出法律文书并记录完整的运行轨迹。本文将用通俗的方式拆解 harness/ 目录下的六大模块帮你快速理解一次 Agent 评测运行在底层是如何被组织和执行的。一、什么是 Harvey LAB 的执行框架先建立一个整体印象。Harvey LAB 由两大部分组成部分位置职责任务数据集tasks/1671 个真实感法律任务合同、数据室、合规文件等每个任务包含task.json指令 文书材料执行框架harnessharness/读取任务、调用大模型、执行工具、产出交付物并记录指标用一句话概括 harness 的分工任务提供考题harness 提供考场 监考流程。Agent 被限制在一个每任务独立的沙箱工作区里只有 6 个工具可用bash、read、write、edit、glob、grep没有网络访问——这正是 docs/architecture.md 中描述的文件系统优先设计。二、harness 目录结构全景整个执行框架只有 4 个顶层文件 2 个子目录职责高度解耦harness/ ├── run.py # ① 入口装载任务、组装各组件、编排整次运行 ├── agent_loop.py # ② 核心循环模型与工具之间来回传递消息 ├── tools.py # ③ 工具层6 个封闭工作区工具的定义与执行 ├── system_prompt.md # ④ 系统提示词前导工作区布局 工具约定 ├── adapters/ # ⑤ 模型适配器屏蔽不同厂商 API 差异 └── skills/ # ⑥ 技能手册docx / xlsx / pptx 文件操作指南下面逐一拆解每个模块的职责。三、run.py任务的总调度台run.py 是整次运行的入口一条命令即可启动uv run python -m harness.run \ --model anthropic/claude-sonnet-4-6 \ --task corporate-ma/review-data-room-red-flag-review它按顺序完成 8 件事装载任务——根据任务名/子任务名定位 tasks/ 下的task.json与documents/目录并做配置校验生成 run-id——默认格式为{任务}/{模型}-{推理强度}/{时间戳}保证每次运行结果互不覆盖启动沙箱——每个任务运行都独占一个 Podman 容器--networknone文书目录只读、输出目录可写创建模型适配器——根据--model参数前缀自动路由到对应厂商装配工具执行器——把 6 个工具全部接入沙箱拼装系统提示词——前导文本 技能手册启动 Agent 循环并全程记录transcript.jsonl对话轨迹落盘指标——写入config.json、metrics.json轮次、token、耗时、读了多少份文书等。 记住一句话run.py 自己不做思考它只负责把人、模型、工具、环境四样东西组装到位。四、agent_loop.py最简单的思考-行动循环agent_loop.py 是 harness 的心脏但实现刻意保持简单——模型负责思考循环只负责传递消息。循环逻辑就 5 步用系统前导 技能手册 任务指令构建首轮消息调用adapter.chat(messages, tools)请求模型把模型回复追加进对话轨迹模型没再调用工具 →结束否则用ToolExecutor执行工具调用把工具结果转回厂商消息格式回到第 2 步直到模型停下或达到--max-turns默认 200 轮。两个设计细节值得新手注意没有显式的finish 工具模型停止调用工具的那一刻就是任务完成信号非常干净上下文溢出保护若遇到prompt is too long类错误循环会优雅中断并在指标中标记而不是让整个评测崩溃。五、tools.py6 个工具的封闭工作区harness/tools.py 定义了 Agent 的全部能力边界。这是一个无网络、封闭宇宙的工具集工具用途新手理解bash在沙箱内执行 shell 命令跑脚本、装包、文件操作read读取.docx/.xlsx/.pptx/.pdf/文本自动解析直接拿结构化文本write写出交付物只写纯 Markdown如response.mdedit精确替换文件中的字符串增量修改已产出的文件glob按通配符找文件相当于文件浏览器grep按正则搜索文件内容相当于文书全文检索架构上ToolExecutor只是 sandbox/ 沙箱的一层薄封装——所有文件与 shell 操作都经由沙箱接口路由因此即使.docx是被恶意构造的文件解析也发生在容器内部而非宿主机上。工具使用统计读了多少文书、写了多少文件、搜了多少次都会汇入metrics.json为后续对比报告提供数据。六、system_prompt.md写给 Agent 的员工手册harness/system_prompt.md 是一个独立的 Markdown 文件而非写死在代码里作为系统提示词前导注入每次运行。它告诉 Agent 三件事工作区布局$WORKSPACE_DIR工作区、$DOCUMENTS_DIR只读文书、$OUTPUT_DIR交付物三个目录各司其职工具使用约定读文书用read、二进制交付物走技能手册、write只写 Markdown、edit做增量精修红线规则禁止读取task.json评分标准——一旦违反即判任务失败。这种能力说明在前导、任务内容在首条用户消息的拆分让模型把任务当作一份指派工作来处理而不是环境背景噪音。七、adapters/一套接口抹平五大模型厂商不同大模型厂商的 API 格式千差万别adapters/子目录用统一接口把它们全部抹平。harness/adapters/base.py 定义了抽象基类ModelAdapter核心只有 4 个方法chat()、make_tool_result_messages()、make_system_message()、make_user_message()。Agent 循环永远只与这个接口对话完全不感知背后是哪家厂商。目前已内置的适配器适配器支持的模型前缀anthropic.pyclaude*openai.pygpt*、o1*、o3*、o4*google.pygemini*mistral.pymistral*fireworks.pykimi*、glm*、nemotron*等开放模型baseten.pyBaseten 托管模型想在某家厂商上新增一个模型不用改循环、不用改工具——只需确认前缀路由或新增一个适配器文件即可这就是适配器模式带来的扩展性红利。八、skills/让 Agent 会做 Word、Excel、PPT法律交付物大量是二进制格式.docx合同、.xlsx台账、.pptx演示。skills/子目录为这三种格式各准备了一本操作手册skills/ ├── docx/ # SKILL.md 手册 scripts/ 脚本生成、修订标记、批注、校验 ├── xlsx/ # 工作簿构建、公式重算、错误扫描 └── pptx/ # 形状编辑、打包、缩略图、确定性 QA工作机制分两层手册层每个技能目录下的SKILL.md如 harness/skills/docx/SKILL.md会被run.py读取并追加进系统提示词Agent 由此知道如何产出文书脚本层scripts/目录被整体复制进沙箱工作区的skills/name/scripts/Agent 通过bash直接调用。例如 docx 技能提供了 Markdown 转 docxgenerate_from_md.py、模板填充template_fill.py、修订标记红线条redline.py、交付前强制校验validate.py等脚本。 一个典型分工read工具负责读 Worddocx 技能负责写、改、校验 Word——职责清晰、互不越界。九、一次运行的完整职责链把六大模块串起来一次评测的完整链路是run.py 装载任务与文书 → 启动沙箱 创建适配器 装配 ToolExecutor → agent_loop 开始循环 adapter.chat ⇄ ToolExecutor 执行 6 个工具 → 模型停止调用工具 → 运行结束 → 落盘 config.json / transcript.jsonl / metrics.json / output/之后交给评测侧evaluation/run_eval.py由 LLM 裁判按 rubric 逐条打分evaluation/compare.py生成跨模型对比仪表盘。harness 的产出尤其是对话轨迹与工具指标就是评测与报告的数据来源。十、小结为什么这样的目录划分值得学习模块一句话职责run.py总调度装载任务、组装组件、记录指标agent_loop.py核心循环模型与工具的消息摆渡tools.py能力边界6 个沙箱内封闭工具system_prompt.md行为准则工作区布局与红线规则adapters/厂商隔离统一接口适配五大模型商skills/格式技能docx/xlsx/pptx 的手册 脚本harness 的设计哲学可以概括为三点编排与思考分离run.py 不思考agent_loop 不编排、厂商无关换模型只换适配器、能力封闭沙箱 6 工具保证评测结果可复现、可对比。对于想理解Agent 评测框架如何落地的新手来说这 6 个模块就是一个足够小而完整的学习样本。 想动手实践建议从 docs/tutorial.md 的端到端教程开始再用 docs/architecture.md 深入任务模型与评测方法论。【免费下载链接】harvey-labsA benchmark built to evaluate and improve agent capabilities for supporting legal work.项目地址: https://gitcode.com/GitHub_Trending/ha/harvey-labs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
告别环境配置噩梦,一文搞懂抽象画派与微服务架构 告别环境配置噩梦,一文搞懂抽象画派与微服务架构 刚入行那会儿,我对着 IDE 屏幕发了半小时呆。终端里滚动的红色报错,比早高峰的地铁还让人焦虑。 配置环境就卡半天 ,是无数初学者在接触复杂系统时的第一道坎。你以为装个 Java、配个… · 2026/9/25 21:02:08
面试官追问sliced原理?这篇保姆级教程让你秒懂 面试官追问sliced原理?这篇保姆级教程让你秒懂 面试时被问到“sliced”相关的底层原理,或者在Go语言并发场景下处理切片时出现数据错乱,答不上来?别慌,很多资深开发者在这个细节上也会翻车。今天这篇保姆级教程,不整虚的,直接拆解sli… · 2026/9/21 23:11:02
SQLi-Labs Less-3详解:字符型注入中的单引号括号闭合与手工注入实战 sqli-labs的Less-3,很多新手第一次卡住的地方其实不在注入本身,而在于那一层不太起眼的括号。Less-1和Less-2的教程满网都是,一到Less-3,很多人就丢给你一句“单引号加括号闭合”,然后就没有然后了。结果自己上手试的时… · 2026/9/26 2:36:30
SpringBoot+Vue+MySQL多媒体素材管理系统开发实战 又到了每年的毕设和课设高峰期,后台经常有人问我“SpringBootVue能做什么项目”“有没有JavaMySQL的完整管理系统源码可以拿来学习”。这类问题问多了我发现一个规律:大家真正缺的不是代码,缺的是一个“能讲清楚、能跑起来、能应对答辩”的完… · 2026/9/26 2:36:30
文物目标检测数据集实战:从VOC转YOLO到YOLOv8训练避坑指南 简介:这份文物目标检测数据集面向文化遗产保护、智慧博物馆建设及遥感监测等方向的算法开发者与研究人员,提供可直接投入YOLO系列模型训练的标注数据,帮助解决文物自动识别、考古现场清点与遗址巡检等实际问题。资源包共1596个文件࿰… · 2026/9/26 2:36:30
网络入侵检测与数字取证:PCAP流量分析到证据链还原实战 简介:网络安全的核心能力之一,是从原始流量中识别攻击行为并还原攻击过程。网络入侵检测系统(NIDS)通过解析PCAP文件提取流量特征,或借助Suricata等规则引擎匹配已知攻击模式,或使用隔离森林等机器学习算法… · 2026/9/26 2:36:30
SpringBoot+Vue前后端分离商城源码:启动、踩坑与核心业务解析 简介:基于 Spring Boot 与 Vue 构建的前后端分离商城系统源码,面向正在学习 Java Web 与前端框架的开发者,适合用于课程设计或毕业设计。项目按前台用户端与后台管理端拆分明细:用户侧涵盖注册登录、商品查询、购物车汇总、总价计… · 2026/9/26 2:36:30
15款接口测试工具全解析:从Postman到k6的选型与实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 2:36:23
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46