pond

把所有 AI 代理的会话无损存档到一个可搜索、可 SQL 查询、可跨客户端恢复的存储层。

源仓库
tenequm/pond
Star 数
★ 89
最近更新
1 天前
License
Apache-2.0
主语言
Rust

30 秒速览

可在哪里用
通用 · 跨平台Codex · Claude CodeClaude.ai(部分支持)
开始前需要
Rust 工具链(仅 cargo/源码安装需要)protoc(Windows 源码构建需要)NASM(Windows 源码构建需要)S3/GCS/Azure 凭据(可选,用于远程存储)Shell / 命令行网络访问本地文件系统MCP Server
典型场景
长期使用 Claude Code 与 Codex 的开发者,想找回三个月前某个 bug 的修复过程,让 agent 通过 MCP 直接查询而不是翻旧文件。
主要局限
仍处于 pre-v1,README 明确说明 schema、wire shape 与配置键在 v1 之前可能破坏性变更。

这个 Agent 能做什么,适合哪些场景?

pond 是一个用 Rust 编写的会话存储与检索层,自动扫描 Claude Code、Codex CLI、opencode、pi、oh-my-pi、OpenClaw、Nanoclaw、Hermes Agent、letta-code、grok-build、Antigravity CLI、Devin CLI 等客户端在本地写下的会话文件,按双向编解码器转换成统一的 Session / Message / Part 规范模型,写入三个 Lance 数据集(sessions、messages、parts)。存储位置由你掌握:默认在 ~/.local/share/pond,也可以换成 S3、GCS、Azure 或任意 S3 兼容对象存储。检索默认走 BM25 全文(分词器语言中立),可选开启 intfloat/multilingual-e5-small 向量检索,每次查询只用其中一条召回路径,结果按 session_root 聚合为每组会话一份摘要。对外暴露 CLI、HTTP+JSON、stdio MCP 三种接口,MCP 侧有 pond_search、pond_get_session、pond_get_message、pond_ingest 工具以及只读的 pond_sql,另有 schema://pond、schema://pond-sql、stats://pond 资源。由于适配器是双向的,会话可以恢复到任何受支持的客户端继续,而不必回到产生它的一方。项目目前处于 pre-v1 阶段,schema 与配置键仍可能破坏性变更。

pond init 引导式配置存储位置、启用适配器、注册 MCP 服务器并安装 pond skill,可选设置定时同步;pond sync 从每个已启用适配器读取原始会话记录,经 extractor 辅助函数解析为规范模型,写入 Lance 的 sessions、messages、parts 三个数据集,并在默认情况下顺带折叠索引;messages 表同时存放可空的 vector 与 embedding_model 列,开启嵌入时在入库时内联计算向量。pond search 用一条召回臂(默认 fts 即 BM25,或 vector 余弦相似度,后者仅在启用嵌入时可用)回答查询,--sort-by recency 按时间倒序,--explain 打印 Lance 的 analyze_plan。pond sql 通过 DataFusion 在同一批 Lance 数据集上执行只读 SQL,等价于 MCP 的 pond_sql 工具。pond serve 起 HTTP 服务(默认 127.0.0.1:9797),pond serve --transport stdio 或 pond mcp 提供 MCP over stdio,两者共用同一套 handler。pond get-session、pond get-message 取回单条记录;pond copy 在本地目录与对象存储之间搬运整个语料,完成后重建目标索引并逐行校验,失败以退出码 6 报错;pond storage use/check 与 pond creds add 管理远程存储与凭据;pond schedule start/status/logs 用 launchd、systemd user timer、cron 或 Task Scheduler 定时同步;pond optimize --only embed|index 手动执行维护。

  1. 长期使用 Claude Code 与 Codex 的开发者,想找回三个月前某个 bug 的修复过程,让 agent 通过 MCP 直接查询而不是翻旧文件。
  2. 在笔记本和公司机器上分别跑不同编码代理的工程师,用同一个 S3 桶汇总所有机器的会话,再按主机维度用 pond status --hosts 查看。
  3. 打算从 opencode 换到别的编码客户端的用户,需要把已有会话恢复进新客户端继续,而不是重新解释上下文。
  4. 需要对会话语料做结构化统计的团队,例如用只读 SQL 统计各项目的消息量,或核对某段时间的工具调用情况。
  5. 构建多租户代理平台、想复用一套现成存储与检索层的集成方,通过 HTTP+JSON 或 MCP 接口接入,并由对象存储 IAM 划定租户边界。
  6. 需要给编码代理补充历史召回能力的用户,通过 pond skill 与 MCP 工具让代理在对话中回答“上次我们是怎么解决的”。

如何安装或部署这个 Agent?

macOS / Linux 用 Homebrew,Windows 用 Scoop:

brew install tenequm/tap/pond
scoop bucket add tenequm https://github.com/tenequm/scoop-bucket
scoop install tenequm/pond

其他安装方式:Nix、release 页面的预编译包、cargo 或源码构建(源码构建在 Windows 上需要先开 longpaths,并显式指定 --target x86_64-pc-windows-msvc;同时需要 protoc 与 NASM 在 PATH 中):

nix profile add github:tenequm/pond#pond
cargo binstall pond-db
cargo install pond-db
git clone https://github.com/tenequm/pond.git
cd pond
cargo install --path packages/pond

如需 CUDA 加速:

cargo install --path packages/pond --features cuda

如何使用这个 Agent?

先跑一次引导式初始化,再同步并搜索:

pond init
pond sync
pond search "how did we wire up the OCC retry loop"

把 pond 注册为 MCP 服务器(pond init 对 Claude Code 会自动完成,Codex 会打印命令):

claude mcp add -s user pond -- pond mcp
codex mcp add pond -- pond mcp

起服务或只读 SQL:

pond serve
pond serve --transport stdio
pond sql "SELECT project, count(*) FROM messages GROUP BY project ORDER BY 2 DESC"

启用适配器需显式配置(示例 ~/.config/pond/config.toml,Windows 为 %APPDATA%\pond\config.toml):

[adapters.claude-code]
enabled = true
path = "~/.claude/projects"

[adapters.codex-cli]
enabled = false
path = "~/.codex/sessions"

可选开启向量检索,并回填一次嵌入:

[embeddings]
enabled = true
pond optimize --only embed

切换到 S3 兼容对象存储:

pond creds add
pond storage use s3+https://nbg1.your-objectstorage.com/my-pond
pond storage check

定时同步:

pond schedule start --every 15m
pond schedule status

这个 Agent 有哪些优点和局限?

优点
  • 保留完整原始会话而非抽取事实,每个消息、工具调用与结果都入库,且 harness 删除源文件后仍然存在。
  • 存储自主:本地目录或自建 S3/GCS/Azure 桶,对象存储 IAM 即边界,不经过厂商托管。
  • 双向适配器让会话可以恢复到任何受支持的客户端继续,不必回到最初产生它的工具;目前已覆盖十余种客户端。
  • 默认 BM25 全文检索且分词器语言中立,语义检索为可选,关闭时不加载任何嵌入模型;README 给出的召回上下文成本对比为 1.5–3k tokens 对 90–255k tokens。
  • 同时提供 CLI、HTTP+JSON、stdio MCP 与只读 SQL,MCP 客户端可直接调用 pond_search 等工具,集成面清晰。
局限
  • 仍处于 pre-v1,README 明确说明 schema、wire shape 与配置键在 v1 之前可能破坏性变更。
  • 启用新适配器是显式步骤,pond sync 不会自动发现新工具;跨机器共享还需先配置并迁移到对象存储。
  • 远程读取性能尚未与本地持平,roadmap 中“远端读取与本地一样快”仍在待办。
  • 删除会话、命名空间隔离、复制/导出时的脱敏等能力尚未完成,roadmap 显示 pond erase 为下一步,命名空间仍在进行中。
  • 从源码构建在 Windows 上步骤较多(longpaths、显式 target、protoc 与 NASM),对非 Rust 用户不够友好。

这个 Agent 与同类方案有什么区别?

README 明确与两类工具并列对比。会话搜索类工具(ctx、deja-vu、cass):同样能检索安装前的历史,但保留的是搜索索引而非完整会话;ctx 仅单机,deja-vu 需通过 ssh 在机器间复制记录,cass 通过 ssh/rsync 把远程会话拉进本地索引,且没有 MCP 服务器。记忆层工具(Mem0、Letta):只存抽取出的事实,无法覆盖安装前的历史,也无法在 harness 删除文件后保留原文。pond 的定位是二者之下的存储与检索层:保留整段会话、存于自控存储、多机共享一个桶。完整对比见 pond.locker/compare。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
pond 当前 53 · 缺口较多 — ★ 89 1 天前 Rust Codex · Claude Code
Emulo 78 · 表现良好 Agent 插件 / 技能免费 + 模型费 ★ 302 1 个月前 HTML Codex · Claude Code
funes 智能体记忆库 68 · 存在缺口 命令行工具免费 ★ 587 1 天前 Rust Codex · Claude Code
Cognee 智能体记忆平台 47 · 缺口较多 代码库 / SDK免费 + 模型费 ★ 33k 今天 Python Claude Code · OpenAI API

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
缺口较多
53/ 100 五分制 2.7 / 5
信任安全 13/29
可靠稳定 8/14
适用触发 10/18
规范维护 11/18
有效结果 7/13
证据核验 4/8
查看各维度的扣分理由
信任安全13 / 29 · 2.2/5

信任维度:README 与设计文档明确说明 pond 不认证、不授权、不建模身份,租户隔离依赖对象存储 IAM,加密为运维层(桶 SSE/文件系统加密),pond 不持有密钥——这是透明的边界声明,但 least_privilege 仅得 1:MCP 服务默认注册为用户级(claude mcp add -s user),并暴露 pond_sql 只读查询与 pond_ingest 写入工具,未见按工具粒度的权限收敛或确认门控。user_confirmation 得 1:pond init 会写 MCP 配置、安装 skill、可选注册定时任务,属有副作用的操作,但文档未描述交互确认或 dry-run 预览(虽有 pond sync --dry-run,但 init 本身无确认说明)。data_flow_transparency 得 2:README 清楚说明数据落在本地目录或用户自有 S3/GCS/Azure,凭据通过 env/文件/命令提供,且明确禁止 URL 内嵌凭据与含密 CLI 参数,config show 做脱敏——数据流向描述充分。sensitive_data_handling 得 2:设计文档对凭据处理有具体规则(禁止 userinfo、禁止 argv 泄密、_command 缓存、按名脱敏 key/secret/token/password),但会话内容本身含大量敏感对话,redaction 被列为 roadmap 后续项(#167),当前无脱敏,故扣分。dependency_security 得 1:Cargo.toml 仅见 workspace profile,未见依赖清单与审计配置;CI 使用第三方 action 已 pin 到 commit hash(加分),但依赖漏洞扫描/供应链审计无证据。external_effects 得 1:pond sync 读取本地会话文件、pond copy/migrate 写目标存储、schedule 注册系统定时任务,均为有外部副作用的操作,文档说明 copy 不删除源、migrate 幂等,但缺少统一的确认/预览机制。rollback 得 1:文档提到 Lance 版本化与 time-travel、copy 幂等且不删源、migrate 可重跑,但 pond erase 尚未实现(roadmap 第 10 项),删除与恢复路径不完整。source_attribution 得 2:适配器表逐项列出读取路径与 last verified 日期,设计上要求 adapter-provenance-required 与 no-synthesis,来源可追溯性有结构性保障。

可靠稳定8 / 14 · 2.9/5

可靠性:README 的安装、配置、适配器表与设计文档相互一致(如 embeddings 默认关闭、BM25 默认、单臂检索),未发现明显自相矛盾;但 README 在 roadmap 中称“Eleven harnesses”而适配器表列 14 项,存在轻微计数不一致,故给 2 而非 3。dependency_availability 得 1:安装渠道(Homebrew tap、Scoop bucket、Nix、crates.io、release zip)描述详尽,但均为外部托管资源,静态审查无法确认可用性;源码构建需 protoc/NASM 等前置,增加了依赖面。failure_messages 得 2:文档多处强调错误信息命名文件、命名 creds set、给出迁移改写配方、config check 有区分退出码,属有据可依的错误设计;但无实际错误输出样例佐证。

适用触发10 / 18 · 2.8/5

适配性:audience_and_scenarios 得 2,README 明确面向多客户端 agent 用户,给出真实使用提示词与对比表,场景清晰。capability_boundaries 得 2,明确区分 pond 与 memory 工具、说明 ingest-only 适配器、单臂检索不做融合、不提供托管服务,边界诚实。trigger_precision 得 1:MCP 工具触发依赖 agent 自行判断何时调用 pond_search,README 仅给示例提示词,无触发条件或工具描述的精确规范。environment_fit 得 2:覆盖 macOS/Linux/Windows,说明 PowerShell 与 POSIX 差异、长路径、CUDA/Metal/CPU 回退,环境适配说明充分。

规范维护11 / 18 · 3.1/5

惯例:information_architecture 得 2,README 结构清晰(安装/用法/设计/roadmap),并有 docs/spec.md 作为契约。install_notes 得 3,安装说明极为详尽,覆盖多平台、多包管理器、源码构建前置与故障排查。naming_stability 得 1,README 明示 pre-v1,schema、wire shape、config key 均可能破坏性变更,且设计文档记录 --data-dir→--storage-path 等重命名,稳定性不足。examples_and_faq 得 2,有示例命令与提示词,但无正式 FAQ。known_limitations 得 2,token 统计文档列出 11% 低估、账户归属缺失等限制,roadmap 标注未实现项,但 README 主体未集中列限制。license 得 3,Apache-2.0 全文存在且与徽章一致。versioning_changelog 得 1,有 roadmap 与 release 链接,但未见 CHANGELOG 文件,版本策略仅“pre-v1 可破坏”。maintenance_responsibility 得 1,发布者身份未经验证,无 SECURITY.md/CONTRIBUTING 细节,维护责任归属不明确。

有效结果7 / 13 · 2.7/5

有效性:output_usability 得 2,输出为 CLI 文本、JSON、SQL 结果与 MCP 工具返回,文档给出具体查询与格式(--format ndjson),可用性较好但无输出样例。marginal_value 得 2,解决跨客户端会话检索的真实痛点,与 memory 工具、session search 工具做了区分,价值主张具体;但同类工具(cass、ctx、deja-vu)已存在,增量价值需实际验证。cost_benefit 得 1,README 引用 token 成本基准(1.5-3k vs 90-255k),但该基准为项目自测且未在本次审查中复现;安装体积大(Windows 解压约 223MB)、需 Rust 工具链或包管理器,成本不低。

证据核验4 / 8 · 2.5/5

可验证性:claim_traceability 得 1,README 的对比表与 token 基准指向 docs/benchmarks 与 pond.locker,但仓库内仅见部分文档,多数论断无法在给定文件中追溯。cross_source_corroboration 得 1,token 统计文档称与 ccusage 及 Claude Code cost-state 交叉验证,属自述,未见独立第三方证据;CI 配置存在但未展示测试结果。fact_inference_separation 得 2,文档较明确区分实测数字、方法与限制(如“transcript 约低估 11%”“账户归属仅 2026-08-10 起”),事实与推断分离较好。

风险与缓解建议
  • 发布者身份未经验证,维护责任与更新路径不明确,企业采用前应核实来源。
  • 项目处于 pre-v1,schema、配置键与 wire shape 均可能破坏性变更,升级需预期迁移成本。
  • MCP 默认以用户级注册并暴露 pond_sql 与 pond_ingest,缺少按工具粒度的权限收敛与确认门控。
  • 会话内容默认不脱敏,redaction 仍在 roadmap,敏感对话可能被完整持久化到本地或对象存储。
  • 依赖安全与供应链审计无证据,Cargo 依赖清单未在给定文件中出现。
  • 删除与恢复路径不完整(pond erase 未实现),rollback 能力有限。
  • README 中适配器数量与 roadmap 表述存在轻微不一致,基准数据为项目自测,未经独立复现。
证据充分度:低 评估于 2026年11月6日 审查版本 3f10be0230d4
查看完整评分方法 →

常见问题

pond 会不会把我原来的会话文件删掉或改写?
不会。适配器是单向读取加双向编解码,会话以规范模型写入 Lance;即使客户端删掉源文件,已入库的记录仍在。pond copy 也明确不删除源端数据。
用 pond 需要付费 API 或云服务吗?
软件本身以 Apache-2.0 开源,可完全本地运行。语义检索是可选项,开启后会加载 intfloat/multilingual-e5-small;使用 S3/GCS/Azure 时费用来自你自己的对象存储,而不是 pond。
升级后配置或数据格式会变吗?
项目处于 pre-v1,README 说 schema、wire shape 和配置键在 v1 之前可能破坏性变更,采用时应预留迁移窗口,并以 docs/spec.md 为契约。
我的 agent 客户端不在支持列表里怎么办?
仓库提供 pond-add-adapter skill 作为新增适配器的操作手册,并有 conformance harness 与真实会话 fixture;roadmap 里还列出 Qwen Code、Crush、Cline 等希望社区补齐的适配器。
多台机器或团队共用时怎么隔离数据?
目前可用一个共享桶加 pond status --hosts 按 ingest 主机查看;按租户划分的 namespaces 仍在 roadmap 进行中,MCP/HTTP 层不做身份鉴权,边界由对象存储 IAM 承担。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents