ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

AI Agent Harness Engineering 与传统 RPA 的区别:从 settings.json 配置骨架看两条自动化路线

AI Agent Harness Engineering 与传统 RPA 的区别:从 settings.json 配置骨架看两条自动化路线 1. 从 settings.json 看两条自动化路线的分岔口如果你正在选型自动化方案大概率会遇到一个很具体的困惑同样是“让机器替人干活”为什么有的团队用 RPA 拖拽流程图就能上线有的团队却要维护一堆 JSON 配置、提示词模板和工具声明这个问题的答案藏在配置层的设计哲学里。传统 RPA 的配置核心是“操作序列”——记录点击、输入、等待、循环本质是把人的鼠标键盘动作翻译成可重放的脚本。而 AI Agent Harness Engineering 的配置核心是“能力边界与决策上下文”——你声明模型能用哪些工具、在什么条件下调用、失败后如何回退剩下的执行路径由模型在运行时动态生成。前者像给机器人铺铁轨后者像给实习生一份岗位说明书加工具箱。我试过把同一套“读取工单邮件、提取字段、写入内部系统”的需求分别用两种思路落地RPA 方案在邮件格式稳定时跑得飞快但供应商换了一次模板就全线报错Agent 方案第一次跑也会出错但它能根据报错信息换一种解析方式重试甚至主动在回复里说明“第三封邮件缺少订单号已跳过并记录”。这个差异不是模型聪明多少而是配置骨架决定了系统在运行时有没有“重新规划”的权限。本文会交付一份可复制的settings.json配置骨架配合 TaoToken 的统一 Key 通道接入示例并给出对比验证动作帮你判断自己的场景到底该走哪条路线。2. TaoToken 前置统一 Key 与 API 通道准备在展开配置骨架之前先把模型调用通道准备好。Agent 路线和 RPA 路线最大的工程差异之一就是 Agent 需要一个稳定的模型推理入口而 RPA 通常不需要。TaoToken 在这里的角色是提供统一的 API 通道让你不用在多个模型供应商之间反复切换 Key 和 Base URL。你可以先访问官网了解接入方式https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 然后在控制台创建 API Keyhttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。API 端点统一使用 https://taotoken.net/api 注意这个地址不加 UTM 参数直接作为 Base URL 填入配置即可。如果你后续要做长期编码或 Agent 编排可以关注 Coding Plan 页面https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。需要验证模型对话效果时用模型对话入口https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content Claude Code 相关配置参考 https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。这些入口先收藏后面配置骨架里会直接引用。3. 可复制配置settings.json 配置骨架下面这份settings.json是我在实际项目中反复调整后的骨架版本核心思路是把“模型通道”“工具声明”“执行策略”“回退规则”四类信息分开声明。你可以直接复制后按自己的业务替换工具名和路径。{ agent: { name: ticket-processor, version: 1.0.0, model: { provider: taotoken, base_url: https://taotoken.net/api, api_key_env: TAOTOKEN_API_KEY, model_name: claude-sonnet-4-20250514, max_tokens: 4096, temperature: 0.2 }, tools: [ { name: read_email, description: 读取指定邮箱的未读工单邮件返回发件人、主题、正文和附件列表, parameters: { type: object, properties: { mailbox: { type: string, description: 邮箱地址 }, limit: { type: integer, default: 10 } }, required: [mailbox] }, endpoint: http://localhost:8080/tools/read_email }, { name: extract_fields, description: 从邮件正文中提取订单号、金额、日期等结构化字段, parameters: { type: object, properties: { text: { type: string }, schema: { type: object } }, required: [text] }, endpoint: http://localhost:8080/tools/extract_fields }, { name: write_ticket, description: 将结构化字段写入内部工单系统, parameters: { type: object, properties: { order_id: { type: string }, amount: { type: number }, date: { type: string } }, required: [order_id] }, endpoint: http://localhost:8080/tools/write_ticket } ], execution: { max_steps: 15, retry_on_tool_error: true, max_retries_per_tool: 2, fallback_strategy: skip_and_log, require_confirmation_for: [write_ticket] }, observability: { log_level: info, log_tool_calls: true, log_model_responses: true, output_dir: ./logs } } }这份骨架和 RPA 配置的根本区别在于RPA 的配置文件里通常写的是“第 1 步点击坐标 (850,420)第 2 步输入文本 ${order_id}第 3 步等待 2000ms”而这里写的是“你可以用 read_email、extract_fields、write_ticket 三个工具最多走 15 步工具报错可以重试 2 次写工单前需要确认”。执行路径不是预先画死的而是模型根据当前邮件内容动态决定的。fallback_strategy设为skip_and_log意味着遇到无法解析的邮件时Agent 会跳过并记录而不是像 RPA 那样直接卡死等待人工。环境变量里设置 Keyexport TAOTOKEN_API_KEY你的_API_Key如果你用的是 Claude Code 或类似编码 Agent配置方式略有不同参考 https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里的说明把 Base URL 指向https://taotoken.net/api即可。4. 验证请求与成功结果配置写好后先做一次最小验证确认模型通道和工具声明都能正常工作。下面这段 Python 脚本用标准 OpenAI 兼容格式调用 TaoToken 的 API并模拟一次工具调用循环。import os import json import requests API_KEY os.environ[TAOTOKEN_API_KEY] BASE_URL https://taotoken.net/api headers { Authorization: fBearer {API_KEY}, Content-Type: application/json } payload { model: claude-sonnet-4-20250514, messages: [ { role: system, content: 你是一个工单处理 Agent。可用工具read_email、extract_fields、write_ticket。请根据用户输入决定调用哪个工具。 }, { role: user, content: 请读取 inboxexample.com 的最新 3 封未读邮件提取订单号和金额然后写入工单系统。 } ], tools: [ { type: function, function: { name: read_email, description: 读取未读工单邮件, parameters: { type: object, properties: { mailbox: {type: string}, limit: {type: integer} }, required: [mailbox] } } } ], tool_choice: auto, max_tokens: 1024 } resp requests.post(f{BASE_URL}/v1/chat/completions, headersheaders, jsonpayload, timeout60) print(resp.status_code) print(json.dumps(resp.json(), ensure_asciiFalse, indent2))预期成功结果分两种情况。如果模型决定先调用工具你会看到返回的choices[0].message.tool_calls数组里包含read_email及其参数类似{ tool_calls: [ { id: call_abc123, type: function, function: { name: read_email, arguments: {\mailbox\: \inboxexample.com\, \limit\: 3} } } ] }如果模型直接给出文本回复说明通道正常但工具声明可能需要调整描述。无论哪种只要 HTTP 状态码是 200 且返回体里有choices字段就说明 TaoToken 通道和模型调用已经打通。接下来把工具执行结果以role: tool的消息追加回去就能完成一轮完整的 Agent 循环。这个循环正是 RPA 配置里不存在的东西——RPA 没有“模型决定下一步调什么”这个环节。5. 本篇常见错排查5.1 401 或 403Key 没传对最常见的是环境变量名写错或者 Key 前后带了空格。检查TAOTOKEN_API_KEY是否在同一个 shell 会话里 exportPython 脚本里用os.environ读取时确认没有多余换行。另外注意 Base URL 不要写成https://taotoken.net/api/v1再加/v1/chat/completions会变成双 v1。正确写法是 Base URL 用https://taotoken.net/api请求路径用/v1/chat/completions。5.2 模型不调用工具直接编造答案这通常是因为工具描述太模糊或者tool_choice设成了none。把每个工具的description写清楚“什么时候用、返回什么”比如read_email要说明“当需要获取邮件内容时调用”。如果还是不行把tool_choice临时设为{type: function, function: {name: read_email}}强制走一次工具调用确认链路通后再改回auto。5.3 Agent 陷入循环反复调用同一个工具max_steps设得太大加上工具返回结果没有变化时容易出现。把max_steps控制在 15 以内并在工具执行层加一个“相同参数连续调用超过 2 次则返回错误提示”的保护。RPA 不会有这个问题因为它的步骤是固定的Agent 的灵活性带来的是需要额外约束执行边界。5.4 工具返回非 JSON 导致解析失败Agent 框架通常期望工具返回结构化数据。如果你的read_email返回的是纯文本在工具层包一层 JSON比如{status: ok, data: ...}。这样模型能稳定解析也方便日志排查。5.5 对比验证同一任务跑两条路线想直观感受差异可以设计一个对照实验。任务从 10 封格式不统一的邮件中提取订单号并写入系统。RPA 路线用录制工具生成脚本Agent 路线用上面的settings.json骨架。然后故意把其中 3 封邮件的字段顺序打乱、1 封缺少订单号。RPA 脚本大概率在第 4 封就报错停止Agent 会跳过缺失订单号的那封对打乱顺序的邮件重新解析最后输出“成功 9 封跳过 1 封跳过原因缺少订单号”。这个实验能帮你判断如果你的业务输入格式高度稳定且不允许跳过RPA 更可控如果输入有波动且允许部分失败Agent 的容错和自适应能力更省心。6. 选型建议与接入入口两条路线不是替代关系而是适用边界不同。RPA 适合“输入结构化、步骤固定、不允许跳过、审计要求逐步骤可追溯”的场景比如银行对账、社保申报。Agent 适合“输入半结构化或非结构化、需要判断和重试、允许部分失败并记录”的场景比如工单分类、邮件解析、客服辅助。配置层的差异只是表象底层是“执行路径由人预先画死”还是“由模型在约束内动态生成”的区别。如果你决定走 Agent 路线先把 TaoToken 的 Key 和通道配好。API Key 在 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 创建接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 查看。长期做编码或 Agent 编排的话Coding Plan 页面 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 有更详细的方案说明。模型对话验证用 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。把settings.json里的base_url指向https://taotoken.net/api环境变量里放好 Key就可以开始跑你的第一个 Agent 循环了。
返回列表