@QuantumTransf: 我们可能从一开始,就把 Agent Memory 想得太复杂了 最近一篇论文《Is Complex Agentic Memory Always Needed?》做了一个很有意思的实验: 不做 Memory Extraction,不做复杂的…
摘要
文章介绍开源工具 Obelisk:一个将 Claude Code、Codex 等编码 Agent 的历史会话索引到 SQLite 中、供 Agent 直接检索的系统,其设计灵感来自论文《Is Complex Agentic Memory Always Needed?》,该论文发现简单的 RAW-RAG(保留原始对话历史按需检索)在多个记忆基准上超越了复杂的 Agentic Memory 方案。
查看缓存全文
缓存时间: 2026/10/31 17:35
我们可能从一开始,就把 Agent Memory 想得太复杂了
最近一篇论文《Is Complex Agentic Memory Always Needed?》做了一个很有意思的实验:
不做 Memory Extraction,不做复杂的知识图谱,也不让 LLM 在写入时反复总结、更新记忆
只保留原始对话历史,在需要的时候检索出来,交给 LLM 自己推理
结果呢?
在 LoCoMo、LongMemEval 等四个 benchmark 的 7 组测试设置中,这套简单的 RAW-RAG 方案拿下了 6 组第一,最多领先对比的最强 Agentic Memory 系统 5.53 分
这恰好也是我们开发 Obelisk 时一直坚持的思路
我们认为,Agent 不应该只能看到别人替它总结好的「记忆」
因为一次代码修改背后的原因、一次失败的尝试、几个决策之间的依赖关系,都可能在总结和信息提取的过程中丢失
与其猜测未来什么信息值得记住,不如保留完整历史,让 Agent 在真正需要的时候自己去找
所以我们做了 Obelisk:
一个开源的 Coding Agent Session 检索系统
它可以直接查询 Claude Code、Codex、Hermes、Pi、Opencode 等 Agent 的历史 Session,包括对话、工具调用、Subagent 和工作流。
不依赖 Embedding,也不需要预先从历史中提取 Memory 基于 SQLite FTS5 和 Agent 主动查询,让 Agent 能够重新找到过去的原始证据
比如:
- 为什么当初要这样设计这段代码?
- 上一个 Agent 的任务进行到哪里了?
- 我们之前尝试过哪些方案,为什么失败?
- 这个项目的架构是如何一步步演变的?
Memory 不应该是一份不断被改写的摘要,而应该是一段随时可以追溯的历史
也许下一代 Agent Memory 的关键,不是让 Agent 更努力地记住,而是让它拥有找回过去的能力
Obelisk 完全开源: https://github.com/tommy0103/obelisk…
论文:https://arxiv.org/abs/2610.30755
tommy0103/obelisk
Source: https://github.com/tommy0103/obelisk
Past Claude Code, Codex, GitHub Copilot, DeepSeek Harness, Hermes Agent, Kiro, Kimi Code, OMP, OpenCode, Pi, and ZCode sessions – queryable by your agent, browsable by you.
English · 中文
Obelisk indexes your local coding-agent history into one SQLite database and serves it to two audiences:
- Agents — the
obeliskCLI plus an agent skill that teaches coding agents to search their own session history. The agent writes JS queries, runs them locally, and answers in plain language. - Humans — an Electron desktop app to browse sessions, manage memories, view usage stats, and see weekly recap cards.
Both read the same ~/.obelisk/obelisk.sqlite, kept fresh by watching every
configured provider directory.
20K lines of scattered JSONL → something your agent can search() and sql()
against in milliseconds.
Use it from your agent
/obelisk 上次 auth bug 最后到底改了哪些文件,为什么这么改
/obelisk 这个文件最近在哪些 sessions 里被反复修改
/obelisk 找出最近失败的 tool calls,它们分别发生在哪些任务里
/obelisk 那个 review workflow 的 subagents 各自结论是什么
/obelisk recap this week
Install
Install with your agent (recommended)
The shortest path is to give the bootstrap guide directly to a coding agent with shell access. Paste this as a prompt into Claude Code, Codex, or another agent — not into your terminal:
Install Obelisk by fetching and following this guide:
curl -fsSL https://raw.githubusercontent.com/tommy0103/obelisk/main/SKILL.md
The agent will ask before changing your machine, install and verify the CLI,
then ask whether the formal /obelisk skill should be installed for the current
project or globally. The bootstrap guide is only for one-time setup; it is not
the query skill itself.
Install manually
Obelisk requires Node.js 22.13 or newer. Install the platform-neutral CLI (zero runtime npm dependencies — it uses Node’s built-in SQLite):
npm install --global @obelisk-apps/cli
obelisk --version
On macOS, Linux, or WSL, the CLI-only installer is equivalent:
curl -fsSL https://raw.githubusercontent.com/tommy0103/obelisk/main/install.sh | sh
Then install the agent skill:
obelisk install
obelisk install delegates to the standard skills installer for
tommy0103/obelisk-skill. Then in any agent session: /obelisk <your question>.
First run builds the index (~5 seconds for 100 sessions); after that it
rebuilds incrementally.
How it works
You ask a question
↓
Agent writes a JS query against the SQLite index
↓
Runs it via obelisk --query <script>
↓
Reads the JSON result, answers in natural language
Default query surface (CLI 0.3.0+): overview(), sessions(), search(),
messages(), memories(), summaries(), and sql().
Specialized helpers and legacy script globals remain available.
Signatures, options, and query patterns live in the
API reference.
Memory layer
When a retrieval produces a conclusion worth keeping, the agent proposes a
markdown memory file. After your approval, it registers the file with
obelisk --attune <script>. Memories are recalled via memories() in future
sessions — a synthesis cache, not a replacement for raw evidence.
Recap
The optional /obelisk recap flow turns a period of sessions into shareable
weekly/monthly recap cards. It loads its references only for explicit recap
intent, starting at
skill-doc/references/recap/overview.md
and proceeding card by card.
Browse it in the app
- Sessions — browse all sessions with search, project filtering, readable tool calls (diffs, terminal output, file viewers)
- Memory — list and detail views for registered memory files
- Activity — GitHub-style heatmap, weekly/cumulative token charts
- Recap — shareable weekly/monthly recap cards with archetype theming
- Settings — data source configuration, auto-refresh, rebuild index
Prebuilt releases are available for macOS and Linux amd64 from
Releases, with in-app updates
(Sparkle on macOS, DebUpdater on Debian installations). On macOS, Windows,
and Linux you can also run the app from source — Node.js 22.13+ for the build
tools; the app itself runs on Electron’s embedded Node:
git clone https://github.com/tommy0103/obelisk.git
cd obelisk/app
npm ci
npm run dev
Debugging, packaging, and the release workflow are maintainer docs; they live in CONTRIBUTING.md.
Note: while the desktop app is running it owns index writes, so CLI invocations stay read-only.
What gets indexed
Every provider projects into the same shared layers; a few layers exist only where the source tool has the concept:
| Layer | What’s captured | Availability |
|---|---|---|
| Sessions | Title, project, timestamps, git branch, source | all providers |
| Messages | Full text, model, token usage, parent chain | all providers |
| Tool calls | Tool name, input, file paths | all providers |
| Subagents | Agent type, description, full conversation | Claude Code, Codex, DeepSeek Harness, Hermes Agent, Kiro V3, Kimi Code, OpenCode, ZCode |
| Summaries | Session summaries emitted by the provider | Kiro V3, Kimi Code, OpenCode |
| Workflows | Workflow script, result, and per-agent transcripts | Claude Code |
| Memories | Conclusions linked to source sessions | registered markdown files |
Full-text search via FTS5 covers all layers. Per-provider source locations are listed under Provider coverage.
Provider coverage
Every provider indexes into the same schema; rows carry a source value and
non-Claude IDs are provider-prefixed so they cannot collide.
| Provider | Default source |
|---|---|
| Claude Code | ~/.claude/projects |
| Codex | ~/.codex/sessions, ~/.codex/archived_sessions |
| GitHub Copilot | VS Code User data roots (Chronicle store + workspace transcripts) |
| DeepSeek Harness | ~/.dsh/sessions (or $DSH_HOME/sessions) |
| Hermes Agent | ~/.hermes/state.db (or $HERMES_HOME/state.db) |
| Kiro | ~/.kiro/sessions and the platform kiro-cli/data.sqlite3 store |
| Kimi Code | ~/.kimi-code/sessions (or $KIMI_CODE_HOME/sessions) |
| OMP | ~/.omp/agent/sessions |
| OpenCode | ~/.local/share/opencode/opencode.db (or $XDG_DATA_HOME/opencode, $OPENCODE_DB, channel stores; V1/V2 SQLite, earlier JSON formats are not indexed) |
| Pi | ~/.pi/agent/sessions |
| ZCode | ~/.zcode/cli/db/db.sqlite |
Where a provider attests superseded history, Obelisk preserves it as inactive
rows that normal queries omit; supported query helpers can opt in with
includeInactive: true.
| Provider | Superseded-history support |
|---|---|
| Pi | Branch, leaf, and compaction state attests inactive history |
| OMP | Branch, leaf, and compaction state attests inactive history |
| ZCode | Rewind retention and compaction attest inactive history |
| Kimi Code | Undo/clear can attest supersession; preservation is a follow-up |
| Hermes Agent | Superseded history is not split: compaction-archived and rewound rows are both stored as inactive |
| OpenCode | Session revert state attests inactive history |
| Claude Code | The source does not attest rewind or current-leaf state |
| Codex | Sessions have no branching semantics |
Non-default locations — a Pi --session-dir, an OMP custom root, an OpenCode
data root (an explicit configured root overrides $OPENCODE_DB), the VS Code
Insiders User directory — can be selected in the app’s Settings.
Adapter internals (identity hashing, supersession replay, per-provider root discovery) are documented in retrieval semantics and the ADRs.
Contributing
Contributions are welcome. Read CONTRIBUTING.md before opening a PR — it is short, and it is written from what actually blocked past PRs rather than from generic style rules. The parts worth knowing up front:
- Run every claim in your PR description end to end. The most common reason a PR stalls here is a capability that is advertised but unreachable — including inputs shown in screenshots.
- Assert the requirement, not the implementation. Copy the sentence from the issue into your test name.
- Transcript content is attacker-controlled. Obelisk indexes third-party
agent logs; anything reaching
shell.*,fs.*,innerHTML, or DDL is deny-by-default. - Re-run verification after merging main. A merge voids every result above it, including your own noted limitations.
Star History
License
Copyright (C) 2026 tommy0103 and contributors.
Obelisk is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-only); see LICENSE. Derivative works are welcome: if you distribute a modified version, please keep the per-file copyright notices intact and mark your modifications prominently with a date, as AGPL-3.0 §5 requires.
相似文章
@WY_mask: 给各类 AI 编程助手打造持久化记忆引擎 http://github.com/rohitg00/agentmemory… 在后台静默记录代码修改和上下文 自动提取并压缩成结构化记忆 节省长上下文带来的 Token 消耗 关联过去的信息,随…
agentmemory 是一个为 AI 编程助手提供持久化记忆的开源工具,能静默记录代码修改和上下文,自动提取并压缩成结构化记忆,降低 Token 消耗,并支持 Claude Code、Codex 等多种主流平台。
如今,很多 Agent 所谓的"长期记忆",其实只不过是把过去的对话存下来,然后再翻出来搜索罢了……
Hindsight 是 Vectorize 开源的 Agent 记忆系统,超越简单的聊天记录检索,通过 Retain/Recall/Reflect 三个动作让 Agent 从过往经验中形成新判断,支持 Claude Code、Codex、Cursor 等,并内置 MCP Server。
@Lonely__MH: 好东西!发现了一个 Deepseek harness 记忆插件! 大多数 Agent 框架的“长期记忆”无非是无脑 Vector DB 检索,极易产生时态错乱和上下文污染 刚刚上手了 Meland Labs 开源的 OpenContext…
发现了一个开源的 Deepseek 记忆插件 OpenContext,它通过时态上下文图谱和信任模型等设计,改进了 Agent 框架的长期记忆功能。
@wquguru: https://x.com/wquguru/status/2069641926752780384
本文全面梳理了截至2026年中,AI Agent记忆(Memory)的完整架构分层,包括规则文件、常驻画像、历史召回和证据链,阐述了不同层次记忆的存储方式、加载时机和治理原则,强调记忆在帮助Agent实现跨会话复利工作中的关键作用。
@goan999999: Codex + claude-mem 这套组合,Agent 工程师都要失业了! 以前用 Codex 开发 Agent,最崩溃的不是代码写不出来,而是 AI 根本记不住自己干过什么! 昨天刚解决的 Bug,今天又踩一遍;上个会话定好的架构,…
文章介绍开源工具 claude-mem 与 OpenAI Codex 的组合,通过自动记录开发过程、关键决策与 Bug 修复,并经语义搜索按需检索,为 AI 编程实现跨会话长期记忆,减少重复上下文与 Token 消耗。