拆解 Claude Code 内核:ReAct 循环、分层子 Agent 与多层安全体系
1. 从一次“AI 突然变笨”说起ReAct 循环到底在循环什么如果你用 Claude Code 写过稍大一点的项目大概率遇到过这种场景前半小时它还能准确改对文件聊到后面突然开始重复读同一个文件、忘记你之前定的命名规范甚至把已经改好的代码又改回去。很多人第一反应是“模型不行了”但拆开它的 TypeScript 内核你会发现问题往往出在 ReAct 循环的上下文管理上而不是模型本身。Claude Code 的核心骨架其实非常朴素就是一个不断重复「推理 → 行动 → 观察」的 while 循环。模型拿到当前对话历史判断下一步该做什么Reasoning决定调用哪个工具Acting工具执行完把结果塞回上下文Observation然后进入下一轮。停止条件不是写死的“调用 5 次就停”而是模型自己判断任务完成、输出纯文本时跳出循环。这个设计的关键在于编程任务天然是多步骤的。你说“帮我修这个 bug”它得先 Grep 搜相关代码、Read 读文件、Edit 改代码、Bash 跑测试中间任何一步失败都要回头调整。每一步都是循环里的一次迭代而每次迭代都会往上下文里塞入工具返回结果。这就是为什么对话久了会“失忆”——不是模型变笨是上下文被压缩机制截断了。我实测下来一个中等复杂度的重构任务ReAct 循环跑 30 到 50 轮很常见每轮 Read 一个 500 行文件就是 3000 到 5000 Token几轮下来上下文占用就逼近阈值。理解这个循环是理解后面子 Agent 分层和安全体系的前提。本文会从循环机制切入逐层拆到子 Agent 调度和多层安全拦截并给出可复制的配置片段和验证步骤让你在本地复现核心链路。适合谁看已经用过 Claude Code 或类似编程 Agent、想搞懂内部机制的开发者正在自研 Agent、需要参考工程化设计的同学以及被“AI 越用越笨”困扰、想从根上理解上下文压缩的人。2. 前置准备TaoToken 接入与 Claude Code 环境配置在复现内核链路之前得先把模型调用通道打通。Claude Code 本身是客户端真正干活的是背后的模型 API。这里我用 TaoToken 作为统一接入层它兼容 Anthropic 的接口协议配置方式和官方一致省去自己维护多套 Key 的麻烦。先说清楚 TaoToken 是什么它是一个大模型 API 聚合接入服务提供统一的 Base URL 和 Key 管理支持 Claude 系列模型的对话与编码场景。对 Claude Code 来说你只需要把 Base URL 指向它、填上 Key就能正常跑通 ReAct 循环。官网地址是 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 登录后在 API Keys 页面新建一个 Key复制保存。这个 Key 就是后面所有配置里的ANTHROPIC_AUTH_TOKEN。第二步确认你要用的模型 ID。Claude Code 场景下常用的是 Claude 系列具体模型名以控制台或文档为准。你可以先在模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 发一条消息确认 Key 和模型都能正常工作再去配客户端。第三步环境变量配置。Claude Code 读取的是 Anthropic 风格的环境变量在~/.zshrc或~/.bashrc里加上export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENsk-你的Key export ANTHROPIC_MODELclaude-sonnet-4-5改完执行source ~/.zshrc生效。这里有个坑要注意ANTHROPIC_BASE_URL后面不要带/v1Claude Code 会自己拼接路径多写一层会 404。如果你用的是 Claude Code 的 settings 文件方式可以在~/.claude/settings.json里写{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的Key, ANTHROPIC_MODEL: claude-sonnet-4-5 } }这个 JSON 片段就是 §3 要讲的可复制配置的核心路径和字段名保持和官方一致直接改 Key 就能用。配置完成后Claude Code 的每一次 ReAct 循环请求都会走 TaoToken 转发到模型你在控制台的用量页面能看到对应的 Token 消耗方便对照后面讲的压缩机制观察成本变化。3. 可复制配置把 ReAct 循环、子 Agent 与安全规则落到文件这一节给你三份可以直接抄的配置分别对应循环行为、子 Agent 调度和安全权限。它们都是 Claude Code 实际读取的文件格式路径和字段名保持一致。3.1 settings.json控制循环与模型分层Claude Code 的全局配置在~/.claude/settings.json项目级在项目根目录的.claude/settings.json。下面这份配置同时设置了接入通道、模型分层和权限规则{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的Key, ANTHROPIC_MODEL: claude-sonnet-4-5, ANTHROPIC_SMALL_FAST_MODEL: claude-haiku-4-5 }, permissions: { allow: [ Read, Glob, Grep ], ask: [ Bash(git push:*), Bash(rm:*) ], deny: [ Read(./.env), Read(./secrets/**), Bash(curl:*) ] } }这里ANTHROPIC_SMALL_FAST_MODEL就是子 Agent 和权限初筛用的小模型对应 Haiku 级别。permissions里的三段就是后面要讲的 deny ask allow 优先级模型顺序不能乱。3.2 子 Agent 定义Explore 与 Plan 的分工子 Agent 在 Claude Code 里通过 Agent 工具启动类型由参数决定。你可以在项目里放一个.claude/agents/目录来固化常用子 Agent 的提示词。比如explore.md--- name: explore model: claude-haiku-4-5 tools: [Read, Glob, Grep] --- 你是一个只读探索 Agent。任务是在代码库中快速定位与用户问题相关的文件和代码片段。 约束 - 只能使用 Read、Glob、Grep 三个工具 - 不允许修改任何文件 - 最终只返回不超过 2000 Token 的摘要包含文件路径、关键函数名、行号 - 不要返回完整文件内容plan.md则继承主模型、同样只读负责梳理实现路径。这两个文件对应了内核里“用最便宜的模型干最脏的活”的设计Explore 用 Haiku 跑几十次搜索最后只把摘要喂回主模型。3.3 CLAUDE.md项目级规则注入项目根目录的CLAUDE.md不是系统提示词而是作为用户消息注入优先级低于官方安全规则但高于普通对话。写一份精简的# 项目约定 - 技术栈TypeScript Node 20包管理用 pnpm - 测试命令pnpm test - 构建命令pnpm build - 禁止直接修改 dist/ 目录 - 提交信息用 conventional commits 格式这份文件每次新对话自动加载相当于给 AI 一份项目说明书。注意它和系统提示词是分开的这也是安全设计的一部分——用户自定义内容不能覆盖官方红线。三份配置放好后Claude Code 启动时会依次读取settings.json 定通道和权限CLAUDE.md 注入项目上下文Agent 定义决定子 Agent 行为。接下来就可以验证循环是否真的跑起来了。4. 验证请求观察 ReAct 循环、子 Agent 与安全拦截的实际效果配置写完得用真实请求验证每一层是否生效。我按“循环 → 子 Agent → 安全拦截”的顺序给你三步验证法。4.1 验证 ReAct 循环在跑在项目目录下启动 Claude Code输入一个需要多步操作的任务比如“找出所有调用 fetchUser 的地方并告诉我每个调用点的文件路径”。正常的话你会看到它连续执行 Grep → Read → 输出摘要而不是一次性回答。这就是 ReAct 循环在迭代Grep 是 Acting返回的匹配结果是 Observation模型据此决定下一步 Read 哪个文件。想更直观地看循环次数可以开启 verbose 模式claude --verbose输出里会打印每一轮的工具调用和 Token 消耗。你会注意到读文件那几轮的输入 Token 增长很快这正是后面压缩机制要处理的部分。4.2 验证子 Agent 分层输入一个探索型任务“用 Explore 子 Agent 扫描 src/ 目录列出所有导出的 React 组件及其文件路径”。如果配置生效你会看到它启动了一个只读子 Agent用的是 Haiku 模型过程中不会弹权限框因为 Read/Glob/Grep 在 allow 列表里最后返回一份精炼摘要。对照验证把.claude/agents/explore.md里的tools改成包含Edit再跑一次你会发现权限系统会拦截——因为子 Agent 的只读约束和全局权限规则叠加生效了。这一步能直观看到“子 Agent 上下文隔离 权限继承”的双重约束。4.3 验证安全拦截这是最能体现多层安全体系的一步。依次输入三个命令观察不同反应第一个输入“读取 .env 文件的内容”。因为deny里有Read(./.env)它会直接拒绝不弹框、不询问这就是 deny 优先级最高的表现。第二个输入“执行 git push origin main”。ask里有Bash(git push:*)它会弹框让你确认你点拒绝后操作终止。这验证了 ask 层的拦截。第三个输入“用 curl 请求一下这个接口”。deny里有Bash(curl:*)直接拒绝。你可以把这条从 deny 挪到 ask重启后再试就会变成弹框询问——这验证了规则优先级同一条规则放在不同层级行为完全不同。跑完这三步你应该能清楚看到ReAct 循环负责“怎么一步步做”子 Agent 负责“谁来分担上下文”安全体系负责“哪些能做、哪些要问、哪些绝对不行”。三层各司其职缺一层都会出问题。5. 常见报错排查401、local proxy failed 与 OAuth 报错怎么解配置和验证过程中最容易卡在几个固定报错上。我把真实遇到过的整理成对照表方便你按现象定位。5.1 401 Unauthorized现象启动 Claude Code 后第一次请求就返回 401提示 authentication failed。原因通常是 Key 没生效或 Base URL 写错。排查顺序先确认ANTHROPIC_AUTH_TOKEN是不是完整复制了有没有多余空格再确认ANTHROPIC_BASE_URL是https://taotoken.net/api末尾没有/v1最后检查环境变量有没有被 settings.json 里的env覆盖——两处都配了的话settings.json 优先级更高改错地方等于没改。修复在终端执行echo $ANTHROPIC_AUTH_TOKEN确认值正确然后echo $ANTHROPIC_BASE_URL确认地址。如果用的是 settings.json直接改文件里的 Key重启 Claude Code。5.2 local proxy failed现象请求发不出去报local proxy failed或连接被拒绝。这个报错一般和本地网络环境有关不是 Key 的问题。先确认你的机器能正常访问https://taotoken.net/api可以用curl -I https://taotoken.net/api看返回状态。如果 curl 也失败说明是网络层问题检查 DNS 或本地防火墙设置。如果 curl 成功但 Claude Code 失败检查是不是有残留的HTTP_PROXY/HTTPS_PROXY环境变量指向了失效的本地端口用unset HTTP_PROXY HTTPS_PROXY清掉再试。5.3 reading choices 报错现象返回体解析失败提示reading choices或unexpected response format。这通常说明请求打到了不兼容的端点。Claude Code 走的是 Anthropic 协议如果你把 Base URL 指向了一个只支持 OpenAI 格式的地址返回结构对不上就会报这个。确认ANTHROPIC_BASE_URL指向的是https://taotoken.net/api它兼容 Anthropic 协议。另外检查模型 ID 是否写错模型名不存在时有些网关会返回非标准错误体也会触发解析失败。5.4 OAuth 相关报错现象提示 OAuth token expired 或要求重新登录。Claude Code 某些版本会尝试走 OAuth 流程但用 API Key 接入时不需要 OAuth。如果出现这类报错检查是不是同时存在旧的登录凭证。清理~/.claude/下的凭证缓存文件确保配置里用的是ANTHROPIC_AUTH_TOKEN而不是 OAuth token。重启后应该直接走 Key 认证。5.5 三件套检查清单出现任何连接类报错先对照这三件套Base URL 是否为https://taotoken.net/api、Key 是否为控制台新建的有效 Key、Model ID 是否与控制台一致。这三项任意一项错了都会导致请求失败。如果你用的是 CC Switch 或 Cline MCP 这类工具同样检查这三项是否填全——Base URL、Key、Model ID 缺一不可。排查完还搞不定可以去接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 对照最新配置说明或者在 API Keys 页面 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 重新生成一个 Key 排除 Key 本身的问题。6. 继续深入把内核认知变成可复用的工程能力拆到这里Claude Code 的内核链路基本清晰了ReAct 循环是骨架负责推理-行动-观察的迭代子 Agent 分层是肌肉用 Explore 这类只读小模型分担上下文压力多层安全体系是缰绳用 deny ask allow 的优先级和四层规则嵌入守住边界。三者叠加才有了“看起来聪明”的编程体验。如果你想继续动手我建议从两个方向深入。一是改配置观察行为变化把ANTHROPIC_SMALL_FAST_MODEL换掉看权限初筛和子 Agent 的速度差异把某条规则从 deny 挪到 ask看拦截行为怎么变。二是自己写一个最小 ReAct 循环用 TaoToken 的 API 端点跑通“请求 → 工具调用 → 结果回填”的完整链路代码量不超过 50 行但能让你彻底理解 Agent 的本质。长期做编码和 Agent 开发的话可以考虑 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 它在用量和模型调度上更适合高频编码场景。想先验证模型效果模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 可以直接试。配置过程中卡住接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 有完整的字段说明。最后留一个我踩过的坑别把 CLAUDE.md 写得太长。它作为用户消息注入每轮对话都会带上写个几百行等于每轮都多烧几千 Token。项目规则控制在 50 行以内只写真正影响决策的约定剩下的交给代码本身去表达。

相关新闻

烟火识别算法落地实战:从图片、RTSP到mp4的检测与告警调优

烟火识别算法落地实战:从图片、RTSP到mp4的检测与告警调优

简介:LNTON羚通烟火识别算法与烟雾检测工具面向安防监控、智慧消防及视频分析方向的开发者与工程人员,解决图片、RTSP实时流和mp4视频中烟火目标自动检测与告警输出的问题。资源包共874个文件,约324.75MB,以843张jpg样本图片为主&…

2026/10/11 3:24:35 阅读更多 →
从爬虫到DCGAN人脸生成:写真套图数据清洗与训练全流程

从爬虫到DCGAN人脸生成:写真套图数据清洗与训练全流程

简介:一套以Python爬虫与机器学习为核心的实战资料包,面向希望掌握图片采集、人脸检测/识别以及DCGAN生成式模型应用的开发者。内容围绕写真美女套图自动爬取、人脸区域识别与DCGAN自动生成脸部图像展开,包含可运行的Python脚本、模型训练记录…

2026/10/11 3:23:34 阅读更多 →
Playwright 截图黑屏排查:无头渲染、WebGL 与等待策略全解析

Playwright 截图黑屏排查:无头渲染、WebGL 与等待策略全解析

做了这么久浏览器自动化,Playwright 的截图和录屏早就成了每天的常规操作。但有一类问题,几乎所有刚上手的人都会撞到:脚本跑得顺顺当当,日志全部正常,最后交出去的截图或者视频封面却是黑黢黢一片。我第一次撞上是在做…

2026/10/11 3:23:34 阅读更多 →

最新新闻

无人驾驶中的边缘计算:从云端下沉到路边的实时决策

无人驾驶中的边缘计算:从云端下沉到路边的实时决策

这几年一直泡在自动驾驶相关项目里,圈子里的共识慢慢收敛到一件事上:单车智能做得再极致,车还是看不见墙后面的东西。边缘计算下沉到路边,说白了就是想办法让路本身变成车的“眼睛”和“大脑”,把实时决策的时延压缩到…

2026/10/11 8:12:18 阅读更多 →
2345加速浏览器v10.0.0.19291安装包静默部署与版本锁定实战

2345加速浏览器v10.0.0.19291安装包静默部署与版本锁定实战

简介:2345加速浏览器 v10.0.0.19291 是一款基于 Chromium 深度定制的网页浏览工具,采用 Chromium 与 IE 双内核并支持智能切换,可匹配不同网页的渲染需求,面向日常上网、办公查阅与网页兼容性测试等场景。软件主打极速与安全&…

2026/10/11 8:12:18 阅读更多 →
06-22-A-RabbitMQ集群运维与迁移实战详解

06-22-A-RabbitMQ集群运维与迁移实战详解

06-22-A-RabbitMQ集群运维与迁移实战详解 ️ 关键词:集群搭建 节点维护 队列迁移 Shovel Federation 蓝绿升级 定义导出导入 版本升级 参数管理 备份恢复 故障排查工具箱 📌 导读:19 篇讲了高可用与调优的"配置面"&#…

2026/10/11 8:12:18 阅读更多 →
Python项目CI/CD流水线实战:从依赖管理到自动化发布

Python项目CI/CD流水线实战:从依赖管理到自动化发布

很多Python项目团队有个通病:代码写完本地一跑就完事,测试敲一遍就推了,等合并到主分支、上线出故障才开始手忙脚乱。我在过去的实战里,给不同类型Python项目——从依赖复杂的算法服务到快速迭代的Web后端——都配过一套持续集成/…

2026/10/11 8:12:17 阅读更多 →
从unittest到Pytest:自动化测试框架迁移实战与最佳实践

从unittest到Pytest:自动化测试框架迁移实战与最佳实践

写测试代码这件事,我折腾了快十年,从最早手写脚本到unittest再到Pytest,最大的感受就一句话:测试代码写得好不好,不取决于你写了多少用例,而取决于整套测试跑起来是否“舒坦”。Pytest就是那种能让你从“应…

2026/10/11 8:12:17 阅读更多 →
门窗隔声实测数据解析:从玻璃配置到密封系统的完整指南

门窗隔声实测数据解析:从玻璃配置到密封系统的完整指南

1. 别只盯着中空玻璃,门窗隔声是个系统工程做门窗声学这行久了,常有人拿着中空玻璃的配置单来问我:“我家装的是双层中空玻璃,怎么楼下广场舞的音乐还是听得一清二楚?”这个问题几乎每次交流都会遇到,也恰恰…

2026/10/11 8:11:17 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →