【Claude Code】Compact 源码级别的学习上下文压缩

Claude Code源码学习之上下文压缩(Compact) Claude Code Compact 体系解析 本文深入剖析了Claude Code的上下文压缩系统设计,该系统主要解决大语言模型Token限制问题。分析基于2.1.88版本,聚焦于src/services/compact/模块。 核心架构:采用5层递进式压缩策略: 时间触发微压缩(无AI调用) 缓存感知微压缩(无AI调用) Session记忆压缩(读文件) 全量压缩(AI调用) 局部压缩(AI调用) 关键技术: 智能触发机制(Token阈值计算+状态机) 熔断保护(连续失败3次停止) 消息完整性保证(保 阅读详情

Claude Code Compact

这次是沿着 Open-ClaudeCode 里恢复出来的 Claude Code 2.1.88 源码,专门看了一遍上下文压缩的原理 compact。我把它理解成“对话太长时生成一个摘要”,但顺着调用继续看会发现,摘要只是其中一层。真正让任务在 compact 后还能接着做的,是 summary、最近原文、程序状态、附件、Hooks 和 transcript 一起配合。

compact 的核心是把旧消息移出模型的活跃 prompt,再用可继续执行任务的信息替代它;旧消息通常仍在 JSONL transcript 中,并没有从磁盘删除。

背景与问题

Claude Code 跑的是一个持续的 agent loop。用户消息、assistant 回复、thinking、tool_use、tool_result 会在 turn 之间不断累积,其中工具结果往往增长得最快。窗口快满时,如果仍把整段历史交给模型,下一次请求就会超过窗口上下文,所以 compact 必须在请求前腾出空间。

自动路径会根据模型窗口计算阈值:

effectiveWindow = contextWindow - min(modelMaxOutput, 20K)
autoCompactThreshold = effectiveWindow - 13K

如果按 200K 上下文窗口、模型输出上限不小于 20K 来算,大约会在 167K 附近触发。手动执行 /compact 则不需要等阈值,可以主动整理当前会话。

Message

到这里还有一个容易混淆的地方:源码里的 Message 并不等于界面上的一条聊天气泡。它更像 Claude Code 保存的一只消息信封:

Message                       Claude Code 外层记录
├── type                      user / assistant / system / attachment / progress
├── uuid、timestamp           链路和存盘信息
└── message                   接近 Anthropic API 的消息
    ├── role                  user / assistant
    └── content[]             text / thinking / tool_use / tool_result ...

所以图里出现的 messages 是一组消息信封,content 是信封里的具体内容块,trigger 则表示本次 compact 是 manual 还是 auto。方法卡里的 input / output 也只是函数参数与返回值,并不是键盘输入和屏幕输出。

Tool result

沿着消息结构再往下看,最容易让上下文快速增长的是 tool_result。模型先在 AssistantMessage 里发出 tool_use,Claude Code 执行对应工具,再把结果包装进下一条 UserMessage。这里的 user 不代表用户亲手输入,它表示运行环境把外部结果交还给模型。

AssistantMessage
└── tool_use
    ├── id: toolu_123
    ├── name: Read / Bash / Grep ...
    └── input: 工具参数

UserMessage
├── message.role: user
├── message.content[]
│   └── tool_result
│       ├── type: tool_result
│       ├── tool_use_id: toolu_123
│       ├── content: 工具输出          // 下次请求发送给模型
│       └── is_error: 是否执行失败
├── toolUseResult: Claude Code 内部的原始结果
├── sourceToolAssistantUUID: 对应 assistant 消息的 UUID
└── mcpMeta: MCP 的 _meta / structuredContent

tool_use.id 与 tool_result.tool_use_id 必须对应,模型才能知道这是哪次工具调用的结果。content 才是下一次 API 请求会发送给模型的主要内容:Read 会放文件正文,Bash 会放 stdout、stderr 和错误信息,Grep / Glob 会放匹配结果或路径,MCP 工具还可能返回文字、图片或资源引用。工具失败时一般会设置 is_error: true,并在 content 中说明失败原因。

外层字段承担的是另一类用途。toolUseResult 保存 Claude Code 内部使用的原始工具返回对象;sourceToolAssistantUUID 负责连接结果与发起工具调用的 assistant 消息;mcpMeta 提供给 SDK 或 MCP 消费者,其中的元数据不会直接发给模型。因此需要区分“模型可见的 tool_result.content”与“程序内部保存的原始结果”,它们并不是同一份数据。

工具结果之所以优先处理,主要是因为它的体积增长很快,但后续价值往往低于用户目标、当前决策和最近修改。
一次 Bash 可能产生几万行日志,一次 Read 可能返回完整大文件;如果这些内容在每轮请求中反复发送,不仅会占用上下文窗口,还可能让摘要请求本身出现提示词过长的问题。另一方面,很多工具结果只是磁盘文件或命令输出的临时副本,需要精确内容时仍可以读取文件或 transcript,没有必要长期放在活跃 prompt 中。

所以 Claude Code 会先处理 tool_result.content。tool-result budget 针对单条消息中过大的新工具结果,microcompact 则偏向清理较早的工具结果,保留 tool_use / tool_result 的关联结构,只移除大段旧内容。

它把完整工具输出保存到磁盘,再将 tool_result.content 替换为一段包含文件位置的短预览。同时,它会在 transcript 中记录这次替换,让后续请求和会话恢复时继续使用同一段预览,避免历史消息前后不一致,影响 prompt cache 的复用。

原来的 `tool_result.content` 会被替换成类似
{
  type: "tool_result",
  tool_use_id: "toolu_123",
  content: "结果过大,完整内容保存在 xxx;以下是部分预览……"
}

这样处理有两个好处:一部分会话可能不用全量压缩;即使仍要生成 summary,摘要 agent 需要读取的输入也会更小。更关键的是,它没有先改写用户意图和任务决策,只拿掉可从磁盘或 transcript 查回的大块结果,所以会排在语义摘要之前。

基本流程

每次准备向模型发起下一轮 API 请求前,queryLoop() 都会先整理即将发送的消息:tool-result budget → history snip → microcompact → context collapse。例如巨大 tool_result 可以先写到磁盘,只在 prompt 里留下预览;history snip 不调用模型,他过滤已经被标记 snip 的历史消息段;microcompact 清楚较早的工具结果且不产生摘要。只有这些处理仍无法把 token 降到阈值以下时,才会进入 full compact,用语义摘要替换旧对话。

接下来会先判断实验性的 Session Memory 是否可用。自动 compact 会先试这个分支;手动 /compact 在没有自定义摘要要求时也可以先试。如果 Session Memory 关闭、memory 文件无效、无法定位边界,或者压缩成品仍然超过阈值,就转入 Traditional full compact

Claude Code compact 精简流程

这张图适合先看最终的结果。上半部分是入口与分支,中间是 CompactionResult 的字段,下面区分了哪些内容给模型、哪些只留在程序或磁盘、哪些从活跃 prompt 移出。

Traditional full compact

Traditional 分支由 compactConversation() 统一安排。它先触发 PreCompact Hook,把 { 触发器 trigger, 自定义指令 customInstructions } 交给用户或项目配置的 Hook。Hook 成功输出的 stdout 会被拼进 customInstructions,然后 getCompactPrompt() 才生成摘要要求。因此 PreCompact Hook 自己不写摘要,它要求这次摘要必须额外保留什么。这也解释了它为什么必须出现在 summary prompt 之前。

后面会启动一个单回合摘要 agent。这个 agent 不允许调用工具,因为它的任务只是读取现有历史并生成 summary;如果工具调用占掉唯一回合,反而拿不到摘要。摘要模板要求覆盖用户意图、技术概念、文件和代码、错误与修复、用户修正、待办、当前工作和下一步,目的是尽量保住任务可以继续执行的语义。

但 summary 不适合逐字保存代码和程序状态,所以摘要完成后,Claude Code 还会再读最近访问的文件,并补回 plan、skills、plan mode、后台 agent、deferred tools 和 MCP 信息。随后触发 SessionStart('compact'),让 CLAUDE.md、项目规则和 Hook additional context 再进入会话。最后才创建 compact_boundary 与隐藏的 summary user message,并触发 PostCompact Hook。

三类 Hook 的职责不同:

  • PreCompact:发生在摘要 prompt 生成前,可以追加摘要要求
  • SessionStart:compact 形成新的工作上下文后,补回 CLAUDE.md 和会话级说明
  • PostCompact:summary 已经产生后,用于通知或审计;它的显示信息不会进入下一轮模型上下文

PTL retry

-Prompt Too Long

如果历史已经大到连“请摘要这些消息”这次请求都塞不进 context window,就会出现 PTL。Claude Code 会从消息开头移除最早的一组 API round,再发起摘要,最多做三次。

API round 是一组相互关联的 user、assistant、tool_use 和 tool_result。按组移除可以避免留下找不到对应 tool_use 的 tool_result。之所以先舍去开头,是因为最近的修改、报错和用户要求对续接当前任务更有价值。但是被 PTL 流程移除的消息根本没有进入摘要 agent,所以也不会出现在 summary 里,只能从 transcript 查回。三次之后仍然超过窗口,本次 compact 就会失败。

Session Memory compact

Session Memory 走的是另一条思路:后台平时就在维护一份 Markdown memory,compact 时直接使用这份 memory,不再临时摘要全部历史。它还会保留最近一段 messagesToKeep,一般至少覆盖约 10K token 和 5 条含文本的消息,向前扩展到约 40K 附近停止。

保留最近原文时不能只按 token 切一刀。如果留下了 tool_result,就必须把对应的 tool_use 一起留下;同一个 assistant message ID 下的 thinking 和其他内容块也不能被拆散。处理完这些边界后,Session Memory 同样会触发 SessionStart Hook,并把 memory、最近原文、plan 和 Hook 结果组合起来。

再往下看,会发现实验分支并不保证一定成功。memory 文件为空、last summarized message ID 找不到,或者组合后的消息仍然超过自动阈值时,trySessionMemoryCompaction() 会返回 null,调用方随后转入 Traditional。这也是图里虚线箭头的含义。

compact 后保留的内容

两个分支最后都会生成 CompactionResult,再由 buildPostCompactMessages() 按固定顺序摊平成新的工作消息:

boundaryMarker
→ summaryMessages
→ messagesToKeep
→ attachments
→ hookResults

这些字段虽然都出现在返回对象里,但去向并不一样:

字段保存的内容主要去向分支差别
boundaryMarker内部书签,记录旧工作段的结束位置、trigger、压缩前 token、parent UUID 等元数据Claude Code + transcript两个分支都有;API 归一化时会过滤,模型看不到
summaryMessagessummary 包装成的隐藏 UserMessage模型 + transcriptTraditional 当场生成;Session Memory 使用已有 memory
messagesToKeep仍保留的最近原文,包括 user、assistant、tool_use、tool_result模型 + transcriptTraditional 通常为空;Session Memory 会保留最近一段
attachments文件片段、plan、skills、agent 状态、tools / MCP 等精确信息模型Traditional 类型较多;Session Memory 当前主要补 plan
hookResultsSessionStart Hook 补进来的 CLAUDE.md、项目规则和 additional context模型两个分支都会产生;它不是 Pre/PostCompact Hook 的 stdout
userDisplayMessagePreCompact / PostCompact Hook 的成功或失败提示UI不在 buildPostCompactMessages() 中,因此不是模型上下文
token counts / usage压缩前估算、摘要调用用量、压缩成品估算日志 / 指标Traditional 的 postCompactTokenCount 是摘要 API 调用总量;成品大小看 truePostCompactTokenCount

这里需要把“保留”再分成三种去向。下一轮模型会读到 summary、Session Memory 的最近原文、转换后的 attachments 与 hookResults;当前 system prompt、tools、user context 也会由程序在每轮请求时组合。Claude Code 和磁盘还会保留 boundary、UI 显示信息、token 指标、JSONL 里的旧消息以及完整 memory 文件,只是默认不把它们全部发给模型。

从活跃 prompt 移出的内容也因分支而不同:Traditional 会移出旧工作段的原始消息,Session Memory 只移出较早且已进入 memory 的部分,并保留最近原文。精确措辞、thinking、失败过程如果没有进入 summary,模型就不能直接引用;遇到需要逐字核对的代码或报错时,仍要回到 transcript 或文件。

源码调用图

Claude Code compact 源码调用图

这张图适合需要定位方法时查看,按 A → B/C → D 的区域顺序找入口、分支和汇合点,再进入对应方法。

这份仓库是 source-map 恢复出来的 TypeScript 快照,reactiveCompact、contextCollapse、部分 cached microcompact 等 ant-only 文件并不完整,所以这些机制目前只能确认调用入口,不能把内部细节当成已经完全验证的结论。

复习

Claude Code 并没有在 compact 后逐字记住旧对话。它保存了能够续接任务的 summary,用 attachments 和 SessionStart 补回精确信息,在实验分支里保留最近原文,同时把完整旧记录留在 transcript。这样下一轮模型拿到的是更短的工作上下文,但需要逐字核对的旧细节仍然有地方可查~
希望对你有所帮助,祝身体健康 :)

源码级解读 /compact 命令:Token 压缩、记忆淘汰与上下文重整机制 压缩的最终产出不是一个简单的文本摘要,而是一个重整后的上下文结构。根据LiteLLM的官方文档(2026年1月12日版本),压缩后的摘要会以│ System Prefix: [压缩摘要] │ ← 注入点│ 系统指令 ││ 最近N条完整消息(未压缩尾部) │摘要作为最高优先级的上下文被模型优先关注近期详细消息保留,保证当前任务的精确性历史信息以压缩形式存在,不占用过多token特性OpenClawLiteLLM实现层级客户端开源框架企业代理自动压缩✅ 80%阈值✅ 可配置。 阅读详情

相关推荐

SAP 公司间库存调拨通过IDOC完成自动发票校验

本文仅用于SAP软件的应用与学习,不代表SAP公司。(注:文中所示截图来源SAP ERP软件,软件相应著作权归SAP所有。公司间采购时,通过SAP内部EDI 数据传输功能, 由销售方开的公司间发票自动触发采购方的发票校验。​欢迎扫码加如下微信,我会把大家拉到SAP PP学习群,随时欢迎跟我和其他SAP PP顾问一起交流和学习,如下图库存调拨订单,系统已经完成了发货方发货和收货方收货。

2402_84262664的博客 923

Claude Code源码剖析 - Claude Code 上下文压缩机制

Claude Code 上下文压缩机制摘要 Claude Code 的上下文压缩是一套多层级的上下文治理系统,旨在解决模型运行时的上下文窗口限制问题。该系统通过以下机制协同工作: 输入视图切片:从最近的压缩边界开始截取消息 工具结果清理:限制单条工具结果的体积 历史视图裁剪:选择性保留关键历史消息 自动压缩:生成历史摘要替代冗长内容 失败恢复:处理API错误后的上下文重建 压缩过程集成在Agent Loop中,每轮模型调用前都会重新整理上下文视图,确保不超过窗口限制,同时保留工具调用、文件状态等关键信息。系

2401_87984738的博客 480

Wine7.22实战:如何在Ubuntu上完美运行通达信和微信(附字体配置技巧)

本文详细介绍了如何在Ubuntu系统上使用Wine7.22版本,完美运行通达信和微信这两款Windows专属软件。通过选择稳定的Wine7.22版本、利用现成的兼容容器,并重点解决了中文字体渲染的核心难题,提供了从环境搭建、字体配置到软件安装调优的一站式实战指南,帮助用户在Linux环境下无缝使用关键金融与通讯工具。

weixin_29280657的博客 549

Claude Code 压缩机制曝光,这波真的有点猛啊

Claude Code 的上下文压缩机制采用四阶段管线设计,确保长会话的高效运行。第一阶段MicroCompaction静默裁剪工具冗余输出;第二阶段AutoCompaction在上下文达83.5%阈值时触发LLM生成结构化摘要;第三阶段Blocking Limit在接近极限时直接拦截请求;第四阶段Reactive Fallback作为兜底方案,在API报错后执行激进压缩。这套机制通过规则裁剪与模型摘要的配合,在节省token空间的同时保持语义连贯性,解决了大模型长上下文注意力分散的问题。

沉默王二 893

从零开始:使用COLMAP与OpenMVS构建高精度三维Mesh模型

本文为零基础新手提供了使用COLMAP与OpenMVS构建高精度三维Mesh模型的完整实战指南。详细介绍了从环境配置、数据采集黄金法则,到COLMAP稀疏与稠密重建、OpenMVS网格生成与纹理映射的每一步操作,并分享了关键的避坑技巧与参数调优建议,帮助读者从二维照片中成功重建出属于自己的三维模型。

metal的博客 504

TVS 和压敏电阻联合使用进行浪涌保护时,压敏电阻的压敏电压要低于TVS 的钳位电压 VC。

通过先让MOV接管,可以确保在大多数情况下,电压不会迅速上升到TVS二极管的钳位电压,从而保护TVS二极管免受持续高能量冲击的损害。总结来说,将MOV的压敏电压设置得低于TVS二极管的钳位电压,可以提供一种分级的保护机制,优化浪涌保护性能,同时保护敏感的TVS二极管不被过度的能量冲击损坏,并延长其使用寿命。MOV吸收的能量(Wmov):假设浪涌电流为10kA,MOV导通后将电压限制在300V,那么Wmov = Ipp * Vmov = 10kA * 300V = 3MW。例如,Vmov可以设定为275V。

weixin_66642980的博客 2244

Cline Auto Compact 默认启用:长对话上下文压缩的触发原理与配置实践

本篇围绕 Cline 仓库中的一次变更说明(.changeset/proud-crabs-compact.md)展开:该变更为 IDE 扩展(npm 包名 `claude-dev`,见 [apps/vscode/package.json](https://link.gitcode.com/i/f55c3958d2267bf3518feb7a32a0a487))打了一个 patch 级别的版本升级—

gitblog_00773的博客 744

鲸鱼优化算法(WOA)与门控循环单元(GRU)结合的预测模型(WOA-GRU)及其Python和MATLAB实现

Python和MATLAB的实现均突出模型结构和优化过程。2. **全局搜索与局部搜索结合**:WOA在寻优时,既有全局搜索的能力,又具备局部精准搜索的能力,能有效避免陷入局部最优解。2. **简化结构**:与长短期记忆(LSTM)相比,GRU的结构更为简化,避免了多层细胞结构,提高了计算效率。4. **使用WOA进行优化**:通过WOA迭代优化GRU模型中的参数,如学习率、批量大小和GRU单元的权重。3. **良好的表现**:GRU在多个时序数据序列的预测任务中表现优异,特别是在较短的数据序列中。

qq_45441438的博客 1319

Claude Code 源码分析(四):上下文窗口管理 —— 长对话场景下的 Token 预算与自动压缩

本文分析了Claude Code 2.1.88版本的上下文窗口管理方案,重点介绍了其自动压缩触发机制、熔断保护设计和多策略压缩实现。系统通过动态阈值计算和多级警告机制管理上下文token消耗,采用会话记忆压缩优先的策略,并设计了熔断器防止递归失败。预处理步骤和微压缩技术进一步优化了压缩效果,有效解决了长时间会话中的上下文膨胀问题。

宇擎智脑科技的博客 1074

1分钟吃透一篇文献,借助AI辅助各部分精读,效率提升10倍(附AI提示词)

你现在是一名【研究领域】的资深博士,非常擅长阅读与分析长篇论文,那么接下来我会给你上传一篇论文,请你按照我的要求辅助我阅读。

qq_64378896的博客 635

3060台式机 Ubuntu 双系统部署 LingBot-Map 完整指南

摘要: 本文详细介绍了在配备RTX 3060显卡的台式机上部署Ubuntu双系统并安装LingBot-Map 3D重建模型的完整流程。LingBot-Map作为蚂蚁灵波科技开源的Transformer架构模型,在流式3D场景重建中展现出高效性能(20 FPS)和卓越精度(ATE仅6.42米)。指南涵盖关键准备步骤、UEFI分区原理、Ubuntu安装流程(推荐150GB空间及手动分区方案),以及后续驱动配置说明,特别强调RTX 3060需12GB显存支持,并提供了数据备份、Secure Boot处理等实用建议

huanghm88的专栏 306

Cherry Studio Work Agent 压缩窗口跟随模型上下文:Claude Code autoCompactWindow 的实现与边界

本文基于 CherryHQ/cherry-studio 仓库中 [2026-08-02-agent-auto-compaction-window.md](https://link.gitcode.com/i/b401ec4696a5107c4e27104ecef284ac) 这一变更记录展开,介绍 Work Agent(基于 Claude Code 的 Agent 会话运行时)如何把自动压缩(au

gitblog_00252的博客 206

混响效果的编程实现:Schroeder混响模型与Moorer型混响

Schroeder混响模型是由Manfred R. Schroeder在1962年提出的,它基于一系列串联的反射器(Allpass Comb Filters)和并联的反射器(Feedback Comb Filters)构成。Schroeder混响模型是由Manfred R. Schroeder在1962年提出的,它基于一系列串联的反射器(Allpass Comb Filters)和并联的反射器(Feedback Comb Filters)构成。通过调整各个反射器和全通滤波器的参数,可以实现不同的混响效果。

2301_79326857的博客 1081

如何把 Poznote 附件迁移到 S3 对象存储:MinIO/Cloudflare R2/B2 配置与迁移实战

Poznote 是一款自托管笔记工具,默认把笔记附件(图片、视频、文档)保存在服务器本地磁盘。当附件越积越多时,磁盘空间会很快告急,完整备份也会变得又慢又重。本文将手把手教你把 Poznote 附件迁移到 S3 兼容的对象存储(MinIO、Cloudflare R2、Backblaze B2 等),并附一键双向迁移的完整实战步骤。 ## 为什么要把 Poznote 附件放到对象存储 📦 附件

gitblog_00058的博客 983

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Zellij 安装与上手:5 分钟搭好分屏终端工作区

终端窗口越开越乱,分屏全靠手动拖,换台机器又要重头来?Zellij 是一个开箱即用的终端工作区,分屏、标签页、会话持久化、插件系统全部内置。按你的系统选对一条安装命令,跑起来再验证一下,三步就能用。文末附内置主题与布局的完整资源路径。 ## 最快速跑起来 不想纠结渠道的话,直接用包管理器一条命令装好,装完马上验证: ```bash # macOS(Homebrew 官方维护的 Formula

gitblog_00527的博客 346

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Claude Code 从入门学习

Claude Code 从入门学习

Lyndon的专栏 829

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Claude Code 深度拆解:上下文里有什么——Prompt Cache 机制

阶段机制核心设计建立三层缓存标记能共享就共享(global),不能共享就降级(org/ephemeral)保持四大稳定性保障 + TTL 锁存会话内一旦确定,不再变化检测两阶段断裂检测12 维度预追踪 + token 骤降归因修复不动本地消息,服务端透明删除,每 turn 重发降级双路径微压缩缓存热走 editing,缓存冷走本地替换复用Compact 缓存复用fork 共享 cacheSafeParams,"蹭"主线程缓存。

wayne_lee_lwc的博客 1152

opencodex CLI 自动上下文(auto-context):基于 `CLAUDE_CODE_AUTO_COMPACT_WINDOW` 的条件式 [1m] 标记与 400k+ 路由压缩生存方案

本指南围绕 opencodex 中 `claudeCode.autoContext` 与 `autoCompactWindow` 配置展开,讲解代理如何让 GPT 级别的 400k+ 超大上下文模型路由在 Claude Code CLI 中获得"自然上下文 + 自动压缩"双保障:当模型真实窗口超过 200k 且能容纳压缩窗口时,CLI 选择器自动携带 `[1m]` 变体标记,同时注入 `CLAUD

gitblog_00185的博客 476

Claude Code 源码深度解析:大模型上下文管理机制与压缩策略(小白程序员收藏必备)

工具定义作为独立的tools字段传给 API,每个工具包含名称、描述和输入 schema。工具列表的最后一个工具会被标记,缓存点打在工具列表末尾,意味着系统提示 + 所有工具定义这整个前缀都可以被缓存。Claude Code 的上下文管理有几个值得记住的设计决策。入口管控 + 三层存量清理。工具结果持久化在内容入库前就拦截超限数据,是代价最低的防线(仅磁盘写入)。存量清理部分代价递进:MicroCompact 零额外 API 调用,清理历史工具结果;

HUANGXIN9898的博客 634

上下文预算管理(Context Budget Management)深度源码解析

本文基于 Claude Code 生产级源码,深度剖析 Agent 主循环中"上下文预算管理"这一核心机制的完整实现。从工具结果裁剪到五层压缩管线,再到错误恢复,逐层拆解每个环节的设计动机、核心算法和关键代码。

adru的博客 472

dsh-purge 备份驱动补丁还原:42 个补丁对象与卸载状态机交叉核对

dsh-purge 是面向 DeepSeek Harness(DSH)的红队评测插件,服务于自管宿主的开发者做本机受控评测。本文交叉核对 [lib/core.js](https://link.gitcode.com/i/99cf6456178d342e3367853aa9ea9e2a) 的补丁数组、[lib/uninstall.js](https://link.gitcode.com/i/8dee

gitblog_00585的博客 367

Claude Code 智能体是如何设计实现

Claude Code 源码意外泄露,揭示其仅1.6%为AI决策逻辑,98.4%是确定性基础设施。整体架构包括入口层、Agent主循环、QueryEngine等模块。主循环七阶段协调上下文加载、工具路由、权限检查、模型调用与工具执行,支撑可靠Agent的关键在于管理模型周边的工程脚手架。

weixin_45526015的博客 409

Claude Code Token不够用?六个实用技巧省下近一半成本

AI编程工具正在改变开发者处理日常任务的方式,但在实际落地时,Token消耗往往成为成本失控的主要来源。Token是模型处理文本的计量单位,每一次上下文传递、代码读取、结果输出都会累积消耗,尤其在长对话和复杂任务场景中,成本会指数级上升。理解Token的构成原理,学会控制上下文长度和输出范围,是降低AI编程成本的关键。当前主流的代码生成与自动化工具都支持通过任务拆解、会话重置、批量脚本等方式优化Token使用。Claude Code作为一款命令行AI编程代理,其Token消耗主要源于上下文历史、无效输出和重

weixin_33853794的博客 391

ECC 开发上下文(Development Context):为 Claude Code 打造精准的动态系统提示注入机制

<output文章> # ECC 开发上下文(Development Context):为 Claude Code 打造精准的动态系统提示注入机制 > 本文围绕 ECC 仓库中的 [contexts/dev.md](https://link.gitcode.com/i/c56b4ce1f93ce98e3295bd3377d2a19e) 展开,系统讲解"开发模式"上下文文件的定位、结构与落地方式,

gitblog_00548的博客 433

learn-claude-code:把 Agent Harness 拆成 17 段可运行代码

你给 LLM 外面套了三层 if-else、两个状态机、一条"判断是否完成"的提示词链,它为什么还是不会自己干活?因为那些代码根本不是在"构建智能",而是在限制模型已经会做的事。learn-claude-code 做的事情跟这完全相反:它用 17 个独立可运行的 Python 文件,把 Claude Code 式 coding agent 的每一个 Harness 机制——循环、工具分派、权限门控

gitblog_00779的博客 775

2026.11.7 AI学习总结

110 你 14b 模型权重本身就要约 8.8GB,默认上下文(Ollama 在 16GB 卡上可能给到 4K)加上 KV Cache 就爆了。比如设成 2048,你输入了 500 个 token 的问题,那模型最多还能生成 1500 个 token 的回答。超出部分会被截断,模型就"看不见"了。4 如果 14b 跑起来后发现它"忘事",再逐步往上加,比如先试 4096。,根据注意力头的重要性动态分配缓存资源,重要的留显存,不重要的下沉。,单位是 token,表示模型这一次推理最多能同时"看到"多少内容。

qq_41181702的博客 359
上一篇: 【Claude Code】Fable 5 提示指南
下一篇: 【Java 脚手架】封装通用工具类-1
Jul1en_
博客等级 码龄2年 275粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值