Skip to content

quickai v0.3.0 — pluggable data sources + OpenCode

Choose a tag to compare

@AlexGladkov AlexGladkov released this 08 Jul 10:37

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.
  • source column across sessions/tasks/turns/agent_runs/tool_calls; export gains a by_source breakdown.
  • 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.