Lossless Context Mcp

io.github.NORTHTEKDevs由 GitHub 帳號 NORTHTEKDevs 發布v2.0.0更新於 Oct 24, 2026

Agent context flight recorder: restore after compaction, fan-out packs, signed git-bound receipts.

概覽

AI 產生的概覽

針對編碼代理上下文的本地飛行記錄器:歸檔模型看過的檔案版本,讓壓縮後可還原、可打包、可追溯並開立憑據

可以做什麼
無損讀取檔案,支援批次讀取、依符號或行範圍檢視,並可低成本產生檔案結構大綱。檢視並還原壓縮後的會話工作集,依預算截斷並標註磁碟變更。依跨會話讀取歷史匯出確定性的上下文包,供子代理叢集的系統提示使用。追溯模型曾看過某檔案的哪些版本,以及某一時刻上下文中的其他內容。統計會話讀取的 token 與費用,並顯示可見的代理會話及進行中或跨會話的編輯。簽發並驗證 HMAC 簽章、綁定 git 的上下文憑據,說明模型看到了什麼。
適用情境
適合使用 Claude Code、因壓縮遺失工作上下文、執行會重複讀取同一批檔案的子代理叢集,或需要在事故後證明代理實際看過哪些檔案版本的使用者。它是會話內的還原與稽核層,而非跨會話記憶摘要工具。
執行需求
以 npm 套件 lossless-context-mcp 形式透過 stdio 在本機執行,需全域安裝並註冊到助理。init 指令會把鉤子寫入 Claude Code 的設定檔,之後需重新啟動 Claude Code。未宣告帳號、API 金鑰或環境變數;儲存預設位於本機目錄,可用環境變數覆寫。
安裝前請注意
它會把檔案內容歸檔到磁碟並讀取會話紀錄,因此涉及原始碼和助理看過的內容;符合金鑰樣式的檔案及設定的排除規則會被跳過,僅保留路徑與時間戳。鉤子會修改助理設定檔(先備份),並可拒絕編輯操作。憑據使用共用 HMAC 金鑰,不是第三方可驗證的簽章。協調機制僅為建議性質,存在檔案是未經驗證的本機 JSON。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Lossless Context Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

lossless-context-mcp

[CI]

The flight recorder for your agent's context. A persistent, hook-fed ledger of every file version your coding agent was shown — so a compaction can't destroy the working set, a subagent fleet doesn't pay for the same files N times, and you can prove afterward exactly what the model saw.

                      ┌──────────────────────┐  ledger reads ──────▶│                      │──▶ RESTORE   working set survives /compact  (read_file, MCP)    │   flight recorder    │──▶ PACKS     one cache-cached prefix for a fan-out fleet  transcript sweeps ─▶│  (content-addressed  │──▶ RECEIPTS  signed, git-bound "what did it see"  (native Read/Edit)  │   archive on disk)   │──▶ METERING  where the read tokens went, in dollars                      └──────────────────────┘

See it

Compaction destroys your agent's working set. Not anymore — sweep at PreCompact, manifest injected after, blind edit blocked, working set restored, edit allowed:

[restore demo]

Two agents, one file — air traffic control. The second agent is stopped mid-clobber, with the culprit named:

[coordination demo]

Every line in these recordings is genuine output from the shipped code — the demos are generated by docs/demo/make-demo.mjs, which drives the real hooks and server and renders what they actually said. Re-run it yourself.

1. Restore: compaction can't destroy your working set anymore

When Claude Code compacts, roughly two-thirds of a typical context is tool output — mostly file contents — and compaction discards it permanently. The model then flails: re-reading files it half-remembers, or worse, guessing at contents it no longer has (#27242 is the ask, at 80 👍).

The flight recorder closes the loop automatically:

  1. PreCompact — the sweep hook parses the session transcript and archives every file the session touched (native Read/Edit/Write included, not just MCP reads), then writes a ranked working-set manifest. Fast enough to sit on the compaction path — one real 14 MB transcript swept in 361 ms; measure yours: node bench/sweep-bench.mjs <transcript.jsonl>.
  2. SessionStart(compact) — the inject hook puts a compact manifest back into the fresh context: "your working set was these 12 files (edited ones first); restore any of them instead of guessing."
  3. restore_context — re-emits the working set from current disk state, budget-capped, annotating any file that changed since the model last saw it.

Cross-session memory tools (claude-mem and friends) summarize what happened for the next session. This is the complementary, mid-session layer: file-version-exact recovery of what you were just working on.

2. Blind-edit guard: the recorder as an active safety net

The recorder knows exactly which file versions the model has actually seen this context epoch. A PreToolUse hook uses that to stop the two ugliest edit failures before the write lands:

  • Post-compaction guess-edits — the model edits a file it hasn't read since its context was compacted/reset, working from a summary's memory of the content. (The harness's own read-before-edit tracking is not documented to survive compaction, and newer models are allowed to edit unread files at all.) Denied, with a one-line reason the model sees: read it (or restore_context), then retry. Self-healing — costs exactly one extra read.
  • Stale-base edits — the file changed on disk since the model read it (another agent, you, a formatter). Content-hash compared, not mtime-guessed. Denied with the same re-read instruction.

Fail-open by construction: any doubt (unparseable transcript, partial reads, files the model itself just edited, oversized files) → the edit proceeds untouched. Disable anytime with LOSSLESS_GUARD=off.

3. Coordination: air traffic control for concurrent agents

Run two agent sessions on one repo and they clobber each other blind: B edits a file A read ten minutes ago; A edits from its stale copy; the merge is garbage and neither notices. Nothing on the market mediates this locally — but the recorder already knows, per session, what each agent holds and edits. v2 makes that knowledge active:

  • Edit-in-flight detection — when one agent process is allowed an edit, it publishes an intent to a local presence plane (~/.lossless-context/presence/, one file per process, no daemon, no locks). Another agent editing the same file seconds later is denied with the culprit named: "agent session 3f2a91b0 started an edit on this file 12s ago and it may not have landed yet." Covers sibling subagents of the same session too.
  • Cross-session stale-base detection — when another session's landed edit postdates what your session holds and your last contact left no verifiable hash, the edit is denied with a re-read instruction. When the ordinary drift check fires, the reason now names who changed the file.
  • The radar — coordination_status shows every visible agent session, what it's been editing, and which files have cross-session or in-flight activity.

Honest limits: advisory, not locking. Sessions without the hooks are invisible, a same-second race can still slip through, and presence files are unauthenticated local JSON — any local process could fabricate one to cause false denies (structurally never a false allow; presence can only add deny classes). An intent whose edit is then declined at the permission prompt lingers up to LOSSLESS_COORD_INTENT_SECS (90 s) before expiring. It substantially narrows the concurrent-clobber window; it cannot close it, and how much it catches in practice is not yet measured. LOSSLESS_COORD=off disables coordination independently of the guard. (The guard's compaction tracking is session-scoped; only the dedup engine uses the machine-global epoch file, where a cross-session bump merely costs one conservative full re-send.)

4. Packs: stop paying for the same files in every subagent

Fan-outs are where token waste actually lives. Measured across 195 real multi-agent runs: 19.6% of all subagent Read tokens were duplicate reads of identical content by sibling agents (5.18M of 26.4M tokens) — every sibling starts cold and reads the same CLAUDE.md, the same spec, the same core modules.

export_pack ranks the archive's cross-session read history for stable hot files and renders them as one deterministic block for a custom agent-type's system prompt. The block is a stable prefix, so the whole fleet hits the provider prompt cache on it. On a real review fan-out this measured 46.55% cheaper than baseline — and the same pack injected per-task measured 19.6% worse (every sibling cache-writes it), which is why the tool tells you where to put it. Both numbers were measured externally on one real corpus, not by a harness in this repo — exact figures, method, and that caveat are in BENCHMARK.md. Generate the pack once per run and embed it verbatim: ranking follows live read history, so repeated export_pack calls can differ.

5. Blame: what did the agent see when it did that?

context_blame (also a CLI: lossless-context-mcp blame <path>) answers the debugging question every agent incident report wishes it could: for a given file, every content version the model was shown (SHA-256 + git blob SHA-1, first/last seen, capture source, sessions) and what else was in context around a chosen moment. When an agent produces a wrong change, you query the recording instead of arguing with the agent's self-report.

6. Receipts: prove what the model saw, bound to git

Observability vendors capture what your agent read into mutable trace stores. Nobody signs it or binds it to repo identity — and agent self-reports are not evidence (ask anyone whose agent claimed it "verified" something it never read).

context_receipt issues an HMAC-SHA256-signed attestation: every file/view shown, the SHA-256 of every content version, the git blob SHA-1 of each version (so any verifier with a clone can check git cat-file -e <sha1> — was this ever committed?), repo HEAD at issue time, delivery kinds, token totals, and an explicit coverage statement of which capture paths it attests (mcp, and transcript-sweep with include_sweep). By default it signs with the same key file as trust-mcp receipts, so one key verifies a full evidence chain: what the agent saw + what it did.

The honest scope: a receipt attests what passed through the ledger and sweeps — it never claims coverage of unmediated paths, and says so in its own coverage.note.

7. Metering (and the token-saver reality check)

context_stats shows where the session's file-read tokens went — per repo, per file, in dollars, counted with a real tokenizer.

Reality check, kept from earlier versions because it's true: as an intra-session token saver this measures ~0% on real Claude Code transcripts (+0.4% with the never-lose engine; the native file-state cache already ate the opportunity — full data in BENCHMARK.md). The savings that DO exist are cross-agent (packs, above). Read-path dedup remains because it is provably lossless and never negative — not because it will save you much on its own.

Install (two commands)

bash
npm i -g lossless-context-mcplossless-context-mcp init        # wires all hooks into ~/.claude/settings.jsonclaude mcp add lossless-context --scope user -- lossless-context-mcp

init is idempotent (re-run it after upgrades — it updates paths instead of duplicating), backs up your settings file first, refuses to touch a settings file it can't parse, and never removes hooks that aren't its own. --dry-run previews. It wires:

  • sweep-transcript.mjs (PreCompact + SessionEnd) — captures the working set + exact versions; bumps the dedup epoch on PreCompact; never blocks compaction.
  • inject-manifest.mjs (SessionStart, matcher compact) — injects the recovered working-set manifest after a compaction.
  • reset-epoch.mjs (SessionStart) — keeps read dedup lossless across new sessions.
  • guard-edit.mjs (PreToolUse, Edit|Write|MultiEdit) — the blind-edit guard (LOSSLESS_GUARD=off disables without unwiring).

Restart Claude Code after init. Without the hooks everything still works — you just lose automatic native-tool capture, post-compaction injection, and the guard; the ledger then records MCP reads only.

Tools

ToolWhat it does
read_file(path, symbol?, lines?, force_full?)Lossless read: full / unchanged-marker / diff. Optional single-symbol or lines:"40-90" views. Refuses binary files.
read_files(paths[], force_full?)A working set in one call; per-file errors don't fail the batch.
working_set(limit?)Heat-ranked table of what the recorder knows this session (+ last 24h), with staleness vs disk.
restore_context(files?, budget_tokens?)Re-emit the working set after compaction — manifest top-K by default, budget-capped, change-annotated.
export_pack(repo?, top?, budget_tokens?, days?)Deterministic fan-out context pack from cross-session read history, for an agent-type system prompt.
context_blame(path, at?, window_minutes?)Forensics: every version of a file the model was shown, plus co-context around a moment. Also: lossless-context-mcp blame <path> from the shell.
coordination_status()The radar: visible agent sessions, their recent edits, cross-session and in-flight files.
outline(path)Cheap structural map of a file (declarations only).
context_stats()Token/dollar breakdown of this session's reads.
context_receipt(artifact, include_sweep?)Signed, git-bound context receipt with explicit coverage.
verify_context_receipt(receipt, signature)Timing-safe, canonicalized verification.

Privacy & storage

The archive lives at ~/.lossless-context/archive (override: LOSSLESS_CONTEXT_DIR), content-addressed, capped at 512 MiB (LOSSLESS_ARCHIVE_BYTES) with LRU eviction; event logs age out after 30 days (LOSSLESS_EVENTS_DAYS). Nothing ever leaves your machine. Files matching secret patterns (.env*, keys/certs, .ssh/.aws paths, credentials — plus your own LOSSLESS_ARCHIVE_EXCLUDE globs) are never stored — the check covers both the requested path and its resolved real path, so a symlink to a secret doesn't bypass it. For excluded files only the path, touch counts, and timestamps are recorded (no content, and no content-derived metadata like hashes or sizes, which could enable offline confirmation of low-entropy secrets).

Why the read path can't hurt quality

The engine only withholds or diffs content it can prove the model still has, bounded by context epochs (the hooks bump the epoch on compaction, so post-compaction reads are always full). A 400-op randomized invariant test asserts the model's reconstructable view equals disk truth after every operation. Anything less provable is sent in full.

Honest limits

  • Restore serves current disk state (annotated when it drifted), not a time machine of the conversation; exact historical versions live in the archive for receipts.
  • The transcript format is internal to Claude Code and can change; the sweep is deliberately two-tier (stable-surface discovery + best-effort exact capture) and fail-silent — a format change degrades capture, never breaks a session.
  • Receipts attest mediated paths only, and say so; they are HMAC (shared-key), not third-party-verifiable signatures — Ed25519 receipts are a candidate for a future version if anyone needs them.
  • Pack effectiveness assumes provider prompt caching and a stable prefix; the 46.55% figure is one measured workload, not a promise.
  • Symbol extraction is a heuristic brace/indent pass, not a parser (tree-sitter was evaluated and deferred for WASM/ABI fragility).

Status

v2.0.0 — the coordination plane, on top of the full flight recorder: persistent content-addressed archive, transcript sweep + manifest inject hooks, working-set restore, fan-out packs, git-bound receipts v2, one-command init, the blind-edit guard, context blame, and cross-agent coordination (in-flight intents, landed-edit conflicts, the coordination_status radar). 121 tests green including the losslessness invariant; over-the-wire smoke covers sweep → inject → restore → guard → coordination → receipts; real-transcript sweep and guard runs validated on live data. MIT.

來源:README.md,提交 1ef5bf9

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v2.0.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分