memory-boost

io.github.arnaugonzalez由 GitHub 帳號 arnaugonzalez 發布v0.2.1更新於 Nov 11, 2026

Markdown memory for coding agents that audits itself: drift reports and session digests.

發布方自己的服務:Memory.fit

已驗證STDIO僅桌面知識與記憶開發者工具

概覽

AI 產生的概覽

供編碼代理使用的本機 Markdown 記憶庫,支援檢索、工作階段檢查點,並能回報記憶內容中已過時或缺失的部分。

可以做什麼
  • 定位與檢索記憶:載入輕量的專案簡報,全文搜尋 wiki 頁面與日誌條目,讀取整頁或其中一節
  • 記錄工作階段與想法:儲存一筆工作階段事件及日誌條目,對頁面附加帶日期的一行想法
  • 追蹤工作狀態:儲存可跨上下文壓縮存活的檢查點,還原檢查點並查看同一專案上其他進行中的工作階段
  • 稽核記憶:回報已過期的決策、沒有後繼項目的被取代決策、長期沒有工作階段的專案,以及未關閉的檢查點
  • 跨專案共享經驗:記錄帶技術堆疊標籤的經驗,符合的專案會在簡報中收到
適用情境
適合代理長期在多個專案上工作、你希望有一份可手動編輯且能被檢索的持久筆記,並定期檢查哪些已記錄的決策已失效、哪些專案已沉寂的情況。
執行需求
以 stdio 本機程序執行,來自 PyPI 套件 memory-boost,可用 uvx 啟動,或以 uv、pipx 安裝;外掛方式需要 PATH 中有 uv。資料預設存放在記憶主目錄下。選用的語意檢索需要 semantic 附加套件與本機 Ollama 模型。支援 Linux 與 macOS,Windows 未測試。
安裝前請注意
wiki 會被代理當成指令讀取,只應指向你信任的 wiki。選用的 HTTP 模式僅綁定回環位址且沒有身分驗證。工作階段鉤子會從對話紀錄自動寫入檢查點,其中包含你的提示詞(去除 private 標記的片段)。對話紀錄探勘會讀取本機 Claude Code 對話紀錄,但只輸出彙總資料。部分工具與欄位標示為實驗性,格式可能變動。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 memory-boost,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[memory-boost: memory for coding agents that reviews itself. A markdown wiki your agents read and write over MCP, plus drift reports on what went stale]

memory-boost

Memory for coding agents that reviews itself.

[CI] [License: MIT] [Python 3.11+]

Try it · What it answers · Connect your agent · How it works · vs. alternatives

Your agents write everything down. Nobody reads it back.

Every memory tool for coding agents helps them remember more. None of them mention that half of what they remember expired in July. memory-boost keeps a plain-markdown memory your agents read and write over MCP, and then does the unglamorous part: it audits that memory and your own sessions, and tells you what drifted. Politely, with numbers.

Think of it as a code review for what your agents remember and a fitness tracker for how you work with them. Mostly the fitness tracker: mine told me my most-failed command was cd. Sixty-nine times.

What it answers

You wonder…memory-boost answers
Which decisions quietly expired while we were busy shipping?drift: review_by 2026-07-08, 78 days ago
Which "active" projects actually died months ago?drift: last session 161 days ago; still listed as live
We fixed this exact bug in another repo. How?lessons: the fix follows you to every project with the same stack
Why does my agent keep re-reading the same file?mine: one file, read 18 times
Is my agent spawning 20 subagents behind my back?mine: yes, and in which session
Where was I before /compact ate my context?The session-start hook puts your checkpoint back

Using an AI agent? Point Claude Code, Codex, Cursor or Gemini CLI at this repo: AGENTS.md tells it how to install memory-boost, seed a wiki and run the reports for you.

Try it in 30 seconds

No install needed; the wiki lands in ~/.local/share/memory-boost:

bash
uvx memory-boost==0.2.1 init --example   # sample wiki with five kinds of rot + four synthetic transcriptsuvx memory-boost==0.2.1 drift            # what in that memory is stale, orphaned or never written downuvx memory-boost==0.2.1 mine             # now on your real ~/.claude/projects: aggregates only

To keep it in Claude Code, install the plugin. It brings the MCP server, the session-start brief and the skills in one step; it only needs uv on your PATH.

/plugin marketplace add arnaugonzalez/memory-boost/plugin install memory-boost@memory-boost

Other agents, or the CLI on its own: uv tool install memory-boost==0.2.1 (or pipx install memory-boost==0.2.1). Or let your agent do it: see Install from your agent.

Install from your agent

Paste this into Claude Code, Codex, Cline or Cursor:

Install memory-boost 0.2.1 by following https://github.com/arnaugonzalez/memory-boost/blob/main/llms-install.md : install the CLI with uv tool install memory-boost==0.2.1, run memory-boost init, register memory-boost serve as a stdio MCP server named memory, check that it answers with nine memory_* tools, then run memory-boost drift and show me the output. Ask me before writing outside the memory home (~/.local/share/memory-boost) or editing any global agent config.

The agent-oriented steps (stdio and serve --http, per harness, with checks) are in llms-install.md.

Example: back on a project after two months

[On the bundled example wiki: memory-boost drift lists 8 findings, including an expired Postgres pin on acme-api; page shows that decision; lessons brings an idempotent-retries lesson over from pixel-notes]

You come back to acme-api and the agent still trusts everything it wrote down. drift says which of it no longer holds: a Postgres pin whose review date passed in June, a superseded decision that points nowhere, projects that went silent. page shows why the pin was made, so you can decide in a minute. lessons brings over what pixel-notes learned about retrying jobs, because both projects run background jobs. Bundled example data (memory-boost init --example), recorded with vhs from docs/demo.tape.

On a real machine

Five weeks of the author's own daily use: 29 decisions, 24 projects, 657 Claude Code transcripts. Output as produced; only project and file names are replaced.

$ memory-boost drift# Drift report — 2026-09-2429 decisions · 24 projects · 204 log entries · 33 open checkpoints · **20 findings**
## decision-expired (9)- deploy-via-bastion — review_by 2026-07-08 (78 days ago); revisit or mark historic- bot-guardrails — review_by 2026-07-08 (78 days ago); revisit or mark historic  …## project-no-decisions (2)- thesis-solver — 20 sessions logged, 0 decisions tagged 'thesis-solver': the learning lives only in transcripts## project-silent (5)- mood-api — last session 2026-04-16 (161 days ago); still listed as live  …
$ memory-boost mine# Session digest — 2026-09-24sessions      80 with ≥20 turnstools         Bash 5956 · Edit 860 · Read 692 · Write 493 · Agent 203 · ToolSearch 138bash          5956 calls, 159 failed (2.7%); most failed: cd (69), sleep (12), ssh (9), pkill (8), ls (7)bash/edit     4.4x; extreme: worktree-a 107.5x, sandbox 70.0x, sandbox 54.0xreads         692 calls, 131 re-reads of a file already read (19%); top: …/apply_email.py ×18discipline    62 long sessions (≥60 turns): 47 never checkpointed, 29 never savedsubagents     203 spawned in 44 sessions; max in one session: 20

Every line is a habit to change, a decision to revisit, or a rule worth writing down. None of it needed a new tool: the data was already on disk. It needed a reader.

What it is

  1. A wiki you own. projects/*.md, decisions/*.md, concepts/*.md, log.md. Plain markdown; edit by hand, keep it in git. SQLite FTS5 index as a disposable cache. Nine MCP tools for any harness: memory_brief, memory_recall, memory_page, memory_save, memory_checkpoint, memory_resume, memory_drift, memory_lesson, memory_shelf. memory_shelf (CLI: memory-boost shelf "idea") appends a dated one-line idea to concepts/idea-shelf.md without the agent reading the page back.
  2. Freshness as data. Decisions carry status: and review_by:. Search results are tagged current / unclassified / review / historic / superseded, current first.
  3. Session checkpoints that survive /compact, with one line per other active session on the same project so parallel agents don't collide.
  4. drift reads the wiki and reports what expired, what went silent, what was never written down and what was left half-done. The current project's top findings go into every session brief.
  5. mine reads your local Claude Code transcripts and reports tool usage, failed commands, re-reads, subagent fan-out and checkpoint discipline. Aggregates only: no prompt, command or file content is stored or printed, so the digest is safe to paste anywhere.
  6. lessons: concepts/ pages with applies_when: [tags]. A project page that lists matching tags: gets those lessons in its brief, so what worked in one repo reaches the next. The /retro skill writes them at session end.

Connect your harness

MCP server (all harnesses): command memory-boost, args ["serve"].

To share one server between several sessions, run it over streamable HTTP (stateless, JSON responses) and point each harness at http://127.0.0.1:8765/mcp:

bash
memory-boost serve --http                      # --host 127.0.0.1 --port 8765 are the defaultsclaude mcp add --transport http memory -s user http://127.0.0.1:8765/mcp

It binds to loopback by default and has no authentication: keep it there.

HarnessMCP registrationContext at session start
Claude Code (plugin)/plugin install memory-boost@memory-boostIncluded: hook, MCP server, skills
Claude Code (manual)claude mcp add memory -s user -- memory-boost serveHook below (startup, resume, compact); mine reads its transcripts
Codex CLIcodex mcp add memory -- memory-boost serveAGENTS.md: "call memory_brief first"
Cursor / VS Code / Gemini CLIstdio entry in their mcp.json / settings.jsonSame line in rules (hook adapters: roadmap)

Manual Claude Code hooks (~/.claude/settings.json), not needed with the plugin:

json
{ "hooks": {  "SessionStart": [ { "hooks": [ { "type": "command", "command": "memory-boost hook session-start" } ] } ],  "Stop":         [ { "hooks": [ { "type": "command", "command": "memory-boost hook stop", "timeout": 10 } ] } ],  "PreCompact":   [ { "hooks": [ { "type": "command", "command": "memory-boost hook pre-compact", "timeout": 20 } ] } ]} }

On startup/resume it injects ~1k tokens: catalog, the project's context and last sessions, its drift, open pending items, lessons from other projects, your open checkpoint. On compact only this session's checkpoint. It never blocks session start: on any error it prints nothing.

stop and pre-compact write an automatic checkpoint from the transcript, with no LLM call: your prompts (minus <private>…</private>), files edited and git commits, under the checkpoint's auto key. What the agent wrote (task, done, next) is never overwritten. stop writes only when something changed and 10 minutes or 4 prompts passed; pre-compact always writes, so the post-compact re-injection has something to show even if the agent never called memory_checkpoint.

Skills: /memory-boost (router: when to run what), /save-session, /restore-session, /retro. The plugin installs them as /memory-boost:retro and so on; without it, copy skills/* into ~/.claude/skills/. The first session after installing the plugin takes a few extra seconds while uv fetches memory-boost==0.2.1 and its dependencies from PyPI (the only network access the plugin makes); later sessions start in about 0.2 s.

CLI contract for agents: data on stdout, errors on stderr with a fix: line, --json on every reading command (with a version field), exit 0 = trust stdout, 1 = not found, 2 = bad input. Reports end with a next: line naming the exact command to run.

How it works

[Agents talk to memory-boost serve over MCP; the hook injects the brief; drift reads the wiki and checkpoints; mine reads local transcripts; both feed reports and the brief]

Source: docs/architecture.mmd

The project is resolved from the working directory name (~/work/acme-api → projects/acme-api.md); map other names in aliases.json. Under 1,900 lines of Python, one dependency (mcp), no embeddings unless you opt into semantic recall, no daemon unless you run serve --http.

Session events v2

Every memory_save (or memory-boost save) writes one event to $MEMORY_BOOST_HOME/events/<agent>/<YYYY-MM-DD>.jsonl and one entry to wiki/log.md. The v2 fields are all optional: a v1 call (project, action, result, detail, pending as text) keeps working and writes the same log.md header. Each event now carries "schema": "memory-boost/session@2", a server date_local, a per-session seq and the assigned pending ids; v1 readers ignore the extra keys.

  • outcome: done | progress | blocked | waiting | research | abandoned.
  • pending: a list of {text, owner, severity, due?, waiting_on?}. The server assigns each item a stable id <project>#<n> (counter per project in events/pending-seq.json), shown in the brief under open pending.
  • closes / drops: ids the session finished or no longer needs. Open items are what remains after folding them.
  • session and metrics: optional blocks stored as given. The caller computes them, for example with a session summary tool; the save itself does not read transcripts.
json
{  "schema": "memory-boost/session@2",  "project": "acme-api",  "action": "Moved the job queue to Postgres and added retries",  "result": "ok",  "outcome": "progress",  "session": {"id": "3f9c2a1e-…", "harness": "claude-code", "cwd": "/home/me/work/acme-api",              "segment_start": "2026-10-28T10:00:03Z", "segment_end": "2026-10-28T14:45:12Z"},  "metrics": {"source": "ledger session-summary@1", "minutes": {"acme-api": {"attention": 182, "agent": 160, "gross": 230}},              "commits": [{"repo": "acme-api", "sha": "f2c1114", "pushed": false}],              "tests": {"runs": 6, "passed": 1180, "failed": 0}, "cost_usd": 14.2},  "pending": [{"text": "Run the batch import", "owner": "user", "severity": 3},              {"text": "Push main to origin", "owner": "user", "severity": 2}],  "closes": ["acme-api#12", "acme-api#14"]}

date_local is set by the server from MEMORY_BOOST_TZ (an IANA zone such as Europe/Madrid; UTC by default). Events written before v2 have no pending ids, so memory-boost pending [--project] (and closes) cannot see them.

Semantic recall (optional)

Off by default: memory_recall is full-text only and the base install stays one dependency. To also match paraphrases and other languages, run a local embedding model:

bash
pip install "memory-boost[semantic]==0.2.1"   # adds sqlite-vecollama pull embeddinggemmaexport MEMORY_BOOST_SEMANTIC=1memory-boost index                       # embeds the wiki once; later runs embed only changes

The first index of a large wiki on CPU can take minutes: as a rough guide, about 15 minutes for some 850 documents on a laptop without a GPU (one measurement, not a benchmark). memory-boost index and recall show embedding N/M chunks… on stderr while it runs; later runs re-embed only what changed.

Default mode when on is hybrid (full-text and vectors fused by weighted reciprocal rank); override with MEMORY_BOOST_RECALL_MODE=fts|semantic|hybrid or memory-boost recall --mode. If Ollama is down, recall falls back to full-text and logs a warning. On a private 64-query set (39 literal, 25 paraphrase) with a warm index on CPU: paraphrase nDCG@10 0.46 to 0.76, literal 0.80 to 0.85, p50 about 110 ms per query. The query set is not published.

Configuration

VariableDefaultPurpose
MEMORY_BOOST_HOME$XDG_DATA_HOME/memory-boostWiki, events, checkpoints, aliases.json
MEMORY_BOOST_WIKI$MEMORY_BOOST_HOME/wikiPoint at an existing wiki (e.g. a git repo)
MEMORY_BOOST_INDEX$XDG_CACHE_HOME/memory-boost/index-<hash>.dbSearch index
MEMORY_BOOST_CHECKPOINTS$MEMORY_BOOST_HOME/checkpointsCheckpoint directory
MEMORY_BOOST_TRANSCRIPTS~/.claude/projectsWhere mine looks (several dirs: a:b)
MEMORY_BOOST_TODAYtoday (UTC)Pin the date for reproducible reports
MEMORY_BOOST_TZUTCIANA zone for date_local in events (e.g. Europe/Madrid)
MEMORY_BOOST_AUTOSAVE_SECS600hook stop: minimum seconds between automatic checkpoints
MEMORY_BOOST_AUTOSAVE_TURNS4hook stop: or this many new prompts, whichever comes first
MEMORY_BOOST_SEMANTICunset1 enables vector recall (needs memory-boost[semantic] + Ollama)
MEMORY_BOOST_RECALL_MODEfts (hybrid with semantic)fts, semantic or hybrid
MEMORY_BOOST_EMBED_MODELembeddinggemmaOllama embedding model
MEMORY_BOOST_OLLAMA_URLhttp://localhost:11434Ollama endpoint

Status values: current, review, historic, superseded; accepted/active read as current and proposed as review.

Experimental (shipped, little real use yet): memory_shelf, memory-boost friction and the lesson fields cue/evidence/confidence. Their output format may still change.

vs. alternatives

memory-boostbasic-memoryclaude-memagent-retro
StoreMarkdown wiki you editMarkdownCaptured observationsNone (prompt skill)
SearchFTS5 (+ optional local vectors)FTS + vectorsFTS + vectors—
Freshness / review datesYesNoNo—
Drift report over memoryYesNoNoNo
Session analyticsYes (aggregates, local)NoNoLLM reads the conversation
Parallel-session awarenessYesNoNo—
LicenseMITAGPL-3.0Apache-2.0?

Want better search, more integrations and a community? Use basic-memory. Want everything captured automatically? claude-mem. Use memory-boost if you want to learn from what your agents already wrote down.

Limits / non-goals

  • Full-text search by default; embeddings only with the optional [semantic] extra and a local Ollama.
  • mine understands Claude Code transcripts today. Codex is on the roadmap.
  • Reports are as good as the wiki: an empty wiki yields an empty drift.
  • Single user, local files. Linux and macOS; Windows untested.
  • The wiki is read by your agents as instructions. Only use a wiki you trust; see SECURITY.md.

License

MIT

來源:README.md,提交 bf318a4

工具

9

memory_brief

Cheap orientation (~1k tokens): wiki catalog, the project's stable context and its latest sessions. Call it at the start of a session in harnesses without a SessionStart hook, or to reload a project's context mid-session. `project` is a project name or a directory path.

輸入參數budgetproject

memory_recall

Full-text search over wiki pages and log entries. Each hit is tagged [kind | date | freshness]; current knowledge is listed before historic and superseded. Historic hits are omitted unless include_historic=true.

輸入參數limitquery必填projectinclude_historic

memory_page

Read a wiki page by name (e.g. 'my-api'), or one section of it (a heading or the anchor returned by memory_recall). Prefer this over reading the whole file.

輸入參數name必填section

memory_save

Record what was done in a session: one raw JSONL event plus one compiled entry in wiki/log.md (creates the project page if it does not exist yet). Does not commit to git. action: one line, at most 120 characters. detail: a self-contained paragraph, at most 600 characters; the next session's brief reads it. outcome: done | progress | blocked | waiting | research | abandoned. pending: what is left to do. Either a string split on ';' (each part is the user's, severity 3), or a list of {text, owner, severity, due?, waiting_on?, done_check?} where owner is user | agent | client | third_party, severity is 1-3, due is YYYY-MM-DD, and waiting_on is org:<slug> or person:<slug> when the owner is client or third_party. Severity 1: production down or data loss, a hard deadline within 72 hours, or a client waiting on something that depends on the user. Severity 2: a known open bug, a deadline within 7 days, or an unmitigated risk (exposed secret, work unpushed for more than 3 days). Severity 3: the rest. done_check: how to tell it is finished (a command, or an observable condition); stored and shown, never run. The server assigns each item an id <project>#<n>; the brief shows open items with their ids. closes: ids of open pending items (as shown in the brief) that this session finished. Ids that are unknown, already closed or repeated are not written and come back as `ignored` in the reply. drops: [{id, why}] open pending items that no longer apply. decisions: [{slug, new}] pages in wiki/decisions created or cited. deadlines: [{what, at, hard, pending_ref?}]. orgs: organisations involved that are not the project's client (prospects, suppliers). touches: other project slugs affected. uses: "bip:<capability>" (background IP reused) or "proj:<slug>". billable: whether it counts toward billing a client. money: [{kind, status, ref, amount?, currency?}] with kind quote | invoice | payment | co

輸入參數orgsusesagentdropsmoneyaction必填closesdetailresultstatedmetricsoutcome另有 8 個

memory_shelf

Append a dated one-line idea to a wiki page without reading it.

輸入參數totext必填project

memory_checkpoint

Save this session's working state (a small JSON, no indexing) so it survives context compaction and parallel sessions on the same project can see it. Call it after each milestone: task = current goal (1 line), done = finished steps (accumulated), next_step = the concrete next step, files = files touched. session_id: the `checkpoint_session=` value injected at session start, or any stable id. Set status=done when the session ends (after memory_save).

輸入參數donetask必填agentfilesnotesstatusproject必填plan_refnext_stepsession_id必填

memory_resume

Return this session's checkpoint (if session_id is given) plus one line per other active session on the project. Use after a compaction or when picking up unfinished work; much cheaper than memory_recall.

輸入參數project必填session_id

memory_drift

What in the memory has drifted: decisions past review_by, superseded decisions without a successor, project pages with no session for weeks, busy projects with no recorded decisions, checkpoints left open. Whole wiki, or one project's findings.

輸入參數project

memory_lesson

Record a lesson that should reach other projects: what worked (or failed), the tools involved and when it applies. `applies_when` are stack/situation tags (e.g. ["fastapi", "celery", "e2e-tests"]); projects whose page lists matching `tags:` get this lesson in their session brief. `learned_on` = this project's slug. cue: the shape of situation it fires on (the pattern, not this task's facts). evidence: the observed contrast it rests on (before/after, A vs B, with numbers or the moment it diverged); "it looked like good practice" is not evidence. confidence: high | medium | low, only with evidence. If nothing observed supports a transferable lesson, do not record one: no lesson is a valid outcome.

輸入參數cuebody必填name必填title必填evidenceconfidencelearned_onapplies_when必填

版本歷史

3
  1. v0.2.1最新Nov 8, 2026
  2. v0.2.0Oct 18, 2026
  3. v0.1.1Sep 26, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Memory 整合