Skip to main content

A memory system that captures code ideas as semantic capsules you can regenerate onto today's codebase

Project description

research-git

A new Git tool for ambitious researchers and developers in the agentic era.
Works with Claude Code, Codex, Gemini CLI, and opencode.

Quick Start License: MIT Claude Code Python 3.11+

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

Git remembers commits. research-git remembers ideas.

research-git turns experiments and features into reusable Feature Capsules so coding agents can reapply, adapt, or remove them safely as your code evolves.

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.

flowchart LR
    A["edit code /<br/>rgit run -- ..."] -->|"free, deterministic"| B["raw proposal<br/>(diff staged)"]
    B -->|"/rgit-capture"| C{{"capsule-<br/>segmenter"}}
    C --> D[("Feature Capsule<br/>graph (.rgit/)")]
    D -->|"/rgit-recall «query»"| E["compose brief vs<br/>today's code"]
    E --> F{{"capsule-<br/>regenerator"}}
    F --> G["reviewable diff<br/>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;

The Feature Capsule

Every idea you keep becomes one capsule — a self-contained unit a future agent can read and bring back:

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

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

pip install research-git
rgit install        # wires research-git into every agent client on this machine
cd your-project
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.

Install details: choosing platforms, guidance modes, capture-on-commit
  • rgit install claude-code (or codex / gemini / opencode / generic) targets one client; --list shows all; --uninstall removes.
  • The installer also writes a short guidance block into your client's global file (~/.claude/CLAUDE.md, ~/.codex/AGENTS.md, …) so the agent knows when to save ideas. On an interactive terminal you pick how proactive that should be (default / manual-only / none); pass --guidance <mode> to choose non-interactively.
  • Optional: rgit install-hooks (per repo) makes every git commit stage its own snapshot automatically, so nothing slips through even when you forget. It never touches an existing hook, hooks never approve anything, and rgit install-hooks --uninstall removes it. Skip it in CI or shared clones.
  • Manual route on Claude Code: /plugin marketplace add StepzeroLab/research-git then /plugin install research-git@research-git.

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:

"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. No commands to memorize — but if you like being explicit, /rgit-capture saves recent work and /rgit-recall <what you want back> brings an idea home.

3. Working in the terminal? Three commands

rgit run -- python eval_agent.py --retrieval rerank   # run an experiment; freezes a byte-exact snapshot + metrics
rgit review                                           # see what's been captured, approve what's worth keeping
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.

More commands as your store grows: More commands.


Updating

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.

  • 🤖 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.

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

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

A free, deterministic Phase 1 (libcst maps diff hunks to the functions/classes they touch) produces a rough candidate for every change. Phase 2 is a dispatched capsule-segmenter subagent that clusters the diff into coherent features, drops infrastructure noise, and writes the real intent, knobs, assumptions, and resurrection guide. Once a capsule is approved, the engine deterministically links same-region edges and over-produces depends_on candidates from name overlap, which an edge-judge subagent confirms or rejects.

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.

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.

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 <command> --help for any of them:

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 <capsule> run a recalled variant and link the new run 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 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

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

research_git-0.0.7.tar.gz (147.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

research_git-0.0.7-py3-none-any.whl (107.3 kB view details)

Uploaded Python 3

File details

Details for the file research_git-0.0.7.tar.gz.

File metadata

  • Download URL: research_git-0.0.7.tar.gz
  • Upload date:
  • Size: 147.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for research_git-0.0.7.tar.gz
Algorithm Hash digest
SHA256 8aaec0ca6edb449daef5cf46857f307289bb782dc5c3dcad9d7f610d5c2716a0
MD5 10a727aa57fb622683e71df42c69bad7
BLAKE2b-256 d43a5de114b23cac6c12d9d7aa8c035d55e2e9084c9904b1750619067a9e6107

See more details on using hashes here.

Provenance

The following attestation bundles were made for research_git-0.0.7.tar.gz:

Publisher: publish.yml on StepzeroLab/research-git

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file research_git-0.0.7-py3-none-any.whl.

File metadata

  • Download URL: research_git-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 107.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for research_git-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 7c5b7c0d4abdaf1dba2d5a68a63cdc77c8191696a48163437b63f6b38338e92c
MD5 9e3688fd2b87242f3925c824600a4385
BLAKE2b-256 9f1754aa46d51a823e13c03aec0f74c187e347925e34a9fbf83d874a5df6a6df

See more details on using hashes here.

Provenance

The following attestation bundles were made for research_git-0.0.7-py3-none-any.whl:

Publisher: publish.yml on StepzeroLab/research-git

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page