
Factum
io.github.factum-project由 GitHub 帳號 factum-project 發布v0.1.3更新於 Oct 24, 2026
Auditable memory for AI agents: provenance, cascade retraction, conflict refusal
概覽
一個本機 MCP 伺服器,為 AI 代理提供可稽核的結構化事實記憶,強制記錄來源,支援串聯撤回與衝突拒答。
- 可以做什麼
- 以帶來源標註的知識節點寫入與斷言結構化事實,支援自動產生以內容為基礎的 ID,並在另一個代理斷言同一事實時辨識佐證。查詢已存事實,事實衝突時回傳歧義結果而非猜測。撤回某個來源後,透過反向相依圖自動讓所有衍生內容失效。在共用知識庫上套用索引層級權限過濾與衝突仲裁策略。
- 適用情境
- 適合合規敏感型代理、多代理共用知識庫,以及需要回答「代理為何相信某件事」的情境。它儲存經過驗證的結構化事實而非對話脈絡,若還需要語意召回,可與脈絡記憶工具搭配使用。
- 執行需求
- 以本機 stdio 程序執行,需用 Cargo 從 Rust crate 建置,並將建置出的伺服器二進位檔註冊到 Claude Code、Cursor 等 MCP 用戶端。預設使用記憶體儲存;啟用 RocksDB 建置選項並指定資料庫路徑後可在重新啟動後保留資料。未宣告任何帳號、API 金鑰或環境變數。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Factum,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
Factum — Auditable Memory for AI Agents
Status: v0.1.3 — Early stage, seeking early collaborators. Core write/query/retract pipeline works. Not production-ready. Architectural decisions are still open to change.
[CI] [License: MIT] [MCP Registry]
Interactive docs — animated syntax parsing, 7-tuple explorer, query pipeline, token efficiency chart, and MCP architecture diagram.
Every fact an agent writes carries mandatory provenance. When a source is retracted, everything derived from it is invalidated automatically — cascade retraction. When facts conflict, Factum returns Ambiguous instead of guessing.
A structured knowledge language (S-expression based), Rust implementation, stdio MCP server — works with Claude Code, Cursor, and any MCP client.
Status: v0.1.3, early stage. Core write/query/retract pipeline works; no semantic search or memory consolidation yet — Factum handles verified structured facts, not conversation context. Best suited for compliance-sensitive agents, multi-agent shared knowledge bases, and anywhere "why did the agent believe X" needs an answer. See the multi-agent usage guide for shared knowledge base patterns.
How is this different from Mem0 / Zep / Letta?
Unique to Factum: grammar-enforced provenance · cascade retraction · conflict refusal.
Not (yet) in Factum: embedding-based semantic retrieval · memory consolidation · HTTP transport.
Complementary: Mem0/Letta store and retrieve context; Factum stores auditable structured facts. They can run side by side via MCP.
What this means in practice
Academic context: The STALE benchmark (2025) shows that even the best LLM agents achieve only 55.2% accuracy at detecting when their own memories are outdated — confirming that memory staleness is an unsolved problem in agent systems.
Key Features (Implemented)
- Node 7-tuple: Every knowledge node carries id, predicate, validity, provenance, confidence, authority, and permissions — plus optional
:notefor human-readable context - Auto node IDs: Use
"auto"as the node ID infactum_insertorfactum_assertto auto-generate content-based IDs — no manual ID management - 5-level provenance: Verbatim / Summary / Extracted / Derived / Asserted — full audit chain
- Grammar-enforced model reference:
Extractednodes MUST carry model + version — the parser rejects them if missing (not just a documentation convention) - Cascade retraction: Derived nodes auto-invalidate when upstream sources are retracted (via
deps_revreverse dependency graph); configurable node limit prevents cascade explosion in large knowledge bases - Corroboration detection: When a second agent asserts the same fact,
factum_assertreturnscorroborated(not an error) — independent agreement is the most valuable multi-agent signal - Conflict arbitration: LatestWins / HighestAuthority / Unanimous / WeightedVote — pattern-aware grouping ensures value conflicts trigger arbitration; returns
Ambiguouswhen it cannot uniquely resolve - Index-level permissions: No post-query filtering — prevents aggregate leakage
- Lossless numerics: All numbers use
Dec(i128, u8)— zero floating-point error - MCP bridge: JSON-RPC 2.0 tools/resources; stdio transport verified with real MCP clients (Claude Code, Cursor)
What's Implemented vs. What's Not
Quick Start
Use as an MCP server (Claude Code / Cursor)
See Getting Started with Factum MCP for the full guide.
Factum-F Syntax Example
When n001 is retracted, n006 is automatically invalidated — the agent knows it can no longer trust the subsidiary relationship.
Three-Layer Architecture
A structured knowledge language underpins the memory layer — S-expression based for parse uniqueness, with Dec(i128, u8) for lossless numerics and mandatory model references for LLM self-auditing. Full design rationale in docs/design-rationale.md.
Token Efficiency — The LLM-Native Metric
TL;DR: Factum canonical form saves ~62% tokens vs verbose JSON with the same metadata. All numbers measured with real o200k_base (GPT-4o) tokenizer via tiktoken-rs.
Run
cargo test -p factum-bench test_token_efficiency_real_tokenizer -- --nocaptureto reproduce.
Key finding: The canonical S-expression form (238 tokens) is more token-efficient than the compact JSON form (290 tokens) — BPE tokenizers split JSON delimiters but merge S-expression parentheses. The form designed for correctness is also the most token-efficient.
Round-Trip Fidelity — What Exactly Is 100%?
-
Syntactic round-trip ✅ —
parse(serialize(parse(x))) == parse(x). 100% and verified by the test suite + fuzzing. This is the trust foundation. -
Semantic round-trip ❌ Not yet measured — requires factum-l (latent space projection, not implemented).
Morpheme Vocabulary — Current State
- Seed morphemes: 200+ across 9 kinds (Entity, Relation, Quantifier, Modal, Temporal, Status, Action, Attribute, Classification) — covering organizational, people, spatial, financial, product/project, version control, document/knowledge, agent memory, permission, and cause/effect domains
- Design target: 200–500 (to be loaded from
morphemes.tomlviabuild.rs) - Status: Sufficient for agent memory use cases.
morphemes.tomlcodegen is a future M2 item for external contributions.
Relationship to Other Formats
Project Structure
Test Results
Run cargo test to see the current count. Tests cover: types, lexer, parser, serialization, morphemes, depth-limit/DoS protection, conformance vectors, store, query, arbitration, permission, verifier, subscription, MCP protocol/tools/handler, and benchmarks.
CI badge at the top of this README reflects the latest build status.
Security
- Parser has a depth limit (128 levels) to prevent stack overflow DoS on adversarial input
- Lexer has a token count limit (1M tokens) to prevent OOM
- cargo-fuzz targets for parser, serialize round-trip, and lexer
- gitleaks runs in CI to scan for leaked secrets
See SECURITY.md for vulnerability disclosure.
License
MIT
Trademark
"Factum" and the Factum-F language specification are project names. This MIT license covers code only; the specification may be governed by a separate process in the future.
Contributing
Contributions require DCO sign-off (git commit -s). See CONTRIBUTING.md.
- MCP Registry name:
mcp-name: io.github.factum-project/factum
來源:README.md,提交 6217db4
工具
0版本歷史
1- v0.1.3最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分