docs/features/learnings.md

Learnings

A Learning is a one-paragraph directive — a rule — that the agent follows when it encounters a relevant situation. Learnings live in steps: named buckets like meeting_triage, proposal_drafting, support_reply_review. Each step is mounted into the agent's virtual filesystem at /learnings/<step>.md on every turn.

Why we need both Learnings and Playbooks

Playbooks are narrative procedures. Learnings are rules-as-data. Two shapes, two use cases:

PlaybooksLearnings
FormMulti-page markdownOne-paragraph directives
When readLazy, on demandEager, every turn
AuthoringHuman (in SKILL.md)Human + self-improver subagent
EditingEdit the markdown, re-apply contextAdd/edit/remove rules in /dashboard/learnings/<step>
Use caseProcedural how-toStanding constraints + accumulated wisdom

How the self-improver fits

The self-improver subagent watches each run for moments worth promoting — "this drafted reply got rejected because it offered a refund; remember not to do that." When it identifies a candidate rule, it proposes it through the comment-feedback worker. Humans approve before the rule lands in the bucket. This is the explicit "agent learns from feedback but doesn't drift on its own" guarantee.

v0.5 ships the manual CRUD UI for learnings — add, edit, remove rules directly. The self-improver-candidate review queue (where you see the agent's proposals before approving) is v0.5.1.

Dedup

A new rule is checked against existing rules in the step using trigram-Jaccard similarity. Above ~0.72 similarity, the API returns a 409 with the existing rule id + similarity score, so you can either refine that rule or reword if it's genuinely a different point. Keeps the bucket from filling with paraphrases.

How rules feed the agent

Every turn, the agent reads its applicable steps as virtual files:

/learnings/global.md
/learnings/meeting_triage.md
/learnings/proposal_drafting.md

The runtime builds these files from getLearnings(orgId, step) so the agent sees the current ruleset every time — no staleness.

Dashboard surface

  • /dashboard/learnings — every step with rule count + agent slugs
  • /dashboard/learnings/<step> — the bucket. Add / edit / delete rules. Each rule shows its source (manual, feedback:<id>, self-improver:<run_id>) so you can trace provenance.
  • Agents — how learning steps attach to a specific agent
  • Playbooks — for procedural knowledge instead of rules
  • Evals — how to measure whether a new rule actually moves the pass-rate