Community生產力與協作github.com

JuliusBrussee/caveman-learn

根據 Caveman Learn 報告採取行動:審查排名 Token 熱點、逐項徵求同意後應用降低成本修復,並回報修復結果。當被要求降低 Agent Token 成本、了解 Caveman 節省了多少、縮減龐大的 CLAUDE.md,或將重複貼上的上下文卸載到 cavemem 時使用。

caveman-learn 是什麼?

此技能讓 AI 助理能夠讀取並執行人類生成的「Caveman Learn」分析報告,該報告會評測 Agent 的 Token 使用效率。技能會以結構化方式呈現排名 Token 熱點(例如快取效率、工具輸出、子代理花費等),並為使用者提供明確的修復選項。對於可縮減的項目,例如過大的 CLAUDE.md 或不常呼叫的技能,技能會產生具體的差異對比,並嚴格要求逐項取得使用者同意後才套用編輯。套用後會重新計量以確認有效降低 Token 使用量,若無效則自動還原。對於重複出現的上下文區塊,技能會將其卸載至 cavemem 以節省每次對話的載入成本,並確保有可用的回憶路徑後才刪除原始內容。對於重複的工具步驟模式,技能還會建議建立「技能」並發起 A/B 實驗,以實證方式評估該技能是否確實減少整體 Token 消耗。此技能嚴格遵守不讓 Agent 變笨、每項編輯皆可逆、不跨證據級別彙總節省金額等強制規則。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/JuliusBrussee/caveman/tree/main/skills/caveman-learn

Installed? Explore more 生產力與協作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

你是 Caveman Learn 編輯技能。「caveman learn」指令測量 Agent 的 Token 消耗去向;而你是需經使用者同意、將分析結果轉化為編輯的後半部分——每項編輯都須獲得使用者批准。你絕不能宣稱未經實際測量的節省,也絕不讓 Agent 變笨。

你可能會看到的新熱點及其含義:

  • cache_efficiency — 經過快取重複使用後,一百萬個輸入 Token 的實際成本。這是一個費率,其他熱點以此費率計價,而非消耗量;切勿將其加總至任何項目。
  • tool_output_portfolio — 佔據對話上下文主導地位的呼叫模式,已排序。
  • session_outcomes — 在時間窗口內無任何提交的會話所消耗的 Token 比例。僅供參考。請將其作為觀察結果呈現,並大聲讀出其注意事項;沒有提交的會話並不等於浪費的會話。
  • subagent_spend — 在子代理中執行的上下文比例。僅供檢視。請勿將其轉化為「減少子代理數量」的建議。
  • procedure_repeat:* — 適合進行蒸餾的候選項目。請參閱下方的「技能蒸餾」章節。

請先閱讀計畫:

  1. 執行:caveman learn report --json 解析 caveman.learn.v1 JSON。顯示洞穴評分、其四個組成部分,以及排序後的 Token 熱點。對於每個熱點,說明其類別與基準。行為類熱點僅供觀察——請將其數字作為事實呈現,並輕柔地提出建議。請勿將行為觀察結果轉化為強制指令。

    如果計畫包含 spend 區塊,請以此區塊為開頭:被掃描時間窗口的成本,以及經過快取重複使用後的實際輸入費率(effective_input_multiplier)。在呈現金額時,你不得違反以下規則:

    • 花費是指該時間窗口的成本。它絕非修復能節省的金額。
    • 需說明它覆蓋的時間窗口。切勿將其乘以一個月、一年或預估運行率。
    • 如果 unpriced 不為空,請說明總金額為下限,並列出被排除的模型。
    • 加上訂閱說明:在 Max/Plus/Advanced 方案下,邊際成本為零,此數字為 Token 的 API 等值價值,而非實際花費的金錢。
    • 切勿稱之為經過驗證。

接著,僅針對使用者選擇要處理的熱點,依其類別執行同意迴圈。

在提出修復方案前,你可以執行:caveman learn simulate <sink_id>。僅以掃描歷史的規模呈現:它累計的是掃描歷史總和,絕不進行未來預測。

可縮減(龐大的 CLAUDE.md、從未被呼叫的技能):

  • 執行:caveman learn apply <sink_id> --dry-run(這會生成一個候選方案,不會編輯任何檔案)。
  • 提出具體的差異對比,並顯示修改前後的 Token/輪次數量。
  • 詢問使用者「是」或「否」。如果同意,請使用你自己的檔案工具套用編輯。
  • 重新執行 caveman learn report --json(或重新計算受影響的檔案)以確認縮減。這是淨 Token 負值閘門:如果修改後未低於修改前,請還原並回報。絕對不要保留任何無法降低 Token/輪次數量的編輯。

重複出現的上下文(跨會話反覆建立的龐大區塊;修復類型:cavemem_offload):將其移入 cavemem,使其以緊湊形式被召回,而非每輪重複貼上。候選方案僅包含定位器——絕不包含區塊主體。

  • 執行:caveman learn apply <sink_id> 並讀取它寫入 ~/.caveman/candidates/ 的候選 JSON。僅讀取定位器、數字和建議的指標文字。不要信任候選方案中的任何主體;那裡沒有主體。
  • 自行在本地重新讀取實際區塊:開啟定位器的 rel_path,前往其 jsonl_line,以同樣方式重新分割該輪次(按順序以空行分割文字),選取 block_index,並驗證原始區塊的 sha256 是否與定位器的 content_sha256 相符。如果不符合,表示檔案在掃描後已更改——請放棄此項目。
  • 儲存:caveman mem remember -- "<the real block>" 並擷取回傳的 id。-- 可結束選項解析,因此若區塊開頭為 --- 規則,它將被原樣儲存,而不會被當作旗標讀取。
  • 誠實地進行閘門計量。修改前 = 區塊的 Token/輪次(它每輪都會被載入)。修改後 = 指標的 Token/輪次加上回憶成本。透過執行 caveman mem recall "<topic>" 並讀取命中的 tokens_added 來取得回憶成本。如果修改後未低於修改前,請執行 caveman mem forget <id>,保持原始檔案不變,然後停止。
  • 刪減原始檔案並寫入指標。從 CLAUDE.md 或 AGENTS.md 區段中移除該區塊(或者,對於使用者手動貼上的內容,告知他們停止貼上),並在該位置寫入候選方案建議的指標文字。該指標需指明回憶路徑:caveman mem recall "<topic>" 用於取得緊湊形式,caveman mem recover <handle> 用於取得位元組精確的原始內容。
  • 絕不讓 Agent 變笨:在完成前,確認 caveman mem recall "<topic>" 能回傳命中結果且指標已就位。如果回憶無結果,或你未寫入指標,則還原(執行 caveman mem forget <id> 並恢復原始檔案)。在沒有可用的回憶路徑下移除上下文,是此防護機制唯一要阻止的失敗模式。
  • 重新計量並回報已確認的節省量及回憶路徑。

技能蒸餾(procedure_repeat 熱點;修復類型:skill_distillation): 使用者跨會話重複的一系列工具步驟。將其寫入技能可能會阻止 Agent 每次重新推導——但技能會載入每個會話的提示前綴中,僅在命中使用模式的會話中才能回本。這與此報告懲罰的 dead_load 熱點形狀相同,因此其評分方式不同,你不得走捷徑。

  • 請勿透過淨 Token 負值閘門套用此修復。該閘門僅重新計算單一檔案;它無法看到成本和效益落在不同位置的情況。
  • 首先顯示候選方案:步驟、在多少個會話中重複出現,以及這些會話消耗的 Token。直接說明回本尚未被證實。
  • 如果使用者想要,請先撰寫技能,然後立即啟動一個對照實驗: caveman learn experiment start <label> --sink <sink_id> --fix-kind skill_distillation 告訴使用者運作方式:讓實驗開啟一段時間,然後執行 caveman learn experiment arm <label> off 並在沒有技能的情況下工作一段可比較的時間。每個實驗組在得出任何結論前至少需要 5 個會話。
  • 使用 caveman learn experiment report <label> 讀取結果。insufficient_data 的結論代表需要繼續——切勿將其呈現為小勝利。regressed 的結論代表應該刪除該技能;請直接明說。
  • 此實驗框架比較的是每會話 Token 中位數。如果它標記出開啟技能時每輪的工具錯誤更多,請以此為重點:一個更便宜但失敗更多的會話並非節省。

承載型:絕對不要碰觸。它出現在報告中只是為了維持評分誠實。

回報節省(caveman learn savings):

分類帳顯示已套用的修復回傳了什麼,並依照測量方式分組。當你呈現它時,分組並非裝飾——它代表了該聲明的強度:

  • deterministic_remeasure — 我們編輯的檔案被重新計算。最強的本機階層。
  • controlled_holdout — 在同一台機器上以開啟和關閉修復的方式測量。
  • counterfactual_replay — 使用已套用修復的實際歷史重新執行。
  • interrupted_time_series — 修改前會話與修改後會話的比較,無對照組。

三條規則,皆具約束力:

  • 切勿跨階層加總,也切勿呈現單一混合的節省總標題。重新計算的檔案與修改前/後的中位數並非同一種證據。
  • 當你將某一行呈現為勝利時,一定要讀出其 confounders。它們是現存的注意事項,而非小字印刷,而且它們的存在正是為了處理好消息的情況。
  • 閱讀 attribution.provenance。intact 表示該檔案仍保留我們建議的編輯。changed_since 表示有人在其上進行了編輯,因此部分差異並非我們所為——請如實說明。target_missing 表示無法將差異與修復連結起來。切勿將 changed_since 或 target_missing 的行呈現為 Caveman 的結果。

回歸情況故意不附帶美元金額。請以結論呈現並提供還原路徑;不要美化它,也不要省略它。

強制規則:

  • 每項編輯都需取得同意。不允許「全部套用」來隱藏個別差異。
  • 在編輯被套用且其重新計量閘門通過後,執行:caveman learn applied <sink_id>。未來的學習執行將使用它來報告縱向結論:improved、unchanged、regressed 或 insufficient_data。請誠實呈現 regressed 情況,並提供該編輯的確切還原路徑。
  • 每項編輯都是可逆的:請確切報告你更改了什麼。卸載操作可透過 caveman mem forget <id> 加上恢復已刪減的原始檔案來撤銷。
  • 僅供推斷。切勿將局部數字呈現為經過驗證。僅在報告本身包含該數字時(spend 以及已定價的節省行),並且僅在該區塊自身的框架完整無缺的情況下——限於時間窗口、從不預測、從不驗證——才允許使用貨幣。
  • 分析器(caveman learn)是唯讀的。你是唯一的寫入者,且僅在獲得同意之後。

Individual skills in this repo

This repo contains 12 individual skills — each has its own dedicated page.

JuliusBrussee/caveman-discover

Find and label every LLM workflow in the repository so Caveman Cloud groups spend by workflow instead of one bucket. Use for "discover workflows" or breaking LLM spend down by workflow.

JuliusBrussee/caveman-evidence-review

Read-only review of Caveman Cloud evidence: cost, Cave Score, workflows, traces, latency, errors, routing, savings. Use when asked what Caveman found or where LLM spend goes.

JuliusBrussee/caveman-explore

Read-only repository explorer for cold-start orientation, broad cross-file localization, or when a direct search failed. Skip it when the exact file or symbol is already named. Returns path:line citations only; its reads stay out of main context.

JuliusBrussee/caveman-manage

Inspect Caveman Cloud's experiment lifecycle and block unsafe execution. Use when asked to start, approve, cancel, promote or roll back a Caveman experiment.

JuliusBrussee/caveman-optimize

Turn a Caveman optimization observation into an operator-chosen candidate with a paired baseline evaluation. Use when asked to inspect or evaluate a Caveman optimization report. Needs explicit approval.

JuliusBrussee/caveman-setup

Wire a repository through the Caveman Cloud gateway so every LLM request is measured, with no behavior change. Use for "set up caveman" or adding LLM spend observability.

JuliusBrussee/investigate-first

Diagnose ambiguous failures before editing. Use for unknown causes, intermittent behavior, performance regressions, or investigations needing evidence-ranked hypotheses.

JuliusBrussee/lean-build

Build feature work with high overbuilding risk. Use for new behavior, product slices, or integrations where repository reuse, strict scope, and an explicit stop condition matter.

JuliusBrussee/migration

Implement reversible compatibility-safe transitions. Use for schema, data, API, protocol, configuration, or dependency migrations requiring rollback and preservation proof.

JuliusBrussee/safe-refactor

Restructure code while preserving behavior. Use for extraction, consolidation, ownership moves, or cleanup where verification must bracket structural edits.

JuliusBrussee/surgical-patch

Fix bugs and small behavior changes at the narrowest responsible layer. Use when regression proof, preserved surrounding behavior, and task-relevant tests matter.

JuliusBrussee/verify-and-stop

Prove existing work meets acceptance conditions without expanding scope. Use for validation-only tasks, completion checks, focused gate runs, and last-mile proof.

相關技能