1. 先搞清楚 Harness 到底在解决什么问题如果你最近在翻 Agent 相关的开源项目会发现 Harness 这个词出现得越来越密。Anthropic 讲长时任务要设计 HarnessOpenAI 把 Codex 的核心循环叫 Codex HarnessLangChain 干脆写了一句 Agent Model Harness字节把 DeerFlow 2.0 重构成 Super Agent HarnessDeepSeek 也开源了 DeepSeek Harness。不到一年这个词从论文标题一路跑进了工程目录。那 Harness 是什么一句话模型负责决定下一步做什么Harness 负责让这个决定真的被执行。你让 Coding Agent 检查项目、找 Bug、改代码、跑测试模型判断该先看目录但它自己不会执行 ls是 Harness 去执行模型决定读 user.pyHarness 去读模型决定跑 pytestHarness 调起 Shell再把失败结果塞回上下文模型继续判断下一步。所以 Harness 不是模型也不是单纯的工具集合它是模型和真实世界之间的那层运行环境。今天一个完整的 Harness 可能包含 Agent Loop、Tools、Filesystem、Shell、Sandbox、Context Management、Memory、Session、Permission、Sub-agent、Persistence 等一堆东西。这篇文章不打算只讲概念而是带你从 agent loop 一路看到 deepseek harness最后用 TaoToken 统一 Key 把一条可跑的 Harness 配置骨架在本地搭起来settings.json 和 config.toml 都给可复制版本。适合谁看想动手验证 Agent Runtime 的开发者尤其是已经在用 Claude Code、Codex 类工具想搞清楚配置层到底在配什么的人。下面先从演化脉络讲清楚每个阶段加了什么再进入配置实操。1.1 从 ReAct 到 Agent Loop骨架只有几行2022 年 ReAct 把 Reasoning 和 Acting 结合起来在此之前 LLM 的典型工作方式是 Prompt 进、Answer 出一次生成就结束。但很多任务不是一次文本能完成的比如“查一下今天天气再决定要不要带伞”模型得先判断自己不知道实时天气去查询拿到结果再继续判断。ReAct 把过程变成 Reason → Action → Observation → Reason 的循环。压缩成代码其实只有几行while not done: action model(context) result execute(action) context update(context, result)模型决定下一步外部环境执行执行结果重新交给模型。这就是 Harness 最原始的骨架。有意思的是到了 2026 年 OpenAI 解释 Codex 原理时最核心的结构仍然是这个循环只是外面包了越来越厚的能力层。发动机没换车身越来越复杂。1.2 Tool Calling 与 ACI模型开始真正动手只有循环不够模型本身只会生成 Token不会搜索、不会查库、不会改文件。2023 年 Function Calling 普及后Agent 结构变成 Model → 选择 Tool → 外部执行 → Tool Result → Model。这一步的意义是 LLM 从“告诉你该做什么”变成“决定做什么并让外部系统真的去做”。2024 年 SWE-agent 提出 Agent-Computer Interface观点很关键就像人需要设计良好的计算机界面Agent 也需要专门为它设计的接口。他们没只给几个简单 API而是设计了代码浏览、文件编辑、搜索、命令执行等接口并证明模型不变、只改接口设计任务表现也会明显变化。这时候 Agent 身边的东西从 Model Tools 变成了 Model Agent Loop Filesystem Shell Editor Git Tests也就是开始给 Agent 一台完整的“电脑”。1.3 长时任务把 Harness 逼成 Runtime任务只要五次 Tool Call前面的东西够用了。但如果 Agent 要连续工作几十分钟甚至几小时问题立刻变多Context 满了怎么办、前面做过的事忘了怎么办、中途退出怎么办、新 Session 怎么知道做到哪了、危险命令怎么拦、模型说完成了但测试没过怎么办。2025 年 11 月 Anthropic 研究长时 Agent 时发现光靠 Context Compaction 不够新 Session 不会天然知道之前做了什么、哪些功能完成了、下一步该做什么。于是他们设计了一套策略初始化 Agent 建立工作环境和进度文件后续 Agent 每完成一部分就保存状态、跑测试、提交 Git下一次 Session 从外部信息恢复。到这里 Harness 不再只是帮模型执行 Tool而是负责让工作过程能持续下去Session Persistence、Context Management、Recovery、Verification 开始变成核心能力。1.4 deepseek harness 的插件化思路2026 年 Harness 加速独立成 Runtime。OpenAI 讲 Codex Harness 要管 Context Window 和 CompactionLangChain 给出 Agent Model Harness 并把 System Prompt、Tools、Skills、MCP、Filesystem、Sandbox、Sub-agent、Hooks、Compaction 都纳入讨论Microsoft 发布 batteries-included 的 Agent Framework Harness。国内两个代表路线不同。DeerFlow 2.0 从 Deep Research Framework 重写成 Super Agent Harness默认组合好 Sub-agents、Skills、Tools、Filesystem、Sandbox、Context Engineering、Persistent Memory回答的是“复杂任务怎样开箱即用跑起来”。DeepSeek Harness 问的是另一个问题Harness 里的能力本身该怎么组织答案是 Everything is a Plugin底层用 Cordis 插件框架负责挂载、卸载、依赖、事件和共享 ContextModel Adapter、Tool Registry、Session Log 甚至 Agent Loop 本身都是插件可以通过配置替换。它目前仍是 Developer Preview接口还在快速演进重点不是提供多少功能而是能力能不能自由组合替换。理解了这条线你会发现配置 Harness 本质上就是在配这些能力层。而不管哪套 Harness第一步都是把模型通道接上这正是下面要动手的部分。2. 用 TaoToken 统一 Key 接入 Harness 的前置准备不管你在本地跑的是哪套 Harness模型调用这一层都需要一个稳定的 API 通道。我自己的做法是用 TaoToken 统一管理 Key好处是同一套 Key 可以同时给 Claude Code、Codex 类工具、以及自己写的 agent loop 用不用每个工具单独配一遍切换模型时也只改一个地方。TaoToken 官网是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 注意 API 地址不带 UTM 参数配置里填这个就行。前置准备分三步。第一步注册后在控制台创建 API Key地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 创建后先复制保存页面刷新后不一定能再看全。第二步确认你要接的工具类型Claude Code 类走 Anthropic 兼容通道参考文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite Key 管理页在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。第三步想先验证模型通不通可以直接用模型对话页面发一条消息地址是 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 这一步能省掉很多“配置写完不知道是 Key 错还是配置错”的排查时间。注意API Key 只放在本地环境变量或本地配置文件里不要提交到 Git 仓库也不要在截图里露出完整 Key。如果你打算长期跑编码类 Agent可以了解下 Coding Plan地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 适合需要持续调用、不想每次手动充值的场景。下面进入具体配置。3. 可复制的配置骨架settings.json 与 config.toml这一节给两份配置骨架一份是 Claude Code 类工具用的 settings.json一份是通用 Harness 或 Codex 类工具用的 config.toml。两份都按“先能跑通、再按需扩展”的原则写参数含义逐条说明。3.1 settings.json 配置骨架Claude Code 类工具读取的 settings.json 一般放在用户目录下的配置目录里核心是把 API 基址和 Key 指到 TaoToken 的 Anthropic 兼容通道。骨架如下{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-sonnet-4-5, ANTHROPIC_SMALL_FAST_MODEL: claude-haiku-4-5, CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: 1 }, permissions: { allow: [ Read, Glob, Grep ], deny: [ Bash(rm -rf:*), Bash(curl:*) ] } }逐条说明。ANTHROPIC_BASE_URL 指向 TaoToken 的 API 入口这是所有请求的根地址。ANTHROPIC_AUTH_TOKEN 填你创建的 Key注意这里用的是 AUTH_TOKEN 而不是 API_KEY两者在不同工具里语义不同填错会直接 401。ANTHROPIC_MODEL 是主模型负责推理和决策ANTHROPIC_SMALL_FAST_MODEL 是轻量模型负责标题生成、简单判断这类杂活分开配能省不少调用量。CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 关掉非必要遥测请求本地跑更干净。permissions 这一段其实就是 Harness 里的 Permission 能力allow 列表是默认放行的工具deny 列表是硬拦截。上面例子里把 rm -rf 和 curl 拦掉是因为 Agent 在长时任务里一旦拿到 Shell危险命令的破坏是不可逆的。你可以按项目需要调整但建议 deny 列表只增不减。3.2 config.toml 配置骨架通用 Harness 或 Codex 类工具常用 config.toml结构上把模型提供方、模型名、运行参数分开[model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY [profiles.default] model_provider taotoken model deepseek-chat temperature 0.2 max_tokens 8192 [harness] loop_max_turns 40 context_compact_threshold 0.75 session_persist true sandbox_enabled true workspace ./workspace [harness.tools] filesystem true shell true git true test_runner true逐条说明。model_providers 段定义提供方base_url 同样是 TaoToken 的 API 入口env_key 表示 Key 从环境变量 TAOTOKEN_API_KEY 读取这样配置文件本身可以进版本库而不泄露密钥。profiles.default 段指定默认用哪个提供方和模型temperature 调低是因为 Agent 任务要的是稳定决策而不是发散创作。harness 段是重点。loop_max_turns 限制单次任务最大循环轮数防止 Agent 陷入死循环烧调用量context_compact_threshold 是上下文压缩阈值到 75% 就触发压缩对应前面讲的 Context Managementsession_persist 打开会话持久化对应长时任务的恢复能力sandbox_enabled 打开沙箱让 Shell 执行隔离在受控环境里workspace 指定工作目录Agent 的文件操作都限制在这里面。harness.tools 段就是 Tool Registry按需开关。跑 Coding Agent 时 filesystem、shell、git、test_runner 基本都要开如果只是做研究类任务可以关掉 shell 和 test_runner减少风险面。3.3 环境变量与启动Key 通过环境变量注入Linux 或 macOS 下export TAOTOKEN_API_KEYsk-你的TaoToken密钥 export ANTHROPIC_AUTH_TOKENsk-你的TaoToken密钥Windows PowerShell 下$env:TAOTOKEN_API_KEYsk-你的TaoToken密钥 $env:ANTHROPIC_AUTH_TOKENsk-你的TaoToken密钥设置完可以用 echo 检查是否生效注意别把完整 Key 打印到共享终端里。启动 Harness 时工具会自动读取对应配置文件和环境变量不需要额外传参。4. 验证请求与成功结果配置写完必须验证否则后面出问题你分不清是 Key、网络还是配置格式。验证分三层从最轻到最重。第一层直接用 curl 打 TaoToken 的 API 入口确认 Key 和通道通curl -s https://taotoken.net/api/v1/messages \ -H x-api-key: $ANTHROPIC_AUTH_TOKEN \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d { model: claude-sonnet-4-5, max_tokens: 64, messages: [{role: user, content: 回复 ok 两个字母}] }如果返回里能看到 content 字段和模型输出说明 Key 和通道没问题。如果返回 401检查 Key 是否复制完整、是否用了正确的 header 名如果返回 404检查 base_url 是否多写或少写了路径段。第二层启动 Harness 后发一个只读任务比如让它列出当前工作目录的文件。这一步验证的是 Agent Loop 和 Filesystem 工具是否正常挂载。成功的话你会看到它发起一次工具调用、拿到目录列表、再生成总结整个循环闭合。第三层发一个带 Shell 的任务比如让它创建一个测试文件并读取内容。这一步验证 Shell 和 Permission 是否生效。如果你在 deny 列表里拦了某类命令可以故意让它执行一次确认被正确拦截这比事后补救靠谱得多。实测下来三层都过一遍基本能覆盖 90% 的配置问题。成功结果的典型特征是工具调用有来有回、上下文没有异常膨胀、任务结束后 session 文件被正确写入 workspace。5. 本篇常见错误排查配置 Harness 时踩的坑比较集中这里列几个高频的。第一个401 或鉴权失败。最常见原因是 Key 填错位置settings.json 里该填 ANTHROPIC_AUTH_TOKEN 的地方填了 ANTHROPIC_API_KEY或者环境变量名和配置文件里的 env_key 对不上。排查方法是先跑第 4 节的 curlcurl 通了说明 Key 没问题问题在工具配置。第二个模型名不识别。不同通道支持的模型名不一样填了一个通道里不存在的名字会直接报错。解决办法是先用模型对话页面确认可用模型再回填到配置里。第三个Agent 循环停不下来。表现是任务一直转、调用量一直涨。原因通常是 loop_max_turns 没设或设太大加上任务描述太模糊。把 loop_max_turns 设成 30 到 50 之间任务描述写清楚完成标准能明显改善。第四个上下文爆掉。长时任务跑到一半报上下文超限说明 context_compact_threshold 没配或配得太高。设成 0.7 到 0.8 之间让压缩早点触发。如果压缩后 Agent 明显“失忆”说明关键状态没落到外部文件检查 session_persist 和 workspace 是否正常。第五个Shell 命令被拦但不知道为什么。Permission 的 deny 规则是模式匹配写得太宽会误伤正常命令。排查时先把 deny 列表临时清空跑一遍确认是规则问题还是工具问题再逐条加回。第六个沙箱里文件写不进去。检查 workspace 路径是否存在、是否有写权限以及 sandbox_enabled 打开时工作目录是否被正确挂载。这类问题日志里通常有明确提示别只看最终报错。提示排障时优先用最小配置跑通再逐项加能力。一次性把所有开关打开出问题很难定位。6. 把 Key 通道固定下来再谈 Harness 演化回到开头那条演化线从 ReAct 的几行循环到 Tool Calling到 ACI到长时任务的 Session 与 Recovery再到 deepseek harness 的插件化Harness 一直在做同一件事给模型一套能持续、可靠、安全跑完任务的运行环境。你配的每一行 settings.json 和 config.toml其实都对应这条线上的一个能力层。配置层面最值得先固定下来的是模型通道。通道不稳上面所有能力都白搭。用 TaoToken 统一 Key 的好处就在这里Claude Code 类工具、Codex 类工具、自己写的 agent loop 共用一套 Key 和入口换模型只改配置不改代码。需要长期跑编码 Agent 的可以看 Coding Plan接入细节和参数说明在接入文档想先验证模型可用性直接用模型对话页面发一条消息最快。把通道跑通、把配置骨架落地、把三层验证过一遍你手上就有了一条可复现的 Harness 链路。剩下的就是按你的任务类型去调 loop_max_turns、压缩阈值和工具开关这些参数了。
企业数字化 ERP 产品动态
相关推荐
Python 基于多环境的配置方式 应用被部署到不相同的运行环境中时, 是会用到属于自己环境的配置的, 比方说有叫做 Dev 的环境、叫做 QA 的环境、叫做 Stg 的环境以及叫做 Prod 的环境, 它们各自拥有属于自己的数据库等类型的资源。Boot 框架是可以采用对应的不同方式的, 让不同环境的程序在运行时去选择属于自… · 2026/9/25 7:25:53
消防车最小转弯半径:五种说法与消防车道设计校核全解 简介:消防车最小转弯半径一直是建筑消防设计和车辆通行审查中的常见争议点。这份docx文档将不同来源的说法集中梳理:普通消防车9m、登高车12m、特种车辆16-20m的转弯需求,以及《建筑设计防火规范》中最大转弯直径24m、最小转弯直径10m等条款&… · 2026/9/25 7:25:53
点云预处理与特征计算实战指南:从噪声畸变到工业落地 1. 这不是教科书里的“点云预处理”,而是我三年里在七个真实项目现场踩出来的路点云、预处理、特征计算——这三个词,现在几乎成了三维视觉、自动驾驶、数字孪生、工业检测领域工程师简历上的标配标签。但现实是:90%的人拿到原始点云数据后&a… · 2026/9/25 7:25:47
Atlas 300V 24G推理加速卡解析与YOLO部署实战指南 前阵子有网友在后台连续问了我两个问题:Atlas 300V 24G是运算加速卡吗?能不能拿来部署YOLO?说实话,这两个问题问得特别典型,因为很多刚接触昇腾生态、或者从GPU转向国产AI硬件的开发者,第一眼看到“Atlas”… · 2026/9/25 7:54:58
全国省市区三级联动表:MySQL导入与查询实战指南 简介:这份资源是2024年最新整理的MySQL全国省市区三级联动数据表,面向后端开发、数据库设计人员以及需要地址级联选择功能的前端工程师,可解决地理信息查询与行政区域联动维护的问题。压缩包共2个文件,以sql数据脚本和zip归档为主… · 2026/9/25 7:54:52
可复用回归预测系统骨架:6类模型统一接口实践 简介:本资源是一套面向机器学习初学者与进阶实践者的预测建模综合代码包,覆盖贝叶斯网络、马尔科夫模型、线性回归、岭回归、多项式回归、决策树回归及深度神经网络七大主流预测方法,适用于时间序列预测、房价估算、用户行为建模等典型场景。… · 2026/9/25 7:54:34
Atlas 300V部署YOLOv5/YOLOv8:从ONNX到OM全流程 先交代一下背景。不少人在搜“atlas部署yolo”和“atlas 300v 24g 是运算加速卡吗”这类词,说实话,这两个问题指向的是同一件事:你想在昇腾Atlas平台上面把YOLO检测模型跑起来,但不确定这块卡到底能不能干这个活、干起来麻不麻烦。… · 2026/9/25 7:54:28
OpenCodex Windows 服务控制台窗口问题全解析:从根因调查到“无窗口后台服务“的完整修复路径 【免费下载链接】opencodex Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code 项目地址: https://gitcode.com/gh_mirrors/ope/opencodex 点击… · 2026/9/25 7:54:28
Atlas 300V 24G部署YOLO全流程:从环境搭建到推理调优 如果你最近在搞AI推理,肯定绕不开"Atlas"这个名字。特别是Atlas 300V 24G这张卡,网上问得最多的一句就是:它到底是不是运算加速卡?答案是肯定的——这是一张标准的专用AI推理加速卡,24GB显存,专为… · 2026/9/25 7:54:28
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37