Show HN: ctx – 搜索你机器上已有的编程代理历史

Hacker News Top 工具

摘要

ctx 是一个开源的 CLI 工具,它能在本地将编程代理会话索引到 SQLite 中,实现对过往讨论、决策和失败尝试的快速搜索,从而节省 token 并提升代理性能。

编程代理没有长期记忆。<p>但你机器上存储了数月的高保真代理会话记录。<p>一个简单但有效的方案:将这些会话记录和日志导入结构化的 SQLite 数据库,然后通过排序文本匹配进行搜索。整个过程完全在本地完成,不需要图数据库或托管记忆服务等花哨的东西。<p>这就是 ctx 背后的理念,一个用 Rust 编写的 CLI,负责导入和搜索。<p>我们给代理赋予一项技能,告诉它们在处理某个领域前先参考历史会话。通常我们通过一个名为 &quot;Agent History Research Subagent&quot; 的子代理来完成,它的工作就是在任务开始前准备一份简要的简报,涵盖所有相关历史。<p>一个真实例子:有时我们的测试套件运行会失败,原因是运行器磁盘已满。正确的做法是运行清理操作手册,但代理不清楚失败的根本原因,于是认为这是测试回归,从而陷入错误的调试方向。当代理搜索历史后,它发现这个失败此前已经出现过,并立即找到了正确的解决方法。这让代理走上了正确的清理路径,后来我们改进了日志输出,以便下次同样的问题能更清晰。这是个平淡的故事,但却是真实的代理生产力提升。<p>另一个不错的用例是快速生成可分享的会话记录。你可以排除嘈杂的中间消息,这样会话记录就能更清晰地展示重要部分。尝试在下一次 PR 中附上会话记录,这样你的队友和他们的代理就能审查变更背后的来源和提示。<p>如果你愿意接受额外挑战,可以让你的代理 &quot;全面审查此仓库中的所有代理历史,找出 SDLC 中哪些环节存在困难或不适合代理&quot;。利用历史会话递归改进代理化的 SDLC,这是我们目前经常使用的循环。<p>如果你试试看,请告诉我们你的想法!
查看原文
查看缓存全文

缓存时间: 2026/07/03 20:16

ctxrs/ctx 源码:https://github.com/ctxrs/ctx

ctx 是一个开源 CLI,用于快速本地搜索过去的编码代理会话。编码代理通常从零开始。它们可以检查当前仓库,但往往无法恢复早期工作中的讨论、决策、失败尝试、命令和测试结果。这些会话充满了有用的上下文:

  • 来自你的决策、约束、意图和被否决的方案
  • 之前代理的 bug 调查、重构、文件路径、命令、补丁和笔记

ctx 将这些日志索引到你机器上的 SQLite 中,然后为当前和未来的代理提供一个 CLI,用于在重复之前找到之前的讨论、命令或失败尝试。

安装与设置 ctx

curl -fsSL https://ctx.rs/install | sh

可选但建议用于代理会话:

npx skills add ctxrs/ctx

有关 Codex、Claude Code、Cursor 和原生 Agent Skills 中的市场/插件安装,请参阅 Agent Skill 安装

比原始转录本搜索节省 50 倍以上的 Token

通过将代理历史结构化为会话、事件、元数据和索引字段,然后返回带有引用的匹配结果,代理可以比原始搜索用更少的 Token 访问有意义的历史。结果因查询和语料库而异,但原始搜索通常 Token 消耗巨大,实际上等同于没有可用历史。

工作原理

你过去的代理会话存储在本地提供者的历史文件中。ctx 发现支持的来源,导入真实的持久记录,并将标准化的会话、事件和触及文件元数据存储在针对检索优化的本地 SQLite 数据库中。

ctx 用 Rust 编写,并存储本地 SQLite 索引,因此搜索快速、可脚本化,且无需后台服务。索引默认是本地且私有的。转录本文本会被保留,不会隐藏本地路径或类似秘密的字符串,因此在将复制输出分享到机器之外之前,请审阅。

# 索引所有已有的本地代理会话
ctx setup

# 你的代理可以用自然语言搜索之前的工作
ctx search "failed migration"

# 搜索触及了某个文件的会话/事件
ctx search --file crates/foo/src/lib.rs

# 或者搜索多个术语
ctx search --term "failed migration" --term rollback --term "cursor rename"

# 高级:使用只读 SQL 检查精确的本地索引数据
ctx sql "SELECT provider, COUNT(*) AS sessions FROM ctx_sessions GROUP BY provider"

# 结果包含匹配的会话、片段和 ctx ID
# evt_01h... ses_01h... codex "migration expected the old cursor name" ...

# 打印旧转录本的匹配部分
ctx show event --window 3

# 或者打印原始会话的紧凑转录本
ctx show session

这些 ID 允许你当前的代理根据需求从之前的会话中恢复尽可能多的上下文。ctx 不会将你的提示、转录本或索引历史发送到云服务、调用模型 API、需要 API 密钥或写入你的源代码仓库。

安装的二进制文件还包含本地文档和 man 页面生成:

ctx docs search "upgrade"
ctx docs show cli-reference
ctx docs man --print

由官方安装程序管理的二进制文件支持带签名的自我升级:

ctx upgrade status
ctx upgrade check

源码构建和包管理器安装保持不受管理,不会自我升级。

有关完整流水线,请参阅 ctx 的工作原理。如需快速首次运行,请参阅 快速入门

支持的代理历史记录

支持意味着 ctx 可以发现或读取该工具持久化的本地历史记录,并将其导入本地搜索索引。在你的机器上使用 ctx sources --json 查看当前哪些源是 importable(可导入)状态。

代理工具支持状态
Claude Code已支持
Codex已支持
Cursor已支持
Pi已支持
OpenCode已支持
Antigravity / Gemini CLI已支持
Factory AI Droid已支持
Copilot CLI已支持

ctx 的对比

代理记忆工具通常保存紧凑的事实、摘要、向量或图节点。这些有助于稳定偏好,但在下一个代理需要知道某个决策的来源、哪个命令失败或原始对话中什么被否决时,它们提供的证据很薄弱。

Graphify 类工具回答了另一个问题:它们映射当前仓库:文件、符号、导入、文件夹和关系。ctx 搜索之前的代理会话,这些会话解释了当人和代理改变那个仓库时发生了什么。

ctx 将检索绑定到会话和事件,因此另一个代理可以在使用源之前检查它。了解更多关于 代理记忆Graphify 式代码库图 以及 grep 或日志搜索 的信息。

探索文档

页面内容概述
安装安装 ctx,初始化本地存储,并索引发现的本地历史。
快速入门搜索本地历史,检查事件,打开会话,并使用 JSON 输出。
安装 ctx 技能使用开放技能安装程序安装代理历史搜索技能。
Agent 插件安装通过 Codex、Claude Code、Cursor 或原始技能文件夹安装 ctx 技能。
SDK从 TypeScript、Python、Rust、Go、JVM、Swift 或 .NET 代码中使用 ctx 代理历史搜索。
自定义历史插件为 ctx 原生不支持的代理格式构建高级本地适配器。
Cursor导入 Cursor 代理转录本,并要求 Cursor 在编辑前引用检索到的本地历史。
工作原理理解发现、导入、SQLite 存储、搜索刷新和带引用的检索。
支持的代理查看 ctx 当前可以发现、导入和搜索哪些代理历史。
CLI 参考查看 setup、status、sources、import、show、locate、search、SQL、MCP 和 doctor 命令。

相似文章