新闻详情

新闻详情

首页 / 资讯中心 / 详情

Claude code 设计哲学——主循环

发布时间:2026/9/30 11:24:16来源:尧图网络
Claude code 设计哲学——主循环
//文章为题主学习Claude code设计架构时所写要落地一个agent项目并不是一个loop就可以需要考虑的设计点非常多且复杂这里举几个例子问题1如果用户在agent输出或运行工具时ctrl c后 应该怎么处理直接断开会造成内存状态全部清除。问题2如果agent调用进入死循环怎么处理处理不当会导致费用爆炸。这一章主要讲解我学习到的 Claude code 主循环设计哲学如何理解一次 Turn从用户输入问题 - 大模型思考 - 大模型调用工具 - 大模型生成最终结果这算是一次 Turn。我会从四点介绍Claude code 主循环设计一. Claude code 在每一轮 Turn 之前都会重置状态这里重置什么状态打断记录器 权限拒绝清单 临时技能 。先说打断记录器 Claude code 会在内存中存储一个打断记录器如果用户ctrl c 打断当前轮次 这个记录器的值会变为 true。权限拒绝清单。这是个什么东西其实就是平时大家在 同意或拒绝 Claude code 一些指令时候的 记录清单。是的 Claude code每一轮 也会把这些记录下来 。 如果不重置会发生什么比如你再第一轮拒绝了Claude code 一条指令请求 在第二轮任务完成之后还保存这上一轮的 权限拒绝清单 那么Claude code 会把权限拒绝清单发送到ui层导致整个 日志系统的混乱。临时技能清单。Claude code 内部会记录一个set集合存储每一轮探索到的skill用于本轮的使用不清除会导致set内存泄漏。二.Claude code 的 切面体系Claude code 在调用大模型前后 循环停止前 后 具有丰富的切面编程思想。前置检查Claude code 会检查环境变量所挂在的工作目录。后置检查在Claude code 将要返回文本时会先检查 是否包含不合法格式或死锁迹象。循环即将停止Claude code 会检查 后台任务及时让大模型调整或补充。三.Claude code 打断机制回看问题1打断时机具体可以分为两类:当大模型返回最终输出时候 , 当大模型调用工具时候.当大模型返回输出消息时,这时后台在疯狂打字.此时会做出许多操作:瞬间掐断 和大模型服务的sse连接,保护用户账单,此时一半的输出仍会保存在上下文中 , 并会在末尾插上一句话[用户在此处打断操作], 下次大模型仍会看懂.当大模型调用工具时打断.我们知道一个tool_call 必然对应着一个tool_result , 如果tool_result不完整,会导致下次请求报400错误.那么 Claude code 在后台会 假写 一个tool_result , 内容就是用户当前不想执行此操作。停止你正在做的事情等待用户的新指示。四.Claude code 资源计算和死循环防止在来看看问题2单轮最大循环次数防止死循环。最大预算哪怕轮次没超一旦当前会话消耗的 Token 换算成金额超过预设门槛护具会立刻拔掉电源线强制终止循环并向用户报警。——————————————————2026.9.27补——————————————————在我看来 所有agent 的关键点就在agent loop 上所有组件都可以插入到loop上所以其实可以将agent loop分为四个阶段调用大模型之前调用大模型之后 与 执行工具前执行工具之后loop结束之后学习一个agent 架构都可以把这四个阶段作为切入点。这里我就大致说一下Claude code在这四个阶段都干了什么详细可以等题主更新(一.调用大模型之前可以分为六步:判断用户输出:判断是否又/ ! 这些命令符,如果有直接进入相对于的逻辑处理.状态清洗和预写日志:状态清洗在上文已经详细展开过了 , 预写日志 把用户的问题直接追加写到磁盘持久化的jsonl文件中,防止中断恢复后agent混乱.抓取项目数据:抓取项目配置的专属技能,如果有git,查询git分支,状态,代码总行数等等数据.Token估算与紧急压缩:Claude code 会将系统提示词 长期记忆 当前上下文 用户问题估算Token , 保证Token不超预算,否则触发四层压缩机制拼装提示词:这里的提示词拼接大有讲究,我们在上下文管理篇章中讲解.包装JSON:将提示词和上下文包装成JSON,正式发送给模型服务端,这里设置了随机抖动的重连机制,在后台静默重试.二.调用大模型之后 与 执行工具前可以分为五步:增量拼接tool_call:因为我们与模型服务端是流式模式,所以需要边接收边拼接,如果json格式不对,这里直接捕获并处理.工具参数检验:检验是否存在这个工具,是不是按要求传了全部参数.工具动态编排:来了四个工具 三个读 一个写,三个读工具可以并行,写工具需要串行,加快处理速度.权限,工具安全性检验:检验目标目录是否合法,防止agent越界.对于一下终端或代码脚本,需要检验其安全性是否能通行.人工审查:对于上一步不安全的工具,在ui层上用户决定是否执行.三.调用工具之后可以分为五步:工具信息整合:工具格式必须合法,必须有tool_call_id,一个tool_call对应一个tool_result,如果一个工具结果过长,需要截取并输出工具执行完整临时文件.上下文更新:因为有些工具是并行执行的,它们更改状态必须是串行的,需要按顺序将这些并行的上下文进行更新.后台消息检测:检测用户是否有新消息输入,检查后台慢终端命令执行情况.增量异步落盘:将工具的调用和结果异步的持久化到jsonl文件中.进入下一轮:判断直接结束还是进入下一轮循环.四.结束后可以分为五步:清空内存:强制将内存中存留的日志,上下文各种信息,持久化到磁盘结算账单:计算本轮消耗的Token,在ui层展示给用户.执行hook:执行用户自定义hook,比如自动提交git等等提取长期记忆:整合,去重长期记忆.信箱信息检测:检测信箱中是否有用户的信息(这个信息是在大模型输出最终答案时,用户所添加的) 如果有直接无缝衔接到下一轮
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Docker部署MySQL 8.0实战:数据持久化与连接坑全解 2026/9/30 12:01:36

Docker部署MySQL 8.0实战:数据持久化与连接坑全解

最近在整理韦奇这套部署环境时,碰上了一个特别典型的任务:用Docker把MySQL 8.0拉起来,数据还得持久化,开发、测试、预发三套环境都要用同一套部署方式,不能各自为政。折腾了一轮之后,我把整个落地过程完整梳…

阅读更多 →
Hadoop+Spark+Kafka+Hive民宿推荐系统全链路开发实战 2026/9/30 12:01:36

Hadoop+Spark+Kafka+Hive民宿推荐系统全链路开发实战

1. 这个毕设到底要做什么:民宿推荐系统的完整拼图如果你正在为一台 8G 内存的笔记本该选什么毕设题目发愁,同时又不想做烂大街的 XX 管理系统,我强烈建议你看看这个组合——Hadoop Spark Kafka Hive,配上民宿爬虫与可视化。我当…

阅读更多 →
Windows下用Nginx部署Vue3项目实战指南 2026/9/30 12:01:36

Windows下用Nginx部署Vue3项目实战指南

1. 为什么在Windows上用Nginx部署Vue3项目,是很多前端工程师绕不开的实战门槛? 你是不是也经历过:本地 npm run serve 跑得好好的,页面清爽、路由丝滑、状态管理稳如老狗;可一到打包部署环节,就卡在“访…

阅读更多 →
用工厂流水线理解MapReduce:分片、Shuffle与调优全解析 2026/9/30 12:01:36

用工厂流水线理解MapReduce:分片、Shuffle与调优全解析

刚接触 MapReduce 那阵子,我一度把它当成一个黑盒:数据和业务代码丢进去,隔几小时有结果出来,中间到底发生了什么,完全靠脑补。直到有一次,为了排查一个跑了一个多小时还“卡住”的作业,我被迫顺…

阅读更多 →
嵌入式开发实战:固件烧录、OTA升级与通信避坑指南 2026/9/30 12:01:36

嵌入式开发实战:固件烧录、OTA升级与通信避坑指南

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

阅读更多 →
独立站暴利玩法:选品、建站与流量放大实战拆解 2026/9/30 12:01:28

独立站暴利玩法:选品、建站与流量放大实战拆解

1. 先聊清楚:独立站怎么就成了"暴利"生意我见过太多人一听到"独立站"三个字,第一反应是"SaaS建站工具哪家强",第二反应是"投Facebook广告烧钱"。但真正把独立站当生意做起来的人,很少把精…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉