Calculator Agent:模型主动调用计算器工具
Web Research Agent:模型搜索、阅读、筛选资料,再输出带引用报告
Agent Harness

Agent Loop 和 Agent Harness 有什么区别?
一个 Agent Harness 至少需要哪些模块?
继续调用工具 读取工具结果 请求更多信息 输出最终答案
search_webread_pageread_filewrite_filerun_codesend_email
每个工具能做什么 输入格式是什么 输出格式是什么 是否属于高风险操作
用户目标是什么 已经调用过哪些工具 哪些网页已经读过 哪一步失败了 当前任务是否完成
模型决策 工具调用 工具输入 工具结果 错误信息 执行耗时 Token 成本
历史压缩 重点摘要 只保留必要上下文 区分短期状态和长期记忆

用一个实际例子理解 Harness
帮我修复登录页面的报错,并补一个测试用例。
读取代码 修改文件 运行测试 输出结果
测试失败了怎么办? 修改了哪些文件? 是否允许 Agent 执行 shell 命令? 如果它想删除文件怎么办? 任务中断后能不能恢复? 它为什么决定改这个函数? 运行一次任务花了多少 Token?
读取代码库,建立任务 Session 调用 read_file,记录读取内容 模型生成修改计划 Permission Gate 判断:修改文件允许执行 调用 write_file,记录 Diff 调用 run_test,保存测试结果 如果失败,Agent 根据报错继续修复 如果涉及删除文件,弹出人工确认 完成后输出修改摘要、测试结果和 Trace 这才是一个真正可用的 Coding Agent。

Harness 最容易忽略的 4 个问题
为什么成功 为什么失败 哪一步出了问题 改完 Prompt 后能力有没有退化
低风险:读取网页、搜索资料 中风险:修改文件、执行代码 高风险:删除数据、发送邮件、付款

这一期你要交付什么?
记录每一次工具调用 保存搜索过的链接,避免重复读取 设置最大执行步数 工具失败时,记录错误并允许重试 可以先用一个简单列表保存 Trace: trace = []trace.append({"tool": "search_web","input": query,"result": search_results,"status": "success"})再加一个 Session:session = {"topic": topic,"visited_urls": [],"step": 0,"status": "running"}
夜雨聆风