pond
把所有 AI 代理的会话无损存档到一个可搜索、可 SQL 查询、可跨客户端恢复的存储层。
- 源仓库
- tenequm/pond
- Star 数
- ★ 89
- 最近更新
- 1 天前
- License
- Apache-2.0
- 主语言
- Rust
- FA 评分
- 53/100 · 缺口较多
30 秒速览
- 可在哪里用
- 通用 · 跨平台Codex · Claude CodeClaude.ai(部分支持)
- 开始前需要
- 典型场景
- 长期使用 Claude Code 与 Codex 的开发者,想找回三个月前某个 bug 的修复过程,让 agent 通过 MCP 直接查询而不是翻旧文件。
- 主要局限
- 仍处于 pre-v1,README 明确说明 schema、wire shape 与配置键在 v1 之前可能破坏性变更。
- 源码审查
- 53/100 · 缺口较多
这个 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 手动执行维护。
- 长期使用 Claude Code 与 Codex 的开发者,想找回三个月前某个 bug 的修复过程,让 agent 通过 MCP 直接查询而不是翻旧文件。
- 在笔记本和公司机器上分别跑不同编码代理的工程师,用同一个 S3 桶汇总所有机器的会话,再按主机维度用 pond status --hosts 查看。
- 打算从 opencode 换到别的编码客户端的用户,需要把已有会话恢复进新客户端继续,而不是重新解释上下文。
- 需要对会话语料做结构化统计的团队,例如用只读 SQL 统计各项目的消息量,或核对某段时间的工具调用情况。
- 构建多租户代理平台、想复用一套现成存储与检索层的集成方,通过 HTTP+JSON 或 MCP 接口接入,并由对象存储 IAM 划定租户边界。
- 需要给编码代理补充历史召回能力的用户,通过 pond skill 与 MCP 工具让代理在对话中回答“上次我们是怎么解决的”。
如何安装或部署这个 Agent?
macOS / Linux 用 Homebrew,Windows 用 Scoop:
brew install tenequm/tap/pondscoop 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 = truepond 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?
查看各维度的扣分理由
信任维度: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,来源可追溯性有结构性保障。
可靠性: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 有区分退出码,属有据可依的错误设计;但无实际错误输出样例佐证。
适配性: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 回退,环境适配说明充分。
惯例: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 细节,维护责任归属不明确。
有效性: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 工具链或包管理器,成本不低。
可验证性: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 表述存在轻微不一致,基准数据为项目自测,未经独立复现。