quickai v0.3.0 — pluggable data sources + OpenCode
Pluggable data sources
quickai now indexes more than Claude Code. A real source/adapter boundary lets other SWE-agents plug in as thin adapters, and this release ships OpenCode as the first one.
quickai index --source claude # default, unchanged
quickai index --source opencode # new
What's new
- OpenCode adapter — reads
~/.local/share/opencode/storage(per-message JSON + parts + session), maps tokens/model/cost/tool-calls/prompt text into the same aggregates. Uses OpenCode's own cost (its models aren't in the Anthropic pricing table). - DataSource boundary — each adapter owns its traversal, incremental cursor and parsing, emitting a normalized event stream; the indexer just applies + aggregates. Adding a source no longer touches the indexer, schema or reports.
sourcecolumn across sessions/tasks/turns/agent_runs/tool_calls;exportgains aby_sourcebreakdown.- In-place migration — existing DBs gain the new columns automatically (default
claude), no reindex, no data loss. - Re-reading immutable source files can't duplicate turns (stable
ext_id+ unique index).
Notes
- Claude Code indexing behaviour is unchanged; source-scoped rebuild keeps sources isolated.
- Codex isn't supported yet — its local store only keeps a per-thread token aggregate, not the per-turn tokens/cache/cost quickai needs. Tracked in the pluggable-sources epic.
Thanks @keksmd for the export groundwork in 0.2.0.