ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

腾讯WorkBuddy团队怎么做Harness:Agent上下文工程与MCP接入实践

腾讯WorkBuddy团队怎么做Harness:Agent上下文工程与MCP接入实践 1. 从 WorkBuddy 的 Harness 实践说起Agent 上下文工程到底在解决什么腾讯 WorkBuddy 团队在 Agent 场景下提出的 Harness 工程化思路核心可以拆成三个词驾驭、约束、整合。Harness 原意是套在马身上的整套装备放到 Agent 语境里它指的是模型之外那一整套让 Agent 稳定干活的控制系统。上下文工程负责让 Agent 知道得够不够Harness 负责让 Agent 做得对不对、安不安全、能不能持续跑下去。如果你正在做 Agent 项目大概率遇到过这些情况Agent 第一次执行就写错文件路径、长任务跑到一半忘了目标、误删了不该动的目录、多个工具调用顺序混乱导致结果互相覆盖。这些问题不是模型能力不够而是 Harness 没搭好。WorkBuddy 团队把 Harness 分成五层运行环境层、引导层、反馈层、编排层、迭代层。前馈控制提高首次正确率反馈控制让 Agent 在人工审查前自我纠正。这篇文章会给出可复制的 Harness 配置模板以及 MCP 接入的完整验证步骤。适合已经在用 Claude Code、Cline、Codex 等工具做 Agent 开发但还没系统化搭建上下文工程和 MCP 接入流程的读者。下面从实际配置开始一步步落地。2. TaoToken 前置准备API Key 与 Base URL 配置在搭建 Harness 之前需要先解决模型接入的问题。TaoToken 提供统一的 API 入口支持 Claude、GPT 等主流模型适合在 Agent 项目中作为模型调用层。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端点是 https://taotoken.net/api 。第一步注册并获取 API Key。进入控制台后创建密钥格式通常是sk-开头的一串字符。这个 Key 后面会用在环境变量或配置文件中。第二步确认你要接入的模型 ID。TaoToken 的模型对话页面可以查看当前可用的模型列表常见的包括claude-sonnet-4-20250514、gpt-4o等。模型 ID 必须和配置文件里写的完全一致否则会报 model not found。第三步设置环境变量。在终端里执行export TAOTOKEN_API_KEYsk-你的密钥 export TAOTOKEN_BASE_URLhttps://taotoken.net/api如果你用的是 Claude Code还需要在 settings 文件里指定 Base URL 和模型。Claude Code 的配置文件通常位于~/.claude/settings.json内容如下{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的密钥, ANTHROPIC_MODEL: claude-sonnet-4-20250514 } }注意 Base URL 不要带末尾斜杠否则部分客户端会拼接出双斜杠导致 404。API Key 不要提交到 Git 仓库建议用.env文件并加入.gitignore。如果你用的是 Cline 或 Roo Code 这类 VS Code 插件在设置里选择 “OpenAI Compatible” 或 “Anthropic Compatible”Base URL 填https://taotoken.net/apiAPI Key 填你的密钥Model ID 填对应模型。Cline 的 MCP 配置后面会单独讲。Codex 用户需要修改~/.codex/auth.json写入{ OPENAI_API_KEY: sk-你的密钥, OPENAI_BASE_URL: https://taotoken.net/api }三件套记住Base URL、Key、Model ID缺一不可。配置完成后先别急着搭 Harness用一条简单请求验证连通性。3. 可复制 Harness 配置模板WORKBUDDY.md 与 settings 片段Harness 的引导层核心是规则文件。WorkBuddy 团队用WORKBUDDY.md和AGENTS.md作为根目录入口子仓库用局部规则文件补充。下面是一个可直接复制的模板放在项目根目录。# WORKBUDDY.md ## 项目概况 - 项目名称my-agent-project - 技术栈TypeScript Node.js 20 PostgreSQL - 包管理器pnpm - 测试框架vitest ## 目录结构 - src/agents/ Agent 核心逻辑 - src/tools/ 工具定义与 MCP 接入 - src/harness/ 上下文工程与规则加载 - tests/ 单元测试与集成测试 ## 编码规则 - 所有新文件必须用 TypeScript禁止 any - 函数参数超过 3 个时用对象传参 - 错误处理统一用 Result 类型不抛裸异常 - 提交前必须跑 pnpm lint pnpm test ## 工具使用规则 - 改文件前先读取该文件 - 路径不明确时先用 Glob 搜索 - 长任务先拆 Todo每完成一项更新状态 - 独立的搜索和读取可以并行调用 ## 安全边界 - 禁止删除 src/ 以外的目录 - 禁止修改 .env 和 auth.json - 危险操作需要人工确认这个文件的作用是前馈控制Agent 在开始执行前就拿到项目上下文、规则和边界。WorkBuddy 团队强调早期模型不会主动探索代码库可能在根目录写错文件所以项目概况和目录结构必须显式写出来。接下来是 settings 片段。以 Claude Code 为例在~/.claude/settings.json里加入 Harness 相关配置{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的密钥, ANTHROPIC_MODEL: claude-sonnet-4-20250514 }, permissions: { allow: [ Read, Glob, Grep, Edit, Bash(pnpm lint), Bash(pnpm test) ], deny: [ Bash(rm -rf *), Bash(curl *), Write(.env) ] }, harness: { rulesFile: WORKBUDDY.md, maxContextTokens: 180000, compression: auto, feedbackSensors: [lint, typecheck, test] } }permissions.allow和deny对应约束层harness.feedbackSensors对应反馈层。注意deny里的Bash(rm -rf *)是防止误删的关键拦截WorkBuddy 团队把这类权限边界放在运行环境层用户通常感知不到但缺少任何一项上面几层都难以稳定运行。如果你用 ClineMCP 配置在cline_mcp_settings.json里路径通常是~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.jsonmacOS或%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.jsonWindows。内容如下{ mcpServers: { filesystem: { command: npx, args: [-y, modelcontextprotocol/server-filesystem, /path/to/project], env: {} }, taotoken-bridge: { command: npx, args: [-y, taotoken/mcp-bridge], env: { TAOTOKEN_API_KEY: sk-你的密钥, TAOTOKEN_BASE_URL: https://taotoken.net/api } } } }这个配置同时覆盖了 MCP 接入和模型调用。filesystem是官方 MCP servertaotoken-bridge是模型桥接。三件套在这里体现为Base URL 在 env 里、Key 在 env 里、Model ID 在 Agent 的模型选择里。4. MCP 接入验证从请求到成功结果的完整链路配置写完后必须验证。MCP 接入的验证分三步连通性、工具发现、实际调用。第一步验证 API 连通性。用 curl 发一条最小请求curl -X POST https://taotoken.net/api/v1/messages \ -H Content-Type: application/json \ -H x-api-key: sk-你的密钥 \ -H anthropic-version: 2023-06-01 \ -d { model: claude-sonnet-4-20250514, max_tokens: 64, messages: [{role: user, content: 回复 OK}] }如果返回 JSON 里包含content字段且文本是 “OK”说明 Base URL、Key、Model ID 三件套正确。如果返回 401检查 Key 是否过期或复制时多了空格。如果返回 404检查 Base URL 是否多了末尾斜杠。第二步验证 MCP server 启动。在终端里手动跑npx -y modelcontextprotocol/server-filesystem /path/to/project正常情况会输出Filesystem MCP server running on stdio。如果报command not found检查 Node.js 版本是否 ≥18。如果报权限错误检查路径是否存在。第三步在 Agent 里触发工具调用。以 Claude Code 为例输入请列出当前项目根目录下的所有文件Agent 应该调用filesystem的list_directory工具返回文件列表。如果 Agent 说 “我没有文件系统访问权限”说明 MCP server 没注册成功回到 settings 检查mcpServers字段。WorkBuddy 团队在反馈层强调工具结果要包含可纠正信息。比如文件未找到时提示搜索路径、编辑失败时提示重新读取、权限不足时提示请求确认。你可以在 MCP server 的返回里加入这些提示让 Agent 自我纠正。验证成功后你会看到类似这样的输出[filesystem] list_directory /path/to/project → WORKBUDDY.md → package.json → src/ → tests/这说明 MCP 接入链路完整Agent 发起请求 → MCP server 执行 → 结果返回 Agent → Agent 继续推理。如果中间任何一环断了Agent 会卡住或报错。5. 常见报错排查401、local proxy failed、reading choices、OAuth这一节对照真实报错给出排查路径。WorkBuddy 团队把错误消息中的自我纠正提示作为引导层的一部分所以每个报错都要能定位到具体配置项。401 Unauthorized。最常见的原因是 API Key 错误。检查三点Key 是否以sk-开头、是否有多余空格、是否在有效期内。如果用的是环境变量执行echo $TAOTOKEN_API_KEY确认值正确。如果 Key 没问题检查请求头字段名是否正确Anthropic 格式用x-api-keyOpenAI 格式用Authorization: Bearer。local proxy failed。这个报错通常出现在客户端配置了本地代理但代理没启动。检查 settings 里是否有多余的proxy字段如果有就删掉。TaoToken 的 Base URL 是直连的不需要额外代理。如果公司网络有要求联系网络管理员确认出口策略。reading choices。这个报错说明返回的 JSON 结构不符合预期通常是模型返回了非标准格式。检查 Model ID 是否拼写正确比如claude-sonnet-4-20250514不能写成claude-sonnet-4。如果 Model ID 正确检查max_tokens是否设置得太小导致返回被截断。把max_tokens调到 1024 以上再试。OAuth 相关报错。如果你用的是 Claude Code 的 OAuth 登录流程但配置了自定义 Base URL会出现 OAuth token 和 API Key 冲突。解决方法是清除 OAuth 缓存在~/.claude/目录下删除oauth.json然后重新用 API Key 配置。Codex 用户检查~/.codex/auth.json里是否同时有OPENAI_API_KEY和 OAuth 字段只保留 API Key。MCP server 启动失败。检查cline_mcp_settings.json里的command和args是否正确。npx -y的-y不能少否则会卡在确认安装。如果路径包含空格用引号包起来。Windows 用户注意路径分隔符用双反斜杠。Agent 不调用工具。如果 Agent 一直用文本回复而不调用 MCP 工具检查规则文件里是否写了工具使用规则。WorkBuddy 团队的模板里有 “改文件前先读取该文件”“路径不明确时先用 Glob 搜索” 这类显式指令。没有这些指令Agent 可能不知道工具存在。上下文超限。长任务跑到一半报 context length exceeded说明压缩策略没生效。在 settings 里把compression设为auto并设置maxContextTokens为模型上限的 80%。WorkBuddy 团队用压缩、工具结果卸载、Skills 渐进式加载来应对 Context Rot。每个报错都要能对应到具体配置项这样才能形成反馈循环。WorkBuddy 团队的原则是能用计算型信号解决的问题优先交给确定性程序需要语义判断的问题再交给审查 Agent。6. 长期编码与 Agent 协作Coding Plan 与接入文档Harness 搭好之后下一步是让它持续运行。WorkBuddy 团队的迭代层强调Harness 要随模型能力、用户场景和已发现问题持续调整。模型升级后精简上下文出现新问题时增加约束针对重复问题增加机制。如果你打算长期用 Agent 做编码建议走 Coding Plan 路径。Coding Plan 提供稳定的模型调用配额和优先级适合每天跑大量 Agent 任务的场景。入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里面有各客户端的详细配置步骤。API Keys 管理在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 可以创建多个 Key 分配给不同项目。模型对话页面在 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 适合快速验证模型是否可用。控制台在 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 可以查看用量和调用日志。Claude Code 用户如果遇到 Anthropic 相关配置问题参考 https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。最后说一个实际经验Harness 的迭代需要证据支撑。一次失败可能是偶发同类失败多次出现或风险很高时再调整。新增机制也要评估副作用更严格的审批降低误操作风险也增加打断更多规则约束输出也占用上下文。WorkBuddy 团队的做法是先用计算型信号覆盖确定性问题再用推断型信号覆盖语义问题反馈按时机分层快速检查前移到编辑后昂贵的架构审查放到集成前后。这样 Harness 不只是一组规则而是一套持续运行的控制系统。
返回列表