尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Double-entry bookkeeping for what you know. Raw material in, dated and sourced knowledge out, nothing ever erased.
翻译准备中
正在加载完整 README。
查看完整 README ↗Double-entry bookkeeping for what you know. Raw material in, dated and sourced knowledge out, nothing ever erased.
A knowledge library that an AI agent keeps for you, built on Andrej Karpathy's LLM Wiki pattern. It adds the discipline of a bookkeeper. Every change is posted to a journal, a fact that changes keeps its old value with a date, and a short script with no model involved checks both, commit by commit.
Two ways in.
modules.py takes out the parts you do not need, see docs/MODULES.md.git clone https://github.com/th84r/pacioli.git my-books
cd my-books
# your books stay on this machine
git remote remove origin
# every check should say ok, and the last line ALL PASSED
python3 .claude/scripts/selftest.py
# writes wiki/status.md
python3 .claude/scripts/fmquery.py --dashboard
python3 .claude/scripts/fmquery.py --search "abstract"
# Claude Code only: keeps the agent's memory of you inside the library, see docs/MEMORY-ZONE.md
python3 .claude/scripts/memory.py --link
Start your agent in the folder, claude for Claude Code, and trust the folder when it asks, so the library's own settings and checks apply. Then say "set this up for me". The agent runs /onboard, asks three questions, and takes in your first documents with you, so the library answers something real within a few minutes. When you are ready, say "shape this to my work" and /shape interviews you in nine questions and fits the rest: the quality filter, the page template, the example, the voice rules and the first fact checks. Details in docs/ONBOARDING.md.
If you would rather do it by hand, open CLAUDE.md and do three things.
hat field in frontmatter is what lets one library serve all of them without splitting into silos.wiki/workflows/voice.md. This is the file voice.py enforces.Drop a file into inbox/pending/ and say "take this in". The agent will run /ingest.
Italian merchants were keeping their books this way by around 1300, and Luca Pacioli wrote the method down in 1494. Their problem was how to keep a record that many people depend on, where the facts change over time and someone has to be able to reconstruct what was true on any given date.
The answer has held for seven centuries. You never rub anything out. You post a correction.
That single rule is what this repository implements for knowledge, and the correspondence is closer than an analogy.
The project is named after Luca Pacioli, a Franciscan friar who taught mathematics. He wrote the first printed description of the method, in his Summa of 1494, and Leonardo da Vinci drew the illustrations for a later book of his, De divina proportione.
| Bookkeeping | Here |
|---|---|
| The journal, chronological and append-only | wiki/log.md |
| One account per thing | One page per case, project or person |
| Posting an entry | /ingest, where new material is reconciled against old |
| The balance sheet, computed and never written | wiki/status.md |
| The trial balance, proving both sides agree | fmquery.py --balance |
| A correcting entry, because you never rub out | Supersede with a date, and --balance flags a value a commit took away without a trace |
| A reference and a date on every entry | A source and a date on every fact |
| The auditor | fmquery.py --eval and --agree, assertions and key figures with no model involved |
In double-entry bookkeeping every transaction is written twice, and the two sides must agree. That agreement is the proof that nothing went missing.
Here every fact is written twice too. Once by date in the journal, wiki/log.md, saying when it arrived and why. Once by subject on its page, where it is reconciled against what was already known. fmquery.py --balance holds the two against each other. Once the ledger is open, every commit has to balance on its own. A commit that changes a page without adding a journal entry that names it is out of balance until a late entry names that commit. A journal entry naming a page that is gone is out of balance too.
The facts that get copied, a price or a deadline, go in a small table of key figures with their earlier values. fmquery.py --agree fails when a figure is missing from its own page, or when another page still states an old value next to the figure's name without dating it. That is the copy nobody updated.
Anything that leaves the library, in a report, a decision or another person's AI, has to show where each fact came from and when. The journal is that trail, and the balance is how you know the trail is complete.
Raw material is what gets posted. Emails, meeting notes, reports, datasets, drafts. The language model is the clerk that posts it. The wiki is the books. Things reach the wiki only after they have been read, filtered, reconciled against what you already knew, and written down with a date.
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗