Releases: ascottbell/doris
v0.1.1 — Wisdom Compilation System
Doris v0.1.1 — Wisdom Compilation System
Doris now distills raw wisdom entries into a living summary that gets loaded into her system prompt — so she doesn't just collect feedback, she actually learns from it.
What's New
Wisdom Compilation — A background job that periodically reads all wisdom entries and compiles them into a two-section summary:
- Narrative Understanding — prose about who you are as a decision-maker. What you value, how you think about quality vs speed, your approach to tradeoffs. Written like a briefing for a new collaborator.
- Operational Patterns — a punch list of specific do's, don'ts, and gotchas learned from real outcomes. Things like "verify enforcement, not existence" or "FTS5 default tokenizer doesn't split camelCase."
The compiler runs on a mid-tier model (Sonnet-class), triggers when 5+ new entries accumulate, and evolves the summary incrementally rather than rebuilding from scratch. The compiled summary is injected into Doris's system prompt adjacent to her immutable persona (WORM) — persona is who she is, wisdom is what she's learned.
New "development" action family — 8 action types for development workflow wisdom: architecture_decision, debugging_resolution, dependency_choice, config_change, gotcha, user_preference, approach_validated, approach_rejected. Use these with doris_wisdom_log to capture coding decisions and patterns.
Bug Fixes
- Fix
include_unratedin wisdom search —doris_wisdom_searchwith anaction_typefilter now correctly passesinclude_unrated=Truetoget_relevant_wisdom(). Previously, since ~98.5% of wisdom entries have no feedback score, action-type filtered queries returned empty results.
Changes
| File | What changed |
|---|---|
memory/wisdom_compiler.py |
New — compilation engine (threshold check, entry formatting, LLM call, output writing) |
memory/wisdom.py |
Added "development" action family with 8 action types |
maasv_bridge.py |
Added action_families config for maasv wisdom matching |
llm/brain.py |
Added _load_wisdom_summary() with 10-min cache; wired into both get_system_prompt() and get_system_prompt_cached() |
daemon/scheduler.py |
Added wisdom compilation job (every 2 hours, threshold-gated) with escalation notification |
mcp_server/server.py |
Fixed include_unrated bug in doris_wisdom_search |
README.md |
Documented compiled wisdom in Memory section |
Upgrading from v0.1.0
No breaking changes. The wisdom compiler creates two new files in data/ on first run:
data/wisdom_summary.md— the compiled summarydata/wisdom_compiler_state.json— tracks last compilation timestamp
These are created automatically when the threshold is met. No migration needed.
v0.1.0 — Initial Release
Doris v0.1.0 — Initial Release
The first public release of Doris, a personal AI assistant that monitors your world, remembers your life, and acts before you ask.
Highlights
- Provider-agnostic LLM layer — Claude, OpenAI, or Ollama via one env var
- 42 tools — calendar, email, reminders, iMessage, weather, contacts, music, smart home, memory, and more
- 9 scouts — background agents monitoring email, calendar, weather, reminders, health, location, time, system health, and memory
- Sitrep engine — intelligent observation review replaces hash-based dedup. Scouts observe; Doris decides what's worth your attention.
- 5 channel adapters — CLI, Telegram, Discord, BlueBubbles (iMessage), generic webhook
- Full memory system powered by maasv — semantic retrieval, knowledge graph, wisdom (learning from feedback), sleep-time compute
- MCP server — expose Doris's memory via Model Context Protocol for use with Claude Code, Claude Desktop, or any MCP client
- Security hardening — 223 tests covering auth, injection scanning, content wrapping, PII detection, memory poisoning defense, MCP trust tiers, AppleScript sanitization
- Docker support — multi-stage build, non-root user, pinned dependencies