读取本地 OpenCode SQLite 数据库,支持跨目录会话查询、消息检查与 Markdown 导出。
读取本地 OpenCode SQLite 数据库,支持跨目录检索 session、message、part、project。
以下命令默认都在当前 SKILL.md 所在目录执行。导出 Markdown 时,直接运行内置脚本:
bash
./scripts/exportopencodesessions.py --help
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 |
导出脚本会将每个会话写成一个独立的 Markdown 文件。默认行为:
按某个 project 导出
bash
./scripts/exportopencodesessions.py \
--project opencode-session-toolkit \
--output-dir ./exports/opencode-session-toolkit
--project 会对 project_id、project.name、project.worktree、session.directory 做子串匹配。
按时间段导出
bash
./scripts/exportopencodesessions.py \
--start 2026-03-01 \
--end 2026-03-24T23:59:59 \
--time-field updated \
--output-dir ./exports/march
支持的时间格式:
-
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 opencode-session-toolkit-cn-1776031874 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 opencode-session-toolkit-cn-1776031874 技能
skillhub install opencode-session-toolkit-cn-1776031874
文件大小: 11.81 KB | 发布时间: 2026-4-13 11:21