Skip to content

Instantly share code, notes, and snippets.

@davidefiocco
Created March 28, 2026 16:43
Show Gist options
  • Select an option

  • Save davidefiocco/41e312c2d4179a17443f48b6aaf6ec7d to your computer and use it in GitHub Desktop.

Select an option

Save davidefiocco/41e312c2d4179a17443f48b6aaf6ec7d to your computer and use it in GitHub Desktop.
OpenCode history-browser skill

Query Templates

List Recent Sessions

SELECT id, title, directory, 
       datetime(time_updated/1000, 'unixepoch') as updated
FROM session 
ORDER BY time_updated DESC 
LIMIT 10;

Get Session Details

SELECT * FROM session WHERE id = 'ses_xxx';

User Messages from Session

SELECT p.data 
FROM part p
JOIN message m ON p.message_id = m.id
WHERE m.session_id = 'ses_xxx' 
AND m.data LIKE '%"role":"user"%';

Search by Keyword

SELECT DISTINCT s.id, s.title, s.time_updated
FROM session s
JOIN message m ON m.session_id = s.id
JOIN part p ON p.message_id = m.id
WHERE p.data LIKE '%keyword%'
ORDER BY s.time_updated DESC
LIMIT 20;

Sessions by Directory

SELECT id, title, time_updated 
FROM session 
WHERE directory = '/path/to/dir'
ORDER BY time_updated DESC;

Sessions by Date

SELECT id, title, datetime(time_updated/1000, 'unixepoch') as updated
FROM session 
WHERE time_updated > (strftime('%s', 'now') - 86400 * 7) * 1000
ORDER BY time_updated DESC;

JSON Extraction

Extract user text from part:

SELECT json_extract(p.data, '$.text') as text
FROM part p
JOIN message m ON p.message_id = m.id
WHERE m.session_id = 'ses_xxx'
AND m.data LIKE '%"role":"user"%';
name history-browser
description Queries the OpenCode SQLite database to list, search, and retrieve past conversations. Use when user wants to find past sessions, search conversation history, or load previous context.

History Browser

Quick Start

Query the database directly using sqlite3:

sqlite3 ~/.local/share/opencode/opencode.db "SELECT id, title, time_updated FROM session ORDER BY time_updated DESC LIMIT 10;"

Database Location

~/.local/share/opencode/opencode.db

Key Tables

  • session: id, title, directory, time_created, time_updated
  • message: id, session_id, time_created, data (JSON)
  • part: id, message_id, data (JSON with type, text)

Common Queries

See QUERIES.md for all query templates.

Recent sessions

sqlite3 ~/.local/share/opencode/opencode.db "SELECT id, title, datetime(time_updated/1000, 'unixepoch') FROM session ORDER BY time_updated DESC LIMIT 10;"

Search conversations

sqlite3 ~/.local/share/opencode/opencode.db "SELECT s.id, s.title FROM session s JOIN message m ON m.session_id = s.id JOIN part p ON p.message_id = m.id WHERE p.data LIKE '%keyword%' LIMIT 20;"

Get user messages from session

sqlite3 ~/.local/share/opencode/opencode.db "SELECT p.data FROM part p JOIN message m ON p.message_id = m.id WHERE m.session_id = 'ses_xxx' AND m.data LIKE '%user%';"

Usage

  • "Show recent conversations"
  • "Find sessions about [topic]"
  • "What was the last session about?"
  • "Load ses_xxx as context"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment