entireio/cli
GitHub: entireio/cli
Entire 是一款将 AI 编程助手会话与 Git 提交关联的工具,帮助开发者追溯代码变更的完整上下文和 AI 推理过程。
Stars: 3542 | Forks: 255
# 完整 CLI
Entire 接入你的 Git 工作流,在你工作时捕获 AI agent 会话。会话与提交一同索引,创建关于代码如何在你的仓库中编写的可搜索记录。
使用 Entire,你可以:
- **理解代码变更原因** — 查看完整的 prompt/response 转录以及涉及的文件
- **即时恢复** — 当 agent 偏离轨道时回退到已知良好的 checkpoint 并无缝恢复
- **保持 Git 历史整洁** — 在单独的分支上保留 agent 上下文
- **更快上手** — 展示从 prompt → 变更 → 提交的路径
- **保持可追溯性** — 在需要时支持审计和合规要求
## 目录
- [快速入门](#quick-start)
- [典型工作流](#typical-workflow)
- [核心概念](#key-concepts)
- [工作原理](#how-it-works)
- [策略](#strategy)
- [命令参考](#commands-reference)
- [配置](#configuration)
- [安全与隐私](#security--privacy)
- [故障排除](#troubleshooting)
- [开发](#development)
- [获取帮助](#getting-help)
- [许可证](#license)
## 环境要求
- Git
- macOS 或 Linux(Windows 通过 WSL)
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Gemini CLI](https://github.com/google-gemini/gemini-cli), [OpenCode](https://opencode.ai/docs/cli/), [Cursor](https://www.cursor.com/), 或 [GitHub Copilot CLI](https://docs.github.com/en/copilot) 已安装并完成认证
## 快速入门
```
# 通过 Homebrew 安装
brew tap entireio/tap
brew install entireio/tap/entire
# 或通过 Go 安装
go install github.com/entireio/cli/cmd/entire@latest
# 在您的项目中启用
cd your-project && entire enable
# 检查状态
entire status
```
## 典型工作流
### 1. 在你的仓库中启用 Entire
```
entire enable
```
这会安装 agent 和 git hooks 以配合你的 AI agent(Claude Code、Gemini CLI、OpenCode、Cursor 或 Copilot CLI)工作。你会被提示选择要启用的 agent。要以非交互方式启用特定 agent,请使用 `entire enable --agent `(例如 `entire enable --agent cursor`)。
这些 hooks 在你工作时捕获会话数据。当你或 agent 进行 git commit 时会创建 checkpoint。你的代码提交保持整洁,Entire 永远不会在你的活动分支上创建提交。所有会话元数据都存储在单独的 `entire/checkpoints/v1` 分支上。
### 2. 使用你的 AI Agent
只需正常使用 Claude Code、Gemini CLI、OpenCode、Cursor 或 Copilot CLI。Entire 在后台运行,跟踪你的会话:
```
entire status # Check current session status anytime
```
### 3. 回退到之前的 Checkpoint
如果你想撤销一些更改并返回到较早的 checkpoint:
```
entire rewind
```
这会显示当前会话中所有可用的 checkpoint。选择一个即可将代码恢复到该确切状态。
### 4. 恢复之前的会话
要恢复某个分支的最新 checkpoint 会话元数据:
```
entire resume
```
Entire 会检出该分支,恢复最新的 checkpoint 会话元数据(一个或多个会话),并打印继续所需的命令。
### 5. 禁用 Entire(可选)
```
entire disable
```
移除 git hooks。你的代码和提交历史保持不变。
## 核心概念
### Sessions(会话)
一个 **session** 代表与你的 AI agent 从开始到结束的完整交互。每个会话捕获所有 prompt、response、修改的文件和时间戳。
**Session ID 格式:** `YYYY-MM-DD-`(例如 `2026-01-08-abc123de-f456-7890-abcd-ef1234567890`)
会话与你的代码提交分开存储在 `entire/checkpoints/v1` 分支上。
### Checkpoints(检查点)
一个 **checkpoint** 是会话中你可以回退到的快照——你工作中的"保存点"。
当你或 agent 进行 git commit 时会创建 checkpoint。**Checkpoint ID** 是 12 个字符的十六进制字符串(例如 `a3b2c4d5e6f7`)。
### 工作原理
```
Your Branch entire/checkpoints/v1
│ │
▼ │
[Base Commit] │
│ │
│ ┌─── Agent works ───┐ │
│ │ Step 1 │ │
│ │ Step 2 │ │
│ │ Step 3 │ │
│ └───────────────────┘ │
│ │
▼ ▼
[Your Commit] ─────────────────► [Session Metadata]
│ (transcript, prompts,
│ files touched)
▼
```
Checkpoint 在你工作时保存。当你提交时,会话元数据会永久存储在 `entire/checkpoints/v1` 分支上并与你的提交关联。
### 策略
Entire 使用手动提交策略来保持你的 git 历史整洁:
- **不在你的分支上创建提交** — Entire 永远不会在活动分支上创建提交
- **适用于任何分支** — 可在 main、master 和 feature 分支上正常工作
- **非破坏性回退** — 从任何 checkpoint 恢复文件而不改变提交历史
- **元数据单独存储** — 所有会话数据存储在 `entire/checkpoints/v1` 分支上
### Git Worktrees
Entire 与 [git worktrees](https://git-scm.com/docs/git-worktree) 无缝协作。每个 worktree 都有独立的会话跟踪,因此你可以在不同的 worktree 中运行多个 AI 会话而不会冲突。
### 并发会话
多个 AI 会话可以在同一个提交上运行。如果你在另一个会话有未提交的工作时启动第二个会话,Entire 会警告你并分别跟踪它们。两个会话的 checkpoint 都会被保留,并且可以独立回退。
## 命令参考
| 命令 | 描述 |
| ---------------- | ------------------------------------------------------------------- |
| `entire clean` | 清理孤立的 Entire 数据 |
| `entire disable` | 从仓库中移除 Entire hooks |
| `entire doctor` | 修复或清理卡住的会话 |
| `entire enable` | 在你的仓库中启用 Entire |
| `entire explain` | 解释会话或提交 |
| `entire reset` | 删除当前 HEAD 提交的 shadow branch 和会话状态 |
| `entire resume` | 切换到分支,恢复最新的 checkpoint 会话元数据,并显示继续的命令 |
| `entire rewind` | 回退到之前的 checkpoint |
| `entire status` | 显示当前会话信息 |
| `entire version` | 显示 Entire CLI 版本 |
### `entire enable` 标志
| 标志 | 描述 |
| ---------------------- | ------------------------------------------------------------- |
| `--agent ` | 要安装 hooks 的 AI agent:`claude-code`, `gemini`, `opencode`, `cursor`, 或 `copilot-cli` |
| `--force`, `-f` | 强制重新安装 hooks(先移除现有的 Entire hooks) |
| `--local` | 将设置写入 `settings.local.json` 而非 `settings.json` |
| `--project` | 将设置写入 `settings.json`(即使已存在) |
| `--skip-push-sessions` | 禁用 git push 时自动推送会话日志 |
| `--checkpoint-remote ` | 将 checkpoint 分支推送到单独的仓库(例如 `github:org/checkpoints-repo`) |
| `--telemetry=false` | 禁用匿名使用分析 |
**示例:**
```
# 强制重新安装 hooks
entire enable --force
# 本地保存设置(不提交至 git)
entire enable --local
```
## 配置
Entire 在 `.entire/` 目录中使用两个配置文件:
### settings.json(项目设置)
团队共享,通常会提交到 git:
```
{
"enabled": true
}
```
### settings.local.json(本地设置)
个人覆盖,默认被 gitignore:
```
{
"enabled": false,
"log_level": "debug"
}
```
### 配置选项
| 选项 | 值 | 描述 |
| ------------------------------------- | -------------------------------- | ------------------------------------------------------------------ |
| `enabled` | `true`, `false` | 启用/禁用 Entire |
| `log_level` | `debug`, `info`, `warn`, `error` | 日志详细程度 |
| `strategy_options.push_sessions` | `true`, `false` | 在 git push 时自动推送 `entire/checkpoints/v1` 分支 |
| `strategy_options.checkpoint_remote` | `{"provider": "github", "repo": "org/repo"}` | 将 checkpoint 分支推送到单独的仓库(见下文) |
| `strategy_options.summarize.enabled` | `true`, `false` | 在提交时自动生成 AI 摘要 |
| `telemetry` | `true`, `false` | 向 Posthog 发送匿名使用统计 |
### Agent Hook 配置
每个 agent 将其 hook 配置存储在自己的目录中。当你运行 `entire enable` 时,hooks 会安装到每个选定 agent 的相应位置:
| Agent | Hook 位置 | 格式 |
|-------------| ----------------------------- | ----------------- |
| Claude Code | `.claude/settings.json` | JSON hooks 配置 |
| Gemini CLI | `.gemini/settings.json` | JSON hooks 配置 |
| OpenCode | `.opencode/plugins/entire.ts` | TypeScript 插件 |
| Cursor | `.cursor/hooks.json` | JSON hooks 配置 |
| Copilot CLI | `.github/hooks/entire.json` | JSON hooks 配置 |
你可以同时启用多个 agent —— 每个 agent 的 hooks 是独立的。Entire 通过检查已安装的 hooks 来检测哪些 agent 处于活动状态,而不是通过 `settings.json` 中的设置。
### Checkpoint Remote
默认情况下,Entire 将 `entire/checkpoints/v1` 推送到与你的代码相同的 remote。如果你想将 checkpoint 数据推送到单独的仓库(例如公共项目的私有仓库),请使用结构化的 provider 和 repo 配置 `checkpoint_remote`:
```
{
"strategy_options": {
"checkpoint_remote": {
"provider": "github",
"repo": "myorg/checkpoints-private"
}
}
}
```
或通过 CLI:
```
entire enable --checkpoint-remote github:myorg/checkpoints-private
```
Entire 使用与你的 push remote 相同的协议(SSH 或 HTTPS)自动推导 git URL。它会:
- 如果 remote 上存在但本地不存在,则在本地获取 checkpoint 分支(一次性)
- 将 `entire/checkpoints/v1` 推送到 checkpoint 仓库,而不是你的默认 push remote
- 如果检测到 fork 则跳过推送(push remote 所有者与 checkpoint 仓库所有者不同)
- 如果 remote 无法访问,则发出警告并继续,不阻塞你的主推送
### 自动摘要
启用后,Entire 会在提交时自动为 checkpoint 生成 AI 摘要。摘要捕获会话中的意图、结果、学习点、摩擦点和待办事项。
```
{
"strategy_options": {
"summarize": {
"enabled": true
}
}
}
```
**要求:**
- 必须安装并认证 Claude CLI(PATH 中可用 `claude` 命令)
- 摘要生成是非阻塞的:失败会被记录但不会阻止提交
**注意:** 目前使用 Claude CLI 进行摘要生成。未来版本可能支持其他 AI 后端。
### 设置优先级
本地设置会逐字段覆盖项目设置。当你运行 `entire status` 时,它会显示项目和本地(有效)设置。
### Gemini CLI
Gemini CLI 支持目前处于预览阶段。Entire 可以将 [Gemini CLI](https://github.com/google-gemini/gemini-cli) 作为 Claude Code 的替代方案,或与其并存 —— 你可以同时启用多个 agent 的 hooks。
启用方式:
```
entire enable --agent gemini
```
所有命令(`rewind`、`status`、`doctor` 等)的工作方式相同,无论配置了哪个 agent。
如果你在使用 Gemini CLI 集成时遇到任何问题,请[提交 issue](https://github.com/entireio/cli/issues)。
### OpenCode
OpenCode 支持目前处于预览阶段。Entire 可以将 [OpenCode](https://opencode.ai/docs/cli/) 作为 Claude Code 的替代方案,或与其并存 —— 你可以同时启用多个 agent 的 hooks。
启用方式:
```
entire enable --agent opencode
```
或者在运行 `entire enable` 时从交互式 agent 选择器中选择 OpenCode。
所有命令(`rewind`、`status`、`doctor` 等)的工作方式相同,无论配置了哪个 agent。
如果你在使用 OpenCode 集成时遇到任何问题,请[提交 issue](https://github.com/entireio/cli/issues)。
### Cursor
Cursor 支持目前处于预览阶段。Entire 可以将 [Cursor](https://www.cursor.com/) 作为 Claude Code 的替代方案,或与其并存 —— 你可以同时启用多个 agent 的 hooks。
Entire 支持 Cursor IDE 和 Cursor Agent CLI 工具。
启用方式:
```
entire enable --agent cursor
```
或者在运行 `entire enable` 时从交互式 agent 选择器中选择 Cursor IDE。
目前暂不支持 Rewind,但其他命令(`doctor`、`status` 等)与其他 agent 相同。
如果你在使用 Cursor 集成时遇到任何问题,请[提交 issue](https://github.com/entireio/cli/issues)。
### Copilot CLI
GitHub Copilot CLI 支持目前处于预览阶段。Entire 可以将 [GitHub Copilot CLI](https://docs.github.com/en/copilot) 作为 Claude Code 的替代方案,或与其并存 —— 你可以同时启用多个 agent 的 hooks。
启用方式:
```
entire enable --agent copilot-cli
```
或者在运行 `entire enable` 时从交互式 agent 选择器中选择 Copilot CLI。
所有命令(`rewind`、`resume`、`status`、`doctor` 等)的工作方式相同,无论配置了哪个 agent。
如果你在使用 Copilot CLI 集成时遇到任何问题,请[提交 issue](https://github.com/entireio/cli/issues)。
## 安全与隐私
**你的会话转录存储在你的 git 仓库中**,位于 `entire/checkpoints/v1` 分支上。如果你的仓库是公开的,此数据对任何人可见。
Entire 在写入 `entire/checkpoints1` 时会自动修订检测到的秘密(API key、token、凭据),但修订是尽力而为的。会话期间使用的临时 shadow branch 可能包含未修订的数据,不应被推送。详情请参阅 [docs/security-and-privacy.md](docs/security-and-privacy.md)。
## 故障排除
### 常见问题
| 问题 | 解决方案 |
| ------------------------ | ------------------------------------------------------- |
| "Not a git repository" | 先导航到 Git 仓库 |
| "Entire is disabled" | 运行 `entire enable` |
| "No rewind points found" | 使用你配置的 agent 并提交你的更改 |
| "shadow branch conflict" | 运行 `entire reset --force` |
### SSH 认证错误
如果在运行 `entire resume` 时看到类似这样的错误:
```
Failed to fetch metadata: failed to fetch entire/checkpoints/v1 from origin: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain
```
这是 [go-git SSH 处理的已知问题](https://github.com/go-git/go-git/issues/411)。通过将 GitHub 的 host key 添加到你的 known_hosts 文件来修复:
```
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
ssh-keyscan -t ecdsa github.com >> ~/.ssh/known_hosts
```
### 调试模式
```
# 通过环境变量
ENTIRE_LOG_LEVEL=debug entire status
# 或通过 settings.local.json
{
"log_level": "debug"
}
```
### 重置状态
```
# 重置当前提交的 shadow branch
entire reset --force
# 禁用并重新启用
entire disable && entire enable --force
```
### 无障碍
对于屏幕阅读器用户,启用无障碍模式:
```
export ACCESSIBLE=1
entire enable
```
这会使用更简单的文本提示代替交互式 TUI 元素。
## 开发
本项目使用 [mise](https://mise.jdx.dev/) 进行任务自动化和依赖管理。
### 前置条件
- [mise](https://mise.jdx.dev/) - 使用 `curl https://mise.run | sh` 安装
### 入门
```
# 克隆仓库
git clone
cd cli
# 安装依赖(包括 Go)
mise install
# 信任 mise 配置(首次设置必需)
mise trust
# 构建 CLI
mise run build
```
### 常用任务
```
# 运行测试
mise run test
# 运行集成测试
mise run test:integration
# 运行所有测试(单元 + 集成,CI 模式)
mise run test:ci
# 对代码进行 Lint
mise run lint
# 格式化代码
mise run fmt
```
## 获取帮助
```
entire --help # General help
entire --help # Command-specific help
```
- **GitHub Issues:** 在 https://github.com/entireio/cli/issues 报告 bug 或请求功能
- **贡献:** 参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 了解指南
## 许可证
MIT 许可证 - 详情请参阅 [LICENSE](LICENSE)。
标签:AI代理, AI编程, Claude, Copilot, Cursor, CVE检测, DLL 劫持, EVTX分析, Gemini, Git工作流, Golang, Homebrew, 人工智能安全, 代码上下文, 代码历史, 代码索引, 会话记录, 可追溯性, 合规性, 回滚恢复, 团队协作, 大语言模型, 安全可观测性, 安全编程, 开发者平台, 推理追踪, 提示词工程, 日志审计, 版本控制, 策略决策点, 网络调试, 自动化