内容
# 氩 — MongoDB 版本控制
<p align="center">
<a href="https://www.argonlabs.tech">
<img src=".github/assets/hero.png" alt="氩 — MongoDB 版本控制,为 AI 代理构建:从生产环境分支,运行代理,撤销会话" width="100%">
</a>
</p>
[](https://github.com/argon-lab/argon/actions/workflows/ci.yml)
[](https://goreportcard.com/report/github.com/argon-lab/argon)
[](https://opensource.org/licenses/MIT)
[](https://github.com/argon-lab/homebrew-tap)
[](https://www.npmjs.com/package/argonctl)
[](https://pypi.org/project/argon-agents/)
**对 MongoDB 进行分支、时间旅行、合并和撤销。任意驱动程序,真实的 mongod,版本化的历史记录。 为 AI 代理构建。**
三个理念,三十秒:
1. **分支是一个指针,不是副本** — 在毫秒内创建,适用于任何数据大小。
2. **`checkout` 将分支转换为真实的 MongoDB 数据库** — pymongo、mongoose、mongosh、索引、聚合、事务:全部真实,且每次写入都成为版本化的历史记录。
3. **没有任何内容会丢失** — 差异、合并、撤销、重置或永久固定。
## 安装
```bash
brew install argon-lab/tap/argonctl # macOS
npm install -g argonctl # 跨平台
# MongoDB 必须作为副本集运行(单节点即可):
docker run -d --name argon-mongo -p 27017:27017 mongo:7 --replSet rs0
docker exec argon-mongo mongosh --quiet --eval 'rs.initiate()'
```
## 工作流程
```
main ──branch──▶ experiment ──checkout──▶ mongodb://… ← 任意驱动程序
│
┌── argon diff ──────────┤ 每一次写入都被捕获
▼ ▼
合并(数据拉取请求) 或 撤销 / 丢弃 / 重置
```
```bash
# 0 · 导入您的数据(“git clone”)— 或者:argon projects create myapp
argon import database --uri mongodb://localhost:27017 --database myapp --project myapp
# 1 · 分支 — 即时,无需复制
argon branches create experiment -p myapp
# 2 · 获取一个真实的数据库,捕获写入
argon checkout -p myapp -b experiment # 打印连接字符串
argon watch -p myapp -b experiment # 在您写入时保持运行
# 3 · 审查和合并回来 — 数据拉取请求
argon diff -p myapp -b experiment
argon merge preview -p myapp -b experiment
argon merge apply <plan-id>
# … 或者重置而不是合并
argon restore reset -p myapp -b main --time 2026-07-07T09:00:00Z --backup pre-incident
```
更喜欢点击?`argon console` 提供一个本地的 Web 控制台(UI + REST API)并打开您的浏览器。
## 您获得的功能
| | 命令 | 一句话 |
|---|---|---|
| **分支** | `argon branches create` | 元数据写入 — 即时,零复制 |
| **真实数据库** | `argon checkout` / `argon proxy` | 任意驱动程序,真实的 mongod;代理提供稳定的 `mongodb://host/<project>~<branch>` URI |
| **写入捕获** | `argon watch` | 变更流 → 版本化历史记录,按参与者归因 |
| **时间旅行** | `argon time-travel query` | 任意历史状态,按 LSN 或时间戳 |
| **撤销** | `argon undo --actor <a>` | 恢复一个范围或一个写入者的更改;追加,仅冲突感知 |
| **恢复** | `argon restore preview/reset/branch` | 重置分支或历史记录;已记录,永不破坏 |
| **数据拉取请求** | `argon merge preview/apply` | 三向合并作为可审查计划;冲突永不沉默 |
| **沙盒** | `argon sandbox create --ttl 1h` | 分叉 + 检出 + TTL 一步到位 — 一次性代理工作区 |
| **数据集固定** | `argon pin create` / `pin sandbox` | 免疫于 GC 和重置的不可变命名状态 — 可重复评估 |
| **Web 控制台** | `argon console` | 本地 UI + REST API 一键到位 |
存储保持有界:快照 + 保留窗口 GC 保留状态和历史窗口,而不是每一次写入。 详细信息和一致性模型,诚实声明:[ARCHITECTURE.md](docs/ARCHITECTURE.md)。
## 为 AI 代理
```bash
claude mcp add argon -- argon mcp # 13 个工具:沙盒,差异,合并,撤销,固定
pip install argon-agents # LangGraph 检查点 + Mem0,基于 REST
```
```python
saver = ArgonCheckpointSaver.from_sandbox(argon, "myapp") # 在一次性分支上检查点
saver.merge() # 采用运行 — 或 .discard()
argon.create_pin("myapp", "eval-v1") # 固定数据集
run = argon.sandbox_from_pin("myapp", "eval-v1") # 相同状态,每个评估运行
```
完整的代理工作流程:[docs/AGENTS.md](docs/AGENTS.md)。
## 文档
| | |
|---|---|
| [快速入门](docs/QUICK_START.md) | 安装 → 第一个合并,逐步 |
| [CLI 参考](docs/CLI.md) | 每个命令 |
| [代理](docs/AGENTS.md) | 沙盒,固定,MCP,REST API,argon-agents,代理 |
| [架构](docs/ARCHITECTURE.md) | 它如何工作及其保证 |
| [操作](docs/OPERATIONS.md) | 部署,块存储(S3/FS),GC,v1→v2 迁移 |
| [性能](docs/PERFORMANCE.md) | 每个数字都存在于 [可复制的基准测试](https://github.com/argon-lab/benchmarks) 中 — 不在此处,遵循策略 |
## 社区
[问题](https://github.com/argon-lab/argon/issues) ·
[讨论](https://github.com/argon-lab/argon/discussions) ·
[贡献](CONTRIBUTING.md) ·
[argonlabs.tech](https://www.argonlabs.tech)
---
<div align="center">
**给你的 MongoDB 一个时间机器。 无需担心分支。** ⭐
</div>