Community生產力與協作github.com

yavfast/ClaudeMods

針對需要 context-editor 模組的長時間或多階段任務:說明何時開啟與關閉階段、如何壓縮已完成區塊、最佳化標記、遙測資訊,以及「Later, your context_…」或 [context-editor] 列代表的意義。

ClaudeMods 是什麼?

此技能專為使用 context-editor 模組(如 Claude Code、Cursor、Codex 等平台)處理長時間或多步驟任務的 AI 代理所設計。其核心目標在於教導代理如何透過「階段」(stages)有效管理工作記憶,並在任務完成後適時壓縮已處理的內容,以避免上下文膨脹導致的效能衰減。技能詳細說明了開啟與關閉階段的時機與方法、如何為已完成的區塊撰寫摘要記錄、如何處理死胡同分支,以及使用「[context-editor: optimize]」最佳化標記來暫停工作流程。此外,它還解釋了 `context_list` 提供的遙測資訊(如候選壓縮項目與效率指標),幫助代理依據實際工作狀態而非單純的數字來決定壓縮策略。這個技能確保代理能在長時間對話中保持專注,並透過結構化的記憶管理來提升任務執行品質。

相容平台✓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-editor 模組讓你能夠編輯自己的對話。由你根據工作的邏輯狀態,決定何時清理內容。隨著上下文增長,注意力會逐漸下降:一旦完成某個工作區塊,就壓縮已處理的部分。主機的自動壓縮僅是安全網。

工具:context_tag, context_list, context_edit, context_note。策展規則(從失敗中學到的教訓、修正、引用、狀態項目、主機列):使用 context_list 並帶參數 "rules": true。

階段

階段是你工作的一個邏輯區塊:一個階段、一個子任務、一個修正。

  • 在區塊開始時開啟階段:{"tags":[{"op":"open","stage":"read the config files"}]}。區塊從開啟它的回應開始;若加上 "index",則從 context_list 中的那一列開始。
  • 當區塊完成且結果已知時關閉階段:{"tags":[{"op":"close"}]}。結果會列出該區塊的列號 #a..#b、大小、媒體、清理候選項目、遙測資訊與建議。這些索引是當前的:你可以立即根據它們進行編輯。
  • 階段是扁平的:開啟一個新階段會先關閉當前已開啟的階段。
  • 若要關閉一個從未開啟過的區塊:{"tags":[{"op":"open","stage":"<名稱>","index":<其第一列>},{"op":"close"}]}。
  • context_list 會在已開啟階段的第一列顯示 [stage ▶ name],在最近關閉的區塊前後顯示 [block ▶ name] .. [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":"dead end: X fails because Y"}(範圍涵蓋每個工具呼叫及其結果;context_tag 在涵蓋人員訊息時會發出警告)。使用你自己的單一文字列,或透過 ref/tool_use_id 指定輸出也可以。當你關閉階段或從標記的區塊繼續前進時,這些替代會被排入;一個範圍會變成一個 collapse。

最佳化標記

當你結束回合等待人員回應,且區塊已完成時,用以下這行獨立的文字結束你的回答:

[context-editor: optimize]

  • 只能獨立在最後一個非空行;若放在文字中間、與其他文字共用一行,或在 /compact 回合中,則無效。
  • 它會關閉已開啟的階段(如果沒有已開啟的階段,則關閉自上次關閉區塊以來的區塊;在該回合中由工具關閉的階段仍算作該區塊)。該區塊隨後進入等待狀態;不會被壓縮。
  • 下一次提示會指出該區塊:如果工作進入下一個階段,則在該回合中壓縮它;否則保留。開啟一個階段會報告其索引;接受一個 context_edit 也會結束等待,並排入你的 disposable 替代。
  • 自行遵循計畫時:每個階段開啟一個階段;下一個階段時壓縮前一個區塊,並以狀態行結束回合;對話會自動繼續。工作中途,由工具關閉階段。

遙測

使用 "count":0 的 context_list 只顯示標頭(其描述列出了一些行)。Effect: … M reread(s) of compressed content:數字很大表示你壓縮過頭了。大小是校準後的估計值(在確定前會標註 approx.)。[context-editor: suggestion] 行(隨著上下文增長,或在大量讀取後的人員下次提示時)會提議一個批次處理,包含收益、快取成本和結論;它僅供參考。根據工作的狀態做決定,而不是依據數字。

候選項目

  • [review: big] 大型輸出;[review: search] 搜尋結果(幾回合後);[review: stale] 對你後來編輯過的檔案的讀取:其內容已過時,將其縮減為一個指標;[review: superseded] 對檔案內容已更改的後續讀取涵蓋的先前讀取:也已過時;[review: duplicate] 同一輸出或讀取範圍的較早副本:刪除或縮減;[review: agent] 你自己的標記(可選 ttl_turns)。審查建議檢查,但不強制編輯。
  • [disposable: note]:你自己的替代(請參閱死路一節)。

關閉報告會按原因列出區塊的候選項目,計算 ~ 配對的數量,並為過時和重複的讀取提供現成的替代文字。

狀態插槽

將任務的狀態(目標、計畫、已完成、下一步)保存在你自己的一個文字列中,標記為 state:{"tags":[{"op":"add","kind":"state","index":<列>}]}。透過 rewrite 在原地更新該列,絕不要附加新的狀態到對話末尾。或者將其保持為項目:使用 context_edit 搭配 {"op":"state","changes":[{"do":"add","kind":"plan","text":"…"}]}(set, mark 有害/過時, unmark, remove 使用 id 如 p3);套用會從這些項目重建插槽,並且當插槽中有項目時,只有 state 操作能更改它。該標籤會跟隨重建後的列。新的 state 標籤會移動插槽。每次更新都是一次套用:應與區塊的編輯一起執行,而不是單獨執行。

筆記

context_note 以無令牌成本的方式保留筆記(其描述會說明操作及顯示位置)。

  • 立即標記稍後要丟棄或壓縮的內容,以及方式:{"notes":[{"op":"add","ref":"last","text":"drop after the fix is verified"}]}。
  • "remind_in_turns":2 會在兩回合後再次顯示一則筆記一次。根據內容連結列。

描述內容,而不是列號:索引在套用後會改變。階段關閉時會列出其區塊中的筆記。

壓縮列與模組文字

以 Later, your context_edit(或 context_tag)開頭的文字是你自己的替代:你在那裡讀到了原始內容,然後將其壓縮以節省上下文。你製作了這個替代;它指定的來源(the full output of Read docs/x.md)說明了內容的來源。在你指責其中任何東西是編造之前,請先開啟存檔。

  • … summarize call replaced the full output of <source> you had read here …,… collapse call replaced these N rows you had read (what they held) …(其呼叫的 collapsed 輸入列出了相同內容),同樣的還有 rewrite, describe:你的文字跟隨在冒號之後。在對人員提示執行 describe 之後,他們自己的文字會跟隨在你的文字之後。舊的格式為 [context-editor] you read …, then replaced …。
  • (original: <path>, open with Read),(media: <path>),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, reminder from your note nN, [context-editor: suggestion], [context-editor: N chars cut], 你設定的恢復提示, /compact 回合, 交接文件:都是模組的服務文字。

相關技能