Quilt

io.github.wkoverfield由 GitHub 帳號 wkoverfield 發布v0.6.3更新於 Oct 25, 2026

Track which AI agent wrote which lines in a shared Git checkout; each commits only its own lines.

已驗證STDIO僅桌面開發者工具安全與監控

概覽

AI 產生的概覽

Quilt 追蹤共享 Git 檢出中哪些行由哪個 AI 代理撰寫,讓每個代理只提交自己的變更。

可以做什麼
記錄同一共享儲存庫檢出中每個代理工作階段所做編輯的逐行歸屬,工作階段會自動命名,也可透過 QUILT_ACTOR 指定固定識別。僅提交目前代理的行,預覽確切的修補檔,並檢視狀態與來源資訊。宣告檔案或符號,使其他代理寫入已宣告程式碼時被拒絕,並附上持有者的意圖與租約到期時間。當宣告的符號依賴其他參與者正在修改的程式碼時提出警告,並在發生覆寫時快照受害者的版本。在終端機或唯讀瀏覽器介面中即時檢視各參與者、行數、宣告與受阻的工作。
適用情境
當多個 AI 編碼代理同時在同一 Git 檢出中工作,且你希望獲得乾淨的依代理提交、衝突預防以及誰在編輯什麼的可見性,而不是為每個代理使用獨立工作樹時使用。
執行需求
需要本機 Node.js 執行環境以全域安裝該 npm 套件、一個 Git 儲存庫,並執行 quilt setup 以接入擷取鉤子和可選的 MCP 伺服器。無需帳戶或 API 金鑰;狀態保存在本機 .quilt 目錄中。
安裝前請注意
它會安裝 Git 擷取鉤子來記錄編輯,並可阻止寫入已宣告的程式碼。提交和宣告會改變儲存庫狀態,來源資訊會寫入 Git 提交並在推送和複製後保留。除非透過 quilt telemetry off、QUILT_TELEMETRY=0 或 DO_NOT_TRACK=1 關閉,否則每天傳送一次匿名遙測心跳。

安裝

在 SourceWeft 中

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

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

其他 MCP 客戶端

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

README

Quilt

[CI] [npm] [downloads] [license]

Quilt is a command-line tool that tracks which agent wrote which lines in a shared Git checkout, so multiple AI coding agents can work in one repo at once and each commits only its own changes.

It captures every edit at the tool boundary, keeps a per-line record of who wrote what, and reconstructs each agent's own changes at commit time. Git stays the source of truth. Quilt never calls an LLM or spawns agents, and its state lives in a .quilt/ sidecar you can delete without touching your repo.

[Two agents editing one file, plain git vs Quilt. Without Quilt (left), the first agent's commit absorbs the other's work and the history credits one author. With Quilt (right), each change is committed by the agent that made it.]

bash
npm install -g @quilt-dev/cliquilt setup     # capture hooks wired; claim enforcement via Claude hooks or MCP

The problem

You want your agents in ONE checkout: one node_modules, one build, one dev server, one environment to keep working, not a worktree per agent, each with its own install and its own drift. But on a shared checkout, plain git bites even when agents work on completely different things: the first git commit -am sweeps everyone else's uncommitted files into one blob, codegen and lockfile churn get credited to whoever committed last, and two agents occasionally do land on the same line, where one silently overwrites the other. None of that requires agents to be working on the same task. It's just what a shared checkout does by default.

Quilt makes the shared checkout safe. Every agent commits exactly its own lines and nothing else: disjoint work stays disjoint all the way into history, with no ceremony. And when two agents genuinely want the same code, that becomes a coordinated handoff instead of a silent loss. It holds as you add agents.

./examples/fleet.sh runs seven agents against one checkout. The two endings:

txt
WITHOUT quilt   1 commit for 7 agents — six got "nothing to commit", their                work swept into the first agent's blob. a7 silently                overwrote a1's change to getUser. a1's work is gone.
WITH quilt      6 clean commits, one per agent, each exactly its own lines.                a7's write into a1's claimed function was denied before any                bytes changed, with a1's stated intent in the denial.

When two agents want the same file

Fanning out on disjoint files is the easy case. The real test is contention. A denied claim isn't a dead end. It carries the holder's stated intent and when their lease lapses:

txt
$ QUILT_ACTOR=builder-flows quilt claim deals.js flows.js --intent "wire flows to deals"  ✗ denied  deals.js (held by builder-friction)      builder-friction is: friction pass: rename + archive flags      their claim lapses 2026-07-04T22:12:05Z unless renewed  ✓ claimed flows.js

So the blocked agent builds its granted files while it waits, re-claims after the holder's commit auto-releases, and layers its change on top of the landed one. Two clean commits, both changes in the file, nothing lost. ./examples/contention.sh runs the whole sequence on the real machinery.

What it does

  • One shared checkout. Model humans, agents, and bots as actors editing one working tree, no worktree per agent.
  • Line-level attribution. commit --mine commits only your lines, even when they share a hunk with another actor's.
  • Symbol-level claims. Reserve utils.js#formatPrice, not the whole file, so agents editing different functions never contend. Ten languages via tree-sitter; whole-file claims for the rest.
  • Collision prevention. A write into code another agent has claimed is denied, with the holder's stated intent, before any bytes change.
  • Push-awareness. Claim a symbol that depends on a function another actor is changing, and Quilt warns you at claim time.
  • Detect and preserve. If one actor overwrites another's uncommitted lines, Quilt snapshots the victim's version so nothing is silently lost.

Every commit Quilt produces is an ordinary Git commit. It trusts Git and never rewrites it, and all state lives locally under .quilt/. No account, no daemon.

Quickstart

bash
quilt setup      # wire Quilt into the repo (capture hooks + optional MCP tools)quilt doctor     # confirm it's wired and capture is flowing

That's it. Agents are named automatically: each Claude Code session or MCP connection gets its own id, so parallel agents are told apart with no setup.

4 terminals, one repo

The whole flow, from a git repo to four agents working at once:

bash
cd your-repoquilt setup          # once, ~5 secondsclaude               # terminal 1claude               # terminal 2claude               # terminal 3claude               # terminal 4

Start sessions from a directory that holds several repos? Run quilt setup there instead: it wires the workspace root and every repo inside, and each edit is captured into the repo its file belongs to.

Nothing else. No QUILT_ACTOR, no per-terminal ceremony, nothing to approve: the capture hooks attribute every edit to its session automatically. Watch it live with quilt fleet, and when a session's work is ready, ask it to run quilt commit --mine -m "...". Each commit contains exactly that session's lines, even where two sessions touched the same file. (Claude Code will also offer to enable the optional quilt MCP server for the project; approving it adds the claim/prevention tools, but the hooks protect you either way.)

Watch the fleet

quilt ui opens the same picture in your browser, live: who wrote what (per-actor line counts per file), active claims, who's blocked on whom, and anything that needs a human. Local-only (127.0.0.1), read-only, one command.

[The quilt ui dashboard: an escalated collision at the top under "Needs you", actor cards with their claims, a who-wrote-what table with per-actor line counts, and blocked/queued actors.]

Prefer the terminal? quilt fleet --watch is the same view as text.

Set an explicit id when you want one that is stable across sessions:

bash
QUILT_ACTOR=auth-agent claude    # this agent's edits are attributed to auth-agent

Then each agent commits only its own lines:

bash
quilt status                     # who owns whatquilt preview --mine             # exact patch that would be committedquilt commit --mine -m "fix auth redirect"quilt provenance HEAD            # actor, session, files, hunks, tree

Quilt writes that provenance into the Git commit itself, so it survives normal pushes and fresh clones. Prompt correlation stays local in quilt ui; it is not published into Git history.

In a shared shell, make the committer explicit (quilt --as auth-agent commit --mine ...). Quilt refuses a checkout-global session identity when the dirty tree shows another actor. If a deploy provider requires a recognized Git email, set one once while keeping actor names distinct:

bash
quilt config author.email [email protected]

quilt fleet shows the whole picture: every actor, their claims, and anything that needs a human. See docs/reference.md for the full command list.

Why not worktrees?

A worktree per agent is the usual answer, and for fully independent tasks it works. But every worktree is another environment to build (another install, another build cache, another dev server) and isolation just moves the collision to merge time. Those costs grow with the number of agents; the whole point of a shared checkout is paying for the environment once.

Run fewer agentsWorktree per agentQuilt
Parallelismcapped lowhighhigh
Setup per agentnonefull install/build/env × Nnone (one checkout)
See each other's in-flight workn/anoyes
Collisionsavoided by handsurface at mergeprevented, or surfaced live
Clean per-agent commitsn/aafter a mergeyes

Worktrees isolate; they don't coordinate. When agents work the same code at the same time, you usually want them to see each other and account for each other as they go. That is what Quilt does. The two aren't mutually exclusive: worktrees for independent, long-running work, Quilt for agents in the same code at once.

Using it with agents

quilt setup wires the capture hooks and a shared MCP server. On Claude Code the hooks let agents use the built-in Edit and Write tools normally while Quilt records each change's author and blocks a write into code another agent holds, with no protocol for the agent to follow and no setup: each session is named automatically, or carries its own QUILT_ACTOR for a stable id. For other runtimes, the same capture and prevention is available as MCP tools, with each connection named automatically the same way.

See docs/orchestrators.md for Codex, Cursor, Aider, and the difference between process-per-agent and many-agents-in-one-process setups.

Docs

  • docs/orchestrators.md: running a fleet of agents.
  • docs/reference.md: the full command list, how attribution works, and the .quilt/ state layout.
  • bench/: the scenario ladder Quilt is tested against, run with and without Quilt on the same metrics.

Telemetry

One anonymous heartbeat per day: quilt version, OS, Node major, random local id. Nothing else unless you opt in at quilt setup, and never code, paths, repo or actor names. quilt telemetry off, QUILT_TELEMETRY=0, or DO_NOT_TRACK=1 silences everything. Details: docs/reference.md.

Contributing

Contributions are welcome. See CONTRIBUTING.md.

License

MIT

來源:README.md,提交 709111d

工具

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

版本歷史

2
  1. v0.6.3最新Oct 14, 2026
  2. v0.6.2Sep 16, 2026

評分

已滿足適用檢查項的 50%

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

  • 近 30 天內可連通25 分

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

  • 已宣告認證方式10 分

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

  • 已列出工具15 分

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

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