读取本地 OpenCode SQLite 数据库并执行跨目录 session 查询的技能,适用于会话检索、消息查看与 schema 检查。
读取本地 OpenCode SQLite 数据库,支持跨目录检索 session、message、part、project。
bash
if ! command -v opencode >/dev/null 2>&1; then
echo opencode command not found in PATH >&2
exit 1
fi
if ! DB_PATH=$(opencode db path 2>/dev/null); then
echo Failed to resolve OpenCode DB path via: opencode db path >&2
exit 1
fi
if [ -z ${DBPATH:-} ] || [ ! -f $DBPATH ]; then
echo OpenCode DB not found: $DB_PATH >&2
exit 1
fi
echo Using DB: $DB_PATH
列出当前存在的 DB 文件(无匹配也不会报错):
bash
find ${XDGDATAHOME:-$HOME/.local/share}/opencode -maxdepth 1 -name *.db -print 2>/dev/null
时间转换:所有时间字段为毫秒级 Unix timestamp,可用 datetime() 直接在 SQL 中转换。
bash
表格对齐:普通字段查询可通过 column -t -s | 对齐(SQLite 默认列分隔符为 |);包含 message.data 这类长 JSON 字段时建议使用 -json 输出。
bash
sqlite3 -readonly $DBPATH SELECT id, title, timeupdated FROM session LIMIT 5; | column -t -s |
💡 不含长 JSON 字段的查询可追加 | column -t -s | 以对齐输出表格。
列出最近 20 个 session(按更新时间倒序)
bash
sqlite3 -readonly $DB_PATH \
SELECT id, title, directory,
datetime(time_updated/1000,unixepoch,localtime) as updated
FROM session
ORDER BY time_updated DESC
LIMIT 20; | column -t -s |
按目录过滤 session
bash
sqlite3 -readonly $DB_PATH \
SELECT id, title, datetime(time_updated/1000,unixepoch,localtime) as updated
FROM session
WHERE directory LIKE /path/to/project%
ORDER BY time_updated DESC
LIMIT 20; | column -t -s |
按 project_id 过滤 session(最精确的目录关联方式)
bash
sqlite3 -readonly $DB_PATH \
SELECT s.id, s.title, s.directory,
datetime(s.time_updated/1000,unixepoch,localtime) as updated
FROM session s
WHERE s.project_id = your-project-id
ORDER BY s.time_updated DESC
LIMIT 20; | column -t -s |
project_id 对应 project 表的 id 字段,可通过 SELECT id, worktree, name FROM project; 查看项目列表。
跨所有目录全量列出 session(带 project 信息)
bash
sqlite3 -readonly $DB_PATH \
SELECT s.id, s.title, s.directory, p.worktree,
datetime(s.time_updated/1000,unixepoch,localtime) as updated
FROM session s
LEFT JOIN project p ON s.project_id = p.id
ORDER BY s.time_updated DESC
LIMIT 50; | column -t -s |
按时间范围过滤
bash
查看某 session 的消息内容
bash
sqlite3 -readonly -json $DB_PATH \
SELECT m.id, datetime(m.time_created/1000,unixepoch,localtime) as created, m.data
FROM message m
WHERE m.session_id = your-session-id
ORDER BY m.time_created ASC;
解析 message.data JSON 字段
bash
搜索 session 标题
bash
sqlite3 -readonly $DB_PATH \
SELECT id, title, directory, datetime(time_updated/1000,unixepoch,localtime) as updated
FROM session
WHERE title LIKE %keyword%
ORDER BY time_updated DESC
LIMIT 20; | column -t -s |
查看会话统计
bash
sqlite3 -readonly $DB_PATH \
SELECT title, summaryadditions, summarydeletions, summary_files,
datetime(time_created/1000,unixepoch,localtime) as created
FROM session
ORDER BY time_updated DESC
LIMIT 20; | column -t -s |
bash
sqlite3 -readonly $DB_PATH .schema session
sqlite3 -readonly $DB_PATH .schema message
sqlite3 -readonly $DB_PATH .schema part
sqlite3 -readonly $DB_PATH .schema project
完整字段与索引说明见 references/schema.md。
bash
sqlite3 -readonly $DB_PATH .tables
id title directory updated
---------- ----------------------- -------------------------- -------------------
ses_abc123 My Session - 2026-03-24 /home/user/project 2026-03-24 10:00:00
ses_def456 Another Session /home/user/other 2026-03-23 15:30:00
(配合 | column -t -s | 对齐后的效果)
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 opencode-session-reader-cn-1776032153 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 opencode-session-reader-cn-1776032153 技能
skillhub install opencode-session-reader-cn-1776032153
文件大小: 5.16 KB | 发布时间: 2026-4-13 11:21