From b33154975fd2bb8fd314eba3f618ba20c97a2994 Mon Sep 17 00:00:00 2001 From: sunjiajunsunjiajun Date: Mon, 27 Jul 2026 17:26:26 +0800 Subject: [PATCH 1/6] docs: establish README branding and structure --- README.md | 25 ++++--------------------- assets/research-git-logo.png | Bin 0 -> 106888 bytes 2 files changed, 4 insertions(+), 21 deletions(-) create mode 100644 assets/research-git-logo.png diff --git a/README.md b/README.md index b9db8d4..ab21e52 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -

research-git

+

research-git logo   research-git

- A new Git tool for ambitious researchers and developers in the agentic era. + Capture key experiments and feature decisions. Agentically remove or reapply them in your current codebase.
Works with Claude Code, Codex, Gemini CLI, and opencode.

@@ -9,7 +9,8 @@

Quick Start License: MIT - Claude Code + Claude Code + Codex Python 3.11+

@@ -23,8 +24,6 @@ research-git turns experiments and features into reusable **Feature Capsules** s > **Not a rollback. Not hard deletion. Bring back the idea, not the old branch.** ---- - ## How it works One loop: capture each idea into a graph, then regenerate it onto today's code. The engine (blue) is free and deterministic; intelligence happens at exactly two points (green) — subagents dispatched onto your existing subscription, never a paid API. @@ -45,8 +44,6 @@ flowchart LR class C,F agent; ``` ---- - ## The Feature Capsule Every idea you keep becomes one capsule — a self-contained unit a future agent can read and bring back: @@ -62,8 +59,6 @@ Every idea you keep becomes one capsule — a self-contained unit a future agent Capsules live in a small graph beside your repo (`.rgit/`), on top of normal git. Every run you launch through research-git also freezes a **byte-exact, content-addressed snapshot** of the code that ran — so "the code behind this result" is always a perfect replay, never at the mercy of an agent. ---- - ## 🚀 Quick Start ### 1. Install @@ -109,8 +104,6 @@ rgit compare rerank # which variant won? More commands as your store grows: [More commands](#more-commands). ---- - ## Updating ```bash @@ -121,8 +114,6 @@ Upgrades the package (via whichever of uv/pipx/pip installed it) and refreshes e rgit checks PyPI for a newer release at most once a day (in the background, terminal sessions only). Once one is found, it prints a one-line upgrade notice after every qualifying command until you upgrade or turn the notice off — the check is throttled, the reminder is not. Silence it for good with `rgit update --off`, or per-environment with `RGIT_UPDATE_CHECK=0`. ---- - ## 🧩 Where it fits Anywhere you try many variations of one thing and later want a single one back — cleanly, on top of how the code looks now. @@ -133,14 +124,10 @@ Anywhere you try many variations of one thing and later want a single one back Also at home in ML research — different loss terms, attention blocks, augmentations. Same shape: the experiment is the idea, the metrics are the result, and you want one variant back on today's code. ---- - ## 🤝 Share the memory with your team The graph is served over MCP **read-only** (`recall` / `compose` / `get`, plus the query commands `compare` / `ablation` / `provenance`). Point a teammate's client at your `rgit mcp` server and they get the same Feature Capsules and the same answers — then *their* session regenerates an idea onto *their* code, on *their* subscription. The memory is shared; the intelligence is local. ---- - ## 🔧 Under the Hood ### Build the memory, borrow the agent @@ -164,8 +151,6 @@ Recall scores every approved capsule against your query in plain Python — no e The agent helps you *author*; it is never in the *replay* path. `rgit run` freezes the exact bytes that ran, content-addressed and immutable. "The code behind run X" is a byte-identical re-materialization of a stored blob. ---- - ## More commands The five-step loop above is the core. These show up as your store grows — run `rgit --help` for any of them: @@ -181,8 +166,6 @@ The five-step loop above is the core. These show up as your store grows — run | `rgit mcp` | serve the graph read-only so a teammate's client can recall against it | | `rgit digest scan [A..B]` | cluster a mature repo's git history into a scored digestion plan (`rgit init` offers this interactively); `rgit digest status` shows progress, the **rgit-digest** skill drains the queue into `origin=backfill` capsules, and `rgit digest clear` removes them all if you change your mind | ---- - ## License

diff --git a/assets/research-git-logo.png b/assets/research-git-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4e88ab02ad1d69ebb523254678c9dd1516456512 GIT binary patch literal 106888 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 literal 0 HcmV?d00001 From 755a7e762afa843a92a6e3962d4629d8ff491afe Mon Sep 17 00:00:00 2001 From: sunjiajunsunjiajun Date: Mon, 27 Jul 2026 17:26:26 +0800 Subject: [PATCH 2/6] docs: add realistic Codex workflow demo --- README.md | 8 +- assets/awesome-rgit-demo.svg | 337 +++++++++++++++++++++ assets/{research-git-logo.png => logo.png} | Bin 3 files changed, 343 insertions(+), 2 deletions(-) create mode 100644 assets/awesome-rgit-demo.svg rename assets/{research-git-logo.png => logo.png} (100%) diff --git a/README.md b/README.md index ab21e52..20fa282 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -

research-git logo   research-git

+

research-git logo   research-git

Capture key experiments and feature decisions. Agentically remove or reapply them in your current codebase. @@ -15,7 +15,7 @@

- A Git tool for ambitious researchers and developers in the agentic era. + research-git capture and removal workflow in Codex

Git remembers commits. research-git remembers ideas. @@ -28,6 +28,10 @@ research-git turns experiments and features into reusable **Feature Capsules** s One loop: capture each idea into a graph, then regenerate it onto today's code. The engine (blue) is free and deterministic; intelligence happens at exactly two points (green) — subagents dispatched onto your existing subscription, never a paid API. +

+ A Git tool for ambitious researchers and developers in the agentic era. +

+ ```mermaid flowchart LR A["edit code /
rgit run -- ..."] -->|"free, deterministic"| B["raw proposal
(diff staged)"] diff --git a/assets/awesome-rgit-demo.svg b/assets/awesome-rgit-demo.svg new file mode 100644 index 0000000..f521a43 --- /dev/null +++ b/assets/awesome-rgit-demo.svg @@ -0,0 +1,337 @@ + + research-git capture and removal workflow in Codex + Codex fixes and automatically captures a real KTransformers FlashInfer MLA precision invariant, then uses the saved capsule to safely remove that optimization while preserving the Torch fallback. + + + + + + + + + + + + + + + + + + + + + + ktransformers — codex — 100×30 + + + + + + >_ OpenAI Codex (v0.144.4) + model: gpt-5.6-sol medium /model to change + directory: ~/Downloads/ktransformers + + + + + Fix FlashInfer MLA precision and validate it against the Torch reference. + + + + Explored + + + + └ rg -n "softmax_scale|FlashInfer" ktransformers/operators ktransformers/util + └ util/utils.py: decode used q_head_dim ** (-0.5) + + + Edited transformers.py and util/utils.py + + + + + └ Passed layer.self_attn.softmax_scale into decode planning + └ Preserved the Torch reference path + + + Ran precision checks + + + + + └ Compared FlashInfer with the Torch reference + └ Verified model-configured attention scaling + └ HumanEval → 89.6 + + + + + $research-git:rgit-capture + + + + └ rgit capture → proposal prop_4c8fa1b2 created + └ rgit pending --json → 1 proposal + └ capsule-segmenter → 1 candidate + └ rgit resegment prop_4c8fa1b2 --from-json - + └ Candidate ready for human review + + + + + + flashinfer-mla-model-scale — Preserve model scale and Torch parity.Validate with HumanEval (89.6) before enabling FlashInfer MLA. Keep this capsule? + + + + Keep it. + + Saved flashinfer-mla-model-scale as a capsule. + • 840 commits later • 345,104 lines changed since this capsule was saved. + + + + + + + + + + + + + + + + + + Add long-context chunked prefill and decode replanning. + Explored attention and cache planning + + + + + └ Traced prefill, decode, and KV-cache paths + └ Found chunk boundaries in cache planning + + + Edited attention.py and cache.py + + + + + └ Updated chunk planning without changing decode semantics + └ Long-context tests passed; committed changes + + + + + + + + Keep complete Transformer layers available for CPU offload. + Explored transfer maps and device dispatch + └ Found GPU-only assumptions in attention routing + Edited dispatch and mixed-device configs + └ GPU-only and GPU+CPU tests passed + + + + + + Integrate Triton and vendor-specific attention backends. + Explored backend routing and kernel guards + └ Compared Torch, Triton, and vendor paths + Edited backend dispatch and precision guards + └ Reference parity checks passed + + + + + + Add SGLang serving and support new model families. + Explored server, adapters, and model registry + └ Traced runtime and configuration boundaries + Edited serving and model integration + └ Integration suite passed; committed changes + + + + + Add AMX and AVX kernel variants for MoE inference. + Explored CPU kernels and quantized layouts + └ Added vectorized expert execution paths + Ran kernel benchmarks and correctness tests + └ Performance checks passed; committed changes + + + + + Support Qwen, DeepSeek, and multimodal model families. + Explored model loaders and architecture adapters + └ Added configs, mappings, and runtime guards + Ran model integration suites + └ Supported families passed smoke tests + + + + + Add distributed serving and scheduler improvements. + Explored workers, queues, and request routing + └ Updated scheduler and distributed execution + Ran multi-worker integration tests + └ Serving checks passed; committed changes + + + + + Harden quantized weight loading and release tooling. + Explored loaders, packaging, and CI workflows + + + + └ Inspected RAWINT4, Marlin, and loader mappings + └ Traced wheel, submodule, and release workflows + └ Fixed quantized formats and release paths + + + Ran build and compatibility checks + + + + └ Built CPU and CUDA package variants + └ Quantized loader compatibility checks passed + └ Release validation passed; committed changes + + + + + + + + $research-git:rgit-recallRemove the FlashInfer MLA optimization but keep generation behavior unchanged. + + + $research-git:rgit-recall + + + + └ recall("FlashInfer MLA") → feat_83ad710c + └ Resolved depends_on graph → no additional capsules + └ compose(["feat_83ad710c"]) → current archived source + └ Loaded intent, knobs, assumptions, and guide + + + + + + Explored + + + + └ rg -n "flashinfer|mla" archive/ktransformers/ → 181 matches + └ Located the legacy Torch attention path + + + Edited archived FlashInfer MLA paths + + + + + └ Removed FlashInfer MLA dispatch and imports + └ Kept model scaling and the Torch attention path + + + Ran validation + + + + + └ Torch and long-context validation → passed + └ rg -n "flashinfer_mla" archive/ktransformers/ → no matches + └ Long-context decode parity passed + + + + + Removed the FlashInfer MLA optimization without reverting unrelated attention work. + The Torch fallback remains active; the capsule is preserved for future use. + + + + + + >_ OpenAI Codex (v0.144.4) + model: gpt-5.6-sol medium /model to change + directory: ~/Downloads/ktransformers + + + + + + + + + + + Ask Codex to do anything + Fix FlashInfer MLA precision and validate it against the Torch reference. + Ask Codex to do anything + Keep flashinfer-mla-model-scale. + Ask Codex to do anything + @research-git:rgit-recall + $research-git:rgit-recallRemove the FlashInfer MLA optimization but keep generation behavior unchanged. + Ask Codex to do anything + + + + Keep it. + + + + + $research-git:rgit-recall + Remove the FlashInfer MLA optimization but keep generation behavior unchanged. + + + + + + + + gpt-5.6-sol medium · ~/Downloads/ktransformers · Main [default] + diff --git a/assets/research-git-logo.png b/assets/logo.png similarity index 100% rename from assets/research-git-logo.png rename to assets/logo.png From f5b51ab94ba0bd1942522c3b17dfe9dd503e5f8f Mon Sep 17 00:00:00 2001 From: sunjiajunsunjiajun Date: Mon, 27 Jul 2026 17:26:26 +0800 Subject: [PATCH 3/6] docs: restructure README guide and agent examples --- README.md | 264 +++++++++++++++--------- assets/awesome-rgit-demo.svg | 13 +- assets/rgit-digest-skill-input.svg | 21 ++ assets/rgit-recall-plain-text-input.svg | 19 ++ assets/rgit-recall-skill-input.svg | 21 ++ 5 files changed, 241 insertions(+), 97 deletions(-) create mode 100644 assets/rgit-digest-skill-input.svg create mode 100644 assets/rgit-recall-plain-text-input.svg create mode 100644 assets/rgit-recall-skill-input.svg diff --git a/README.md b/README.md index 20fa282..08e3a4e 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@

research-git logo   research-git

- Capture key experiments and feature decisions. Agentically remove or reapply them in your current codebase. + Reapply or remove previous experiments & features safely on today’s code.
Works with Claude Code, Codex, Gemini CLI, and opencode.

- Quick Start + Quick Start License: MIT Claude Code Codex @@ -15,68 +15,36 @@

- research-git capture and removal workflow in Codex + research-git capture and removal workflow in Codex

-Git remembers commits. research-git remembers ideas. +research-git is a new Git tool for researchers and developers, built for the agentic coding era. -research-git turns experiments and features into reusable **Feature Capsules** so coding agents can reapply, adapt, or remove them safely as your code evolves. +It captures important experiments and feature decisions as reusable semantic units, so coding agents can reapply, adapt, or safely remove them on today’s codebase. -> **Not a rollback. Not hard deletion. Bring back the idea, not the old branch.** +## Why research-git -## How it works - -One loop: capture each idea into a graph, then regenerate it onto today's code. The engine (blue) is free and deterministic; intelligence happens at exactly two points (green) — subagents dispatched onto your existing subscription, never a paid API. - -

- A Git tool for ambitious researchers and developers in the agentic era. -

- -```mermaid -flowchart LR - A["edit code /
rgit run -- ..."] -->|"free, deterministic"| B["raw proposal
(diff staged)"] - B -->|"/rgit-capture"| C{{"capsule-
segmenter"}} - C --> D[("Feature Capsule
graph (.rgit/)")] - D -->|"/rgit-recall «query»"| E["compose brief vs
today's code"] - E --> F{{"capsule-
regenerator"}} - F --> G["reviewable diff
on today's code"] - G -.->|"rgit run — freeze + link variant"| D - - classDef engine fill:#eef2ff,stroke:#5b6cff,color:#1e2a78; - classDef agent fill:#eafff0,stroke:#36a85f,color:#0f5132; - class A,B,D,E,G engine; - class C,F agent; -``` +AI coding tools can generate many different experiments and features in a day. But when you try to reintroduce a previously removed experiment just a few days later, the codebase may have changed so much that the experiment no longer fits the current infrastructure. -## The Feature Capsule +Traditional Git preserves commits and diffs, but it does not preserve the context behind them. It cannot tell an agent which changes belong to an experiment, why they were made, what assumptions they depended on, or what results they produced. Without that context, reverting may erase later work, replaying an old diff may fail against a changed architecture, and removing a feature may damage shared infrastructure. -Every idea you keep becomes one capsule — a self-contained unit a future agent can read and bring back: +research-git records experiments and feature decisions as reusable Capsules, capturing their intent, relevant code, dependencies, configuration, results, and restoration guidance. This gives coding agents the context to safely reapply or remove them on today’s codebase without restoring an old snapshot or deleting code piece by piece. -| Field | What it holds | -|-------|---------------| -| **intent** | why this change existed — the hypothesis, not a diff restatement | -| **code slices** | the relevant snippets / files / symbols | -| **knobs** | parameters / flags / configs | -| **dependencies** | other capsules it needs + silent assumptions | -| **result** | metrics / notes / why it worked or didn't, linked to the runs it produced | -| **resurrection guide** | how to regenerate it onto a changed codebase | +## Quick Start -Capsules live in a small graph beside your repo (`.rgit/`), on top of normal git. Every run you launch through research-git also freezes a **byte-exact, content-addressed snapshot** of the code that ran — so "the code behind this result" is always a perfect replay, never at the mercy of an agent. - -## 🚀 Quick Start +> [!NOTE] +> We publish a new research-git release after major iterations. [Keep research-git updated](#updating). ### 1. Install ```bash pip install research-git -rgit install # wires research-git into every agent client on this machine +rgit install # wires research-git into every agent client on this machine cd your-project -rgit init # creates the .rgit/ store in your repo +rgit init # creates the .rgit/ store in your repo ``` -That's the whole setup. Start a new agent session afterwards so it picks everything up. - -Adopting rgit on a repo that already has history? `rgit init` offers to **digest that history into capsules** — pick a mode in the prompt, then let your agent run the `rgit-digest` skill so recall has something to find from day one. +Installation takes less than 30 seconds. Restart your coding agent afterwards so it loads research-git.
Install details: choosing platforms, guidance modes, capture-on-commit @@ -90,11 +58,23 @@ Adopting rgit on a repo that already has history? `rgit init` offers to **digest ### 2. Working with an agent? Just talk to it -After install your agent does the remembering. Work as usual — it saves each meaningful idea as a Feature Capsule (asking you before anything is kept). Weeks later, when the code has moved on, just ask: +If your repository already has history, let your agent run the `rgit-digest` skill. It turns earlier work into Capsules, giving recall something to find from day one. + +

+ Run the research-git digest skill from a coding agent input. +

-> *"bring back the re-ranking retrieval step"* +After install your agent does the remembering. Work as usual. It saves each meaningful idea as a Feature Capsule and asks you before anything is kept. Weeks later, when the code has moved on, just ask: -The agent finds the capsule and **re-implements the idea onto today's code**, leaving you a reviewable diff. No commands to memorize — but if you like being explicit, `/rgit-capture` saves recent work and `/rgit-recall ` brings an idea home. +

+ Ask a coding agent to bring back the re-ranking retrieval step. +

+ +The agent finds the capsule and **re-implements the idea onto today's code**, leaving you a reviewable diff. There are no commands to memorize. If you like being explicit, `/rgit-capture` saves recent work and `/rgit-recall ` brings an idea home. + +

+ Explicitly ask a coding agent to recall the re-ranking retrieval step. +

### 3. Working in the terminal? Three commands @@ -104,39 +84,40 @@ rgit review # see what's been captured rgit compare rerank # which variant won? ``` -`rgit capture` saves the current changes (or the last commit) when you're not using `rgit run`. Bringing an idea *back* needs an agent session — that's where the intelligence lives; from the terminal you can always browse the memory with `rgit features` and `rgit graph`. +`rgit capture` saves the current changes (or the last commit) when you're not using `rgit run`. Bringing an idea *back* needs an agent session because that's where the intelligence lives. From the terminal, you can always browse the memory with `rgit features` and `rgit graph`. More commands as your store grows: [More commands](#more-commands). -## Updating - -```bash -rgit update -``` - -Upgrades the package (via whichever of uv/pipx/pip installed it) and refreshes every installed platform surface: the Claude Code plugin copy, MCP config, and the managed guidance blocks. Guidance blocks you have customized or removed are left alone — the command tells you how to restore them instead. - -rgit checks PyPI for a newer release at most once a day (in the background, terminal sessions only). Once one is found, it prints a one-line upgrade notice after every qualifying command until you upgrade or turn the notice off — the check is throttled, the reminder is not. Silence it for good with `rgit update --off`, or per-environment with `RGIT_UPDATE_CHECK=0`. - -## 🧩 Where it fits - -Anywhere you try many variations of one thing and later want a single one back — cleanly, on top of how the code looks now. +## How it works -- 🤖 **Agent / Prompt engineering** — you tried four prompt structures, two tool-splitting schemes, and a different retrieval step. Last week's version scored better; bring *that* idea back onto the agent you've since rewritten. -- ⚙️ **Backend / Systems** — three caching strategies, two rate-limiters, a reworked query plan. Which won? Pull the winning variant forward without reverting everything built since. -- 🎨 **Frontend** — competing interaction flows and layout variants, half commented out. Resurrect the one that tested best onto the current component tree. +One loop: capture each idea into a graph, then regenerate it onto today's code. The engine (blue) is free and deterministic. Intelligence happens at exactly two points (green), where subagents run on your existing subscription without a paid API. -Also at home in ML research — different loss terms, attention blocks, augmentations. Same shape: the experiment is the idea, the metrics are the result, and you want one variant back on today's code. +

+ A Git tool for ambitious researchers and developers in the agentic era. +

-## 🤝 Share the memory with your team +```mermaid +flowchart LR + A["edit code /
rgit run -- ..."] -->|"free, deterministic"| B["raw proposal
(diff staged)"] + B -->|"/rgit-capture"| C{{"capsule-
segmenter"}} + C --> D[("Feature Capsule
graph (.rgit/)")] + D -->|"/rgit-recall «query»"| E["compose brief vs
today's code"] + E --> F{{"capsule-
regenerator"}} + F --> G["reviewable diff
on today's code"] + G -.->|"rgit run: freeze + link variant"| D -The graph is served over MCP **read-only** (`recall` / `compose` / `get`, plus the query commands `compare` / `ablation` / `provenance`). Point a teammate's client at your `rgit mcp` server and they get the same Feature Capsules and the same answers — then *their* session regenerates an idea onto *their* code, on *their* subscription. The memory is shared; the intelligence is local. + classDef engine fill:#eef2ff,stroke:#5b6cff,color:#1e2a78; + classDef agent fill:#eafff0,stroke:#36a85f,color:#0f5132; + class A,B,D,E,G engine; + class C,F agent; +``` -## 🔧 Under the Hood +
+Learn more (under the hood) ### Build the memory, borrow the agent -The engine owns the durable, deterministic parts — the graph, content-addressed object store, git diffing, and the byte-exact run freeze. The agentic parts are delegated to subagents the host already provides. We don't reimplement an agent loop, and we never call a paid API. +The engine owns the durable, deterministic parts: the graph, content-addressed object store, git diffing, and the byte-exact run freeze. The agentic parts are delegated to subagents the host already provides. We don't reimplement an agent loop, and we never call a paid API. ### Two-phase capture @@ -144,36 +125,135 @@ A free, deterministic Phase 1 (`libcst` maps diff hunks to the functions/classes ### Ranked, edge-aware recall -Recall scores every approved capsule against your query in plain Python — no embeddings, no SQL `LIKE` traps — and boosts a hit when a connected capsule also matches, so related work surfaces together. Each result carries its related subgraph. +Recall scores every approved capsule against your query in plain Python, without embeddings or SQL `LIKE` traps. It boosts a hit when a connected capsule also matches, so related work surfaces together. Each result carries its related subgraph. ### Two planes -- **MCP — shared memory (query-only).** Returns graph snippets; safe to expose so a team shares one memory. Carries no intelligence. -- **Plugin — local intelligence.** Three subagents (`capsule-segmenter`, `capsule-regenerator`, `edge-judge`) and two skills (`rgit-capture`, `rgit-recall`) define *how* a session acts on those snippets, natively, on its own subscription. +- **MCP: shared memory (query-only).** Returns graph snippets; safe to expose so a team shares one memory. Carries no intelligence. +- **Plugin: local intelligence.** Three subagents (`capsule-segmenter`, `capsule-regenerator`, `edge-judge`) and two skills (`rgit-capture`, `rgit-recall`) define *how* a session acts on those snippets, natively, on its own subscription. ### Reproducibility contract The agent helps you *author*; it is never in the *replay* path. `rgit run` freezes the exact bytes that ran, content-addressed and immutable. "The code behind run X" is a byte-identical re-materialization of a stored blob. -## More commands +
-The five-step loop above is the core. These show up as your store grows — run `rgit --help` for any of them: +## What a Capsule Contains + +Every idea you keep becomes a self-contained Capsule that a future agent can use to bring the idea back: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldWhat it holds
intentWhy this change existed: the hypothesis, not a restatement of the diff.
code slicesThe relevant snippets, files, and symbols.
knobsThe parameters, flags, and configuration.
dependenciesThe other Capsules it needs, including silent assumptions.
resultThe metrics, notes, and reasons it worked or did not work, linked to the runs it produced.
resurrection guideHow to regenerate it onto a changed codebase.
+ +Capsules live in a small graph beside your repo (`.rgit/`), on top of normal git. Every run you launch through research-git also freezes a **byte-exact, content-addressed snapshot** of the code that ran. This ensures "the code behind this result" is always a perfect replay, never at the mercy of an agent. -| Command | What it does | -|---------|--------------| -| `rgit watch` | free, deterministic background capture — stages raw material as you edit, so fleeting in-between states aren't lost | -| `rgit capture [REV \| A..B]` | bare: auto-picks the working tree or, when clean, the last commit; pass a commit or an A..B range for precise control | -| `rgit install-hooks` | opt-in: stage every commit's diff via a post-commit hook (not installed by `rgit install`; won't touch an existing hook) — see install details above | -| `rgit run --from ` | run a recalled variant and link the new run as a `variant_of` the original | -| `rgit compare ` | which variant won: ranked table, Δ vs baseline, ★ winner | -| `rgit provenance ` | per-feature clean (capsule) vs agent-adapted (frozen) diff for a run | -| `rgit mcp` | serve the graph read-only so a teammate's client can recall against it | -| `rgit digest scan [A..B]` | cluster a mature repo's git history into a scored digestion plan (`rgit init` offers this interactively); `rgit digest status` shows progress, the **rgit-digest** skill drains the queue into `origin=backfill` capsules, and `rgit digest clear` removes them all if you change your mind | +## Updating + +```bash +rgit update +``` + +
+Learn more + +Upgrades the package (via whichever of uv/pipx/pip installed it) and refreshes every installed platform surface: the Claude Code plugin copy, MCP config, and the managed guidance blocks. Guidance blocks you have customized or removed are left alone. The command tells you how to restore them instead. + +rgit checks PyPI for a newer release at most once a day (in the background, terminal sessions only). Once one is found, it prints a one-line upgrade notice after every qualifying command until you upgrade or turn the notice off. The check is throttled, but the reminder is not. Silence it for good with `rgit update --off`, or per-environment with `RGIT_UPDATE_CHECK=0`. + +
+ +## Where it fits + +Anywhere you try many variations of one thing and later want to bring one back or safely remove one from today's codebase. + +- **Agent / Prompt engineering:** You tried four prompt structures, two tool-splitting schemes, and a different retrieval step. Last week's version scored better; bring *that* idea back onto the agent you've since rewritten. +- **Backend / Systems:** Three caching strategies, two rate-limiters, a reworked query plan. Which won? Pull the winning variant forward without reverting everything built since. +- **Frontend:** Competing interaction flows and layout variants, half commented out. Resurrect the one that tested best onto the current component tree. +- **ML research:** Different loss terms, attention blocks, and augmentations. The experiment is the idea, the metrics are the result, and you want one variant back on today's code. + +## Share the memory with your team + +The graph is served over MCP **read-only** (`recall` / `compose` / `get`, plus the query commands `compare` / `ablation` / `provenance`). Point a teammate's client at your `rgit mcp` server and they get the same Feature Capsules and the same answers. Their session then regenerates an idea onto their code using their subscription. The memory is shared; the intelligence is local. + +## More commands + +The five-step loop above is the core. As your store grows, these additional commands become useful. Run `rgit --help` to learn more about any of them: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CommandWhat it does
rgit watchfree, deterministic background capture that stages raw material as you edit, so fleeting in-between states aren't lost
rgit capture [REV | A..B]bare: auto-picks the working tree or, when clean, the last commit; pass a commit or an A..B range for precise control
rgit install-hooksopt-in: stage every commit's diff via a post-commit hook (not installed by rgit install; won't touch an existing hook). See install details above
rgit run --from <capsule> -- <command>run and record a recalled implementation, for example rgit run --from feat_ab12 -- python eval.py; after its proposal is approved, the new Capsule is linked as a variant_of the original
rgit compare <query>which variant won: ranked table, Δ vs baseline, ★ winner
rgit provenance <run_id>per-feature clean (capsule) vs agent-adapted (frozen) diff for a run
rgit mcpserve the graph read-only so a teammate's client can recall against it
rgit digest scan [A..B]cluster a mature repo's git history into a scored digestion plan (rgit init offers this interactively); rgit digest status shows progress, the rgit-digest skill drains the queue into origin=backfill capsules, and rgit digest clear removes them all if you change your mind
## License -

- MIT © Stepzero Lab -
- Core contributors: Yuxiang Lin · Fengrong Wan · Jiajun Sun -

+MIT diff --git a/assets/awesome-rgit-demo.svg b/assets/awesome-rgit-demo.svg index f521a43..e903c83 100644 --- a/assets/awesome-rgit-demo.svg +++ b/assets/awesome-rgit-demo.svg @@ -1,8 +1,8 @@ - + research-git capture and removal workflow in Codex Codex fixes and automatically captures a real KTransformers FlashInfer MLA precision invariant, then uses the saved capsule to safely remove that optimization while preserving the Torch fallback. @@ -31,8 +31,10 @@ + + - + ktransformers — codex — 100×30 @@ -123,11 +125,11 @@ - + @@ -334,4 +336,5 @@ gpt-5.6-sol medium · ~/Downloads/ktransformers · Main [default] + diff --git a/assets/rgit-digest-skill-input.svg b/assets/rgit-digest-skill-input.svg new file mode 100644 index 0000000..f0905d1 --- /dev/null +++ b/assets/rgit-digest-skill-input.svg @@ -0,0 +1,21 @@ + + Run the research-git digest skill in Codex + A compact Codex terminal input referencing the research-git digest skill to digest repository history. + + + + + + + your-project — codex + + + + @research-git:rgit-digest + Digest this repository's history. + diff --git a/assets/rgit-recall-plain-text-input.svg b/assets/rgit-recall-plain-text-input.svg new file mode 100644 index 0000000..6937ae0 --- /dev/null +++ b/assets/rgit-recall-plain-text-input.svg @@ -0,0 +1,19 @@ + + Recall an earlier idea in Codex + A compact Codex terminal input asking an agent to bring back the re-ranking retrieval step. + + + + + + + your-project — codex + + + + Bring back the re-ranking retrieval step. + diff --git a/assets/rgit-recall-skill-input.svg b/assets/rgit-recall-skill-input.svg new file mode 100644 index 0000000..391832a --- /dev/null +++ b/assets/rgit-recall-skill-input.svg @@ -0,0 +1,21 @@ + + Recall an earlier idea explicitly in Codex + A compact Codex terminal input referencing the research-git recall skill to bring back the re-ranking retrieval step. + + + + + + + your-project — codex + + + + @research-git:rgit-recall + Bring back the re-ranking retrieval step. + From 237c2a756d97486573f0e642b22d5a2ac32b7ab2 Mon Sep 17 00:00:00 2001 From: sunjiajunsunjiajun Date: Mon, 27 Jul 2026 17:26:26 +0800 Subject: [PATCH 4/6] docs: document experiment tracking and CLI reference --- README.md | 66 ++++++++++++++++++++++++---------- assets/rgit-run-experiment.svg | 19 ++++++++++ 2 files changed, 66 insertions(+), 19 deletions(-) create mode 100644 assets/rgit-run-experiment.svg diff --git a/README.md b/README.md index 08e3a4e..53f8d06 100644 --- a/README.md +++ b/README.md @@ -61,19 +61,25 @@ Installation takes less than 30 seconds. Restart your coding agent afterwards so If your repository already has history, let your agent run the `rgit-digest` skill. It turns earlier work into Capsules, giving recall something to find from day one.

- Run the research-git digest skill from a coding agent input. + Agent prompt: @research-git:rgit-digest Digest this repository's history.

After install your agent does the remembering. Work as usual. It saves each meaningful idea as a Feature Capsule and asks you before anything is kept. Weeks later, when the code has moved on, just ask:

- Ask a coding agent to bring back the re-ranking retrieval step. + Agent prompt: Bring back the re-ranking retrieval step.

The agent finds the capsule and **re-implements the idea onto today's code**, leaving you a reviewable diff. There are no commands to memorize. If you like being explicit, `/rgit-capture` saves recent work and `/rgit-recall ` brings an idea home.

- Explicitly ask a coding agent to recall the re-ranking retrieval step. + Agent prompt: @research-git:rgit-recall Bring back the re-ranking retrieval step. +

+ +After the idea is brought back, ask your agent to run the evaluation through research-git. The run keeps the code snapshot and metrics together, then stages the regenerated code for review: + +

+ Agent prompt: Run the recalled re-ranking evaluation and record its results with research-git.

### 3. Working in the terminal? Three commands @@ -88,6 +94,15 @@ rgit compare rerank # which variant won? More commands as your store grows: [More commands](#more-commands). +## Where it fits + +Anywhere you try many variations of one thing and later want to bring one back or safely remove one from today's codebase. + +- **Agent / Prompt engineering:** You tried four prompt structures, two tool-splitting schemes, and a different retrieval step. Last week's version scored better; bring *that* idea back onto the agent you've since rewritten. +- **Backend / Systems:** Three caching strategies, two rate-limiters, a reworked query plan. Which won? Pull the winning variant forward without reverting everything built since. +- **Frontend:** Competing interaction flows and layout variants, half commented out. Resurrect the one that tested best onto the current component tree. +- **ML research:** Different loss terms, attention blocks, and augmentations. The experiment is the idea, the metrics are the result, and you want one variant back on today's code. + ## How it works One loop: capture each idea into a graph, then regenerate it onto today's code. The engine (blue) is free and deterministic. Intelligence happens at exactly two points (green), where subagents run on your existing subscription without a paid API. @@ -179,6 +194,29 @@ Every idea you keep becomes a self-contained Capsule that a future agent can use Capsules live in a small graph beside your repo (`.rgit/`), on top of normal git. Every run you launch through research-git also freezes a **byte-exact, content-addressed snapshot** of the code that ran. This ensures "the code behind this result" is always a perfect replay, never at the mercy of an agent. +## Additional Capabilities + +### 1. Run Experiments and Record Results + +```bash +rgit run -- python eval.py # run an experiment; freeze code, record metrics +rgit run --from feat_ab12 -- python eval.py # record a recalled variant + lineage +``` + +`rgit run` records the command, base commit, exit status, content-addressed code +snapshot, and metrics from `rgit_metrics.json` or stdout. Any code diff is +staged as a Proposal for review. + +Capsules remember intent; Runs preserve execution and measurements. Together, +they give auto-research agents a durable history for comparing variants and +deciding what to try next. `--from` records lineage but does not run recall; +after approval, the new Capsule becomes a variant of the source. Use +`--with ` to record approved Capsules active in the Run. + +### 2. Share Memory with Your Team + +The graph is served over MCP **read-only** (`recall` / `compose` / `get`, plus the query commands `compare` / `ablation` / `provenance`). Point a teammate's client at your `rgit mcp` server and they get the same Feature Capsules and the same answers. Their session then regenerates an idea onto their code using their subscription. The memory is shared; the intelligence is local. + ## Updating ```bash @@ -194,27 +232,14 @@ rgit checks PyPI for a newer release at most once a day (in the background, term
-## Where it fits - -Anywhere you try many variations of one thing and later want to bring one back or safely remove one from today's codebase. - -- **Agent / Prompt engineering:** You tried four prompt structures, two tool-splitting schemes, and a different retrieval step. Last week's version scored better; bring *that* idea back onto the agent you've since rewritten. -- **Backend / Systems:** Three caching strategies, two rate-limiters, a reworked query plan. Which won? Pull the winning variant forward without reverting everything built since. -- **Frontend:** Competing interaction flows and layout variants, half commented out. Resurrect the one that tested best onto the current component tree. -- **ML research:** Different loss terms, attention blocks, and augmentations. The experiment is the idea, the metrics are the result, and you want one variant back on today's code. - -## Share the memory with your team - -The graph is served over MCP **read-only** (`recall` / `compose` / `get`, plus the query commands `compare` / `ablation` / `provenance`). Point a teammate's client at your `rgit mcp` server and they get the same Feature Capsules and the same answers. Their session then regenerates an idea onto their code using their subscription. The memory is shared; the intelligence is local. - ## More commands -The five-step loop above is the core. As your store grows, these additional commands become useful. Run `rgit --help` to learn more about any of them: +As your store grows, these additional commands become useful. Run `rgit --help` to learn more about any of them: - + @@ -233,7 +258,7 @@ The five-step loop above is the core. As your store grows, these additional comm - + @@ -254,6 +279,9 @@ The five-step loop above is the core. As your store grows, these additional comm
CommandCommand What it does
rgit run --from <capsule> -- <command>run and record a recalled implementation, for example rgit run --from feat_ab12 -- python eval.py; after its proposal is approved, the new Capsule is linked as a variant_of the originalrun and record an experiment for an implementation regenerated from a Capsule; after its Proposal is approved, the resulting Capsule is saved as a variant_of the source
rgit compare <query>
+See the [command-line guide](https://github.com/StepzeroLab/research-git/wiki) +for every command and option. + ## License MIT diff --git a/assets/rgit-run-experiment.svg b/assets/rgit-run-experiment.svg new file mode 100644 index 0000000..6b10064 --- /dev/null +++ b/assets/rgit-run-experiment.svg @@ -0,0 +1,19 @@ + + Ask Codex to run and record a recalled experiment + A compact Codex terminal input asking the agent to run the recalled re-ranking evaluation and record its results with research-git. + + + + + + + your-project — codex + + + + Run the recalled re-ranking evaluation and record its results with research-git. + From 67381d7be5dcb1ff94c43f46d1db7ed8c8847f2f Mon Sep 17 00:00:00 2001 From: sunjiajunsunjiajun Date: Mon, 27 Jul 2026 17:26:26 +0800 Subject: [PATCH 5/6] docs: refine capsule and experiment guidance --- README.md | 8 ++++---- assets/awesome-rgit-demo.svg | 4 ++-- assets/rgit-digest-skill-input.svg | 6 +++--- assets/rgit-recall-plain-text-input.svg | 4 ++-- assets/rgit-recall-skill-input.svg | 6 +++--- assets/rgit-run-experiment.svg | 6 +++--- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 53f8d06..ab24f8f 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ research-git is a new Git tool for researchers and developers, built for the agentic coding era. -It captures important experiments and feature decisions as reusable semantic units, so coding agents can reapply, adapt, or safely remove them on today’s codebase. +It captures important experiments and feature decisions as reusable semantic units, links experimental results to the code that produced them, and helps coding agents reapply, adapt, or safely remove earlier ideas on today’s codebase. ## Why research-git @@ -28,7 +28,7 @@ AI coding tools can generate many different experiments and features in a day. B Traditional Git preserves commits and diffs, but it does not preserve the context behind them. It cannot tell an agent which changes belong to an experiment, why they were made, what assumptions they depended on, or what results they produced. Without that context, reverting may erase later work, replaying an old diff may fail against a changed architecture, and removing a feature may damage shared infrastructure. -research-git records experiments and feature decisions as reusable Capsules, capturing their intent, relevant code, dependencies, configuration, results, and restoration guidance. This gives coding agents the context to safely reapply or remove them on today’s codebase without restoring an old snapshot or deleting code piece by piece. +research-git records experiments and feature decisions as reusable Capsules, capturing their intent, relevant code, dependencies, configuration, and restoration guidance. It also links experimental results to the exact code that produced them. This gives coding agents the context to safely reapply or remove earlier ideas on today’s codebase without restoring an old snapshot or deleting code piece by piece. ## Quick Start @@ -76,10 +76,10 @@ The agent finds the capsule and **re-implements the idea onto today's code**, le Agent prompt: @research-git:rgit-recall Bring back the re-ranking retrieval step.

-After the idea is brought back, ask your agent to run the evaluation through research-git. The run keeps the code snapshot and metrics together, then stages the regenerated code for review: +After the idea is brought back, ask your agent to run its evaluation with research-git. The Run keeps the exact code snapshot and metrics together. If the implementation includes code changes, research-git also stages them as a Capsule Proposal for you to decide whether to keep.

- Agent prompt: Run the recalled re-ranking evaluation and record its results with research-git. + Agent prompt: The re-ranking step is ready. Run its evaluation and record the results with research-git.

### 3. Working in the terminal? Three commands diff --git a/assets/awesome-rgit-demo.svg b/assets/awesome-rgit-demo.svg index e903c83..4488a18 100644 --- a/assets/awesome-rgit-demo.svg +++ b/assets/awesome-rgit-demo.svg @@ -98,7 +98,7 @@ - flashinfer-mla-model-scale — Preserve model scale and Torch parity.Validate with HumanEval (89.6) before enabling FlashInfer MLA. Keep this capsule? + Capsule candidate: flashinfer-mla-model-scale — Preserve the model-configured scale and Torchparity. Require HumanEval 89.6 before enabling FlashInfer MLA. Keep it? @@ -249,7 +249,7 @@ └ recall("FlashInfer MLA") → feat_83ad710c └ Resolved depends_on graph → no additional capsules └ compose(["feat_83ad710c"]) → current archived source - └ Loaded intent, knobs, assumptions, and guide + └ Recalled Capsule flashinfer-mla-model-scale: intent, knobs, assumptions, and guide diff --git a/assets/rgit-digest-skill-input.svg b/assets/rgit-digest-skill-input.svg index f0905d1..1f94be3 100644 --- a/assets/rgit-digest-skill-input.svg +++ b/assets/rgit-digest-skill-input.svg @@ -15,7 +15,7 @@ your-project — codex - - @research-git:rgit-digest - Digest this repository's history. + + @research-git:rgit-digest + Digest this repository's history. diff --git a/assets/rgit-recall-plain-text-input.svg b/assets/rgit-recall-plain-text-input.svg index 6937ae0..a4e3907 100644 --- a/assets/rgit-recall-plain-text-input.svg +++ b/assets/rgit-recall-plain-text-input.svg @@ -14,6 +14,6 @@ your-project — codex - - Bring back the re-ranking retrieval step. + + Bring back the re-ranking retrieval step. diff --git a/assets/rgit-recall-skill-input.svg b/assets/rgit-recall-skill-input.svg index 391832a..c675bff 100644 --- a/assets/rgit-recall-skill-input.svg +++ b/assets/rgit-recall-skill-input.svg @@ -15,7 +15,7 @@ your-project — codex - - @research-git:rgit-recall - Bring back the re-ranking retrieval step. + + @research-git:rgit-recall + Bring back the re-ranking retrieval step. diff --git a/assets/rgit-run-experiment.svg b/assets/rgit-run-experiment.svg index 6b10064..9aab5f3 100644 --- a/assets/rgit-run-experiment.svg +++ b/assets/rgit-run-experiment.svg @@ -1,6 +1,6 @@ Ask Codex to run and record a recalled experiment - A compact Codex terminal input asking the agent to run the recalled re-ranking evaluation and record its results with research-git. + A compact Codex terminal input telling the agent that the re-ranking step is ready and asking it to run the evaluation and record the results with research-git. From 2f01159d3817f309ff545a11ee0c31ea08445628 Mon Sep 17 00:00:00 2001 From: sunjiajunsunjiajun Date: Mon, 27 Jul 2026 17:26:26 +0800 Subject: [PATCH 6/6] docs: add capsule capture and recall workflows --- README.md | 32 ++++--- assets/rgit-capsule-capture-workflow.svg | 110 +++++++++++++++++++++++ assets/rgit-capsule-recall-workflow.svg | 78 ++++++++++++++++ 3 files changed, 203 insertions(+), 17 deletions(-) create mode 100644 assets/rgit-capsule-capture-workflow.svg create mode 100644 assets/rgit-capsule-recall-workflow.svg diff --git a/README.md b/README.md index ab24f8f..443c67a 100644 --- a/README.md +++ b/README.md @@ -105,27 +105,25 @@ Anywhere you try many variations of one thing and later want to bring one back o ## How it works -One loop: capture each idea into a graph, then regenerate it onto today's code. The engine (blue) is free and deterministic. Intelligence happens at exactly two points (green), where subagents run on your existing subscription without a paid API. +Figure 1 shows how code changes become Capsules. After you edit code or complete an `rgit run`, research-git's local engine reads the Git diff, maps changed hunks to code symbols, stores the captured change, and stages a raw Proposal. This processing is deterministic and does not call a model or API. The experiment executed by `rgit run` still uses whatever compute it requires. + +The agentic phase begins with the `/rgit-capture` skill. In the default mode, your coding agent starts this flow automatically after meaningful changes; you can also invoke the skill explicitly. A `capsule-segmenter` sub-agent turns the raw Proposal into focused Capsule candidates and asks which ones you want to keep. After approval, an `edge-judge` sub-agent identifies relationships with the existing graph. These sub-agents run on your existing coding-agent subscription without using a paid API.

- A Git tool for ambitious researchers and developers in the agentic era. + research-git Capsule capture workflow +
+ Figure 1. Capturing code changes into the Capsule graph.

-```mermaid -flowchart LR - A["edit code /
rgit run -- ..."] -->|"free, deterministic"| B["raw proposal
(diff staged)"] - B -->|"/rgit-capture"| C{{"capsule-
segmenter"}} - C --> D[("Feature Capsule
graph (.rgit/)")] - D -->|"/rgit-recall «query»"| E["compose brief vs
today's code"] - E --> F{{"capsule-
regenerator"}} - F --> G["reviewable diff
on today's code"] - G -.->|"rgit run: freeze + link variant"| D - - classDef engine fill:#eef2ff,stroke:#5b6cff,color:#1e2a78; - classDef agent fill:#eafff0,stroke:#36a85f,color:#0f5132; - class A,B,D,E,G engine; - class C,F agent; -``` +Figure 2 shows how a stored Capsule is used on today's code. The `/rgit-recall` skill searches the graph and retrieves the relevant intent, code context, assumptions, dependencies, and restoration guidance. A coding agent uses this context to reapply or remove the idea against the current code, leaving a reviewable diff instead of restoring an old snapshot or replaying an outdated patch. + +After you review the diff, `rgit run` can evaluate the implementation, freeze the exact code that ran, and record its metrics. If the resulting Proposal is approved, the new Capsule is linked to the recalled Capsule as a variant. `rgit run` records the result and lineage; it does not perform recall or create the variant before approval. + +

+ research-git Capsule recall workflow +
+ Figure 2. Recalling Capsules and recording new variants. +

Learn more (under the hood) diff --git a/assets/rgit-capsule-capture-workflow.svg b/assets/rgit-capsule-capture-workflow.svg new file mode 100644 index 0000000..684cfcb --- /dev/null +++ b/assets/rgit-capsule-capture-workflow.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/rgit-capsule-recall-workflow.svg b/assets/rgit-capsule-recall-workflow.svg new file mode 100644 index 0000000..d67515b --- /dev/null +++ b/assets/rgit-capsule-recall-workflow.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +