ctx:本地搜索编码代理历史记录
ctx:本地搜索编码代理历史记录
ctx 使代理能够从本地历史中恢复过去的上下文
编码代理通常在每个会话开始时不记得之前的交互。虽然它们可以检查仓库的当前状态,但往往无法访问导致当前代码库的先前讨论、被拒绝的方案和失败的命令。ctx 通过将本地代理历史文件索引到本地 SQLite 数据库,实现了这一点,使当前和未来的代理能够使用 CLI 检索特定的先前事件和决策。
令牌高效检索 vs. 原始转录搜索
在原始转录中搜索通常在令牌使用量上成本过高。ctx 通过将历史结构化为会话、事件和元数据,设计上比原始搜索高效至多 50 倍。
与其将整个转录喂入模型的上下文窗口,ctx 返回排序后的、带有引用的匹配项。这避免了原始搜索的“令牌沉重”特性,使历史对代理仍然可用。
技术架构与隐私
ctx 用 Rust 编写,作为本地优先工具运行,无需后台服务或 API 密钥。它通过以下特定流水线工作:
- 发现:ctx 在机器上识别受支持的本地提供者历史文件。
- 导入:它导入持久化记录并规范化会话、事件和触及文件的元数据。
- 存储:数据存储在本地 SQLite 索引中,针对检索进行优化。
为保持隐私,索引默认保持本地且私有。该工具不会将提示、转录或历史发送到云服务。然而,由于转录文本会被保留(包括本地路径和潜在的机密),因此建议用户在将其分享至机器外部之前审查输出。
支持的代理与集成
ctx 能发现并导入来自广泛代理框架的历史记录,包括:
- Claude Code
- Cursor
- Codex
- Copilot CLI
- Pi
- OpenCode
- Antigravity / Gemini CLI
- Factory AI Droid
用户可以通过 npx skills add ctxrs/ctx 将 ctx 作为“Agent Skill”集成,或通过针对 Cursor、Claude Code 等工具的特定插件安装,使代理本身能够调用搜索 CLI。
与其他记忆工具的比较
ctx 与典型的代理记忆工具和代码库映射工具的区别在于它关注代码背后的“原因”:
- 代理记忆工具:通常保存紧凑的事实或向量,缺乏理解为何做出特定决策或为何命令失败的证据。
- 代码库图(如 Graphify):映射文件和符号的当前状态,但不捕获仓库变化的历史过程。
- Grep/日志搜索:虽然可以实现,但 ctx 提供了结构化、索引化的方法,比手动 grep 日志文件更高效。
社区观点与讨论
虽然结构化搜索工具的实用性显而易见,但 Hacker News 上的一些用户指出,某些代理已经具备搜索自身历史的能力。
"我经常让 Claude Code 查看 ~/.claude 中的先前会话,它可以通过 jq/grep 自由检索,无需特殊工具。"
其他贡献者强调,需要一种标准化的代理转录和日志格式,以简化在不同提供者之间创建此类工具的工作。ctx 的作者 luca-ctx 表示,构建该工具让人显而易见,需要一个代理转录的标准规范。