mempal
Memory framework
First committed by ZhangHanDong
Published in ZhangHanDong/mempal. Publisher page
284 GitHub stars
What it is
AI Agent Memory
AutoGineer overview, from the brain’s own files
Mempal is a project memory system designed for coding agents, implemented as a single binary. It enables agents to store, search, and retrieve decision context across sessions. The system utilizes a hybrid search approach combining BM25 keyword matching and vector semantic search, alongside a knowledge graph for tracking entity relationships. It includes a self-describing protocol that allows agents to understand how to interact with the memory system without manual system prompt configuration. Mempal supports cross-project tunnels, multilingual embedding, and collaborative agent workflows through inbox-based handoffs.
How it works
Memory model: Hybrid
AutoGineer overview, from the brain’s own files
Mempal stores data in a SQLite database located at ~/.mempal/palace.db. It ingests project information by chunking and embedding content, which is then searchable via CLI or MCP tools. The system uses a memory protocol to guide agent behavior, such as verifying facts before ingestion and citing sources. It supports collaborative agent interactions by allowing agents to push messages to a per-project inbox, which are then processed via hooks during user prompt submission. The knowledge graph tracks triples with temporal validity, and the system provides tools for fact-checking and context assembly.
| Folder | Role | Files |
|---|---|---|
| .claude | agent-config | 2 |
| .github | agent-config | 3 |
| docs | docs | 129 |
| hooks | hooks | 2 |
| src | source-code | 30 |
| tests | tests | 31 |
| benchmarks | folder | 1 |
| books | folder | 41 |
| crates | folder | 71 |
| specs | folder | 131 |
The agent writes
- record_checked evidence: AGENTS.md
Requirements
Runtimes: Rust
Databases: SQLite
Works with: Claude Code, OpenAI Codex, GitHub Copilot, Cursor, Kiro, OpenCode, Amp, Cline, JetBrains Junie, Devin (ex-Windsurf)
Set it up
This brain runs code automatically: 2 hooks (claude-code). Review .claude/settings.json before opening the folder in Claude Code. No step below turns a hook on for you.
.claude/settings.json:if echo "$TOOL_INPUT" | grep -q 'git commit'; then echo 'MEMPAL REMINDER: You just committed code. Call mempal_ingest to save the decision context (what was built, why, what was considered). Rule 4: SAVE AFTER DECISIONS.'; fi.claude/settings.json:bash .claude/hooks/user-prompt-submit.sh
- Not scanned by AutoGineerThe author’s MCP configuration (.mcp.json) also starts it in a way AutoGineer does not offer. Read that file: AutoGineer did not scan that path; what it runs is listed under “This brain runs”. https://github.com/ZhangHanDong/mempal/blob/9ed705d78321daf5878e9579777b1a471e97c6f1/.mcp.json
- Not scanned by AutoGineerThe author’s README also describes installing it with cargo. Read its install section: AutoGineer did not scan that path. https://github.com/ZhangHanDong/mempal/blob/9ed705d78321daf5878e9579777b1a471e97c6f1/README.md#quick-start
First committed by ZhangHanDong. Published in ZhangHanDong/mempal. Licence: MIT License.
Usage
AutoGineer overview, from the brain’s own files
- Initialize project memory for a directory
- Ingest project files into a specific wing
- Perform hybrid search for past decisions
- Fact-check assertions against the knowledge graph
- Collaborate between agents using inbox pushes
- Manage knowledge lifecycle and anchor publication
- “mempal search "auth decision clerk"”
- Returns past decisions related to authentication and Clerk, including source citations.
- “mempal fact-check path/to/file”
- Identifies potential contradictions like similar name conflicts or stale facts against the knowledge graph.
Documentation by ZhangHanDong
mempal
Image: Crates.io Image: Downloads Image: docs.rs Image: CI Image: Release Image: License: MIT
Project memory for coding agents. Single binary, cargo install mempal, find past decisions with citations in seconds.
Latest release: v0.9.1 (2026-08-19).
What It Does
Agent writes code → commits → mempal saves the decision context
Next session (any agent) → mempal search → finds the decision with source citationHybrid search: BM25 keyword matching + vector semantic search, merged via Reciprocal Rank Fusion
Knowledge graph: subject-predicate-object triples with temporal validity (valid_from/valid_to)
Cross-project tunnels: automatic discovery when the same room appears in multiple wings
Self-describing protocol: MEMORY_PROTOCOL embedded in MCP ServerInfo teaches any agent how to use mempal — no system prompt configuration required
Multilingual: model2vec-rs (BGE-M3 distilled) as default embedder, zero native dependencies
Single file: everything lives in
~/.mempal/palace.db(SQLite + sqlite-vec)
Quick Start
cargo install mempal --version 0.9.1 --locked
mempal init ~/code/myapp
mempal ingest ~/code/myapp --wing myapp
mempal search "auth decision clerk"
mempal wake-upWith REST support:
cargo install mempal --version 0.9.1 --locked --features restFrom a source checkout:
cargo install --path . --lockedConfiguration
Config at ~/.mempal/config.toml (optional, defaults work without it):
db_path = "~/.mempal/palace.db"
[embed]
backend = "model2vec" # default, zero native deps
# model = "minishlab/potion-multilingual-128M" # default multilingual model (1024d)Other backends:
# Local ONNX (requires --features onnx)
[embed]
backend = "onnx"
# External API
[embed]
backend = "api"
api_endpoint = "http://localhost:11434/api/embeddings"
api_model = "nomic-embed-text"
dimensions = 768 # optional; defaults to 384 when omittedCommands
| Command | Purpose |
|---|---|
mempal init <DIR> [--dry-run] | Infer wing/rooms from project tree |
mempal ingest <DIR> --wing <W> [--dry-run] | Chunk, embed, and store |
mempal search <QUERY> [--wing W] [--room R] [--json] | Hybrid search (BM25 + vector + RRF) |
mempal wake-up [--format aaak] | Context refresh, sorted by importance |
mempal compress <TEXT> | AAAK format output |
mempal delete <DRAWER_ID> | Soft-delete a drawer |
mempal purge [--before TIMESTAMP] | Permanently remove soft-deleted drawers |
mempal kg add <S> <P> <O> | Add a knowledge graph triple |
mempal kg query [--subject S] [--predicate P] | Query triples |
mempal kg timeline <ENTITY> | Chronological view of an entity |
mempal kg stats | Knowledge graph statistics |
mempal tunnels | Cross-wing room links |
mempal taxonomy list / edit | Manage routing keywords |
mempal reindex | Re-embed all drawers after model change |
mempal status | DB stats, schema version, scopes |
mempal serve [--mcp] | MCP server (+ REST with feature) |
mempal cowork-install-hooks [--global-codex] | Install UserPromptSubmit hooks for Claude Code (+ optional Codex merge) |
mempal cowork-drain --target <claude|codex> | Drain inbox messages (for hook use; exits 0 on any failure) |
mempal cowork-status --cwd <PATH> | Read-only view of both inboxes at <PATH> |
mempal fact-check [PATH|-] [--wing W] [--room R] [--now <UNIX_SECS>] | Offline contradiction check against KG triples + known entities |
mempal bench longmemeval <FILE> | LongMemEval retrieval benchmark |
Project ignore rules
mempal init <DIR> and directory-mode mempal ingest <DIR> use the target
project's ignore rules by default. They respect .gitignore, .git/info/exclude,
global Git excludes, and a root-level .mempalignore. Built artifacts that should
never become project memory can be listed in .mempalignore without changing the
project's Git behavior.
Use --ignore-file <PATH> to add one or more extra ignore files for a run. Use
--no-gitignore or --no-mempalignore to disable either default source. Explicit
file ingest remains explicit: mempal ingest path/to/file --wing <W> still ingests
that file even if the project ignore rules would skip it during directory traversal.
MCP Server (10 tools)
mempal serve --mcp exposes these tools via Model Context Protocol:
| Tool | Purpose |
|---|---|
mempal_status | State + protocol + AAAK spec (teaches agent on first call) |
mempal_search | Hybrid search with tunnel hints, citations, and AAAK-derived structured signals |
mempal_ingest | Store memories with optional importance (0-5) and dry_run; reports lock_wait_ms when concurrent ingest was observed |
mempal_delete | Soft-delete with audit trail |
mempal_taxonomy | List or edit routing keywords |
mempal_kg | Knowledge graph: add/query/invalidate/timeline/stats |
mempal_tunnels | Cross-wing room discovery |
mempal_peek_partner | Read partner agent's live session (Claude ↔ Codex), pure read, never writes |
mempal_session_peek | Read an explicit Claude/Codex local session by concrete tool + cwd, including same-tool cross-project reads |
mempal_cowork_push | Send a short handoff message to partner agent's inbox (at-next-submit delivery) |
mempal_fact_check | Offline contradiction detection vs KG triples + known entities (similar-name, relation mismatch, stale facts) |
The server embeds MEMORY_PROTOCOL (11 behavioral rules) in the MCP initialize.instructions field. Any MCP client learns the workflow automatically.
Memory Protocol
mempal teaches agents these rules through self-description:
FIRST-TIME SETUP — call
mempal_statusto discover wings before filteringWAKE UP — different clients have different pre-load mechanisms
VERIFY BEFORE ASSERTING — search before stating project facts
QUERY WHEN UNCERTAIN — search on "why did we...", "last time we..." 3a. TRANSLATE TO ENGLISH — translate non-English queries before searching
SAVE AFTER DECISIONS — persist rationale, not just outcomes
CITE EVERYTHING — reference drawer_id and source_file 5a. KEEP A DIARY — record behavioral observations in wing="agent-diary"
PARTNER AWARENESS — use
mempal_peek_partnerfor live partner-agent session,mempal_session_peekfor explicit same-tool/cross-project local sessions, and mempal search only for crystallized drawersDECISION CAPTURE —
mempal_ingestis for firm decisions only; include partner input when peek informed the callCOWORK PUSH — use
mempal_cowork_pushas the SEND primitive in the SEND/READ/PERSIST triad; at-next-submit delivery, not real-timeVERIFY BEFORE INGEST — call
mempal_fact_checkbefore persisting a decision that asserts entity relationships; it catches similar-name typos, relation mismatches against the KG, and stale facts with expiredvalid_to
Agent Cowork (P6 peek + P8 push)
Two coding agents (Claude Code and Codex) can collaborate on the same repo through a per-project inbox + hook-driven injection channel, on top of mempal_peek_partner (read live partner session), mempal_session_peek (read an explicit local session by concrete tool + cwd), and mempal_cowork_push (send ephemeral handoff).
Install hooks once per repo (run at the repo root):
mempal cowork-install-hooks --global-codexThis writes:
.claude/hooks/user-prompt-submit.sh+ merges a registration entry into.claude/settings.jsonso Claude Code fires the hook on every user prompt.~/.codex/hooks.jsonUserPromptSubmit entry so Codex fires the same drain on every user prompt.
The --global-codex part is optional. The re-run is idempotent and self-heals stale/wrong drain entries — re-installing after a mempal upgrade is always safe.
Delivery is at-next-UserPromptSubmit, not real-time: a push from Claude to Codex becomes visible only when the Codex user submits their next prompt, at which point the hook drains the inbox and prepends the message as additionalContext on that turn.
Check inbox state at any time without draining:
mempal cowork-status --cwd "$PWD"Known limitations
Codex feature flag dependency: Codex's hooks runtime is gated behind the
codex_hooksfeature flag (currently "under development" in shippedcodex-cli). If the flag is off, Codex silently ignores~/.codex/hooks.json.install-hooksdetects this and prints a warning with the activation command:codex features enable codex_hooks.Two Claude-side artifacts: Claude Code does not auto-discover hook scripts by filename. Both
.claude/hooks/user-prompt-submit.shand the matching entry in.claude/settings.jsonare required.install-hookswrites both; do not remove either by hand.TUI restart needed after config changes on the Codex side: Codex reads
config.toml+hooks.jsonat process startup only. After enabling the feature flag or runninginstall-hooks, fully quit and relaunch the Codex TUI before expecting hooks to fire.MCP server re-spawn: Claude Code spawns the mempal MCP server at client startup. After upgrading the mempal binary (
cargo install ...), restart Claude Code so the MCP server respawns and exposes newly added tools likemempal_cowork_pushormempal_fact_check.Bidirectional scope:
mempal_cowork_pushcurrently requires an MCP client identifying itself asclaude-codeorcodex(or their aliases). Generic MCP clients cannot push because caller identity is required to fill thefromfield and enforce self-push rejection. This is by design for the Claude ↔ Codex pair.
Concurrent Ingest Safety (P9-B)
Two agents writing to the same source simultaneously used to be a TOCTOU race: both would pass the dedup check, both would insert, producing duplicate drawers or mismatched vectors. Since 0.4.0, mempal_ingest and ingest_file_with_options acquire a per-source advisory lock before entering the dedup + insert critical section.
Lock files live at
~/.mempal/locks/<16-hex>.lock, created lazily, released on guard drop.5 s timeout, 50 ms retry + jitter;
LockError::Timeoutsurfaces as aningesterror.Every non-dry-run response carries
lock_wait_ms: Option<u64>so agents can detect contention.Dry-run does not acquire the lock (no writes, no race).
Unix only in 0.4.0. On Windows the lock path is a no-op fallback;
LockFileExsupport is tracked for a follow-up.
Offline Fact Checking (P9-A)
mempal_fact_check — and its CLI counterpart mempal fact-check — compare a text blob against the existing KG triples + the entity registry derived from recent drawers. It flags three issue classes, all deterministic and zero-LLM:
| Issue | Trigger |
|---|---|
SimilarNameConflict | Text mentions a name within Levenshtein distance ≤ 2 of a known entity, and the names are not equal. |
RelationContradiction | Text asserts a predicate (e.g. brother_of) that's in the incompatibility dictionary against an existing KG triple with the same (subject, object) endpoints. |
StaleFact | Text asserts a triple whose KG row has valid_to < now (Unix seconds). |
Extracted triples today cover three narrow patterns: "X is Y's ROLE", "X works at / for Y", and "X is [the|a|an] ROLE of Y". Unknown sentence shapes are silently ignored, so the tool errs toward under-reporting rather than false positives.
Protocol Rule 11 guides agents to run this before ingesting a decision that asserts entity relationships. See specs/p9-fact-checker.spec.md for the full contract.
Search Architecture
query → BM25 (FTS5) → ranked by keyword match
→ Vector (sqlite-vec) → ranked by semantic similarity
→ RRF Fusion (k=60) → merged ranking
→ Wing/Room filter → scoped results
→ Tunnel hints → cross-project referencesKnowledge Graph
mempal kg add "Kai" "recommends" "Clerk"
mempal kg add "Clerk" "replaced" "Auth0" --source-drawer drawer_xxx
mempal kg timeline "Kai"
mempal kg statsTriples support temporal validity — relationships can be invalidated when they expire.
Agent Diary
Cross-session behavioral learning — agents record observations, lessons, and patterns:
# Search diary entries
mempal search "lesson" --wing agent-diary
mempal search "pattern" --wing agent-diary --room claudeDiary entries use the existing mempal_ingest tool with wing="agent-diary" and room=agent-name. MEMORY_PROTOCOL Rule 5a teaches agents to write diary entries. Integrates with Claude Code's auto-dream for automatic memory consolidation.
Ingest Formats (5)
| Format | Auto-detected by |
|---|---|
| Claude Code JSONL | type + message fields |
| ChatGPT JSON | Array or mapping tree |
| Codex CLI JSONL | session_meta + event_msg entries |
| Slack DM JSON | type: "message" + user + text |
| Plain text | Fallback |
AAAK Compression
Output-only format readable by any LLM without decoding:
mempal compress "Kai recommended Clerk over Auth0 based on pricing and DX"
# V1|manual|compress|1744156800|cli
# 0:KAI+CLK+AUT|kai_clerk_auth0|"Kai recommended Clerk over Auth0..."|★★★★|determ|DECISIONChinese text uses jieba-rs POS tagging for proper word segmentation.
Architecture
| Crate | Responsibility |
|---|---|
mempal | Installable CLI package, REST entrypoint, and legacy facade paths |
mempal-embed | Public Embedder / EmbedderFactory traits, API embedder, model2vec and ONNX implementations |
mempal-search-core | Public FTS5 query escaping and RRF rank-fusion primitives |
mempal-agent-memory | Public agent-memory domain types and anchor helpers |
mempal-mcp-protocol | Public self-describing MEMORY_PROTOCOL text |
mempal-store-sqlite | Public SQLite storage layer: schema, migrations, Database, FTS5, sqlite-vec, KG, tunnels, cards, adoption tables |
mempal-runtime | Public runtime workflows: ingest, search orchestration, context, brief, knowledge, factcheck, projects, cowork, doctor, AAAK |
mempal-mcp-server | Public MCP server adapter and tool wiring for the runtime |
Key design choices:
model2vec-rs default embedder — zero native deps, multilingual (BGE-M3 distilled)
ort (ONNX) available behind
onnxfeature flag for max qualityFTS5 for BM25 keyword search — synced via SQLite triggers
Soft-delete with audit trail —
mempal delete+mempal purgeImportance ranking — drawers have 0-5 importance, wake-up sorts by importance
Semantic dedup — ingest warns (doesn't block) when similar content exists
Public workspace crates — reusable libraries are maintained in this repo and published as versioned crates while
cargo install mempalremains the CLI path. P114 keeps the split coarse: storage, runtime, and MCP server are separate crates, but feature families such as knowledge, cowork, and context remain inmempal-runtime.
Development
cargo test --workspace
cargo test --workspace --all-features
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo fmt --all --checkAfter changing the embedding model or dimensions, re-embed existing drawers:
mempal reindexDocs
Usage guide:
docs/usage.mdAAAK dialect:
docs/aaak-dialect.mdSpecs (internal agent-spec contracts, on GitHub): https://github.com/ZhangHanDong/mempal/tree/main/specs
Plans (internal implementation plans, on GitHub): https://github.com/ZhangHanDong/mempal/tree/main/docs/plans
Benchmark:
benchmarks/longmemeval_s_summary.md— includes the older 384d baseline and the newer model2vec 256d run
Book: MemPalace — Reforging Memory in Rust
mempal 的设计分析和完整技术叙事,收录在《MemPalace: AI 记忆的第一性原理》Part 10(第 26-30 章):
| 章节 | 内容 |
|---|---|
| 第 26 章 | 为什么用 Rust 重铸 — 触发点、重写判断、语言选择 |
| 第 27 章 | 保留了什么、改变了什么 — 5 维度对比 + 架构图 |
| 第 28 章 | 自描述协议 — MEMORY_PROTOCOL、7 条规则、agent 生命周期 |
| 第 29 章 | 多 Agent 协作 — Claude↔Codex 接力、反模式发现、agent 日记 |
| 第 30 章 | 诚实的差距 — benchmark 数据、6 个 gap |
docs/aaak-dialect.md
AAAK 方言设计文档
mempal 中 AAAK 的完整设计说明。写给需要理解"这东西是什么、怎么工作、为什么这样设计"的人。
一句话总结
AAAK 是一种面向 AI 的速记格式。它把自然语言文本压缩成结构化的管道分隔行,让任何 LLM 都能快速理解上下文摘要。它不是存储格式——原文永远保存在 drawer 里,AAAK 只在输出侧使用(wake-up --format aaak 和 compress 命令)。
来源与改进
AAAK 最初由 MemPalace(Python)设计。那个版本有三个核心缺陷:
| 缺陷 | MemPalace (Python) | mempal (Rust) |
|---|---|---|
| 没有解码器 | 只有 compress(),无法验证信息是否丢失 | 有 decode() + verify_roundtrip() |
| 没有形式语法 | 格式只存在于代码逻辑里 | 有 BNF 可解析的格式 + parse() |
| 没有版本号 | 无法区分不同版本的输出 | 头部行以 V1| 开头 |
mempal 的 AAAK 实现修复了这三个缺陷,同时保留了原始设计的核心洞见:"极度缩写的英语,让 LLM 当解码器"。
格式规范
一个完整的 AAAK 文档长这样:
V1|myapp|auth|2026-04-08|readme
0:KAI+CLK|clerk_auth|"Kai recommended Clerk over Auth0 based on pricing and DX"|★★★★|determ|DECISION
1:KAI|auth_rollout|"roll out Clerk next sprint"|★★★|relief|TECHNICAL
T:0<->1|auth_link
ARC:anx->determ->relief头部行
V{version}|{wing}|{room}|{date}|{source}| 字段 | 说明 | 示例 |
|---|---|---|
| version | 格式版本,当前为 1 | V1 |
| wing | 所属翼(项目或领域) | myapp |
| room | 所属房间(子领域) | auth |
| date | 日期或时间戳 | 2026-04-08 |
| source | 来源标识 | readme |
Zettel 行(记忆卡片)
{id}:{entities}|{topics}|"{quote}"|{weight}|{emotions}|{flags}这是 AAAK 的核心——每行是一张"记忆卡片"(Zettel):
| 字段 | 格式 | 说明 |
|---|---|---|
| id | 数字 | 从 0 开始的递增 ID |
| entities | AAA+BBB+CCC | 3 字母大写实体编码,+ 分隔 |
| topics | topic1_topic2 | 话题关键词,_ 分隔 |
| quote | "原文内容" | 双引号包裹的原文(内部双引号替换为单引号) |
| weight | ★ 到 ★★★★★ | 重要性 1-5 级 |
| emotions | emo1+emo2 | 情感编码,+ 分隔 |
| flags | FLAG1+FLAG2 | 语义标志,+ 分隔 |
Tunnel 行(关联线)
T:{left}<->{right}|{label}连接两个 Zettel,表示它们之间存在语义关联。left 和 right 是 Zettel ID。
Arc 行(情感弧线)
ARC:{emotion1}->{emotion2}->{emotion3}描述一段经历中的情感变化轨迹。箭头表示时间流向。
六种核心语法元素
1. 三字母实体编码
人名和专有名词被压缩为 3 个大写字母:
Kai → KAI Clerk → CLK Auth0 → AUT规则:取前 3 个 ASCII 字母并大写。如果有预定义的 entity_map,优先使用映射。
对于中文实体(如"张三"),由于没有 ASCII 字母,使用稳定哈希生成 3 字母编码。如果没有检测到任何实体,使用 UNK 占位。
为什么是 3 个字母? 2 个太少(26^2 = 676 种,容易碰撞),4 个收益递减。3 个字母(17,576 种)在区分度和紧凑性之间取得最佳平衡,而且保持了对原名的直觉关联——看到 KAI 就知道是 Kai。
2. 管道分隔符 |
替代自然语言中的逗号、句号、换行。选择 | 而非其他符号的原因:
在自然语言中极少出现,不会产生歧义
LLM 在训练数据中大量见过管道分隔格式(命令行、Markdown 表格),已经理解"竖线 = 字段边界"
3. 星级重要性 ★
★ = 1(普通)
★★ = 2(一般)
★★★ = 3(重要,技术决策)
★★★★ = 4(关键,重大决策或转折)
★★★★★ = 5(极其重要)自动推断规则:
含 DECISION 或 PIVOT 标志 → 4 星
含 TECHNICAL 标志 → 3 星
其他 → 2 星
4. 情感编码
28 种情感状态被压缩为 3-7 字符的短编码:
| 情感 | 编码 | 中文触发词 | 英文触发词 |
|---|---|---|---|
| 决心 | determ | 决定、确定 | decided, determined |
| 焦虑 | anx | 担心、焦虑 | worried, anxious |
| 兴奋 | excite | 兴奋 | excited |
| 喜悦 | joy | 开心、高兴 | happy, joy |
| 悲伤 | grief | 悲伤、失望 | sad, grief, disappoint |
| 惊讶 | surpr | 惊讶 | surprised |
| 感恩 | grat | 感恩、感谢 | grateful |
| 好奇 | curious | 好奇 | curious |
| 信任 | trust | 信任 | trust |
| 释然 | relief | 轻松、放心 | relieved |
| 恐惧 | fear | 恐惧、害怕 | fear |
| 绝望 | despair | 绝望 | despair |
| 热情 | passion | 热情 | passion |
| ... | ... | ... | ... |
如果文本中没有检测到任何情感信号,默认使用 determ。
5. 语义标志(Flags)
6 种固定标志,标记信息的类型:
| 标志 | 含义 | 触发词(英/中) |
|---|---|---|
DECISION | 显式决策 | decided, chose, switch / 决定, 选择, 切换, 推荐 |
ORIGIN | 起源时刻 | created, founded, launched / 创建, 创立, 第一次 |
CORE | 核心信念 | fundamental, essential, principle / 核心, 基本, 原则 |
PIVOT | 转折点 | turning point, breakthrough / 转折, 突破, 顿悟 |
TECHNICAL | 技术细节 | api, database, architecture / 接口, 数据库, 架构, 部署 |
SENSITIVE | 敏感内容 | password, secret, credential / 密码, 密钥, 凭证, 隐私 |
如果没有检测到任何标志,默认使用 CORE。
6. 箭头因果关系 ->
在 Arc 行中表示情感的时间流向:
ARC:anx->determ->relief (从焦虑 → 决心 → 释然)编码流水线
AaakCodec::encode(text, meta) 的执行过程:
原始文本
│
├─ 1. normalize_whitespace() 合并空白、替换双引号
│
├─ 2. extract_entities() 英文检测大写词;中文用 jieba POS 标注(nr/ns/nt/nz)→ 3 字母编码
│
├─ 3. extract_topics() 英文分词 + jieba 中文分词 → POS 过滤(保留 n*/v*/a*)→ 取前 3 个
│
├─ 4. detect_emotions() 关键词匹配 → 情感编码(中英双语)
│
├─ 5. detect_flags() 关键词匹配 → 语义标志(中英双语)
│
├─ 6. infer_weight() 根据标志推断重要性
│
└─ 7. 组装 AaakDocument 头部行 + Zettel 行 + 往返验证报告输出是 EncodeOutput,包含:
document: AaakDocument— 编码后的文档report: EncodeReport— 编码报告(话题截断数、覆盖率、丢失的断言)
解码流水线
AaakCodec::decode(document) 的执行过程:
AaakDocument
│
├─ 遍历每个 Zettel
│ │
│ ├─ 取 quote 字段
│ │
│ └─ 如果有 entity_map,将 3 字母编码还原为原名
│ 例如:KAI → Kai, CLK → Clerk
│
└─ 所有 zettel 的解码文本用换行连接往返验证
verify_roundtrip(original, document) 检查编码后信息是否丢失:
将原文按句号/感叹号/问号/分号(含中文全角标点)拆分为断言列表
解码 document 得到还原文本
逐一检查每个断言是否出现在还原文本中
返回
RoundtripReport:preserved: 保留的断言lost: 丢失的断言coverage: 保留率(0.0 - 1.0)
spec 要求 coverage >= 0.8。
解析(从字符串到结构体)
AaakDocument::parse(input) 可以从 AAAK 字符串重建结构体:
let doc = AaakDocument::parse(
"V1|myapp|auth|2026-04-08|readme\n\
0:KAI|clerk_auth|\"use Clerk\"|★★★★|determ|DECISION"
)?;
assert_eq!(doc.header.version, 1);
assert_eq!(doc.zettels[0].entities, vec!["KAI"]);解析器会验证:
实体编码必须是 3 个大写字母
情感编码必须是 3-7 个小写字母
标志必须是已知的 6 种之一
星级必须是 1-5 个 ★
Tunnel 引用的 Zettel ID 必须存在
不允许重复的 Zettel ID
中文支持
AAAK 使用 jieba-rs 做真正的中文分词和词性标注,而不是 bigram 启发式:
| 能力 | 英文策略 | 中文策略 |
|---|---|---|
| 实体检测 | 首字母大写词 | jieba POS 标注(nr* 人名 / ns 地名 / nt 组织 / nz 专名) |
| 实体编码 | 取前 3 字母大写 | 稳定哈希生成 3 字母 ASCII 码 |
| 话题提取 | 按空格/标点分词 | jieba 分词 + POS 过滤(保留 n* / v* / a*) |
| 停用词 | 11 个英文虚词 | jieba POS 自动过滤 + 人工兜底列表 |
| 情感检测 | 37 个英文关键词 | 30 个中文关键词(作为 jieba 之上的补充) |
| 标志检测 | 24 个英文关键词 | 31 个中文关键词 |
| 断言拆分 | . ! ? ; | . ! ? ; 。!?;, |
示例:输入"阿里巴巴集团在杭州发布了新的云服务产品",jieba 会识别出:
实体:
阿里巴巴(nz专有名词)、杭州(ns地名)话题:
集团、发布、服务(均为n或v)自动跳过
的、了、在、新的等虚词
实现细节:
jieba 词典懒加载(
OnceLock),首次调用时初始化,后续复用实体和话题互斥——专有名词只进 entities,普通名词/动词只进 topics
对 jieba 默认词典里没有的人名(如 "李四"、"赵雷"),建议通过
entity_map预定义别名
成本:引入 jieba-rs 增加约 5MB 的词典到二进制,换来准确的中文分词能力。如果目标是极小体积部署,可以 fork 并加 feature flag 禁用 jieba。
AAAK 在 mempal 中的位置
┌─────────────┐
│ CLI / MCP │
└──────┬──────┘
│
┌────────────┼────────────┐
│ │ │
wake-up compress search
--format 命令 引擎
aaak (不用 AAAK)
│ │
└────────────┘
│
┌───────┴───────┐
│ mempal-aaak │ ← 只在输出侧
└───────────────┘
┌─────────────────────────────┐
│ mempal-core │
│ drawers 表存原文 │ ← 永远保留完整内容
│ drawer_vectors 存向量 │
└─────────────────────────────┘关键架构约束:
AAAK 不被 ingest 或 search 依赖
数据永远 raw 存储——drawer 保存原文,AAAK 只是输出时的可选格式化
AAAK 是输出格式化器,不是存储格式
设计哲学
AAAK 的核心洞见:LLM 就是解码器。
传统压缩(gzip、zstd)需要专门的解码器。AAAK 不需要——任何能读英文的 LLM 看到 KAI(backend,3yr) 就知道"Kai 做后端,3 年经验"。这不是巧合,而是刻意的设计:
三字母编码利用了"大写缩写 = 名字"的直觉
管道分隔利用了"竖线 = 字段边界"的直觉
星级利用了"更多星 = 更重要"的直觉
情感编码利用了"缩写 = 原词"的直觉
每一种语法元素都建立在 LLM 训练数据中已有的模式上,不需要学习新规则。
最诚实的定位:AAAK 是面向 AI 的速记索引格式。它的核心价值不在于"无损压缩",而在于"跨模型可读的高效上下文摘要"。原文始终在 drawer 里,AAAK 帮你在有限的 context window 里塞进更多有用信息。
453 files · 436 not served here
- .claude/hooks/user-prompt-submit.sh (not served here)
- .claude/settings.json
- .github/workflows/ci.yml (not served here)
- .github/workflows/pages.yml (not served here)
- .github/workflows/release.yml (not served here)
- .gitignore (not served here)
- .mcp.json
- AGENTS.md
- ATTRIBUTION.md
- AUTOGINEER-RUNS.md
- CHANGELOG.md
- CLAUDE.md
- Cargo.lock (not served here)
- Cargo.toml (not served here)
- LICENSE
- README.md
- README_zh.md
- benchmarks/longmemeval_s_summary.md (not served here)
- books/README.md (not served here)
- books/zh-CN/book.toml (not served here)
- books/zh-CN/mermaid-init.js (not served here)
- books/zh-CN/mermaid.min.js (not served here)
- books/zh-CN/plans/00-preface.plan.md (not served here)
- books/zh-CN/plans/01-problem.plan.md (not served here)
- books/zh-CN/plans/02-principles.plan.md (not served here)
- books/zh-CN/plans/03-architecture.plan.md (not served here)
- books/zh-CN/plans/04-storage-search.plan.md (not served here)
- books/zh-CN/plans/05-mind-model.plan.md (not served here)
- books/zh-CN/plans/06-knowledge-governance.plan.md (not served here)
- books/zh-CN/plans/07-runtime-context.plan.md (not served here)
- books/zh-CN/plans/08-cowork.plan.md (not served here)
- books/zh-CN/plans/09-self-evolution.plan.md (not served here)
- books/zh-CN/plans/10-ops-and-usage.plan.md (not served here)
- books/zh-CN/plans/99-appendix-commands.plan.md (not served here)
- books/zh-CN/specs/00-preface.spec.md (not served here)
- books/zh-CN/specs/01-problem.spec.md (not served here)
- books/zh-CN/specs/02-principles.spec.md (not served here)
- books/zh-CN/specs/03-architecture.spec.md (not served here)
- books/zh-CN/specs/04-storage-search.spec.md (not served here)
- books/zh-CN/specs/05-mind-model.spec.md (not served here)
- books/zh-CN/specs/06-knowledge-governance.spec.md (not served here)
- books/zh-CN/specs/07-runtime-context.spec.md (not served here)
- books/zh-CN/specs/08-cowork.spec.md (not served here)
- books/zh-CN/specs/09-self-evolution.spec.md (not served here)
- books/zh-CN/specs/10-ops-and-usage.spec.md (not served here)
- books/zh-CN/specs/99-appendix-commands.spec.md (not served here)
- books/zh-CN/src/SUMMARY.md (not served here)
- books/zh-CN/src/appendix-commands.md (not served here)
- books/zh-CN/src/ch01-problem.md (not served here)
- books/zh-CN/src/ch02-principles.md (not served here)
- books/zh-CN/src/ch03-architecture.md (not served here)
- books/zh-CN/src/ch04-storage-search.md (not served here)
- books/zh-CN/src/ch05-mind-model.md (not served here)
- books/zh-CN/src/ch06-knowledge-governance.md (not served here)
- books/zh-CN/src/ch07-runtime-context.md (not served here)
- books/zh-CN/src/ch08-cowork.md (not served here)
- books/zh-CN/src/ch09-self-evolution.md (not served here)
- books/zh-CN/src/ch10-ops-and-usage.md (not served here)
- books/zh-CN/src/preface.md (not served here)
- crates/mempal-agent-memory/Cargo.toml (not served here)
- crates/mempal-agent-memory/src/anchor.rs (not served here)
- crates/mempal-agent-memory/src/lib.rs (not served here)
- crates/mempal-agent-memory/src/types.rs (not served here)
- crates/mempal-embed/Cargo.toml (not served here)
- crates/mempal-embed/src/api.rs (not served here)
- crates/mempal-embed/src/lib.rs (not served here)
- crates/mempal-embed/src/model2vec.rs (not served here)
- crates/mempal-embed/src/onnx.rs (not served here)
- crates/mempal-mcp-protocol/Cargo.toml (not served here)
- crates/mempal-mcp-protocol/src/lib.rs (not served here)
- crates/mempal-mcp-server/Cargo.toml (not served here)
- crates/mempal-mcp-server/src/lib.rs (not served here)
- crates/mempal-mcp-server/src/server.rs (not served here)
- crates/mempal-mcp-server/src/tools.rs (not served here)
- crates/mempal-runtime/Cargo.toml (not served here)
- crates/mempal-runtime/src/aaak/codec.rs (not served here)
- crates/mempal-runtime/src/aaak/mod.rs (not served here)
- crates/mempal-runtime/src/aaak/model.rs (not served here)
- crates/mempal-runtime/src/aaak/parse.rs (not served here)
- crates/mempal-runtime/src/aaak/signals.rs (not served here)
- crates/mempal-runtime/src/aaak/spec.rs (not served here)
- crates/mempal-runtime/src/adoption_analytics.rs (not served here)
- crates/mempal-runtime/src/brief.rs (not served here)
- crates/mempal-runtime/src/context.rs (not served here)
- crates/mempal-runtime/src/core/config.rs (not served here)
- crates/mempal-runtime/src/core/mod.rs (not served here)
- crates/mempal-runtime/src/core/phase3.rs (not served here)
- crates/mempal-runtime/src/core/protocol.rs (not served here)
- crates/mempal-runtime/src/core/utils.rs (not served here)
- crates/mempal-runtime/src/cowork/bus.rs (not served here)
- crates/mempal-runtime/src/cowork/claude.rs (not served here)
- crates/mempal-runtime/src/cowork/codex.rs (not served here)
- crates/mempal-runtime/src/cowork/inbox.rs (not served here)
- crates/mempal-runtime/src/cowork/mod.rs (not served here)
- crates/mempal-runtime/src/cowork/peek.rs (not served here)
- crates/mempal-runtime/src/cowork/receipts.rs (not served here)
- crates/mempal-runtime/src/doctor.rs (not served here)
- crates/mempal-runtime/src/embed/mod.rs (not served here)
- crates/mempal-runtime/src/factcheck/contradictions.rs (not served here)
- crates/mempal-runtime/src/factcheck/mod.rs (not served here)
- crates/mempal-runtime/src/factcheck/names.rs (not served here)
- crates/mempal-runtime/src/factcheck/relations.rs (not served here)
- crates/mempal-runtime/src/field_taxonomy.rs (not served here)
- crates/mempal-runtime/src/ingest/chunk.rs (not served here)
- crates/mempal-runtime/src/ingest/detect.rs (not served here)
- crates/mempal-runtime/src/ingest/diary.rs (not served here)
- crates/mempal-runtime/src/ingest/lock.rs (not served here)
- crates/mempal-runtime/src/ingest/mod.rs (not served here)
- crates/mempal-runtime/src/ingest/noise.rs (not served here)
- crates/mempal-runtime/src/ingest/normalize.rs (not served here)
- crates/mempal-runtime/src/ingest/reindex.rs (not served here)
- crates/mempal-runtime/src/knowledge_anchor.rs (not served here)
- crates/mempal-runtime/src/knowledge_card_backfill.rs (not served here)
- crates/mempal-runtime/src/knowledge_card_lifecycle.rs (not served here)
- crates/mempal-runtime/src/knowledge_card_retrieval.rs (not served here)
- crates/mempal-runtime/src/knowledge_distill.rs (not served here)
- crates/mempal-runtime/src/knowledge_gate.rs (not served here)
- crates/mempal-runtime/src/knowledge_lifecycle.rs (not served here)
- crates/mempal-runtime/src/lib.rs (not served here)
- crates/mempal-runtime/src/longmemeval.rs (not served here)
- crates/mempal-runtime/src/path_filter.rs (not served here)
- crates/mempal-runtime/src/projects.rs (not served here)
- crates/mempal-runtime/src/search/filter.rs (not served here)
- crates/mempal-runtime/src/search/mod.rs (not served here)
- crates/mempal-runtime/src/search/rerank.rs (not served here)
- crates/mempal-runtime/src/search/route.rs (not served here)
- crates/mempal-search-core/Cargo.toml (not served here)
- crates/mempal-search-core/src/lib.rs (not served here)
- crates/mempal-store-sqlite/Cargo.toml (not served here)
- crates/mempal-store-sqlite/src/lib.rs (not served here)
- docs/COWORK-RUNBOOK.md
- docs/MAINTENANCE-RUNBOOK.md
- docs/MIND-MODEL-DESIGN.md
- docs/MIND-MODEL-IMPLEMENTATION-ARTICLE.md
- docs/MIND-MODEL-IMPLEMENTATION-ARTICLE.zh-CN.md
- docs/aaak-dialect.md
- docs/plans/2026-04-08-p0-implementation.md (not served here)
- docs/plans/2026-04-09-p1-p4-implementation.md (not served here)
- docs/plans/2026-04-11-p5-implementation.md (not served here)
- docs/plans/2026-04-13-p6-implementation.md (not served here)
- docs/plans/2026-04-13-p7-implementation.md (not served here)
- docs/plans/2026-04-15-p8-implementation.md (not served here)
- docs/plans/2026-04-17-p9-implementation.md (not served here)
- docs/plans/2026-04-21-p12-implementation.md (not served here)
- docs/plans/2026-04-23-p10-explicit-tunnels-implementation.md (not served here)
- docs/plans/2026-04-23-p10-normalize-version-implementation.md (not served here)
- docs/plans/2026-04-23-p11-transcript-noise-strip-implementation.md (not served here)
- docs/plans/2026-04-23-p13a-implementation.md (not served here)
- docs/plans/2026-04-23-p13b-implementation.md (not served here)
- docs/plans/2026-04-24-p11-chunk-neighbors-implementation.md (not served here)
- docs/plans/2026-04-24-p11-diary-daily-rollup-implementation.md (not served here)
- docs/plans/2026-04-24-p14-context-assembler-implementation.md (not served here)
- docs/plans/2026-04-24-p15-mcp-context-implementation.md (not served here)
- docs/plans/2026-04-24-p16-context-skill-guidance-implementation.md (not served here)
- docs/plans/2026-04-24-p17-knowledge-lifecycle-implementation.md (not served here)
- docs/plans/2026-04-24-p18-knowledge-distill-implementation.md (not served here)
- docs/plans/2026-04-24-p19-lifecycle-ref-validation-implementation.md (not served here)
- docs/plans/2026-04-25-p20-promotion-gate-policy-implementation.md (not served here)
- docs/plans/2026-04-25-p21-mcp-knowledge-gate-implementation.md (not served here)
- docs/plans/2026-04-25-p22-mcp-knowledge-distill-implementation.md (not served here)
- docs/plans/2026-04-26-p23-mcp-knowledge-lifecycle-implementation.md (not served here)
- docs/plans/2026-04-26-p24-anchor-publication-implementation.md (not served here)
- docs/plans/2026-04-26-p25-mcp-anchor-publication-implementation.md (not served here)
- docs/plans/2026-04-26-p26-dao-tian-runtime-budget-implementation.md (not served here)
- docs/plans/2026-04-26-p27-knowledge-policy-surface-implementation.md (not served here)
- docs/plans/2026-04-26-p28-field-taxonomy-surface-implementation.md (not served here)
- docs/plans/2026-04-26-p29-wake-up-context-boundary-implementation.md (not served here)
- docs/plans/2026-04-27-p30-knowledge-card-storage-boundary-implementation.md (not served here)
- docs/plans/2026-04-27-p31-knowledge-card-schema-spec.md (not served here)
- docs/plans/2026-04-27-p32-knowledge-card-schema-v8-implementation.md (not served here)
- docs/plans/2026-04-27-p33-knowledge-card-core-api-implementation.md (not served here)
- docs/plans/2026-04-27-p34-knowledge-card-cli-implementation.md (not served here)
- docs/plans/2026-04-27-p35-knowledge-card-mcp-read-implementation.md (not served here)
- docs/plans/2026-04-27-p36-knowledge-card-backfill-report-implementation.md (not served here)
- docs/plans/2026-04-27-p37-knowledge-card-backfill-apply-implementation.md (not served here)
- docs/plans/2026-04-27-p38-p42-knowledge-card-runtime-implementation.md (not served here)
- docs/plans/2026-04-28-p43-knowledge-card-retrieval-contract.md (not served here)
- docs/plans/2026-04-28-p44-card-context-assembler.md (not served here)
- docs/plans/2026-04-28-p45-card-linked-evidence-retrieval.md (not served here)
- docs/plans/2026-04-28-p46-card-context-default-policy.md (not served here)
- docs/plans/2026-04-28-p47-card-embedding-policy.md (not served here)
- docs/plans/2026-04-29-p48-card-audit-policy.md (not served here)
- docs/plans/2026-04-29-p49-research-ingestion-policy.md (not served here)
- docs/plans/2026-04-29-p50-evaluator-promotion-policy.md (not served here)
- docs/plans/2026-04-29-p51-mind-model-closure-audit.md (not served here)
- docs/plans/2026-05-01-p52-phase-3-intake-roadmap.md (not served here)
- docs/plans/2026-05-02-p53-phase-3-candidate-evidence-audit.md (not served here)
- docs/plans/2026-05-02-p54-runtime-adoption-evidence.md (not served here)
- docs/plans/2026-05-02-p55-runtime-adoption-cli.md (not served here)
- docs/plans/2026-05-02-p56-card-context-default-gate.md (not served here)
- docs/plans/2026-05-02-p57-card-embedding-evidence-gate.md (not served here)
- docs/plans/2026-05-02-p58-evaluator-api-evidence-gate.md (not served here)
- docs/plans/2026-05-02-p59-research-adapter-ingestion-contract.md (not served here)
- docs/plans/2026-05-05-p60-mcp-phase3-runtime-surface.md (not served here)
- docs/plans/2026-05-10-p61-runtime-adoption-recording-protocol.md (not served here)
- docs/plans/2026-05-12-p62-runtime-adoption-cli-guidance.md (not served here)
- docs/plans/2026-05-12-p63-runtime-adoption-record-helper.md (not served here)
- docs/plans/2026-05-13-p64-runtime-adoption-record-quality-policy.md (not served here)
- docs/plans/2026-05-13-p65-runtime-adoption-review-report.md (not served here)
- docs/plans/2026-05-13-p66-card-context-default-readiness.md (not served here)
- docs/plans/2026-05-13-p67-research-adapter-ingest.md (not served here)
- docs/plans/2026-05-13-p68-mcp-research-ingest-plan.md (not served here)
- docs/plans/2026-05-13-p69-runtime-adoption-checked-record.md (not served here)
- docs/plans/2026-05-13-p70-self-evolution-completion-audit.md (not served here)
- docs/plans/2026-05-13-p71-self-evolution-loop-replay.md (not served here)
- docs/plans/2026-05-13-p72-runtime-adoption-capture-helper.md (not served here)
- docs/plans/2026-05-13-p73-evaluator-advisory-api.md (not served here)
- docs/plans/2026-05-13-p74-card-context-default-proposal.md (not served here)
- docs/plans/2026-05-13-p75-self-evolution-completion-audit.md (not served here)
- docs/plans/2026-05-13-p76-spec-completeness-invariant.md (not served here)
- docs/plans/2026-05-13-p77-live-adoption-instrumentation-boundary.md (not served here)
- docs/plans/2026-05-13-p78-card-context-default-runtime-flag.md (not served here)
- docs/plans/2026-05-13-p79-rollback-executor-policy.md (not served here)
- docs/plans/2026-05-13-p80-autonomous-promotion-boundary-audit.md (not served here)
- docs/plans/2026-05-13-p81-self-evolution-completion-audit.md (not served here)
- docs/plans/2026-05-25-p82-opt-in-runtime-instrumentation-wrapper.md (not served here)
- docs/plans/2026-05-25-p83-cognitive-brief.md (not served here)
- docs/plans/2026-05-25-p84-multi-agent-cowork-bus.md (not served here)
- docs/plans/2026-05-25-p85-mcp-multi-agent-cowork-bus.md (not served here)
- docs/plans/2026-05-25-p86-tmux-cowork-transport.md (not served here)
- docs/plans/2026-05-25-p87-cowork-bus-event-log.md (not served here)
- docs/plans/2026-05-25-p88-cowork-delivery-ack-status.md (not served here)
- docs/plans/2026-05-25-p89-cowork-agent-presence.md (not served here)
- docs/plans/2026-05-25-p90-cowork-threads-channels.md (not served here)
- docs/plans/2026-05-25-p91-tmux-live-peek.md (not served here)
- docs/plans/2026-05-26-p100-guided-maintenance-run.md (not served here)
- docs/plans/2026-05-26-p101-cowork-session-close-capture.md (not served here)
- docs/plans/2026-05-26-p102-mcp-cognitive-brief.md (not served here)
- docs/plans/2026-05-26-p103-adoption-analytics.md (not served here)
- docs/plans/2026-05-26-p104-release-readiness-checklist.md (not served here)
- docs/plans/2026-05-26-p92-multi-agent-runbook.md (not served here)
- docs/plans/2026-05-26-p93-cowork-doctor.md (not served here)
- docs/plans/2026-05-26-p94-cowork-team-session.md (not served here)
- docs/plans/2026-05-26-p95-cowork-handoff-summary.md (not served here)
- docs/plans/2026-05-26-p96-cowork-memory-capture.md (not served here)
- docs/plans/2026-05-26-p97-maintenance-runbook.md (not served here)
- docs/plans/2026-05-26-p98-release-install-doctor.md (not served here)
- docs/plans/2026-05-26-p99-mcp-runtime-doctor.md (not served here)
- docs/plans/2026-05-28-p105-mempal-book-zh-cn.md (not served here)
- docs/plans/2026-06-04-p106-context-distill-signal.md (not served here)
- docs/plans/2026-06-09-p107-ingest-entrypoint-discoverability.md (not served here)
- docs/plans/2026-06-17-p108-peek-cwd-cross-project.md (not served here)
- docs/plans/2026-06-22-p109-cross-project-resume.md (not served here)
- docs/plans/2026-07-02-p110-public-issue-compatibility.md (not served here)
- docs/plans/2026-07-06-p111-project-ignore-rules.md (not served here)
- docs/plans/2026-07-07-p112-session-peek.md (not served here)
- docs/plans/2026-07-08-p113-public-workspace-crates.md (not served here)
- docs/plans/2026-07-09-p114-coarse-workspace-split.md (not served here)
- docs/plans/2026-07-26-p115-codex-preamble-noise-strip.md (not served here)
- docs/plans/2026-07-26-p116-cowork-pair-delivery-receipts.md (not served here)
- docs/plans/2026-08-18-p117-reindex-atomic-replace.md (not served here)
- docs/site/en/index.html (not served here)
- docs/site/index.html (not served here)
- docs/site/ja/index.html (not served here)
- docs/specs/2026-04-08-mempal-design.md (not served here)
- docs/specs/2026-04-13-cowork-peek-and-decide.md (not served here)
- docs/specs/2026-04-13-p7-search-structured-signals.md (not served here)
- docs/specs/2026-04-14-p8-cowork-inbox-push.md (not served here)
- docs/usage.md
- hooks/mempal_precompact_hook.sh (not served here)
- hooks/mempal_save_hook.sh (not served here)
- specs/p0-core-scaffold.spec.md (not served here)
- specs/p0-embed-trait.spec.md (not served here)
- specs/p0-ingest.spec.md (not served here)
- specs/p0-search-cli.spec.md (not served here)
- specs/p1-routing-citation.spec.md (not served here)
- specs/p10-explicit-tunnels.spec.md (not served here)
- specs/p10-normalize-version.spec.md (not served here)
- specs/p100-guided-maintenance-run.spec.md (not served here)
- specs/p101-cowork-session-close-capture.spec.md (not served here)
- specs/p102-mcp-cognitive-brief.spec.md (not served here)
- specs/p103-adoption-analytics.spec.md (not served here)
- specs/p104-release-readiness-checklist.spec.md (not served here)
- specs/p105-mempal-book-zh-cn.spec.md (not served here)
- specs/p106-context-distill-signal.spec.md (not served here)
- specs/p107-ingest-entrypoint-discoverability.spec.md (not served here)
- specs/p108-peek-cwd-cross-project.spec.md (not served here)
- specs/p109-cross-project-resume.spec.md (not served here)
- specs/p11-chunk-neighbors.spec.md (not served here)
- specs/p11-diary-daily-rollup.spec.md (not served here)
- specs/p11-transcript-noise-strip.spec.md (not served here)
- specs/p110-public-issue-compatibility.spec.md (not served here)
- specs/p111-project-ignore-rules.spec.md (not served here)
- specs/p112-session-peek.spec.md (not served here)
- specs/p113-public-workspace-crates.spec.md (not served here)
- specs/p114-coarse-workspace-split.spec.md (not served here)
- specs/p115-codex-preamble-noise-strip.spec.md (not served here)
- specs/p116-cowork-pair-delivery-receipts.spec.md (not served here)
- specs/p117-reindex-atomic-replace.spec.md (not served here)
- specs/p12-mind-model-bootstrap.spec.md (not served here)
- specs/p13-ingest-identity.spec.md (not served here)
- specs/p13-wake-up-statement.spec.md (not served here)
- specs/p14-context-assembler.spec.md (not served here)
- specs/p15-mcp-context.spec.md (not served here)
- specs/p16-context-skill-guidance.spec.md (not served here)
- specs/p17-knowledge-lifecycle.spec.md (not served here)
- specs/p18-knowledge-distill.spec.md (not served here)
- specs/p19-lifecycle-ref-validation.spec.md (not served here)
- specs/p2-mcp.spec.md (not served here)
- specs/p20-promotion-gate-policy.spec.md (not served here)
- specs/p21-mcp-knowledge-gate.spec.md (not served here)
- specs/p22-mcp-knowledge-distill.spec.md (not served here)
- specs/p23-mcp-knowledge-lifecycle.spec.md (not served here)
- specs/p24-anchor-publication.spec.md (not served here)
- specs/p25-mcp-anchor-publication.spec.md (not served here)
- specs/p26-dao-tian-runtime-budget.spec.md (not served here)
- specs/p27-knowledge-policy-surface.spec.md (not served here)
- specs/p28-field-taxonomy-surface.spec.md (not served here)
- specs/p29-wake-up-context-boundary.spec.md (not served here)
- specs/p3-aaak.spec.md (not served here)
- specs/p30-knowledge-card-storage-boundary.spec.md (not served here)
- specs/p31-knowledge-card-schema.spec.md (not served here)
- specs/p32-knowledge-card-schema-v8.spec.md (not served here)
- specs/p33-knowledge-card-core-api.spec.md (not served here)
- specs/p34-knowledge-card-cli.spec.md (not served here)
- specs/p35-knowledge-card-mcp-read.spec.md (not served here)
- specs/p36-knowledge-card-backfill-report.spec.md (not served here)
- specs/p37-knowledge-card-backfill-apply.spec.md (not served here)
- specs/p38-knowledge-card-gate.spec.md (not served here)
- specs/p39-knowledge-card-lifecycle-cli.spec.md (not served here)
- specs/p4-rest-api.spec.md (not served here)
- specs/p40-mcp-knowledge-card-lifecycle.spec.md (not served here)
- specs/p41-knowledge-card-runtime-boundary.spec.md (not served here)
- specs/p42-mind-model-completion-audit.spec.md (not served here)
- specs/p43-knowledge-card-retrieval-contract.spec.md (not served here)
- specs/p44-card-context-assembler.spec.md (not served here)
- specs/p45-card-linked-evidence-retrieval.spec.md (not served here)
- specs/p46-card-context-default-policy.spec.md (not served here)
- specs/p47-card-embedding-policy.spec.md (not served here)
- specs/p48-card-audit-policy.spec.md (not served here)
- specs/p49-research-ingestion-policy.spec.md (not served here)
- specs/p5-agent-diary.spec.md (not served here)
- specs/p5-format-support.spec.md (not served here)
- specs/p5-kg-timeline-stats.spec.md (not served here)
- specs/p5-semantic-dedup.spec.md (not served here)
- specs/p5-wake-up-importance.spec.md (not served here)
- specs/p50-evaluator-promotion-policy.spec.md (not served here)
- specs/p51-mind-model-closure-audit.spec.md (not served here)
- specs/p52-phase-3-intake-roadmap.spec.md (not served here)
- specs/p53-phase-3-candidate-evidence-audit.spec.md (not served here)
- specs/p54-runtime-adoption-evidence.spec.md (not served here)
- specs/p55-runtime-adoption-cli.spec.md (not served here)
- specs/p56-card-context-default-gate.spec.md (not served here)
- specs/p57-card-embedding-evidence-gate.spec.md (not served here)
- specs/p58-evaluator-api-evidence-gate.spec.md (not served here)
- specs/p59-research-adapter-ingestion-contract.spec.md (not served here)
- specs/p6-cowork-peek-and-decide.spec.md (not served here)
- specs/p60-mcp-phase3-runtime-surface.spec.md (not served here)
- specs/p61-runtime-adoption-recording-protocol.spec.md (not served here)
- specs/p62-runtime-adoption-cli-guidance.spec.md (not served here)
- specs/p63-runtime-adoption-record-helper.spec.md (not served here)
- specs/p64-runtime-adoption-record-quality-policy.spec.md (not served here)
- specs/p65-runtime-adoption-review-report.spec.md (not served here)
- specs/p66-card-context-default-readiness.spec.md (not served here)
- specs/p67-research-adapter-ingest.spec.md (not served here)
- specs/p68-mcp-research-ingest-plan.spec.md (not served here)
- specs/p69-runtime-adoption-checked-record.spec.md (not served here)
- specs/p7-search-structured-signals.spec.md (not served here)
- specs/p70-self-evolution-completion-audit.spec.md (not served here)
- specs/p71-self-evolution-loop-replay.spec.md (not served here)
- specs/p72-runtime-adoption-capture-helper.spec.md (not served here)
- specs/p73-evaluator-advisory-api.spec.md (not served here)
- specs/p74-card-context-default-proposal.spec.md (not served here)
- specs/p75-self-evolution-completion-audit.spec.md (not served here)
- specs/p76-spec-completeness-invariant.spec.md (not served here)
- specs/p77-live-adoption-instrumentation-boundary.spec.md (not served here)
- specs/p78-card-context-default-runtime-flag.spec.md (not served here)
- specs/p79-rollback-executor-policy.spec.md (not served here)
- specs/p8-cowork-inbox-push.spec.md (not served here)
- specs/p80-autonomous-promotion-boundary-audit.spec.md (not served here)
- specs/p81-self-evolution-completion-audit.spec.md (not served here)
- specs/p82-opt-in-runtime-instrumentation-wrapper.spec.md (not served here)
- specs/p83-cognitive-brief.spec.md (not served here)
- specs/p84-multi-agent-cowork-bus.spec.md (not served here)
- specs/p85-mcp-multi-agent-cowork-bus.spec.md (not served here)
- specs/p86-tmux-cowork-transport.spec.md (not served here)
- specs/p87-cowork-bus-event-log.spec.md (not served here)
- specs/p88-cowork-delivery-ack-status.spec.md (not served here)
- specs/p89-cowork-agent-presence.spec.md (not served here)
- specs/p9-fact-checker.spec.md (not served here)
- specs/p9-ingest-lock.spec.md (not served here)
- specs/p90-cowork-threads-channels.spec.md (not served here)
- specs/p91-tmux-live-peek.spec.md (not served here)
- specs/p92-multi-agent-runbook.spec.md (not served here)
- specs/p93-cowork-doctor.spec.md (not served here)
- specs/p94-cowork-team-session.spec.md (not served here)
- specs/p95-cowork-handoff-summary.spec.md (not served here)
- specs/p96-cowork-memory-capture.spec.md (not served here)
- specs/p97-maintenance-runbook.spec.md (not served here)
- specs/p98-release-install-doctor.spec.md (not served here)
- specs/p99-mcp-runtime-doctor.spec.md (not served here)
- specs/project.spec.md (not served here)
- src/aaak/mod.rs (not served here)
- src/adoption_analytics.rs (not served here)
- src/api/handlers.rs (not served here)
- src/api/mod.rs (not served here)
- src/api/state.rs (not served here)
- src/brief.rs (not served here)
- src/context.rs (not served here)
- src/core/db.rs (not served here)
- src/core/mod.rs (not served here)
- src/core/protocol.rs (not served here)
- src/cowork/mod.rs (not served here)
- src/doctor.rs (not served here)
- src/embed/mod.rs (not served here)
- src/factcheck/mod.rs (not served here)
- src/field_taxonomy.rs (not served here)
- src/ingest/mod.rs (not served here)
- src/knowledge_anchor.rs (not served here)
- src/knowledge_card_backfill.rs (not served here)
- src/knowledge_card_lifecycle.rs (not served here)
- src/knowledge_card_retrieval.rs (not served here)
- src/knowledge_distill.rs (not served here)
- src/knowledge_gate.rs (not served here)
- src/knowledge_lifecycle.rs (not served here)
- src/lib.rs (not served here)
- src/longmemeval.rs (not served here)
- src/main.rs (not served here)
- src/mcp/mod.rs (not served here)
- src/path_filter.rs (not served here)
- src/projects.rs (not served here)
- src/search/mod.rs (not served here)
- tests/cognitive_brief.rs (not served here)
- tests/context_assembler.rs (not served here)
- tests/cowork_bus.rs (not served here)
- tests/cowork_inbox.rs (not served here)
- tests/cowork_peek.rs (not served here)
- tests/cowork_receipts.rs (not served here)
- tests/diary_rollup.rs (not served here)
- tests/fact_check.rs (not served here)
- tests/fixtures/cowork/claude/session.jsonl (not served here)
- tests/fixtures/cowork/claude/session_with_tools.jsonl (not served here)
- tests/fixtures/cowork/claude_since/session.jsonl (not served here)
- tests/fixtures/cowork/codex/2026/04/12/rollout-2026-04-12T12-00-00-otherproject.jsonl (not served here)
- tests/fixtures/cowork/codex/2026/04/13/rollout-2026-04-13T12-00-00-fake.jsonl (not served here)
- tests/ingest_lock.rs (not served here)
- tests/knowledge_card_backfill.rs (not served here)
- tests/knowledge_card_cli.rs (not served here)
- tests/knowledge_card_core.rs (not served here)
- tests/knowledge_card_retrieval.rs (not served here)
- tests/knowledge_card_schema.rs (not served here)
- tests/knowledge_lifecycle.rs (not served here)
- tests/mind_model_bootstrap.rs (not served here)
- tests/noise_strip.rs (not served here)
- tests/normalize_version.rs (not served here)
- tests/ops_runtime.rs (not served here)
- tests/phase3_runtime.rs (not served here)
- tests/phase3_self_evolution_replay.rs (not served here)
- tests/projects_resume.rs (not served here)
- tests/reindex_safety.rs (not served here)
- tests/search_neighbors.rs (not served here)
- tests/tunnels_explicit.rs (not served here)
- tests/workspace_crates.rs (not served here)
Advantages
- Hybrid search combines BM25 and vector semantic search for improved retrieval. evidence: README.md
- Self-describing protocol allows agents to learn interaction rules automatically. evidence: README.md
- Per-source advisory locking prevents race conditions during concurrent agent ingestion. evidence: README.md
Limitations
- Codex integration requires a specific feature flag to be enabled. evidence: README.md
- Bidirectional cowork push is restricted to identified Claude and Codex agents. evidence: README.md
- Advisory locking for concurrent ingest is currently limited to Unix systems. evidence: README.md
Security
Risk level: Low risk
This brain runs
Hooks (2)
.claude/settings.json(PostToolUse):if echo "$TOOL_INPUT" | grep -q 'git commit'; then echo 'MEMPAL REMINDER: You just committed code. Call mempal_ingest to save the decision context (what was built, why, what was considered). Rule 4: SAVE AFTER DECISIONS.'; fi.claude/settings.json(UserPromptSubmit):bash .claude/hooks/user-prompt-submit.sh
MCP servers (1)
.mcp.json(mempal):mempal serve --mcp
Agent instructions that run or fetch something (22)
AGENTS.md:Rust 实现的 coding agent 项目记忆工具。单二进制,`cargo install mempal`,10 秒内带出处找回历史决策。AGENTS.md:| Spec | 状态 | 范围 | |------|------|------| | `specs/p0-core-scaffold.spec.md` | 完成 | workspace 骨架 + SQLite schema | | `specs/p0-embed-trait.spec.md` | 完成 | Embedder trait(model2vec 默认 + ort 可选) | | `specs/p0-ingest.spec.md` | 完成 | 导入管道(格式检测/归一化/分块/存储) | | `specs/p0-search-cli.spec.md` …[+7715 chars]AGENTS.md:`docs/plans/2026-05-26-p98-release-install-doctor.md` — P98 release install doctor(已完成)AGENTS.md:`docs/plans/2026-05-26-p100-guided-maintenance-run.md` — P100 guided maintenance run(已完成)AGENTS.md:`docs/plans/2026-08-18-p117-reindex-atomic-replace.md` — P117 atomic reindex replace + dry-run feasibility report(已完成)AGENTS.md:| 工具 | 作用 | |------|------| | `mempal_status` | 状态 + 协议 + AAAK spec | | `mempal_doctor` | release/install + MCP runtime diagnostics:报告 binary/PATH/schema 兼容性和 required MCP tool/action 能力清单(P99) | | `mempal_search` | 混合检索(BM25 + 向量 + RRF + tunnel hints)+ AAAK 结构化 signals(P7) | | `mempa …[+2688 chars]AGENTS.md:Cargo workspace,root package 仍是 `mempal`,并继续提供 `cargo install mempal` 的 CLI binary。P113/P114 已把可复用边界拆成公开 workspace crates;root crate 现在主要负责 CLI、REST entrypoint、package metadata 和 legacy facade paths。AGENTS.md:**`mempal cowork-install-hooks` 写两件 Claude 侧制品**:`.claude/hooks/user-prompt-submit.sh`(脚本)+ `.claude/settings.json` 下的 `hooks.UserPromptSubmit` 条目(注册)。Claude Code 不按文件名约定自动发现脚本,两件**都必须有**hook 才会 fire。`install-hooks` 已自动处理 + 自愈 stale 条目;请勿手工移除其中任一。AGENTS.md:**Codex 侧依赖 `codex_hooks` feature flag**:shipped `codex-cli ≤ 0.120.0` 该 flag 处于 "under development" 且默认 `false`,此时 Codex runtime 完全忽略 `~/.codex/hooks.json`。`install-hooks` 检测到会打印 warning + 激活命令 `codex features enable codex_hooks`。AGENTS.md:**Codex TUI 进程启动时一次性缓存 config**:改完 `config.toml` 或 `hooks.json`(含 feature flag / install-hooks)后,必须完全退出并重启 Codex TUI;已在跑的进程拿不到新配置。AGENTS.md:**Claude Code 的 MCP server 是 session startup spawn**:`cargo install` 升级 mempal binary 后,Claude Code 还在用旧 MCP server 进程,**不认识新加的工具**(如 `mempal_cowork_push`)。升级后重启 Claude Code,MCP server 会 respawn 到新 binary。CLAUDE.md:Rust 实现的 coding agent 项目记忆工具。单二进制,`cargo install mempal`,10 秒内带出处找回历史决策。CLAUDE.md:| Spec | 状态 | 范围 | |------|------|------| | `specs/p0-core-scaffold.spec.md` | 完成 | workspace 骨架 + SQLite schema | | `specs/p0-embed-trait.spec.md` | 完成 | Embedder trait(model2vec 默认 + ort 可选) | | `specs/p0-ingest.spec.md` | 完成 | 导入管道(格式检测/归一化/分块/存储) | | `specs/p0-search-cli.spec.md` …[+7715 chars]CLAUDE.md:`docs/plans/2026-05-26-p98-release-install-doctor.md` — P98 release install doctor(已完成)CLAUDE.md:`docs/plans/2026-05-26-p100-guided-maintenance-run.md` — P100 guided maintenance run(已完成)CLAUDE.md:`docs/plans/2026-08-18-p117-reindex-atomic-replace.md` — P117 atomic reindex replace + dry-run feasibility report(已完成)CLAUDE.md:| 工具 | 作用 | |------|------| | `mempal_status` | 状态 + 协议 + AAAK spec | | `mempal_doctor` | release/install + MCP runtime diagnostics:报告 binary/PATH/schema 兼容性和 required MCP tool/action 能力清单(P99) | | `mempal_search` | 混合检索(BM25 + 向量 + RRF + tunnel hints)+ AAAK 结构化 signals(P7) | | `mempa …[+2688 chars]CLAUDE.md:Cargo workspace,root package 仍是 `mempal`,并继续提供 `cargo install mempal` 的 CLI binary。P113/P114 已把可复用边界拆成公开 workspace crates;root crate 现在主要负责 CLI、REST entrypoint、package metadata 和 legacy facade paths。CLAUDE.md:**`mempal cowork-install-hooks` 写两件 Claude 侧制品**:`.claude/hooks/user-prompt-submit.sh`(脚本)+ `.claude/settings.json` 下的 `hooks.UserPromptSubmit` 条目(注册)。Claude Code 不按文件名约定自动发现脚本,两件**都必须有**hook 才会 fire。`install-hooks` 已自动处理 + 自愈 stale 条目;请勿手工移除其中任一。CLAUDE.md:**Codex 侧依赖 `codex_hooks` feature flag**:shipped `codex-cli ≤ 0.120.0` 该 flag 处于 "under development" 且默认 `false`,此时 Codex runtime 完全忽略 `~/.codex/hooks.json`。`install-hooks` 检测到会打印 warning + 激活命令 `codex features enable codex_hooks`。CLAUDE.md:**Codex TUI 进程启动时一次性缓存 config**:改完 `config.toml` 或 `hooks.json`(含 feature flag / install-hooks)后,必须完全退出并重启 Codex TUI;已在跑的进程拿不到新配置。CLAUDE.md:**Claude Code 的 MCP server 是 session startup spawn**:`cargo install` 升级 mempal binary 后,Claude Code 还在用旧 MCP server 进程,**不认识新加的工具**(如 `mempal_cowork_push`)。升级后重启 Claude Code,MCP server 会 respawn 到新 binary。
- Low risk: scripts-present (.claude/hooks/user-prompt-submit.sh)
Attribution and licence
- First committed by
ZhangHanDong
- Publisher
- Alex (Community)
- Source
- ZhangHanDong/mempal · commit 9ed705d
- Licence
- MIT License (files served here)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Contributors
- ZhangHanDong, LiuZiqi-dual, TigerInYourDream, jolestar, ryushione
AutoGineer is not affiliated with or endorsed by ZhangHanDong.
Install from source
436 of its files are not served here, so there is no ZIP. ZhangHanDong/mempal at 9ed705d