尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
cwc-workshops harness目录深挖:probes、replay与verify.py的实现原理
cwc-workshops harness目录深挖probes、replay与verify.py的实现原理【免费下载链接】cwc-workshops项目地址: https://gitcode.com/GitHub_Trending/cw/cwc-workshops cwc-workshops 的 agent-battle 工作坊用 Claude 托管 Agent 驱动 Minecraft 挖矿其 harness 目录内置了一条完整的评测→回放→验证工具链probes.py 用 10 个合成游戏状态做秒级决策评测replay.py 把 JSONL 运行日志变成人类可读剧本verify.py 则为前三名颁奖做轨迹防伪核验。本文带你逐层拆解这三个模块的实现原理与设计取舍。一、先看懂背景agent-battle 是什么agent-battle 是一场 45 分钟的实战工作坊你只负责配置一个 Claude 托管 Agent模型 系统提示词 技能 MCP 工具云端 Agent 通过 MCP 驱动本地 Minecraft 机器人5 分钟内挖到的钻石最多者获胜平局比谁消耗的 token 少。整个 harness 目录就是这场Agent 大战背后的支撑层各模块分工如下模块角色agent.py参考实现Claude tool-use 循环的教学范本client.py对接 bot.js 的 HTTP 客户端定义 GameStatelogging_.py每轮运行写一份 JSONL 轨迹 人类可读 thinking 日志probes.py--eval背后的快速决策探针replay.py把 JSONL 轨迹回放成可读文本verify.py颁奖前的轨迹防伪核验leaderboard.py向排行榜上报 token/轮次成本三个主角——probes、replay、verify——恰好覆盖了 Agent 开发闭环的三个时机跑之前快测、跑之后复盘、发奖前防伪。下面逐个拆解。二、probes.py10 个合成状态30 秒测出 Agent 的决策质量2.1 核心思路用假状态代替真游戏一次完整对局要 5 分钟而且结果受矿脉运气影响噪声太大。probes.py 的做法是不启动游戏直接构造一个合成的/stateJSON发给参与者真实配置的 Agent只抓它做出的第一个动作来打分。每个探针约 10 秒全程无 Minecraft 副作用结果落地前就中断会话。Probe 数据类只有 5 个字段设计得极其克制dataclass class Probe: key: str # 探针名如 iron-required title: str # 一句话场景描述 state: dict # 合成的游戏状态 JSON score: Callable # 打分函数(动作名, 参数) → (✓/⚠/✗, 理由) capture_lookup: bool False preamble: str # 补充上下文如你已连续 chat 了 3 次_state()辅助函数提供一套合理的默认状态位置、血量、背包、附近方块每个探针只需覆盖差异字段这就是为什么整个文件能紧凑地装下 10 个场景。2.2 10 个探针考的是什么全部探针集中在 PROBES 列表可以归为三类考点知识类靠技能/Wiki 补事实iron-required石镐挖不了钻石矿得先造铁镐、ore-variant要挖的是deepslate_diamond_ore而不是diamond_ore、depth钻石矿在 y0 的深处别再在 y10 挖石头行为类只有系统提示词能塑造relocate矿脉挖空后应转移 20 格以上、restraint连续 4 次 chat 是浪费 token、discipline矿石就在 2 格外别再 get_state 了、durability镐耐久只剩 9/250该备一把新的、prioritizes剩 2 分钟先挖 3 格外的近矿而不是 35 格外的工具类uses-lookup满屏陌生的 tuff 方块应该先调lookup()查 Wiki 再决定挖不挖——这是唯一开启capture_lookupTrue的探针也是检验挂了 MCP 但没提示 Agent 去用这一经典坑的考题。每个探针配一个打分函数如 _score_iron_required输出三档结论✓正确、⚠尚可、✗错误并附上一句人话理由比如mines diamond ore with STONE pick — drops nothing。2.3 抓取动作的关键技巧真正的执行逻辑在 _probe_one有几个值得偷师的细节每个探针开一个独立的 CMA 会话消息模板直接告诉 Agent你已经调过 get_state下面是结果只选一个动作从而把多轮博弈压缩成单轮决策跳过读技能和多余 get_state流式事件里遇到read、get_state等前置调用会跳过最多 3 次确保抓到的是 Agent 真正的第一决策而不是它加载技能的仪式动作抓完立刻user.interrupt并归档会话——这就是无副作用的实现挖矿指令根本没机会落地并发执行run() 用ThreadPoolExecutor并发跑全部探针默认 4 线程可用EVAL_WORKERS调墙钟时间约等于最慢一个探针的耗时所以整轮评测只要 30~60 秒。入口在 my_agent.py运行python3 my_agent.py --eval即调用probes.run()。如果没拿满分结尾还会输出一段诊断文案直接点明三类探针分别对应技能/提示词/MCP三个可调杠杆——它测的不是运气而是你的配置。三、replay.py把 JSONL 轨迹翻译成剧本3.1 日志从哪来Agent 运行时的原始记录由 RunLogger 产出--log-dir开启后每个事件一行自包含 JSONrun_start/turn/task_end/task_notes_after/run_end行缓冲写入保证崩溃也不丢已发生的事件同时维护latest.jsonl符号链接方便演示时一条tail -F看全场。3.2 回放的设计原则replay.py 的定位是Pretty-print a run JSONL三条原则贯穿实现零依赖纯标准库、纯文本输出任何终端都能跑刻意不用 rich/textual容错坏行只警告不崩溃打到 stderr缺失字段用.get()兜底旧版本 agent.py 的日志照样能读可过滤--task stone_pickaxe只看单个任务--grep mine_block按动作名 参数 推理 报错做大小写不敏感的子串匹配见 _matches_grep过滤模式下还会聪明地跳过全局 run_end 汇总因为它不代表过滤子集。每轮 turn 的渲染是一行动作 一行推理── task: iron_pickaxe ── [ 3] mine_block(namedeepslate_diamond_ore) ok inv: 1 diamond ore is close, mine it first ✓ 4 turns — reached iron_pickaxe库存增量1 diamond来自 logging_.py 中记录 inventory_delta让复盘者一眼看出这一步到底有没有产出。四、verify.py给前三名的轨迹做防伪4.1 它防的是什么工作坊要发奖品而排行榜分数来自参与者自己上报——bot.js 归参与者所有logger 理论上可被篡改。verify.py 的注释说得很坦诚它不是密码学意义上的验证但能抓住最廉价的造假直接 curl 往排行榜 POST 一个从未发生的成就。4.2 重建逻辑从轨迹反推应该发生的成就verify() 单遍扫描 JSONL从录下的游戏状态而非自报结果重建四个事实items_seen所有 turn 里出现过的物品名集合用来核对六条科技树里程碑木镐→石镐→熔炉→铁锭→铁镐→钻石是否真的依次达成钻石数优先取diamonds_collected计数器峰值它不受合成/丢弃影响旧轨迹缺该字段时回退到背包峰值取两者最大值作为最终口径min_y全程最低 y 坐标用来审计是否真到过钻石深度y16tokens / turns从 run_end 直接取作为平局裁决的对照值。输出分两段前段是与排行榜可逐字段比对的Agent Battle scoring后段是标注为 audit only, does not affect rank 的里程碑审计清单✓/·。设计意图很清楚让主持人在颁前三之前一条命令就能交叉验证自报分数与轨迹证据是否自洽。命令入口在 main()python -m harness.verify logs/latest.jsonlHOST.md 也把它列为主持人手册里的 Top-3 核验步骤。五、三者如何拼成完整闭环 配置 Agentmy_agent.py 的 AGENT dict │ ▼ ① probes ──跑之前── 10 个合成状态30~60s 定位提示词/技能/MCP 的问题 │ ▼ ② 正式 5 分钟对局 RunLogger 落盘 JSONL │ ├──▶ ③ replay ──跑之后── 过滤/搜索轨迹复盘哪一轮走歪了 │ └──▶ ④ verify ──发奖前── 从轨迹重建事实防伪核验前三名这条闭环体现了工作坊三个可迁移的工程观点快反馈优先probes 把改一次提示词的验证成本从 5 分钟 运气降到 30 秒 确定性打分迭代速度决定调优深度日志是一等公民JSONL 每行自包含、行缓冲落盘才能支撑事后任意角度的 replay 和第三方 verify——先设计好证据格式再谈复盘与审计验证分层probes 验证决策、replay 服务理解、verify 服务信任三种诉求用三个轻量工具各管一段而不是造一个大而全的调试器。六、上手速查三条命令在 agent-battle 目录下只读浏览代码不受影响实际运行需先按 README 完成 setup场景命令秒级评测当前配置python3 my_agent.py --eval回放某次运行的完整轨迹python -m harness.replay logs/run_xxx.jsonl只查某任务 / 某类动作追加--task stone_pickaxe或--grep mine_block核验轨迹真伪python -m harness.verify logs/latest.jsonl七、写在最后harness 目录没有一行炫酷代码却把如何评价一个 Agent这件难事拆成了三件小事probes 用最小状态做确定性单测replay 用容错遍历做可读回放verify 用单遍扫描做证据重建。对任何想给自己的 Agent 项目建立评测能力的团队来说这三个约 100~400 行的文件就是一套可以直接借鉴的轻量模板——先让决策可测再让过程可看最后让结果可信。 【免费下载链接】cwc-workshops项目地址: https://gitcode.com/GitHub_Trending/cw/cwc-workshops创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

CDR入门速成:从基础绘制到转曲与PDF导出的完整实操

CDR入门速成:从基础绘制到转曲与PDF导出的完整实操

简介:专为零基础学员打造的CorelDRAW速成入门手册,以PDF电子书形式覆盖平面设计与矢量绘图中最常用的核心技能。内容从软件界面、新建与保存讲起,依次讲解圆形、矩形、多边形、螺旋形等绘图工具,并深入介绍选择、移动、复制、群组…

📅 2026/9/18 13:40:21
用REW深度解析房间声学:频响测量到EQ修正的完整工作流

用REW深度解析房间声学:频响测量到EQ修正的完整工作流

简介:REW(Room EQ Wizard)声学测量软件与相关声学知识讲解PDF,面向音响爱好者、初烧玩家及音频从业者,帮助读者看懂频响曲线、测准混响时间,并理解房间声学调整的基本思路。文档从“测什么、为什么测、怎么…

📅 2026/9/18 13:40:21
企业云工作站方案落地:从需求调研到协议调优与验证

企业云工作站方案落地:从需求调研到协议调优与验证

简介:一份《企业云工作站解决方案》完整演示文稿,面向企业IT架构师、云计算方案规划人员及系统运维管理者,系统介绍基于华为FusionAccess的云工作站架构。内容围绕传统图形工作站的信息安全、配置灵活性、移动接入与运维成本等痛点&#xff0…

📅 2026/9/18 13:40:21
MORE NEWS

更多资讯

📰

WPF UI 主题管理指南:用 IThemeService 三行代码搞定深浅色切换

WPF UI 主题管理指南:用 IThemeService 三行代码搞定深浅色切换 【免费下载链接】wpfui WPF UI provides the Fluent experience in your known and loved WPF framework. Intuitive design, themes, navigation and new immersive controls. All natively and effo…

📰

Grafana Tempo 集群容量规划:基于摄入速率与保留期的组件级资源估算指南

Grafana Tempo 集群容量规划:基于摄入速率与保留期的组件级资源估算指南 【免费下载链接】tempo Grafana Tempo is a high volume, minimal dependency distributed tracing backend. 项目地址: https://gitcode.com/GitHub_Trending/tempo1/tempo Grafana T…

📰

清华AI课PPT深度解读:机器学习工程决策地图

简介:本资源是清华大学精品人工智能课程第5章《机器学习》的完整教学课件,面向高校本科生、AI初学者及转行学习者,系统讲授机器学习核心概念与工程实践方法。内容覆盖机器学习定义与分类(监督/无监督/半监督/强化学习)…

📰

道可视行车记录仪:录像机制、参数设置与故障排查全攻略

简介:这份《道可视行车记录仪产品使用功能详解》以 PDF 文档形式,系统梳理道可视 360 全景行车记录仪的核心操作与设置逻辑,适合车主、4S 店安装技师及车载电子售后人员阅读参考。文档从视图界面切入,说明全景图位置切换与五档亮度…

📰

浙江大学联合小米做奖励模型,TaoToken 只提供 Key

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

斐讯N1 Armbian 内核怎么选?写入速度翻20倍的性能优化完整指南

斐讯N1 Armbian 内核怎么选?写入速度翻20倍的性能优化完整指南 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬