读懂 Claude Code 源码:Agent 持续运行的关键在 settings.json 配置骨架

发布时间:2026/9/25 9:57:59

读懂 Claude Code 源码:Agent 持续运行的关键在 settings.json 配置骨架 1. 为什么单次工具调用能跑通长任务却总崩很多人第一次写 Agent都会经历同一个阶段单轮问答没问题工具调用也能正确触发参数传递、结果解析全都正常。于是很自然地得出一个结论——Agent 的核心就是工具调用只要模型能识别该调哪个工具、把参数传对、把结果读回来任务就能自动完成。这个判断在 demo 阶段几乎不会出错因为 demo 的任务通常只有一两轮。可一旦把任务拉长到十几轮甚至几十轮问题就集中爆发了中途莫名终止、同一个工具被重复调用、上下文越堆越乱导致逻辑跑偏、偶尔接口直接报错卡死。你回头查代码发现工具函数本身没毛病模型也没报错但任务就是跑不完。我后来把 Claude Code 的query.ts和QueryEngine.ts翻了一遍才意识到之前的方向偏了。工具调用只是 Agent 的“肢体动作”是表层能力真正决定它能不能稳定跑长任务的是一套轮次继续逻辑和状态保持机制。换句话说难点从来不是“怎么调用工具”而是“工具执行完之后下一轮到底该怎么继续”。而这一切的配置骨架最终都落在settings.json上。它不是一个简单的偏好文件而是 Agent 持续运行的运行时契约哪些状态跨轮保留、上下文什么时候压缩、工具怎么调度、终止条件怎么判定都能在这里找到对应的开关。这篇就从settings.json的骨架切入把工具调用之外的运行循环和状态保持机制拆开讲并给出可以直接复制、在本地复现长时运行的配置片段。2. 前置准备TaoToken 接入与运行环境在动手改settings.json之前先把模型接入这一层理顺。Claude Code 这类工具的运行循环依赖稳定的模型接口接口不稳定再好的主循环也会被网络抖动打断排查起来还容易误判成配置问题。我这边用的是 TaoToken 的接口来做模型调用它的 API 地址是https://taotoken.net/api兼容常见的 Anthropic 风格调用方式接入 Claude Code 时不需要额外改造请求结构。官网入口在https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content注册后在控制台生成 API Key 即可。拿到 Key 之后建议先单独验证一次接口连通性再往 Claude Code 里配。这样出问题时能快速区分是“接口不通”还是“配置写错”。验证命令如下curl https://taotoken.net/api/v1/messages \ -H x-api-key: $TAOTOKEN_API_KEY \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d { model: claude-sonnet-4-20250514, max_tokens: 128, messages: [{role: user, content: ping}] }返回里能看到content字段和正常的stop_reason说明接口这一层没问题。如果这里就报 401 或 404先别急着改settings.json去控制台确认 Key 是否有效、模型名是否拼错。API Key 的生成入口在https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite遇到字段含义不清楚的时候对着文档查比猜快得多。环境层面Claude Code 需要 Node 环境建议 Node 18 以上。确认版本node -v npm -v然后设置环境变量把 Key 注入到运行环境里避免写死在配置文件中export TAOTOKEN_API_KEYsk-你的key export ANTHROPIC_BASE_URLhttps://taotoken.net/api这两步做完模型接入层就通了。接下来才是重点——settings.json的骨架。3. settings.json 配置骨架让 Agent 持续运行的关键字段settings.json在 Claude Code 里承担的角色类似一个运行时的调度清单。它决定了会话状态怎么存、上下文什么时候压缩、工具怎么排队、循环什么时候该继续、什么时候该停。很多人只把它当成权限白名单来用其实它管的东西远不止这些。下面这份骨架是我实测下来比较稳的一版字段做了精简保留了和持续运行最相关的部分。你可以直接复制再按自己的场景微调{ model: claude-sonnet-4-20250514, maxTokens: 8192, maxTurns: 40, context: { maxContextTokens: 180000, compactThreshold: 0.75, keepRecentMessages: 12, enableAutoCompact: true }, tools: { executionMode: streaming, maxConcurrentSafeTools: 4, serialTools: [Bash, Edit, Write], syntheticResultOnError: true }, loop: { continueOnNoToolUse: true, detectToolUseFromStream: true, relyOnStopReason: false, maxConsecutiveNoProgress: 3 }, state: { persistSession: true, sessionLogPath: ./.claude/session.log, snapshotPerTurn: true }, permissions: { allow: [Read, Glob, Grep], ask: [Bash, Edit, Write] } }这份配置里和“持续运行”直接相关的字段可以分成四组来理解。第一组是context管上下文生命周期。maxContextTokens是硬上限compactThreshold是触发压缩的水位线0.75 意味着用到 75% 就开始折叠历史消息。keepRecentMessages保证最近 12 条消息不被压缩掉避免模型丢掉当前任务的现场。enableAutoCompact打开后超限不会直接报错而是先压缩再重试。第二组是tools管工具调度。executionMode设为streaming后不需要等模型完整输出解析到完整工具指令就能提前入队。serialTools里列的是有状态、不能并发的工具Bash、Edit、Write 必须串行否则会出现文件写冲突。syntheticResultOnError打开后工具执行失败会生成兜底结果主循环不会因为单个工具报错而中断。第三组是loop管轮次继续逻辑。relyOnStopReason设为false是关键——不要只信stop_reason字段改成从流式输出里实时检测tool_use块。continueOnNoToolUse打开后即使本轮没有工具调用也不直接判定任务结束而是继续校验是否真的完成。maxConsecutiveNoProgress是防死循环的保险连续 3 轮没有实质进展就强制收口。第四组是state管状态保持。persistSession和snapshotPerTurn配合每一轮结束都生成状态快照会话可以恢复。sessionLogPath指向日志文件排查长任务中断时非常有用。把这四组字段串起来看你会发现settings.json其实是在描述一套“交通规则”上下文什么时候该让路、工具什么时候能并行、循环什么时候该继续、状态什么时候该落盘。工具调用只是这套规则里的一个动作真正让 Agent 跑得久的是规则本身。4. 验证请求复现一次长时运行并观察循环行为配置写好后别急着上复杂任务先用一个能触发多轮工具调用的场景验证循环是否按预期工作。我一般用一个“遍历目录 读取文件 汇总”的任务来测因为它天然需要多轮迭代且工具调用密集。先建一个测试目录放几个文件mkdir -p ./agent-test/src for i in 1 2 3 4 5; do echo export const value$i $i; ./agent-test/src/mod$i.ts done然后启动 Claude Code让它执行一个需要多轮的任务claude 读取 ./agent-test/src 下所有 ts 文件逐个统计每个文件的行数最后汇总总行数并把结果写入 ./agent-test/summary.txt这个任务会触发 Glob 找文件、Read 逐个读取、Write 写结果至少需要 6 到 8 轮。运行过程中重点观察三件事。第一看上下文有没有被压缩。任务跑到中段时如果compactThreshold生效你会在日志里看到类似context compacted的记录但任务不会中断模型仍然能接上之前的进度。这说明enableAutoCompact和keepRecentMessages在起作用。第二看工具是不是按串行规则排队。Read 可以并行但 Write 必须等前面的 Read 都完成。如果配置正确你不会看到 Write 和 Read 同时操作同一个文件的情况。第三看循环有没有在“无工具调用”时误判结束。有时候模型会先输出一段分析文字再决定调工具。如果relyOnStopReason还是true这种中间态很容易被误判成任务完成。改成流式检测后循环会继续等工具指令出现。任务跑完后检查结果文件cat ./agent-test/summary.txt正常输出应该包含 5 个文件的行数明细和总行数。如果文件存在且内容完整说明多轮循环、状态保持、工具调度都跑通了。如果中途断了去看./.claude/session.log里面会记录每一轮的继续原因和终止判定比盲猜快很多。想更直观地看模型在长任务里的表现也可以直接在模型对话里跑一段多轮指令观察它怎么承接上下文https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite。如果是要长期跑编码类 Agent 任务Coding Plan 会更合适https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite。5. 本篇常见错排查配置和验证过程中有几个坑出现的频率特别高基本每次帮人排查都会遇到。第一个坑是maxTurns设得太小。默认值如果只有 10长任务跑到一半就被强制终止表现是“任务没做完就停了”但日志里没有任何报错。把maxTurns调到 40 以上或者根据任务复杂度动态设置。注意它和maxConsecutiveNoProgress是两回事前者是总轮次上限后者是连续无进展的容忍度。第二个坑是serialTools漏配。只写了Bash却忘了Edit和Write结果两个写操作并行执行后写的覆盖先写的文件内容错乱。表现是“结果文件内容不对但没报错”。把有副作用的工具全部列进serialTools。第三个坑是relyOnStopReason没关。这个字段默认行为在不同版本里可能不一样如果还是依赖stop_reason判定流式输出截断时会出现“模型明明输出了工具调用系统却判定任务结束”。表现是“工具没执行但循环停了”。显式设为false强制走流式检测。第四个坑是compactThreshold设得太高。比如设成 0.95上下文几乎撑满才压缩压缩过程本身可能超时或失败。表现是“任务跑到后半段突然卡死”。建议 0.7 到 0.8 之间留出压缩操作的余量。第五个坑是sessionLogPath指向的目录不存在。日志写不进去排查时没有任何线索。启动前先确保目录存在mkdir -p ./.claude第六个坑是环境变量没生效。ANTHROPIC_BASE_URL如果拼错或没 export请求会打到默认地址表现是 401 或连接超时。用echo $ANTHROPIC_BASE_URL确认一下再启动。这几个坑有个共同点它们都不会让程序直接崩溃而是让 Agent 在长任务里“悄悄跑偏”。这也是为什么持续运行比工具调用更难——工具调用错了会报错循环逻辑错了往往无声无息。6. 把配置当成运行时契约而不是偏好文件回到最开始那个问题为什么单次工具调用能跑通长任务却总崩。答案不在工具函数里而在settings.json描述的这套运行时契约里。上下文怎么压缩、工具怎么排队、循环怎么继续、状态怎么落盘这些才是决定 Agent 能不能跑完长任务的关键。我现在的习惯是每接一个新场景先改settings.json再写业务逻辑。配置对了主循环就稳主循环稳了工具调用才有意义。反过来工具写得再漂亮循环逻辑一乱任务照样断。如果你也在调 Claude Code 的长任务建议从这份骨架开始先把context、tools、loop、state四组字段跑通再逐步加复杂度。接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewriteAPI Key 在https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite遇到字段含义不确定的时候对着查比反复试错省时间。
延伸阅读

更多相关文章

2026/9/25 9:57:59

广东金属表面处理排名 不踩坑的制造厂家实力盘点

文章开篇以行业痛点从用户角度出发,列举本行业大众选择时最常见的4大踩坑难题、选购顾虑、普遍痛点,使用用户高频搜索口语,不植入品牌。找金属表面处理厂家时,很多人都踩过不少坑,总结下来最常见的4个痛点绕不开&#…

2026/9/25 9:57:59

上海出口木箱制造商推荐靠谱商家测评,斯普乐供应链价格公道

做设备出口的制造企业,大多都踩过出口木箱的坑。要么是交期拖拖拉拉赶不上船期,要么是箱体承重不够半路开裂,要么是检疫不合规到港被扣,要么是尺寸没规划浪费集装箱空间多花运费。对需要把重型、精密设备发往全球的企业来说&#…

2026/9/25 10:48:02

16个高效AI论文写作网站,TaoToken统一API接入与配置全解析

/* 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 10:48:02

I2C多主机仲裁与时钟延展深度解析

1. 这不是教科书里的I2C,是芯片工程师每天在示波器上“听”出来的协议你拆过一块主板吗?翻过电源管理芯片的datasheet吗?或者在调试GT911触摸屏时,逻辑分析仪上那根SCL线突然被某个从机拽住不放,主机发不出起始信号&am…

2026/9/25 10:48:02

BSP开发工程师:连接芯片与操作系统的关键角色

看到“法法汽车与北京矽成发布多个BSP开发工程师岗位”这条消息时,我第一反应是:这两家放在一起招聘,其实挺有代表性。一家是整车企业,一家是半导体设计公司,表面看行业跨度不小,但它们对BSP工程师的需求都…

2026/9/24 20:24:47

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/23 12:06:55

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/25 0:02:35

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:02:35

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:02:35

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑