
Lore
io.github.jordanhindo由 GitHub 账号 jordanhindo 发布v0.1.1更新于 Oct 24, 2026
Lightweight MCP for infinite agent memory. Any agent, any session, anytime.
概览
Lore 为助手提供一份共享、可搜索的本地记忆,保存过去的编码代理会话,使其能跨工具回忆先前工作。
- 可以做什么
- Lore 将 Claude Code、Codex、Cursor、Hermes 等编码代理的会话记录索引到一个本地 SQLite 存储中。其 MCP 工具包括 status、search_memory、find_relevant、get_message、get_context、get_session、list_sessions、timeline 和 push。搜索返回带来源信息的排序结果,长消息会被省略,避免把整份记录塞进上下文。同一存储也可通过 lore 命令行访问,无需服务器。
- 适用场景
- 当你希望助手记住早前会话或另一个编码代理的工作时使用,例如继续之前的调试线索,或询问上周解决了什么。它适合同时使用多个代理工具、希望有一份统一可搜索历史的人。
- 运行要求
- 通过 npm 包 @jordanhindo/lore 作为本地 stdio 进程运行,需要 Node 22 或更高版本。未声明需要账户、API 密钥或环境变量;存储默认位于 ~/.lore/lore.db,可用 LORE_DB 更改。仅限桌面端。
安装
在 SourceWeft 中
- 打开 控制台中的 Lore,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
📖 Lore
Shared, full-fidelity, session history for every AI agent you use.
Any Agent. Any Session. Any Turn. Anytime.
The session you ran in Claude Code this morning, Openclaw can pull up this afternoon. The debugging thread Cursor worked through last week, Hermes can read like it was sitting right there. Lore gives all of your coding agents one shared memory: across every tool, across every session, and it never expires.
That is the part most "agent memory" misses. Other tools remember things for one agent, inside one app. Lore makes every session any of your agents has ever had searchable by any other agent, anytime. What Codex figured out, Claude Code knows. What you solved on Tuesday is one search away on Friday, in whatever agent you happen to be in.
And yes, it survives compaction. When a context window fills up and compacts, the work isn't gone, it's sitting right there on disk. Lore just makes it reachable again, fully searchable, right where your agents work. Local, private, and yours forever.
https://github.com/user-attachments/assets/b5c0f077-47da-4502-bf78-2ce08abf034f
Inspired by RLM
v0.2.0 release
This release turns Lore from a search box over old transcripts into a small workflow substrate for agents that have to continue real work:
- Schema 5 write support. Current installs can read and write the live store
again.
lore status --jsonreports bothschemaVersionandsupportedSchemaVersion, so stale global installs are obvious before sync, index, or push writes fail. - Freshness checks.
lore statustells an agent whether a source/project window is ready, missing, stale, or possibly unsynced before it writes a brief or handoff from incomplete memory. - Live detected-source sync.
lore sync <source>indexes a detected active transcript tree incrementally. This coverscodex(~/.codex/sessions, with archived sessions as a compatibility fallback) andclaude-code(~/.claude/projects) without forcing agents to remember raw paths. - Workflow skills. The npm package now ships
lore-recall,lore-brief,lore-handoff, andlore-dev-verificationalongside the baseloreskill. They include references, examples, eval specs, validators, and committed test reports. - Package smoke proof.
npm run package:smokebuilds, packs, unpacks, and validates the real tarball so README, help text, skill folders, executable mode, and package metadata are checked together.
Already installed? Refresh the global command before testing any schema or sync behavior:
If your shell cached the old path, open a new terminal or run hash -r and retry
lore help.
✨ Why you'll want it
- 🔀 One memory, every agent. Claude Code, Codex, openclaw, Cursor, and Hermes histories all land in one store (separate from their own /. stores), and any MCP client reads it. A session in one agent is instantly readable by all the others. What Codex figures out, Claude Code knows.
- 🧠 It outlives the context window. Compaction stops meaning amnesia. Last week's reasoning is one search away.
- 🔍 Search that speaks code.
getUserById,foo.bar.ts, andtrust-metadatastay findable as whole words, not shredded into noise. - 🔒 Local by default. Everything lives at
~/.lore/lore.dbon your machine. Nothing phones home. Ever.
🚀 Quick start (paste this into your agent)
Lore sets itself up. Drop the blurb below into any coding agent. It installs Lore, indexes your own history, and proves search works before it calls itself done. It is server-free by default, with no MCP registration required.
The deterministic recipe the agent follows lives in
AGENT-ONBOARD.md, which keeps MCP registration as an
optional step. Prefer the skill instead? npx skills add jordanhindo/lore
(below) drops in the self-bootstrapping lore skill, which does all of this the
next time you ask it to recall something.
🛠️ Install it yourself
Recommended: install the skill. It sets up the rest.
This drops the bundled lore skill into your agent (~/.claude/skills/). The
skill is self-bootstrapping: the next time you ask your agent to "remember" /
"recall" something or to "set up lore", it reads its own references/setup/index.md,
installs the lore CLI, indexes your history, and proves search works. No MCP
server required. One command installs the whole thing.
Or install the CLI directly:
Requires Node 22+. That's the whole install. lore setup takes it from here. If
npm install chokes on better-sqlite3, or lore isn't found afterward, the
Troubleshooting
section has you covered, Windows included.
Upgrade the global CLI
The global lore command is just an npm binary shim. If you were running an old
package, update it before you trust lore sync, lore index, or lore push:
If lore status --json shows a store schemaVersion higher than
supportedSchemaVersion, your command is still stale. Reinstall the package,
open a fresh shell if needed, then rerun lore status --json.
From source
Cloning is for contributors, or for writing a new adapter (which needs the source tree):
📥 Backfill your history
lore setup is the fast path. It sniffs out the harnesses on your machine,
indexes each one, checks that search works, and prints how to wire Lore into
your MCP client.
Want finer control? Point lore index at a transcript directory. For Claude
Code that's ~/.claude/projects:
Other harnesses come in with --source. Codex, openclaw, Cursor, and Hermes are
all built in:
Cursor and Hermes keep their history in a SQLite database rather than JSONL
files; point lore index at the directory and the adapter reads the store
directly. Current sampled Cursor rows expose toolResults fields but only empty
arrays, so the Cursor adapter indexes text only and fabricates no tool calls.
Re-run any of these whenever. Unchanged files get skipped, so repeat runs are cheap.
Some harnesses write transcript trees instead of emitting Lore-compatible hook payloads. For manual active-session catch-up, use the incremental sync command:
codex sync indexes ~/.codex/sessions incrementally, with
~/.codex/archived_sessions only as a compatibility fallback. claude-code
sync indexes ~/.claude/projects incrementally, including subagent
transcripts. hermes sync indexes ~/.hermes incrementally.
For cron, launchd, Task Scheduler, or any unattended timer, use the bundled
lock-protected wrapper instead of raw lore sync so multiple source jobs do not
write ~/.lore/lore.db at the same time:
💻 Recall from the CLI, no server required
You don't need the MCP server to use Lore. The lore command opens the SQLite
store directly, so search, read-back, navigation, and writing all work
server-free anywhere you have a shell. The MCP server below is just one more
reader of the same store; nothing here depends on it.
The loop is always the same: drill down, never dump. A session can be millions of tokens, so you never page a whole one into context. Search broadly, take the real ids it hands back (you never invent one), then spend them:
Other commands round out the loop: lore status (freshness/health),
lore sessions (recent conversations), lore timeline (activity by day/hour),
and lore push (add a live session from a JSON batch on stdin). Add --json to
any of them for a machine-readable envelope.
Every search filter the MCP tools accept works here too (--project, --source,
--session, --branch, --agent, --skill, --tool, --role, --model,
--since, --until, --limit).
Before asking for a current brief or handoff, check freshness:
schemaVersion and supportedSchemaVersion tell you whether this build can
write to the store. Read-only search may still work against a newer compatible
store, but sync/index/push only run when the installed build supports the store
schema. In a source checkout, run npm run build before trusting the global
lore shim. For npm installs, run
npm install -g @jordanhindo/lore@latest and check lore status --json again.
CLI ⇄ MCP parity is proven, not asserted. Each lore … --json envelope is
byte-for-byte identical to the matching MCP tool's response, verified by a parity
test suite that runs both paths against one shared fixture store. So the CLI is a
faithful stand-in for the server:
The bundled lore skill (skills/lore/) teaches an agent to drive this whole
loop: when to search, which id to spend, and how to drill down instead of
dumping. It's self-bootstrapping: its references/setup/index.md covers getting history
indexed in the first place (install, index/backfill a harness, write an adapter,
or push), so one npx skills add jordanhindo/lore installs the whole thing.
Agent Workflow Skills
The low-level skills/lore/ skill teaches agents how to install Lore, index
transcripts, search memory, drill into message ids, and use the MCP server when
a harness supports it. The workflow pack sits above that substrate:
lore:recallmaps toskills/lore-recall/. It plans bounded retrieval, checkslore status --json, labels freshness, drills into context windows, and emits cited evidence packets instead of transcript dumps.lore:briefmaps toskills/lore-brief/. It defaults to the rolling last 24 hours, summarizes completed/open work, and proposes follow-up skills, jobs, issues, fixes, tasks, memory cards, or wiki updates without performing them.lore:handoffmaps toskills/lore-handoff/. It creates compact continuation packets with verified/open/stale/risky sections, artifacts, shared proposal objects, memory-card candidates, contradiction candidates, and next actions.lore:dev-verificationmaps toskills/lore-dev-verification/. It is the project-specific verification gate for Lore repo changes: CLI/MCP parity, store compatibility, adapter fidelity, privacy/destructive-memory behavior, package smoke, and workflow-skill eval proof.
These are installable skill bundles, not one-file prompt snippets. Each workflow
skill includes SKILL.md, references, examples, eval specs, validator scripts
where structure is deterministic, and evals/test-report.md. A workflow skill is
not complete until its test report proves the eval/review pass ran and the bundle
validator passes.
There is no universal plugin wrapper in this release. A future plugin could
bundle names such as lore:recall, lore:brief, and lore:handoff, but today
the shipped surface is the package skills/ tree plus the lore CLI/MCP
substrate. Workflow skills may propose actions; they must not create jobs, edit
prompts, update wiki pages, create tasks, modify code, or run destructive memory
operations unless the user explicitly asks for that next step.
When you change any part of this pack, update the matching surface too: CLI help,
README, AGENT-ONBOARD.md, skills/lore, workflow skill docs, validators,
examples, eval reports, and package smoke checks should move together.
Packaging proof lives in:
That smoke builds the CLI, preserves executable mode for dist/cli/lore.js,
validates package dry-run metadata, packs a real tarball, reads the workflow
skill folders from the packaged tree, checks non-hollow test-report headings, and
verifies the packaged CLI help can run with dependencies present.
🔌 Serve it to your client
lore serve starts the MCP server over stdio. Point any MCP client at it.
Claude Code (add to ~/.claude/settings.json):
Cursor / Cline and friends: add an stdio server entry with the same
command / args shape in the client's MCP config.
What your agent can do
Every search tool takes the same dimension filters: project, branch,
source, agent, skill, tool, role, model, since, until, limit.
What a search returns
Your agent calls search_memory with a query (plus any filters) and gets back a
count and a ranked list of hits. Each hit carries the matched text and full
provenance, so the agent knows where the memory came from and can pull the rest
with get_message:
Long messages come back elided with a marker telling the agent how to fetch the
full text via get_message(message_id, full=true), so one giant transcript can
never blow the context window.
🪄 Survive compaction
Compaction is the moment memory matters most, so catch fresh session content
before it disappears from the active context. The exact hook differs by harness:
Claude Code can call lore hook from PreCompact / SessionEnd when a hook
payload is available, or lore sync claude-code for manual catch-up when only
the transcript tree needs freshening. Timers should call
scripts/lore-sync-once.sh claude-code so the shared store write is locked.
Codex should use its notify wrapper or scripts/lore-sync-once.sh codex from a
timer because it writes a session tree rather than a transcript_path hook
payload.
The skill setup references carry the exact recipes:
skills/lore/references/setup/claude-code-hooks.md,
skills/lore/references/setup/codex-hooks.md,
and
skills/lore/references/setup/other-harness-hooks.md.
🧩 Bring your own harness
Don't see your agent on the list? lore sample <transcript-dir> summarizes its
on-disk format. It recognizes JSONL, SQLite databases (read via the file header,
never by loading the DB), and whole-file JSON, so you can see an unknown
harness's shape before writing anything. The bundled lore skill's
references/setup/index.md (skills/lore/references/setup/index.md) walks an agent from
"installed" to "my sessions are searchable," including writing and proving a new
adapter, or using the live push path when a harness keeps no files at all.
push is data only: it validates every record at the boundary and never
receives or executes code.
🔒 Privacy
- The store is local (
~/.lore/lore.db), lives outside any repo, and*.dbis gitignored. Move it withLORE_DB. - Credentials are redacted by default. A conservative scrubber runs over message text and tool payloads before anything is written (OpenAI / GitHub / AWS / Slack keys, Bearer tokens, PEM private-key blocks). Everything else is kept verbatim. It's your own memory. Treat the scrubber as a safety net, not a guarantee.
- Opt out with
--no-redactonlore index/lore hook/lore setupif you really want credentials stored verbatim too. - Remove memory you didn't want kept.
lore forgetdeletes a session or a project (point-in-time);lore excludedeletes a project and bars all future captures from it. Both print an exact-scope preview and only act when you add--confirm, and both write a tombstone so re-indexing can't resurrect the data. See theloreskill for the full preview-then-confirm protocol.
🧬 How it works under the hood
- One shared store, many harnesses. Each harness writes into its own
sourcenamespace (claude-code,codex,openclaw,cursor,hermes). Any MCP client can read everyone's history. - Three IDs. A
source_file_idis a physical transcript file (the unit of ingestion and the resume watermark). Asession_idis a logical session shared across a primary file and its subagent files. Each message gets a syntheticmessage_id = hash(source_file_id + uuid + seq)because raw uuids collide. - Incremental by construction. A per-file watermark skips unchanged files, appends only new tails, and fully re-indexes rewritten ones. Re-running a backfill over thousands of transcripts only touches what changed.
- Code-aware search. The FTS5 tokenizer keeps identifiers and paths whole, so the things you actually search for stay searchable.
⚙️ Environment
👷 Development
License: MIT.
来源:README.md,提交 7d10369
工具
0版本历史
1- v0.1.1最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分