Four living documents capturing the post-explain ideation: - vision-practice.md (priority 1): exams over chosen node sets; assessment record model (extractor observation = data point zero, practice appends, labels-for-extractor/numbers-for-everyone-else, aggregation TBD-Bayesian); problem-engineer agent flow with self-verifiable coverage metadata and commit-before-pose grading via a dedicated write-seam tool; formats configurable, theory pending from owner. - vision-side-chat.md (priority 2): per-block hover-revealed mini threads, invisible to the teaching record; v1 = block-only context, escalation ladder documented; fork idea set aside (role confusion). - vision-branching.md (unscheduled): tree-shaped records, plan-overlay UI; pi SDK has no native branching (verified) — our own record-model work. - vision-persistent-agent.md (PARKED): markdown session records as the pull-based substrate, graph-as-truth over user.md, graph composer as interface, session kinds/three-surfaces note.
3.4 KiB
Vision — The Persistent Agent (PARKED)
Started 2026-09-27, ideation round. Parked by the owner 2026-09-27 — "a much later thing." This document preserves the ideation so nothing is re-derived. Practice module and side chats go first; branching after those.
The pitch
A tutor of record — an agent that teaches nothing. It is the general interface to the accumulated learner model: it knows where the session records live, can read them, holds access to the knowledge graph, and keeps a detailed, longitudinal record of the user's understanding.
The substrate — sessions as markdown
- Sessions get converted to markdown records, persisted as files — the corpus other agents read with the read/ls/find/grep tools every pi agent already has. This is the pull-based (pi-native) version of context sharing, philosophically opposite to the removed Wave-7 pushed-injection.
- JSON stays canonical; markdown is a derived export with a defined shape — regenerable, no second source of truth.
- Two audiences, one artifact: the human archive and the agent food want the same distilled session record — goal, the plan map (already mermaid — markdown-native), nodes covered, checks with outcomes, misconceptions found, where the session left off (~40 lines, not a 400-line verbatim transcript; the verbatim JSON exists forever).
- Open: who writes the record — dumb code folding the record, or an agent summarizing at session end. Could ship standalone before the rest of this document (it serves export value immediately and this agent later).
The agent itself (ideation, unruled)
- Queries the graph, doesn't hold it. The graph lives in stores with query tools; holding it as context text is stale-copy risk and token burn. Context stays small; truth stays in the stores.
- user.md — a living synthesis the agent maintains — with the discipline that the graph is the truth and user.md is the index: the graph is evidence-backed (every node traceable to extraction); free-form prose memory has no audit trail. Disagreements resolve toward the graph. Otherwise it's a second brain with no epistemics.
- The graph-view composer becomes its interface — the natural home: the page where you see everything you know, and ask about it. This also makes the graph a control surface: sessions created from the graph (select nodes → "teach me this" → a session whose plan could seed from the selection; the probe could focus or skip accordingly).
Session kinds (relevant once practice exists too)
Three fundamentally different session types — teaching, practice, the persistent agent's chats — should not sit mixed in one flat list. Agreed direction: one session store with a kind discriminator, three surfaces — teaching in the sidebar (untouched), practice entering from the graph/sessions, the tutor-of-record chat at the graph composer. Icons alone say what a thing is; surfaces put it where its activity lives. (The store-side kind field becomes real as soon as the practice module lands — see vision-practice.md.)
Home page
If practice and the persistent agent both enter through the graph, the graph stays home and grows denser with affordances — no tabs. Tabs are what you add when something has no natural home. Watch: the graph page must not accrete too many meanings; "everything I know, and everything I can do with what I know" is one coherent meaning, and it should stay that way.