Community生产力与协作github.com

yavfast/ClaudeMods

在长时间或多阶段任务中打开此技能,配合上下文编辑器模块使用:了解何时打开和关闭阶段、如何压缩已完成块、优化标记、遥测信息以及“Later, your context_…”或“[context-editor]”行的含义。

ClaudeMods 是什么?

此技能(yavfast/ClaudeMods)专为使用上下文编辑器模块(context-editor mod)的用户设计,帮助他们在长时间、多步骤的AI代理工作流中高效管理对话上下文。它提供了系统化的策略来组织任务阶段——通过`context_tag`工具打开和关闭逻辑工作块,并在块完成后使用`context_edit`进行压缩,以减少令牌消耗并维持注意力质量。 该技能支持Claude Code等平台,通过阶段(stage)和块(block)的平面结构,结合遥测数据(如`context_list`中的大小估算和重读次数),指导用户何时以及如何压缩。它还包含了弃用分支(dead ends)的标记、优化标记(`[context-editor: optimize]`)的自动操作、状态槽(state slot)的维护、零成本笔记(notes)的添加以及修改文本行的识别。 使用此技能可以显著降低大上下文场景下的性能退化,确保关键信息(如决策依据、已验证事实、变更制品)不被丢失,同时避免因过度压缩导致的信息损失。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/yavfast/ClaudeMods/tree/HEAD/mods/context-editor/skills/context-stages

Installed? Explore more 生产力与协作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

分阶段管理你的上下文

上下文编辑器模块允许你编辑自己的对话。根据工作的逻辑状态决定何时清理。随着上下文增长,注意力会下降:一旦某部分工作完成,就压缩已处理的内容。主机的自动压缩只是一个安全网。

工具:context_tag、context_list、context_edit、context_note。整理规则(来自失败的经验、修正、引用、状态项、主机行):使用 context_list 并设置 "rules": true。

阶段

阶段是你工作的一个逻辑块:一个阶段、一个子任务、一个修复。

  • 在块开始时打开它:{"tags":[{"op":"open","stage":"读取配置文件"}]}。块从打开它的响应开始;如果带有 "index",则从 context_list 中该行开始。
  • 当块完成且结果已知时关闭它:{"tags":[{"op":"close"}]}。结果会列出该块的行号范围 #a..#b、大小和媒体、清理候选、遥测信息和建议。它的索引是当前的:你可以立即根据它们进行编辑。
  • 阶段是扁平的:打开一个阶段会先关闭当前打开的阶段。
  • 要关闭一个你从未打开过的块:{"tags":[{"op":"open","stage":"<名称>","index":<它的第一行>},{"op":"close"}]}。
  • context_list 在打开阶段的第一个行上显示 [stage ▶ 名称],在最近关闭的块周围显示 [block ▶ 名称] .. [block end]。

压缩块

关闭后,整体审查该块,并为其中已处理或多余的内容排队一个 context_edit:你已经使用过的工具输出、重复和过时的读取、死胡同、你已经查看过的媒体(如果任务允许,可提供描述:对工具结果使用 summarize,对图像、文档或粘贴在用户提示中的文本使用 describe,用户的打字内容保持原样;主机添加到该提示中的附件,例如来自 @path 的文件内容和提醒,会随之一起处理,因此如果需要请重新读取文件)。如果不需要压缩,则不排队任何内容。

在处理过的行位置写入一个阶段记录,例如作为 collapse 的摘要:

  • 阶段的目标;
  • 决策,包括理由、用户背后的逐字措辞以及为什么拒绝其他选项;
  • 已验证的事实及其来源(路径、行号、版本、URL);
  • 变更的制品(文件、提交、设置);
  • 开放性问题。

在 context_list 中标记为 ~ 的对(Read、Grep、Glob)是可重现的:将它们缩减为一个指针(内容、位置、找到的内容;如果需要,稍后重新读取)。其他所有内容都需要一个仔细的摘要或保持不变:实时探测、子代理报告、网络内容。用户的消息,包括你对问题的回答(AskUserQuestion),在此会话中保持原样:context_edit 和 context_tag 拒绝覆盖它们的编辑;将范围分割在它们周围。

通常保留仍然有效的规则和技能以及你下一步需要的结论。[pin] 目标不能被编辑;固定标记由你设置和移除(模块只固定交接文档或种子摘要)。

编辑在轮到结束时应用:以一行状态结束,会话会自动恢复(context_edit 给出选项)。一个应用会重写一次提示缓存:将一组的编辑批处理为一次调用。"keep_cache": true 会在轮结束时保持缓存直到最早的编辑,如果该编辑在最近约 20 个位置内(Cache: 行)。你的 context_* 调用会离开对话;标签和笔记保留。

死胡同

当你放弃一个分支时,立即标记它:用一个笔记标记跨度 disposable,{"op":"add","kind":"disposable","index":<第一行>,"to":<最后一行>,"note":"死胡同:X 因为 Y 失败"}(范围包含每个工具调用及其结果;context_tag 在覆盖用户消息时会发出警告)。使用你的单个文本行或通过 ref/tool_use_id 的输出也可以。当你关闭阶段或从一个已标记块继续时,替换内容会被排队;一个范围变成一个 collapse。

优化标记

当你结束轮到用户且块已完成时,用以下单独一行结束你的回答:

[context-editor: optimize]

  • 仅作为最后非空行单独存在;在文本中间、共享一行或在 /compact 轮中则无效。
  • 它会关闭打开的阶段(如果没有:则关闭自上一个关闭块以来的块;在该轮中由工具关闭的阶段保持为块)。该块随后等待;不进行任何压缩。
  • 下一个提示会命名该块:如果工作进入下一阶段,则在该轮中压缩它,否则保留它。打开一个阶段会用索引报告它;接受 context_edit 会结束等待并排队你的 disposable 替换。
  • 自行遵循计划:为每个阶段打开一个阶段;进入下一个阶段时压缩上一个块,并以状态行结束轮;会话会恢复。工作中途,由工具关闭阶段。

遥测

context_list 使用 "count":0 仅给出头部(其描述列出了各行)。效果:… M 次压缩内容的重读:次数多意味着你压缩过多。大小是校准后的估算值(在已知之前为 approx.)。[context-editor: 建议] 行(随着上下文增长,或在用户大量读取后的下一个提示中)会提出一个批处理,包括收益、缓存成本和结论;它仅提供信息。根据工作状态决定,而不是数字。

候选

  • [review: big] 大输出;[review: search] 搜索结果(几轮后);[review: stale] 对后来编辑过的文件的读取:其内容已过时,将其缩减为指针;[review: superseded] 对后来读取显示内容已更改的文件的读取:也已过时;[review: duplicate] 相同输出或读取范围的早期副本:删除或缩减它;[review: agent] 你自己的标记(可选的 ttl_turns)。审阅意在建议查看,而非编辑。
  • [disposable: 笔记]:你自己的替换(参见死胡同)。

关闭报告按原因列出块的候选,计数其 ~ 对,并为过时和重复的读取提供现成的替换文本。

状态槽

将任务状态(目标、计划、已完成、下一步)保存在你标记为 state 的单个文本行中:{"tags":[{"op":"add","kind":"state","index":<行>}]}。通过 rewrite 更新该行,切勿通过在末尾追加新状态。或者将其保存为项目:使用 context_edit 及 {"op":"state","changes":[{"do":"add","kind":"plan","text":"…"}]}(set、mark 有害/过时、unmark、remove by id 例如 p3);应用会根据它们重建槽,并且当槽包含项目时,只有 state 操作可以更改它。标签会跟随重建的行。一个新的 state 标签会移动槽。每次更新都是一次应用:应与块的一组编辑一起进行,而不是单独进行。

笔记

context_note 以零令牌成本保留笔记(其描述给出了操作及其显示位置)。

  • 立即标记稍后要丢弃或压缩的内容及其方式:{"notes":[{"op":"add","ref":"last","text":"在修复验证后丢弃"}]}。
  • "remind_in_turns":2 会在两轮后再次提醒一次笔记。通过内容链接行,而不是行号。

关于内容而非行号:索引在应用后会发生更改。阶段关闭会列出其块中的笔记。

压缩行和模块文本

以 Later, your context_edit(或 context_tag)开头的文本是你自己的替换:你在此处阅读了原始内容,然后压缩它以节省上下文。你进行了替换;它命名的来源(Read docs/x.md 的完整输出)表明了其内容的出处。在你认为其中任何内容是编造的之前,请打开存档。

  • … summarize 调用替换了你在此处阅读的 <来源> 的完整输出 …,… collapse 调用替换了这 N 行你阅读的内容(它们包含的内容)…(其调用的 collapsed 输入列出相同内容),同样还有 rewrite、describe:你的文本跟随着冒号。在用户提示的 describe 之后,你自己的文本会跟随着他们的文本。较旧的版本显示 [context-editor] 你阅读了…,然后替换了…。
  • (original: <路径>, open with Read),(media: <路径>),media carried as files:存档。Read 只读你需要的;它会在对话结束时回来。
  • 以 [context-editor 或 context-editor: 开头的文本来自模块,而非用户或工具。context-editor: applied N edit(s): …:应用报告;进行替换的 context_* 调用已被移除,但你在其结果中引用的内容是真实的。一个以 context-editor: 开头的 /compact 行是模块的命令;… repair the resumed conversation …:模块删除了恢复时加载了两次的答案;之前的思考已消失。
  • id cN、来自你的笔记 nN 的提醒、[context-editor: 建议]、[context-editor: N 字符已裁剪]、你设置的恢复提示、/compact 轮、交接文档:模块的服务文本。

相关技能