Claude Code 上下文瘦身实战:quarter-clone 技能与 half-clone 脚本深度解析
AI 技能教程开发工具【免费下载链接】claude-code-tips45 tips for getting the most out of Claude Code, from basics to advanced - includes a custom status line script and Claude Code running itself in a container. Also includes the dx plugin: skills for everyday dev workflows.项目地址https://gitcode.com/gh_mirrors/cl/claude-code-tips点击查看免费下载Claude Code 会话越长可用上下文越少、性能与成本越不理想。本仓库claude-code-tips提供了一套按比例克隆对话的方案half-clone保留后一半、quarter-clone保留后四分之一两者共用同一个纯 Bash 脚本half-clone-conversation.sh。本文以 quarter-clone 技能 为骨架完整讲解其操作流程并深入scripts/half-clone-conversation.sh源码与scripts/test-half-clone.sh测试用例说明克隆背后的消息过滤、UUID 重映射、token 缩放与恢复机制读完即可自己部署并安全地在长会话中截尾续命。quarter-clone 技能是什么quarter-clone是仓库 skills 目录 中定义的 Claude Code 技能Skill。它的 frontmatter 明确了两点name: quarter-clonedescription: Clone the last quarter of the current conversation, discarding earlier context to reduce token usage while preserving recent work.即克隆当前会话的最后四分之一丢弃早期上下文在保留最近工作的前提下降低 token 消耗。它与同目录下的 half-clone 技能 是同一套方案的两种强度差别只在于保留比例——half 保留后 50%quarter 保留后 25%。两者的定位可以理解为/compact之外的另一种瘦身思路/compact会把历史总结成摘要本质是改写内容而克隆方案是确定性地按比例裁剪原始消息保留的消息一字不改只是把断点之前的全部记录丢弃。完整操作流程quarter-clone 技能本身是一份给 Agent 的指令清单共 5 步。以下逐条展开并补充每条命令的出处与作用。第 1 步获取当前会话 ID 与项目路径tail -1 ~/.claude/history.jsonl | jq -r [.sessionId, .project] | tsv~/.claude/history.jsonl是 Claude Code 的本地会话历史文件最后一行对应最近一次会话。用jq取出sessionId和project两个字段以制表符分隔输出。项目路径必须取自这里而不是当前工作目录——克隆脚本要用它定位项目专属的会话文件目录见下文源码剖析。第 2 步定位克隆脚本find ~/.claude -name half-clone-conversation.sh 2/dev/null | sort -V | tail -1技能文档对这条命令给出了三条设计说明无论脚本是通过 dx 插件安装还是手动 symlink 到~/.claude/scripts/都能被找到用sort -V版本排序在存在多个副本时优先取最新版本同一个脚本同时负责 half 与 quarter 两种克隆--quarter参数切换为四分之一模式。第 3 步预览会话验证 session IDscript-path --preview session-id project-path预览模式--preview不会修改任何数据只输出会话文件路径、总行数、第一条与最后一条用户消息的前 120 个字符用来核对这就是当前这个会话。对应源码实现见 half-clone-conversation.sh 的preview_conversation函数。第 4 步执行四分之一克隆script-path --quarter session-id project-path注意两点必须传--quarter否则默认是 half 模式始终传入 history 记录里的项目路径而不是当前工作目录。脚本随后打印结果摘要其中关键的New session: id一行给出了新会话 ID。第 5 步恢复新会话claude --resume new-session-id用脚本输出的新会话 ID 直接--resume无需经过选择器。技能文档同时说明了兜底方案克隆文件首条用户消息被自动标记为[QUARTER-CLONE timestamp]例如[QUARTER-CLONE Jan 7 14:30]因此也可以运行claude -r后按标记挑选。此外脚本会在克隆文件末尾自动追加一条指向原会话的引用消息Original session:idat:file方便回溯来源。底层实现剖析同一个脚本如何切 quarterquarter-clone 与 half-clone 共用的核心脚本是 scripts/half-clone-conversation.sh声明为纯 Bash 实现无 Python/Node 依赖兼容 macOSbash 3.2与 Linux。要理解 quarter 模式关键是看这几处实现模式切换与参数解析脚本通过KEEP_DENOM保留分母区分两种模式默认KEEP_DENOM2为 half入口参数解析处脚本第 578-584 行遇到--quarter时--quarter) KEEP_DENOM4 CLONE_LABELQUARTER-CLONE MODE_NAMEquarter-clone KEPT_DESClast quarter FALLBACK_DISPLAY[Quarter-cloned conversation] shift ;;CLONE_LABEL决定写入消息与 history 的标记文本KEPT_DESC决定日志措辞FALLBACK_DISPLAY决定 history 中显示文本为空时的兜底标题。计数干净的用户消息克隆要确定从哪一条开始保留而 JSONL 会话文件里并非所有type:user都是真正的用户提问。脚本用 awk 实现了filter_clean_user_msgs脚本第 119-136 行只统计顶层type为user或queue-operation的消息嵌套在 progress/subagent 数据里的type:user被忽略排除tool_result它必须依赖前面被裁剪掉的tool_use排除isMeta:true的技能展开消息排除Request interrupted by user的被中断消息。计算保留起点在 脚本第 227-249 行skip_clean_count$((total_clean_user_messages * (KEEP_DENOM - 1) / KEEP_DENOM)) keep_clean_count$((total_clean_user_messages - skip_clean_count))quarter 模式下KEEP_DENOM4即跳过前3/4条干净用户消息、保留最后1/4。随后通过带行号的过滤结果定位第skip_clean_count 1条干净用户消息所在行号其前一行即为裁剪边界skip_count。若干净用户消息不足 2 条脚本直接报错退出Conversation has fewer than 2 clean user messages——这是测试用例test_quarter_minimum_messages覆盖的最短输入边界。生成新会话文件UUID 重映射与结构修复裁剪后的文件无法直接拿来用脚本做了几件关键的事全部在 awk 主循环中脚本第 311-491 行会话 ID 重映射把每行的sessionId全部替换为新生成的 UUID消息 UUID 重映射uuid、parentUuid、messageId统一映射到新 UUID维持父子树形结构预生成 UUID 采用hexdump快速路径Linux 上可回退到/proc/sys/kernel/random/uuidmacOS/BSD 回退到uuidgen脚本第 139-160 行写入合成 marker 消息在文件头部写入一条type:user的合成消息[QUARTER-CLONE timestamp] Continued from session 原会话ID并把第一条被保留消息的parentUuid指向它脚本第 302-309 行。注释说明了原因claude -r列表要求文件前 16KB 内存在firstPrompt否则新会话无法出现在会话列表中工具结果孤儿化裁剪后首条被保留的消息若是tool_result缺少前置tool_use其parentUuid保持原样成为孤儿节点不强制指向 marker避免破坏树结构。剥离 thinking 块与 token 计数缩放strip_thinking脚本第 355-393 行会从内容数组中移除thinking/redacted_thinking块。源码注释指出这是已知问题恢复时会触发API Error 400thinking or redacted_thinking blocks in the latest assistant message cannot be modifieddivide_number脚本第 402-412 行把保留消息中的input_tokens、cache_read_input_tokens、cache_creation_input_tokens按KEEP_DENOM整除quarter 即除以 4避免 token 用量被高估跳过会话尾部last-prompt/ai-title/mode/permission-mode等 session 配置行脚本第 418-423 行——last-prompt携带的leafUuid未被重映射若原样复制会留下悬垂指针导致恢复时对话显示为空。追加引用消息与更新 history.jsonl克隆结束时脚本第 494-553 行追加一条isMeta:true的 assistant 引用消息说明本会话只含原对话的后四分之一早期上下文已被移除并附上原会话 ID 与文件路径其parentUuid指向克隆文件中真实存在的最后一个消息 UUID特意避开leafUuid向~/.claude/history.jsonl追加一条新会话记录display文本取保留部分第一条有内容的用户消息扫描时跳过无content字段的queue-operation并加上[QUARTER-CLONE timestamp]前缀时间戳为毫秒级macOS 与 Linux 分别处理touch新文件确保它出现在claude -r列表顶部。测试如何验证 quarter 行为仓库自带完整测试套件 scripts/test-half-clone.sh它构造 mock 会话并断言克隆输出。与 quarter 模式直接相关的用例用例验证内容test_quarter_eight_messages8 条消息4 条干净用户消息时跳过 3 条、保留 1 条产物为 marker(1) 保留(2) reference(1) 4 行且保留的必须是最后的User message 7test_quarter_tag克隆文件与 history.jsonl 中都出现[QUARTER-CLONE timestamp]标记test_quarter_token_division400/800/1200 的 token 计数除以 4 后变为 100/200/300test_quarter_minimum_messages4 条消息2 条干净用户消息时 quarter 模式仍能工作跳过 1 条、保留 1 条这些测试通过HOME$TEST_DIR覆盖环境变量把~/.claude隔离到临时目录不会污染真实数据——你自己验证脚本时可以直接运行bash scripts/test-half-clone.sh全部用例通过后退出码为 0。此外测试还覆盖了 half 模式的 token 整除回归保护、double-tagging对已带标记的会话再次克隆时两个标记都会保留、thinking 块剥离、progress 嵌套type:user不计入干净消息、session 配置行剥离等行为这些同样作用于 quarter 模式。安装与配置方式一手动 symlink按仓库 README 的 Tip 21 说明将脚本和两个技能目录链接到~/.claude即可路径替换为你的仓库位置ln -s /path/to/this/repo/scripts/half-clone-conversation.sh ~/.claude/scripts/half-clone-conversation.sh ln -s /path/to/this/repo/skills/half-clone ~/.claude/skills/half-clone ln -s /path/to/this/repo/skills/quarter-clone ~/.claude/skills/quarter-clone脚本定位命令find ~/.claude -name half-clone-conversation.sh的设计正是为兼容这种手动安装方式。方式二安装 dx 插件无需 symlinkquarter-clone 技能已随 dx 插件打包见 README 中的/dx:quarter-clone条目claude plugin marketplace add ykdojo/claude-code-tips claude plugin install dxykdojo安装后技能以/dx:quarter-clone形式可用。推荐权限克隆脚本需要读取~/.claude会话文件与 history.jsonl。为避免在任何项目下触发权限确认可在全局~/.claude/settings.json中添加{ permissions: { allow: [Read(~/.claude)] } }仓库的 scripts/setup.sh 一键安装脚本也会自动追加这条权限第 5 项连同 dx 插件、状态栏、别名等一起配置。何时用 quarter 而不是 half从源码看两者是同一机制的不同档位half 的KEEP_DENOM2、quarter 的KEEP_DENOM4。选哪一档取决于会话长度与你的目标会话比较长但还能接受用 half 保留后一半会话已经非常长、或者你只需要最后的收尾工作用 quarter 保留最后四分之一裁剪更狠、释放更多上下文。README 的建议是quarter useful when even half is too much当连一半都嫌多时用四分之一。进阶与 check-context 钩子联动实现自动瘦身仓库还提供了 scripts/check-context.sh这是一个Stop钩子每次 Claude 响应后计算上下文用量超过 85%max_context200000前提下时返回block决策并提示运行 half-clone让新 Agent 在裁剪后的会话中继续。README 指出该方案要求先在/config中关闭 Auto-compact否则模型可能先触发自动压缩、钩子来不及生效其相对自动压缩的优势是确定性、快速、保留真实消息原文而非摘要。若把钩子提示改成 quarter-clone 指令即可实现上下文告急时自动裁掉四分之三的更激进策略。同样在 README 中强调原生/compact会改写历史而克隆方案保留最近消息原文二者取舍取决于你是否需要保留逐字记录。注意事项与最佳实践会话 ID 是 UUID脚本会校验格式8-4-4-4-12十六进制格式错误会直接报错退出项目路径来自 history务必使用history.jsonl中的project字段而不是pwd否则find_conversation_file定位不到会话文件脚本也会列出~/.claude/projects下可用的会话作为提示消息树完整性裁剪必然产生结构上的断头脚本通过 marker 消息、parentUuid 重映射、孤儿 tool_result 容忍来处理克隆后如遇到极端异常仍可以依赖引用消息回溯原会话原会话文件不会被删除或修改token 计数被整除只是近似divide_number是对保留消息中记录值的按比例缩放用于避免用量虚高精确用量请以恢复后的/context或实际账单为准先预览再执行--preview不写任何文件正式--quarter前务必先预览核对首尾消息确认 session ID 无误。结语quarter-clone是 claude-code-tips 项目中一套轻量、确定性的上下文管理方案技能层给出 5 步操作指令脚本层用纯 Bash 完成消息过滤、结构修复与元数据更新测试层用 17 个用例含 4 个 quarter 专项验证行为。当长会话让 Claude Code 越跑越重时先/compact或先克隆取决于你是否需要保留原文需要原文时half-clone-conversation.sh --quarter就是一条把上下文压缩到四分之一、同时保住最近工作的捷径。赞分享AI 技能教程开发工具【免费下载链接】claude-code-tips45 tips for getting the most out of Claude Code, from basics to advanced - includes a custom status line script and Claude Code running itself in a container. Also includes the dx plugin: skills for everyday dev workflows.项目地址https://gitcode.com/gh_mirrors/cl/claude-code-tips点击查看免费下载相关推荐Claude Code Doctor 技能深度解析system_prompts_leaks 中的环境健康检查、瘦身与权限治理全案Claude Code Doctor 技能深度解析system_prompts_leaks 中的环境健康检查、瘦身与权限治理全案 本仓库system_pro文档知识库Claude Code 上下文压缩后的技能恢复机制system-reminder-previously-invoked-skills 深度解析Claude Code 上下文压缩后的技能恢复机制system reminder previously invoked skills 深度解析 导读 本文围绕文档提示工程人工智能YOLOv5模型瘦身实战三大轻量化技术深度解析YOLOv5模型瘦身实战三大轻量化技术深度解析 YOLOv5作为Ultralytics YOLOv8的前身是一个用于目标检测、图像分割和图像分类任务的先进模人工智能深度学习计算机视觉预训练微调上一篇猫抓浏览器扩展解锁网页资源下载的终极指南下一篇如何快速获取网络资源开源嗅探工具的终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Suricata DHCP 时间类检测关键字(dhcp.leasetime / dhcp.rebinding_time / dhcp.renewal_time)使用与原理详解

Suricata DHCP 时间类检测关键字(dhcp.leasetime / dhcp.rebinding_time / dhcp.renewal_time)使用与原理详解

网络安全 【免费下载链接】suricata Suricata is a network Intrusion Detection System, Intrusion Prevention System and Network Security Monitoring engine developed by the OISF and the Suricata community. 项目地址: https://gitcode.com/gh_mirrors/su/…

2026/10/9 2:09:24 阅读更多 →
用本地LLM+Captum,让时间序列模型的预测结果自动“说人话”

用本地LLM+Captum,让时间序列模型的预测结果自动“说人话”

做时间序列预测的工程师,几乎都遇到过同一个场景:模型明明把下一周销量预测准了,业务负责人却追着问“为什么这周涨了 20%?”。你打开 Notebook 算了一堆 SHAP 值,截个图发过去,对方看不懂,你自…

2026/10/9 2:09:24 阅读更多 →
ESP32-C3与合宙Air6208选型对比:架构、功耗与量产成本

ESP32-C3与合宙Air6208选型对比:架构、功耗与量产成本

/* 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 2:09:24 阅读更多 →

最新新闻

Drawnix 私有白板:3条命令在内网跑起开源白板

Drawnix 私有白板:3条命令在内网跑起开源白板

Drawnix 私有白板:3条命令在内网跑起开源白板 【免费下载链接】drawnix 开源白板工具(SaaS),一体化白板,包含思维导图、流程图、自由画等。All in one open-source whiteboard tool with mind, flowchart, freehand an…

2026/10/9 2:38:40 阅读更多 →
柴油PHEV的热管理系统

柴油PHEV的热管理系统

一、高温回路二、冷媒回路三、低温回路四、整个回路

2026/10/9 2:38:40 阅读更多 →
Zabbix 官方模板指南:使用 SNMP 监控 MikroTik hEX PoE 路由器(含宏、触发器与 LLD 深入解析)

Zabbix 官方模板指南:使用 SNMP 监控 MikroTik hEX PoE 路由器(含宏、触发器与 LLD 深入解析)

指标监控可观测性告警运维 【免费下载链接】zabbix Real-time monitoring of IT components and services, such as networks, servers, VMs, applications and the cloud. 项目地址: https://gitcode.com/gh_mirrors/zabbix2/zabbix 点击查看 免费下载 导读 本文…

2026/10/9 2:38:40 阅读更多 →
PowerToys 安装与排错清单:5 步装好,出问题按三级修

PowerToys 安装与排错清单:5 步装好,出问题按三级修

PowerToys 安装与排错清单:5 步装好,出问题按三级修 【免费下载链接】PowerToys Microsoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows 项目地址: https://gitcode.com/GitHub_Trending/po/…

2026/10/9 2:38:40 阅读更多 →
Windows与Office激活全攻略:三步方案与避坑指南

Windows与Office激活全攻略:三步方案与避坑指南

1. 先搞清楚这套方案到底在解决什么问题1.1 激活这件事,为什么总是反复折腾但凡自己装过系统、给同事修过电脑、帮朋友攒过机器的人,大概率都遇到过同一个场景:系统装完,右下角一行小字提示“激活 Windows”,Office 打…

2026/10/9 2:38:40 阅读更多 →
【Flutter入门练中学】第2课:布局系统

【Flutter入门练中学】第2课:布局系统

目标理解 Flutter 布局核心口诀:父传约束,子定尺寸,父定位置。分清 Row / Column 的主轴与交叉轴,掌握 mainAxisAlignment 和 crossAxisAlignment。掌握 Container、Padding、SizedBox、Expanded、Spacer 的用途。能组合实…

2026/10/9 2:37:40 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 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/8 21:13:17 阅读更多 →
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/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练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/7 13:34:55 阅读更多 →