Vai al contenuto principale
G

cross-session-memory

gin0076/cross-session-memory

Cross-session lesson book (the agent wrong-answer notebook) for DeepSeek Harness: injects a memory index capped at 2 KB verbatim into every turn, adds mem_recall and mem_save model tools whose write gate demands four sections, a locatable reference and explicit human approval before anything reaches disk, registers the /memory command, and keeps every lesson as a zero-dependency Markdown entry in the .memory/ directory.

Installazione

dsh plugin --profile web add github:gin0076/cross-session-memory

README

๐Ÿ“• CROSS-SESSION MEMORY ยท Agent Lesson Book (้”™้ข˜ๆœฌ)

Zero-Dependency Cross-Session Memory for AI Coding Agents

Lessons on disk. Evidence enforced. Auto-injected into every session.

๐ŸŒ English ยท ็ฎ€ไฝ“ไธญๆ–‡

Agent Lesson Book โ€” ้”™้ข˜ๆœฌ
license MIT dependencies zero runtime Node 18+ memory budget 2KB commands 24 tests 78 plugin DeepSeek Harness

๐Ÿง  TOOLS/MEM.MJS ยท 24 COMMANDS ยท NODE ZERO-DEP

index ยท inject ยท list ยท search ยท show ยท store ยท forget ยท review ยท draft ยท drafts ยท approve ยท reject ยท prune-drafts ยท write-mode ยท explain ยท verify ยท feedback ยท map ยท gather ยท conflicts ยท resolve ยท global-sync ยท stats ยท doctor

๐Ÿงฉ PLUGIN/DSH-MEMORY ยท DEEPSEEK HARNESS PLUGIN

mem_recall ยท mem_save ยท /memory recall|save|doctor|review|map|conflicts|resolve|explain|verify|feedback|stats|draft|drafts|approve|reject|write-mode

๐ŸŽจ Click to see the ASCII art โœจ
   โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
   โ•‘   ๐Ÿ“•  A G E N T   L E S S O N   B O O K   ยท   ้”™ ้ข˜ ๆœฌ       โ•‘
   โ• โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ฃ
   โ•‘  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ•‘
   โ•‘  โ”‚SYMPTOM ๐ŸŒกโ”‚โ†’โ”‚ CAUSE ๐Ÿ”โ”‚โ†’โ”‚  FIX ๐Ÿ›  โ”‚โ†’โ”‚VERIFY โœ…โ”‚  = 1 lesson โ•‘
   โ•‘  โ”‚  ็Žฐ่ฑก    โ”‚  โ”‚  ๅˆคๅฎš    โ”‚  โ”‚  ่งฃๆณ•   โ”‚  โ”‚  ้ชŒ่ฏ   โ”‚         โ•‘
   โ•‘  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ•‘
   โ•‘      ๐Ÿ’พ plain text        ๐Ÿ” findable        ๐Ÿ›ก audited      โ•‘
   โ•‘      ๐Ÿ“ฅ โ‰ค2KB injected     ๐Ÿ” survives updates                โ•‘
   โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚ grep โ”‚   โ”‚ IDF  โ”‚   โ”‚ aliasโ”‚   โ”‚ gramsโ”‚   โ”‚ statsโ”‚
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
              โœฆ zero dependencies ยท pure Node.js โœฆ
DURABLE plain text on disk
DURABLE
plain text on disk
RETRIEVABLE IDF 3-way search
RETRIEVABLE
IDF 3-way search
AUDITED evidence chain enforced
AUDITED
evidence chain enforced
AUTO-INJECT โ‰ค2KB per session
AUTO-INJECT
โ‰ค2KB per session
ONE COMMAND 24-command CLI
ONE COMMAND
24-command CLI + plugin

Contents โ€” What's in v0.5.0 ยท Why ยท Features ยท Two ways to run ยท Entry format ยท Commands ยท Architecture ยท Security ยท Roadmap


๐Ÿ†• What's in v0.5.0

The lesson book runs standalone and natively inside DeepSeek Harness โ€” one zero-dependency engine, two delivery faces, plus a read-only settings card in the Harness UI.

Standalone CLIHarness plugin
Memory in contextmem inject block in AGENTS.mdprompt section every turn (โ‰ค 2 KB, fail-degrade)
Search from the agentrun mem.mjs search via shellmem_recall tool (lesson book + session full-text)
Write a lessonmem.mjs store via shellmem_save tool โ€” gated by the write mode
Human maintenancemem.mjs commands/memory โ€ฆ (17 subcommands)
At a glancemem doctorread-only Settings card โ€” status, confidence mix, recall hit-rate, entry search

What landed recently (see CHANGELOG.md):

  • Read-only Settings card โ€” a settings.section view of index budget, entry count, write mode, confidence mix, draft/conflict counts, 7-day recall hit-rate, recent entries and an entry search. It is read-only by design: data comes from a same-origin route with only status / search, never a write path; if it can't load, it degrades to a pointer back to /memory, which stays fully functional.
  • Write modes โ€” write-mode approval | auto-draft | auto-low-risk | off. approval (the default) asks a human on every model write; the auto modes let a well-gated engine write without prompts, and off blocks model writes outright. Human commands are never gated.
  • Confidence & lifecycle โ€” every entry derives verified / provisional / needs-review / stale / disputed from evidence, freshness and conflicts; explain <name> shows why an entry is trusted, verify runs whitelisted re-checks, and review keeps it honest on a 90-day clock.
  • Two-stage recall + feedback loop โ€” candidate search reranks by confidence, freshness and what you actually adopted (feedback), so the book learns which lessons proved useful.
  • Conflict adjudication โ€” conflicts lists contradicting pairs; resolve <loser> --prefer <winner> --reason โ€ฆ records a verdict while keeping both entries (the loser derives to stale, nothing is hard-deleted).
  • Scales to 1,000 entries โ€” the injected index stays โ‰ค 2 KB (token cost unchanged); an inverted index plus an mtime parse cache keep search fast (โ‰ˆ 1 ms steady-state, flat as the book grows).
  • Privacy switches โ€” DSH_MEMORY_TELEMETRY=off stops local telemetry writes; a scanPii gate refuses entries containing an email address or mainland mobile number.
  • Hardened release โ€” 70 unit tests (14 files), a zero-dependency release smoke, and a GitHub Actions workflow (sync-release --check + tests + smoke + syntax).

๐ŸŒŸ Why another memory project?

Every new AI session starts amnesia-grade clean. Heavyweight memory platforms solve this with vector databases, knowledge graphs, gateways and LLM extraction pipelines. That is a lot of machinery โ€” and a lot of attack surface โ€” for a personal mistake notebook.

Agent Lesson Book takes the opposite bet:

๐Ÿ”ฅ "The lesson lives on disk โ€” and every session reads it. Memory is DATA, never instructions."

What you get instead of infrastructure:

  • ๐Ÿ“• Four-section lessons โ€” Symptom / Cause / Fix / Verification (or ็Žฐ่ฑก / ๅˆคๅฎš / ่งฃๆณ• / ้ชŒ่ฏ). A lesson without a verifiable evidence reference in its Verification section is rejected at write time. Memories that cannot prove themselves do not enter the book.
  • ๐Ÿงพ Evidence chain, enforced by code โ€” every Verification must cite a locatable reference (path / filename / section / issue number), so future sessions can drill straight to the proof.
  • ๐Ÿ“ฅ Auto-injection โ€” mem inject mirrors the โ‰ค 2 KB index into your AGENTS.md; the Harness plugin injects it into the prompt directly. Every new session starts with memory already in context. Fail-safe: over budget โ†’ lines drop; anything breaks โ†’ silent degrade to plain conventions. Never blocks a session.
  • ๐Ÿ›ก Anti-poisoning by design โ€” human-approved writes, secret- and PII-pattern rejection, near-duplicate interception, source stamps, and full git rollback. (Compare: OWASP ASI06 "memory & context poisoning" โ€” auto-writing memory systems are the target.)

โœจ Feature galaxy

๐Ÿ”ฎFeatureWhy it matters
๐Ÿ“•Four-section entries (bilingual labels)Structure survives translation and time
๐Ÿ”—Evidence-chain gateNo proof โ†’ no entry. Kills "I remember something like that"
๐Ÿ“ฅmem inject auto-injectionMemory without relying on agent discipline
๐ŸงฉNative Harness pluginIndex in the prompt every turn โ€” not even AGENTS.md discipline needed
๐Ÿ–ฅRead-only Settings cardStatus, confidence, recall hit-rate and search at a glance โ€” no write buttons
๐Ÿ”Œmem_recall toolLesson book โˆช past-session full-text in one call
โœ๏ธmem_save toolWrites gated by the write mode; approval always asks a human first
๐ŸŽ›Write modesapproval / auto-draft / auto-low-risk / off โ€” tune prompts vs automation; humans never gated
๐Ÿ’ฌ/memory command17 subcommands from the chat box; typing one is the approval
๐ŸŽฏIDF-ranked 3-way searchLiteral โˆช CJK bigram/unigram โˆช aliases synonyms; rare terms win
๐Ÿ”Two-stage recall + feedbackCandidates rerank by confidence, freshness and what you actually used
๐Ÿ”explain / verifySee why an entry is trusted; re-run whitelisted evidence checks
โ™ป๏ธsupersedes auto-archiveLessons evolve; old versions retire to archive/ automatically
โš–๏ธConflict adjudicationconflicts lists contradictions; resolve records a verdict, both sides kept
๐Ÿ—บmem map text knowledge graphSix sections: supersede ยท causal ยท conflicts ยท expired ยท timeline ยท root causes
๐Ÿฑmem gather evidence packConfidence-tiered evidence for synthesis โ€” never writes a conclusion
๐Ÿ“mem draft pipelineSkeleton first, human approval, then store
โฐreview due datesMemory rots โ€” 90-day checks keep it honest
๐ŸšซNear-duplicate interceptionTwo sessions, same lesson โ†’ one entry, not two
๐ŸŒmem global-sync mirrorscope: global lessons reachable from any workspace
๐Ÿงชmem stats telemetrySearch hit-rate โ€” evidence, not vibes
๐Ÿฉบmem doctor health checkIndex budget, drift, stale reviews โ€” one command
๐Ÿงชinstall/smoke.mjs E2EOne command proves an install: gates, search, injection, doctor
๐ŸˆฒUTF-8 / CJK-safeNode-only writes; PowerShell encoding traps documented

๐Ÿ›  Tech Aura

LayerChoiceGlow
RuntimeNode.js โ‰ฅ 18๐ŸŸข zero dependencies ยท zero services ยท zero API cost
Storage.memory/ plain markdown๐Ÿงพ human-readable ยท diffable ยท git-friendly
IndexMEMORY.md โ‰ค 60 lines / 2 KB๐Ÿ“ฅ hard-capped, overflow listed in footer
Scaleup to 1,000 entriesโšก injected index stays 2 KB; search scales via inverted index
RetrievalIDF + CJK n-gram + aliases, two-stage rerank๐ŸŽฏ multi-strategy without a vector store
DeliveryAGENTS.md block + Harness plugin + Settings card๐Ÿ”Œ two faces over one engine (mem-core.mjs)
Safetyapproval ยท secret/PII scan ยท Jaccard gate๐Ÿ›ก four-layer defense (OWASP ASI06 aware)
Quality70 tests ยท release smoke ยท CI๐Ÿงช every change is checked before it ships

The three hard rules (from docs/DESIGN.md):

  1. Budget cap โ€” injection = the index verbatim โ‰ค 2 KB; over budget โ†’ drop lines.
  2. Fail-degrade โ€” unreadable index โ†’ silent fallback to pointer conventions. Sessions never block.
  3. Human-approved writes โ€” the tool proposes (draft / mem_save), the human disposes (store / approval). The auto write-modes are opt-in.

๐Ÿš€ Two ways to run

Requirements: Node.js โ‰ฅ 18. Nothing else. No npm install, no database, no API key. (The plugin face additionally needs DeepSeek Harness; the engine stays zero-dependency.)

A ยท Standalone CLI โ€” drop it into any project

Step 1 โ€” copy the folder into your project root (the folder where your AGENTS.md lives):

cp -r cross-session-memory/* your-project/
cd your-project

Step 2 โ€” one-shot bootstrap:

node install/setup.mjs --with-sample
[setup] memory bank ready  โ†’ .memory/
[setup] conventions wired  โ†’ AGENTS.md (created / updated)
[setup] index injected     โ†’ 2.0 KB / 2.0 KB hard cap
[setup] doctor             โ†’ healthy: no anomalies
[setup] next: node tools/mem.mjs draft my-first-lesson

Step 3 โ€” prove the install (optional but lovely):

node install/smoke.mjs        # E2E: gates ยท search ยท injection budget ยท doctor

B ยท DeepSeek Harness plugin โ€” native tools + /memory + Settings card

plugin_manager โ†’ install_bundle โ†’ target = <clone>/plugin/dsh-memory

That one command mounts the whole trio (prompt injection ยท mem_recall / mem_save ยท /memory) plus the read-only Settings card. Exact dependency recipe, configuration keys (memoryCorePath, maxHits) and a six-item acceptance checklist live in plugin/README.md.

Your first lesson (ask the user's consent first, per convention):

node tools/mem.mjs draft ssh-timeout
# edit .memory/drafts/<date>-ssh-timeout.md โ€” four sections, evidence in Verification
node tools/mem.mjs store .memory/drafts/<date>-ssh-timeout.md
node tools/mem.mjs doctor

That's it. Every new session now starts with your lesson index in context.


๐Ÿ“• Entry Format

Four sections. Chinese and English labels are both accepted. Missing Verification โ€” or Verification without a locatable reference โ€” is rejected.

---
name: git-autocrlf-breaks-byte-exact-restore
description: core.autocrlf=true turns LF into CRLF on checkout
aliases: line ending,CRLF,restore
metadata:
  type: lesson
  scope: global
  created: 2026-09-22
  verified: 2026-09-22
review: 2026-12-21
---

Symptom๏ผšRestore test fails byte counts: 1898 โ†’ 1915 after `git checkout`.
Cause๏ผšcore.autocrlf=true smudge filter rewrites LF to CRLF on checkout.
Fix๏ผšgit config core.autocrlf false + writers emit LF.
Verification๏ผšRe-test returns 1898 โ†’ 1898 byte-identical (see `tools/mem.mjs`, CHANGELOG 0.2.0).

๐Ÿงช Try the gates:

node tools/mem.mjs store examples/lesson-autocrlf.md   # โœ… accepted
# now strip the reference from its Verification section and retry:
node tools/mem.mjs store broken.md                     # โŒ rejected: no locatable reference

โŒจ๏ธ Command Palette

CLI โ€” node tools/mem.mjs <command>

CommandEffect
indexprint / regenerate the budgeted index
injectsync the injection block into AGENTS.md (auto on writes)
listlist all entries with health flags
search <q> [n] [--two-stage]IDF 3-way search with snippets; --two-stage reranks by confidence / freshness / feedback
show <name>print one full entry
store <file|-> [--overwrite] [--force] [--model]validate & store (secrets/PII/dupes/evidence gated)
forget <name>archive, never hard-delete
review <name>refresh verification date, push review +90 days
draft [topic]generate a four-section skeleton (lands in drafts/)
draftslist pending drafts
approve <draft>approve a draft into the book (full store gate)
reject <draft> [reason]reject a draft โ€” archived, never hard-deleted
write-mode [approval|auto-draft|auto-low-risk|off]read / set the write mode (models are gated, humans never are)
explain <name>why an entry is trusted โ€” confidence, state, evidence, relations
verify [name|--all]run verification recipes (whitelist only, never arbitrary shell)
feedback <q> <adopted,csv> [reason]record what a recall was used for; later recalls boost adopted entries
map [name]text knowledge graph โ€” six sections: supersede chains ยท causal chains ยท conflict pairs ยท expired nodes ยท review timeline ยท common-root grouping
gather <q> [budget]evidence pack, confidence-tiered โ€” never writes a conclusion
conflictslist unresolved conflictsWith pairs
resolve <loser> --prefer <winner> --reason <text>adjudicate a conflict โ€” loser derives to stale, both entries kept
global-syncmirror scope: global entries cross-workspace
stats [days]retrieval telemetry (hit-rate); non-integer falls back to 7
doctorfull health check โ€” green = exit 0 = zero findings (notes are informational)

Harness plugin

SurfaceEffect
prompt sectionlesson index โ‰ค 2 KB, every turn, fail-degrade
mem_recall <query> [limit]lesson book โˆช session full-text, merged & ranked
mem_save <content>write one lesson โ€” gated by the write mode (approval always asks)
/memory <subcommand>17 maintenance subcommands โ€” typing one is the approval
Settings cardread-only status ยท confidence ยท hit-rate ยท search

๐Ÿ—๏ธ Architecture: two faces, one engine

                    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                    โ”‚            .memory/  (DATA)               โ”‚
                    โ”‚  *.md lessons ยท MEMORY.md index ยท stats   โ”‚
                    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                         โ”‚
                              tools/mem.mjs  (engine, 24 commands)
                                         โ”‚
                              tools/mem-core.mjs  (facade)
                          promptIndexText ยท formatRecall ยท saveAndSync
                                    โ”Œโ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”
                                    โ”‚          โ”‚
                        CLI face โ”€โ”€โ”€โ”˜          โ””โ”€โ”€โ”€ plugin/dsh-memory
                     (AGENTS.md block)          (Harness: prompt section
                                                mem_recall ยท mem_save
                                                ยท /memory ยท Settings card)

Hard rules hold across both faces: budget cap, fail-degrade, human-approved writes.


๐Ÿ“‚ Repository Anatomy

cross-session-memory/
โ”œโ”€โ”€ README.md ยท README.zh-CN.md
โ”œโ”€โ”€ LICENSE ยท CHANGELOG.md ยท .gitignore
โ”œโ”€โ”€ tools/
โ”‚   โ”œโ”€โ”€ mem.mjs            # the 24-command engine (single file, zero deps)
โ”‚   โ””โ”€โ”€ mem-core.mjs       # shared facade โ€” the single entry for plugin & CLI
โ”œโ”€โ”€ plugin/dsh-memory/     # DeepSeek Harness bundle (Plugin Edition)
โ”‚   โ”œโ”€โ”€ index.js           #   prompt injection ยท mem_recall ยท mem_save ยท /memory
โ”‚   โ”œโ”€โ”€ client.js          #   read-only Settings card (settings.section)
โ”‚   โ”œโ”€โ”€ cordis.patch.yml   #   loader rows + config (memoryCorePath, maxHits)
โ”‚   โ”œโ”€โ”€ locale/            #   en / zh metadata
โ”‚   โ””โ”€โ”€ README.md          #   install ยท dependency materialization ยท acceptance
โ”œโ”€โ”€ install/
โ”‚   โ”œโ”€โ”€ setup.mjs          # one-shot bootstrap
โ”‚   โ””โ”€โ”€ smoke.mjs          # end-to-end smoke test
โ”œโ”€โ”€ templates/             # AGENTS.md.example + entry.example.md
โ”œโ”€โ”€ docs/                  # DESIGN ยท COMMANDS ยท RESTORE ยท ATTRIBUTION
โ”œโ”€โ”€ examples/              # real sanitized lessons
โ””โ”€โ”€ assets/fonts/          # self-hosted OFL fonts + license texts

๐Ÿ” Security & Trust Model

LayerMechanismDefends against
1๏ธโƒฃ ProvenanceoriginSessionId + created/verified stampsunattributed claims
2๏ธโƒฃ Approvalhuman consent + store gate + write mode (approval asks every call)agent over-eager writing
3๏ธโƒฃ Detectionsecret patterns ยท PII gate ยท Jaccard โ‰ฅ0.6 gate ยท evidence chainleaks, PII, duplication, rumor
4๏ธโƒฃ Integritygit rollback (local-only recommended)everything else

Memory poisoning is a recognized attack class (OWASP ASI06). Auto-writing memory systems are the target. The default write mode never writes without a human โ€” mem_save returns ask on every call, a never approval policy refuses it outright, and the Settings card exposes no write buttons at all.


๐Ÿ—บ Roadmap

  • ๐Ÿ”Œ Now (0.5.x) โ€” everything above is shipped; maintenance and polish only.
  • ๐ŸŒฑ later โ€” optional multi-book federation ยท more CJK session-search fallbacks ยท optional SQLite FTS5 recall (stays off the zero-dependency default).
  • ๐Ÿšซ Won't do โ€” vector stores ยท gateways ยท silent auto-write. Triggers documented in docs/DESIGN.md.

๐Ÿค Contributing

PRs welcome โ€” especially new lesson packs (sanitized!). Run node install/smoke.mjs green before submitting. All code must stay zero-dependency.


  • Unofficial project. Not affiliated with, sponsored by, or endorsed by any named product, company or organization (including DeepSeek, Anthropic, OpenAI, Mem0, Zep, Letta, Cognee, Tencent Cloud, OWASP, or the SIL). Product names are used only for factual, nominative reference.
  • Opinions are ours. Comparison statements reflect publicly documented facts and personal experience at a point in time โ€” verify against current vendor documentation before deciding.
  • Fonts: Orbitron, Space Grotesk and IBM Plex Mono are bundled under the SIL Open Font License 1.1 โ€” full license texts in assets/fonts/licenses/. CJK text uses your system fonts (nothing bundled).
  • No warranty. Software provided as-is under the MIT License โ€” see LICENSE.

  โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
  โ•‘   โ˜…  L E S S O N S   L I V E   O N   D I S K  โ˜…          โ•‘
  โ•‘      Evidence in, garbage out โ€” never.                    โ•‘
  โ•‘      ้”™้ข˜ๆœฌ ยท lesson book                                 โ•‘
  โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Made with ๐Ÿ“• + ๐Ÿ›  + zero dependencies โ€” MIT ยฉ 2026 Agent Lesson Book contributors

Plugin correlati