AI News HubLIVE
站內改寫6 分鐘閱讀

待翻譯:Drift – Intent-driven versioning for AI coding agents

AI 服務暫時不可用,以下為來源摘要,待恢復後補全翻譯:Notifications You must be signed in to change notification settings Fork 0 Star 2 BranchesTags Open more actions menu Folders and files NameName Last commit message Last commit date Latest commit History 69 Commits 69 C…

來源Hacker News AI作者: lilcipherx

AI 服務暫時不可用,以下為來源正文,待恢復後補全翻譯。

Notifications You must be signed in to change notification settings Fork 0 Star 2 BranchesTags Open more actions menu Folders and files NameName Last commit message Last commit date Latest commit History 69 Commits 69 Commits .claude-plugin .claude-plugin .codex-plugin .codex-plugin .cursor-plugin .cursor-plugin .factory-plugin .factory-plugin .github .github .opencode .opencode .plugin .plugin docs docs eval eval examples examples migrations migrations packages packages prompts prompts scripts scripts skills/drift skills/drift tests tests .gitignore .gitignore AUDIT.md AUDIT.md CHANGELOG.md CHANGELOG.md CODE_OF_CONDUCT.md CODE_OF_CONDUCT.md CONTRIBUTING.md CONTRIBUTING.md Drift (Intent-Driven Versioning).md Drift (Intent-Driven Versioning).md LICENSE LICENSE NEXT_STEPS.md NEXT_STEPS.md README.md README.md SECURITY.md SECURITY.md action.yml action.yml gemini-extension.json gemini-extension.json mcp.json mcp.json mcp_config.json mcp_config.json package-lock.json package-lock.json package.json package.json plugin.json plugin.json tsconfig.base.json tsconfig.base.json tsconfig.json tsconfig.json Repository files navigation Git tracks what changed. Drift tracks why. Drift is a semantic version-control layer that wraps Git. Every commit becomes an Intent: the prompt that produced the change, the agent model behind it, the AST-level mutations, an optional checkpoint of the agent's cognitive state, and a cryptographic Ed25519 signature — all linked into an auditable, replayable graph. Built for the AI era. When more than 80% of code is generated, text diffs are useless for review: they show what changed, never why. Drift rejects broken syntax before it enters history, answers "why does this function exist?" with the originating prompt, and lets a crashed agent resume from its last checkpoint. Quickstart Give your agent Drift: Claude Code, Antigravity, Codex App, Codex CLI, Cursor, Factory Droid, Gemini CLI, GitHub Copilot CLI, Kimi Code, OpenCode, Pi. Prefer no agent? Use the CLI, the GitHub App, the GitHub Action, or VS Code. Want the 5-minute "aha" first? Seed the demo repo and run drift blame. Documentation: Quickstart (5-minute start) · API reference (CLI + MCP tools) · Architecture (how Drift works under the hood) Verified live on Windows 11 (Node v24.18.0, 2026-08-06): fresh clone → first drift blame in ~8.1 s, 10/10 checks pass, no registry 404 — and the npm path (packed @drift/* chain installed into an empty dir) answers the MCP handshake with all six tools in ~1 s. See the full measured tables. How it works It starts the moment you run drift init. Drift creates .drift/ — a SQLite DAG, a config, and a per-repo Ed25519 keypair — and from then on every commit becomes an intent. When you (or your agent) run drift realize -p "", Drift doesn't just commit. It parses the change semantically, rejects the commit if the syntax is broken (exit 2 — broken code never enters history), redacts secrets from your prompt, computes an AST delta (ADDED / MODIFIED / DELETED / MOVED / RENAMED), signs the intent, and stores it content-addressed in .drift/objects/ before committing with a Drift-Intent: trailer. After that, drift blame can walk any line or function back to the prompt that created it, drift context hydrates the last intents for a file so an agent grounds itself before editing, and drift verify re-runs the recorded verification command. A crashed agent runs drift replay --checkout and resumes exactly where it left off. And because these are MCP tools, your coding agent can use them directly — drift_realize instead of git commit. Deeper reading: the full command reference lives in docs/api.md (CLI flags, exit codes, JSON schemas, MCP tool inputs), and docs/architecture.md explains the storage model, encryption at rest, the webhook app, and the security boundaries. Installation Installation differs by harness. If you use more than one, install Drift separately for each one. All harnesses expose the same six tools: drift_realize, drift_context, drift_replay, drift_blame, drift_verify, drift_log. Status: the @drift/* npm packages are not published yet. Every section below leads with the clone path — it works right now from a checkout of this repository. The npx -y @drift/mcp / npx -y @drift/cli one-liners activate automatically once the packages land on npm; until then they return a 404, so use the clone command shown first. Every command below is backed by a real manifest in this repository (.claude-plugin/plugin.json, .plugin/plugin.json, .cursor-plugin/plugin.json, .codex-plugin/plugin.json, gemini-extension.json, plugin.json, .factory-plugin/, package.json → pi) or a ready-made config in examples/harness-configs/. Today, installation needs Node.js ≥ 24, npm and a clone of this repository (the MCP server runs straight from packages/drift-mcp/dist/index.js; no build step needed). Once the @drift/* packages are published, the same configs work via npx -y @drift/mcp with no clone. Claude Code Install as a plugin from the Drift marketplace (plugin-style, like Superpowers): /plugin marketplace add lilcipherx/drift /plugin install drift@drift Or add the Drift MCP server directly (project scope) — from a clone: claude mcp add drift --env DRIFT_REPO=/abs/path/to/your/repo -- node /path/to/drift/packages/drift-mcp/dist/index.js Once the packages are published, the same command works via npx (no clone): claude mcp add drift --env DRIFT_REPO=/abs/path/to/your/repo -- npx -y @drift/mcp Or copy the ready-made config: cp examples/harness-configs/claude-code/.mcp.json .mcp.json Verify with claude mcp list — you should see drift with its six tools. The marketplace manifest lives at .claude-plugin/marketplace.json in this repository (github-source lilcipherx/drift, strict plugin → .claude-plugin/plugin.json in the same repo). Antigravity Install Drift as a plugin from this repository: agy plugin install https://github.com/lilcipherx/drift Antigravity runs the plugin's session-start hook, so Drift is active from the first message. Reinstall with the same command to update. Codex App In the Codex app, open Settings → MCP servers and add: Name: drift Command: node (clone path) — or npx once the packages are published Args: /path/to/drift/packages/drift-mcp/dist/index.js — or -y @drift/mcp after publication Env: DRIFT_REPO=/abs/path/to/your/repo Codex CLI Add the Drift MCP server to ~/.codex/config.toml (from a clone): [mcp_servers.drift] command = "node" args = ["/path/to/drift/packages/drift-mcp/dist/index.js"] env = { DRIFT_REPO = "/abs/path/to/your/repo" } Once published, the same server runs via npx (no clone): [mcp_servers.drift] command = "npx" args = ["-y", "@drift/mcp"] env = { DRIFT_REPO = "/abs/path/to/your/repo" } Restart Codex, then ask for drift_blame / drift_context in any session. Cursor Copy the ready-made config and enable MCP servers in Cursor settings: cp examples/harness-configs/cursor/mcp.json .cursor/mcp.json Then ask for drift_blame in chat. Factory Droid Register the marketplace: droid plugin marketplace add https://github.com/lilcipherx/drift Install the plugin: droid plugin install drift@drift Gemini CLI Install the extension: gemini extensions install https://github.com/lilcipherx/drift Update later: gemini extensions update drift GitHub Copilot CLI Add the Drift MCP server (from a clone): copilot mcp add drift -e DRIFT_REPO=/abs/path/to/your/repo -- node /path/to/drift/packages/drift-mcp/dist/index.js Once the packages are published, the same command works via npx (no clone): copilot mcp add drift -e DRIFT_REPO=/abs/path/to/your/repo -- npx -y @drift/mcp Or copy the ready-made config to .github/mcp.json and restart Copilot. Kimi Code Drift is available in Kimi Code's plugin marketplace. Open Kimi Code's plugin manager: /plugins Go to Marketplace > Drift and install it. Or install directly from this repository: /plugins install https://github.com/lilcipherx/drift Detailed docs: docs/README.kimi.md OpenCode OpenCode uses its own plugin install; install Drift separately even if you already use it in another harness. Tell OpenCode: Fetch and follow instructions from https://raw.githubusercontent.com/lilcipherx/drift/main/.opencode/INSTALL.md Detailed docs: docs/README.opencode.md Pi Install Drift as a Pi package from this repository: pi install git:github.com/lilcipherx/drift For local development, run Pi with this checkout loaded as a temporary package: pi -e /path/to/drift VS Code Add the Drift MCP server to .vscode/mcp.json (native VS Code MCP support): cp examples/harness-configs/claude-code/.mcp.json .vscode/mcp.json VS Code picks it up on window reload. CLI From a clone (works today): git clone https://github.com/lilcipherx/drift.git && cd drift npm install node packages/drift-cli/dist/cli.js --help Once the CLI is published to npm, npx works without cloning: npx -y @drift/cli --help On your own repository: node /path/to/drift/packages/drift-cli/dist/cli.js init # … edit a file … node /path/to/drift/packages/drift-cli/dist/cli.js realize -p "Fix race condition in token refresh" --agent --model claude-3-5-sonnet node /path/to/drift/packages/drift-cli/dist/cli.js log GitHub App Install @drift/app to get intent summaries on every pull request: Reads Drift-Intent: trailers from PR commits, hydrates the intent objects from .drift/objects/ at the PR head, and posts a semantic summary comment — review the intent, not 2,000 lines of diff. Comments are idempotent: the app updates its own marker comment in place, so they never accumulate. Runs as a webhook server: drift-app start (see packages/drift-app/app.yml for the app manifest, scripts/webhook-proxy.sh for local debugging). GitHub Action Check intent health in CI: - uses: lilcipherx/[email protected] with: command: log # or: doctor / verify Demo The 5-minute "aha" — a real Drift history, generated by the CLI itself: bash scripts/seed-demo.sh cd examples/demo-repo node ../../packages/drift-cli/dist/cli.js log node ../../packages/drift-cli/dist/cli.js blame src/auth.ts --function refreshToken blame prints the prompt, model and a valid signature for the function: src/auth.ts:12 (refreshToken) AGENT @ Drift Demo model: claude-3-5-sonnet prompt: Fix race condition in token refresh by de-duplicating in-flight refreshes intent: did_2941b4547b4ed505a7c37190247768a7 commit: 087c492f… signature: valid The Basic Workflow init — Creates .drift/ (SQLite DAG, config, Ed25519 keypair). Never rewrites history; deleting .drift/ leaves a fully functional git repo. realize — Commit with intent. Syntax gate (exit 2), secret redaction, AST delta, Ed25519 signature, Drift-Intent: trailer. This is git commit for the AI era. log — Timeline of intents: id, author (agent vs human), model, prompt. blame / context — blame --line|--function walks a symbol back to its originating prompt; context hydrates the last N intents for grounding. verify — Re-runs the recorded verification command for an intent and checks the Ed25519 signature against the object file (never against DB rows). replay — Restore a checkpointed agent state; --checkout resets the worktree. Crash recovery for agents. doctor — DAG integrity, signature checks, orphan cleanup, encryption-key check when encryption is enabled. The agent checks the intent before any task. Mandatory for anyone touching generated code. What's Inside Core Package What it does @drift/cli The drift CLI — init, realize, log, blame, context, verify, replay, doctor, export @drift/core Intent store (SQLite DAG), git wrapper, Ed25519 signatures, secret redaction, AES-256-GCM encrypt [truncated for AI cost control]