惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
V
V2EX
G
Google Developers Blog
F
Full Disclosure
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
H
Hacker News: Front Page
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
NISL@THU
NISL@THU
G
GRAHAM CLULEY
V
Vulnerabilities – Threatpost
Hacker News - Newest:
Hacker News - Newest: "LLM"
A
About on SuperTechFans
The Cloudflare Blog
C
Cisco Blogs
D
DataBreaches.Net
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Vercel News
Vercel News
P
Privacy International News Feed
Microsoft Security Blog
Microsoft Security Blog
Help Net Security
Help Net Security
Recorded Future
Recorded Future
PCI Perspectives
PCI Perspectives
S
Schneier on Security
AI
AI
N
News | PayPal Newsroom
雷峰网
雷峰网
C
Cyber Attacks, Cyber Crime and Cyber Security
P
Proofpoint News Feed
The Last Watchdog
The Last Watchdog
L
LINUX DO - 最新话题
Hugging Face - Blog
Hugging Face - Blog
Apple Machine Learning Research
Apple Machine Learning Research
Schneier on Security
Schneier on Security
S
Securelist
云风的 BLOG
云风的 BLOG
Stack Overflow Blog
Stack Overflow Blog
博客园_首页
AWS News Blog
AWS News Blog
TaoSecurity Blog
TaoSecurity Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Recent Commits to openclaw:main
Recent Commits to openclaw:main
博客园 - 三生石上(FineUI控件)
C
CXSECURITY Database RSS Feed - CXSecurity.com
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Cloudbric
Cloudbric
C
Cybersecurity and Infrastructure Security Agency CISA
Project Zero
Project Zero
C
Check Point Blog
S
Security Affairs

博客园 - 若-飞

企业AI Agent落地的核心逻辑与路径 基于langchain,Function Call的成功率怎么解决? LangChain Checkpoint(检查点)是什么?—— Agent 的"存档机制" RAG 设计:Embedding 如何切分 AI 客服系统设计:RAG 知识库设计 Go 百万连接服务器设计:从网卡到业务的全链路解析 深度解析 sync.Pool:从设计哲学到生产实践 Goroutine 泄漏:原因、检测与防范 Go Channel 关闭与超时机制完全指南 Go Map 无限增长问题解决方案 LangChain 聊天记录压缩:原理、机制与实战 揭开 sklearn 文本分类的核心原理:从词袋到逻辑回归 大模型“胡说八道”怎么办?一张图读懂检测、评估与修复全方案 企业级AI知识库权限隔离设计:让AI“懂规矩”比“懂知识”更重要 RAG系统设计全解析:从架构到多模态的核心知识图谱 RAG召回率提升全攻略:7大核心方法让检索更精准 RAG召回率提升秘籍:Metadata过滤的底层原理与实践 构建更好的RAG系统:深入理解混合搜索 一文搞懂 RAG 中 Retriever 和 Reranker 的区别 一文搞懂 RAG 的召回率(Recall)是什么? LangChain / LangGraph、MCP、Harness Engineer 与 Claude Code 的对应关系 BLEU 是什么?——从原理到工程实践 一文讲清:Approve / Permit / Permit2 的本质区别 分库分表后跨分页查询的完整方案 ai如何处理私有数据 ai幻觉是啥,以及如何解决 别再让大模型“凭空瞎猜”了!带你认识AI最强外挂:ChromaDB 用 useQuery 管请求:TanStack React Query 入门小结 HD钱包--BIP44 TRON 四种 API 面怎么选:从节点协议到 JSON-RPC 再到 TronGrid 以太坊节点存储与共识机制全解析 BSC节点发现协议全解析:UDP发现、Bootnode引导与Gossip交易广播 以太坊节点发现背后的分布式哈希表(DHT)与 Kademlia 原理解析 Solidity中的bytes与string:深入理解这两种特殊的动态数组 智能合约自毁:当资产还在,合约死了 —— 深度解析 selfdestruct 导致的资产锁定风险 TDengine CLI (taos) 使用指南 —— Docker 本地开发实战 在 macOS 上用 DBeaver 连接 TDengine:踩坑总结与最终配置指南 Solidity Storage Slot 深度解析 Geth Snapshot Export/Import 深度解析: 不是备份工具,而是数据分析利器 基于BSC 公链的数据备份与 Snapshot 机制深度解析 Docker 共享内存完全指南:从原理到实践,避免常见的理解误区 Docker容器"僵尸状态"问题排查与自动重启方案 SSE协议深度解析:被低估的HTTP服务器推送标准 TDengine vs MySQL:时序数据处理的时代之选 Proxmox 启用 QEMU Guest Agent 实战指南 解决 Blockscout "batch too large" 错误的完整指南 一文讲清楚什么是基准测试(Benchmark) Rust中的宏(Macro):编译时的代码生成魔法 Docker优雅关闭的艺术:为什么stop_grace_period能防止数据丢失 为什么 Go 没有依赖注入和 Bean 机制?语言设计哲学对比
Agent Harness 技术笔记:从 Trajectory 到 Function Calling Loop
若-飞 · 2026-06-22 · via 博客园 - 若-飞

1. Agent 评测和「一问一答」评测有什么不同

传统 LLM Eval(例如 QA、翻译、选择题)通常是:

Agent 场景则往往是 多步决策

典型循环叫 ReAct(Reason + Act):

Agent Harness 的核心目标不是「最后一句话像不像标准答案」,而是:

给定 Task + Tool Set → 自动执行 → 记录完整轨迹 → 自动打分 → 可回归对比

因此需要记录的不只是 final_answer,而是 整条 decision chain


2. Trajectory:为什么要持久化、可回放

Agent 交互往往是 multi-step。Harness 需要把每一步结构化存下来,形成 trajectory

单步 schema 示例:

完整 trajectory 还包括:run_idtask_idmodelmax_stepsfinal_answersteps[] 等。

为什么要存盘

持久化之后可以:

  1. 离线回放 —— 不必重调 API,直接读 JSON/JSONL
  2. 自动打分 —— 从 steps 算 success、misuse、loop、cost
  3. 回归测试 —— 对比两次 run 的轨迹与指标

Trajectory schema 是 Agent 评测的「通用语言」:先定义格式,再写 runner、metrics、report。


3. Tool 评测:expected vs actual

Agent 除了最终答案,还要评 工具调用是否正确

每步 tool 调用约定为:

比对逻辑是 结构化字段匹配,不是简单字符串相等:

三个核心指标:

三种典型 Tool Misuse

这是 rule-based 批改:name + args 精确匹配(加少量 normalize),不是语义理解。


4. Tool Schema 和 Tool 执行函数是两回事

Function Calling 体系里必须分清两层:

4.1 Tool Schema(给模型看的「菜单」)

这是 JSON 元数据,传给 API 的 tools= 参数。
它 不能执行,只告诉模型:有哪些工具、各需要什么参数。

4.2 Tool 执行函数(本地真正干活的代码)

模型 永远不会直接调用 这个 Python 函数。流程是:

模型决策,代码执行 —— 这是 FC 的安全与可控基础。


5. function_call vs tool_calls(OpenAI 兼容 API)

新版结构示例:

回传 tool 结果时必须对应 id:

新代码应统一使用 tools= + tool_calls,不再使用 function_call


6. Agent Runner:run_fc_loop 在做什么

Agent Runner 的职责:把 task + tools 跑成标准 trajectory,而不是追求最强 Agent 能力。

run_fc_loop 本质是 orchestration 循环(不是模型「自我调用」):

三个角色分工:


7. 为什么 Function Calling 通常至少两轮 API

这是 FC 的 必要设计,不是实现冗余。

若只有一轮:

  • 不调 tool → 容易幻觉
  • 调了 tool 但看不到结果 → 无法 grounded 回答

因此 「一轮要 tool + 一轮给答案」 是标准两阶段。
复杂任务会更多轮:多次 tool 调用 + 最后一次生成答案。

Trajectory 里的 步数 通常统计的是 API 轮次 / 决策步,不等于「同一个 tool 被执行了几次」。


8. 死循环检测:detect_loop

Agent 常见故障之一是 重复调用相同工具

最小检测规则:

Runner 中一旦发现 loop,应:

  • 设 loop_detected = True
  • 强制 break,避免无限烧 token

另一种失败模式:跑满 max_steps 仍无 final_answer,也可视为 timeout / loop 类失败。


9. Agent Harness 六层架构(串联)

数据流:


10. 核心结论

  1. Agent ≠ Chatbot:评测对象是 multi-step 决策链,不是单句 output。
  2. Trajectory 是 Agent Eval 的增量:可审计、可回放、可回归。
  3. Tool 评测是结构化匹配name + args,外加 misuse / accuracy 指标。
  4. Schema ≠ 函数:模型看 menu,代码做 execution。
  5. FC 至少两轮 API:先 tool、再 answer,是协议设计而非浪费。
  6. Runner 是编排层:循环驱动 LLM ↔ Tool,并负责 loop 截断与日志。
  7. tool_calls 取代 function_call:多调用、可追踪、可扩展。

以上构成 Agent Harness 的最小技术栈:不依赖特定框架(LangGraph、MCP 等),用 schema + loop + trajectory + rule metrics 即可搭建可测试、可度量的 Agent 评测流水线。