名称: seq
描述: “挖掘 Codex 会话 JSONL (~/.codex/sessions) 和基于文件的记忆 (~/.codex/memories),用于技能使用、部分/格式合规性、触发证据、令牌指标,以及用于恢复工作流程的提示到会话查找。适用于如 $seq、analyze session history、find sessions by prompt、rank skill mentions、audit missing sections、report token usage、mine memories 或 use $seq to improve skill trigger descriptions/frontmatter 等提示。”
seq
概述
使用单个脚本快速一致地挖掘 ~/.codex/sessions/ JSONL 和 ~/.codex/memories/ 文件。专注于技能使用、格式合规性、令牌计数和记忆文件挖掘。
快速开始
CODEX_SKILLS_HOME="${CODEX_HOME:-$HOME/.codex}"
CLAUDE_SKILLS_HOME="${CLAUDE_HOME:-$HOME/.claude}"
SEQ_SCRIPT="$CODEX_SKILLS_HOME/skills/seq/scripts/seq.py"
[ -f "$SEQ_SCRIPT" ] || SEQ_SCRIPT="$CLAUDE_SKILLS_HOME/skills/seq/scripts/seq.py"
run_seq() {
if command -v seq >/dev/null 2>&1 && seq --help 2>&1 | grep -q "skills-rank"; then
seq "$@"
return
fi
if [ "$(uname -s)" = "Darwin" ] && command -v brew >/dev/null 2>&1; then
if ! brew install tkersey/tap/seq; then
echo "brew install tkersey/tap/seq 失败;拒绝静默回退。" >&2
return 1
fi
if command -v seq >/dev/null 2>&1 && seq --help 2>&1 | grep -q "skills-rank"; then
seq "$@"
return
fi
echo "brew install tkersey/tap/seq 未产生兼容的 seq 二进制文件。" >&2
return 1
fi
if [ -f "$SEQ_SCRIPT" ]; then
uv run python "$SEQ_SCRIPT" "$@"
return
fi
echo "seq 二进制文件缺失且回退脚本未找到: $SEQ_SCRIPT" >&2
return 1
}
run_seq datasets --root ~/.codex/sessions
以下命令为简洁起见直接使用 seq。这是首选的 Zig 执行路径。在需要支持 brew 感知的引导和 Python 回退行为的地方使用 run_seq。
查询(JSON 规范)
通过 query 运行灵活的挖掘,使用一个小型 JSON 规范(内联或 @spec.json)。
列出数据集:
seq datasets --root ~/.codex/sessions
显示数据集字段/参数:
seq dataset-schema --dataset token_deltas --root ~/.codex/sessions
示例:
排名技能使用:
seq query --root ~/.codex/sessions --spec \
'{"dataset":"skill_mentions","group_by":["skill"],"metrics":[{"op":"count","as":"count"}],"sort":["-count"],"limit":20,"format":"table"}'
每日令牌总计(来自 token_count 事件):
seq query --root ~/.codex/sessions --spec \
'{"dataset":"token_deltas","group_by":["day"],"metrics":[{"op":"sum","field":"delta_total_tokens","as":"tokens"}],"sort":["day"],"format":"table"}'
按总令牌排名的顶级会话:
seq query --root ~/.codex/sessions --spec \
'{"dataset":"token_sessions","select":["path","total_total_tokens"],"sort":["-total_total_tokens"],"limit":10,"format":"table"}'
排名工具调用:
seq query --root ~/.codex/sessions --spec \
'{"dataset":"tool_calls","group_by":["tool"],"metrics":[{"op":"count","as":"count"}],"sort":["-count"],"limit":20,"format":"table"}'
按类别分类的记忆文件:
seq query --spec \
'{"dataset":"memory_files","group_by":["category"],"metrics":[{"op":"count","as":"count"}],"sort":["-count"],"format":"table"}'
预建规范
预建的规范位于 specs/ 中。
seq query --root ~/.codex/sessions --spec @specs/skills-rank.json
seq query --root ~/.codex/sessions --spec @specs/tools-rank.json
seq query --root ~/.codex/sessions --spec @specs/tokens-top-days.json
seq query --root ~/.codex/sessions --spec @specs/tokens-top-sessions.json
seq query --root ~/.codex/sessions --spec @specs/tk-trend-week.json
规范参考
顶级键:
dataset(字符串,必需)params(对象,可选;数据集特定)where(谓词列表,可选)group_by(字段名称列表,可选)metrics(聚合列表,可选;分组时默认count)select(字段名称列表,可选;用于非分组查询)sort(字段名称列表;前缀-表示降序)limit(整数,可选)format(table|json|csv|jsonl;默认:分组时为table,否则jsonl)
Where 谓词形状:
{"field":"day","op":"eq","value":"2026-02-05"}
支持的 where.op:
eq、neqgt、gte、lt、lte(数字类型比较)in、nin(值为 JSON 列表)contains(子字符串)regex(值为正则表达式字符串;可选case_insensitive: true)exists、not_exists
Metrics 形状(分组查询):
{"op":"sum","field":"delta_total_tokens","as":"tokens"}
支持的 metrics.op:
countsum、min、max、avgcount_distinct
任务
1) 排名技能使用
seq skills-rank --root ~/.codex/sessions
常用选项:
--format json|csv--max 20--roles user,assistant--since 2026-01-01T00:00:00Z
2) 随时间趋势一个技能
seq skill-trend --root ~/.codex/sessions --skill tk --bucket week
3) 报告特定技能
seq skill-report --root ~/.codex/sessions --skill tk \
--sections "Contract,Invariants,Creative Frame,Why This Solution,Incision,Proof" \
--sample-missing 3
另一个示例:
seq skill-report --root ~/.codex/sessions --skill fix \
--sections "Contract,Findings,Changes applied,Validation,Residual risks / open questions" \
--sample-missing 3
4) 按技能划分的角色分解
seq role-breakdown --root ~/.codex/sessions --format table
5) 审计部分合规性
seq section-audit --root ~/.codex/sessions \
--sections "Contract,Invariants,Creative Frame" \
--contains "Using $tk" \
--sample-missing 5
6) 导出出现次数
seq occurrence-export --root ~/.codex/sessions --format jsonl --output occurrences.jsonl
7) 打包报告
seq report-bundle --root ~/.codex/sessions \
--top 20 --skills tk,fix \
--sections "Contract,Invariants,Creative Frame,Why This Solution,Incision,Proof"
8) 令牌使用摘要
seq token-usage --root ~/.codex/sessions --top 10
9) 可重复的性能测试
运行固定预热/样本计数和可选基线比较的稳定工作负载。
zig build bench -Doptimize=ReleaseFast -- --config perf/frozen/workload_config.json
头对头 Zig vs Python 门(首先运行奇偶校验):
scripts/perf/head_to_head.sh --root testdata/golden/sessions --gate 20 --samples 9 --warmup 1
针对 Python 预言机的差异奇偶校验:
scripts/parity/run_diff.sh --root ~/.codex/sessions/2026/02/19
10) 按提示文本查找会话
seq find-session --root ~/.codex/sessions --prompt "adapter=auto" --limit 20
11) 列出单个会话的提示/消息
seq session-prompts --root ~/.codex/sessions --session-id <session_id> \
--roles user,assistant --strip-skill-blocks --limit 100
注意
- 默认根目录:
~/.codex/sessions。 memory_files默认为~/.codex/memories,并接受params.memory_root来覆盖。- 技能名称默认从
${CODEX_HOME:-$HOME/.codex}/skills推断,必要时回退到${CLAUDE_HOME:-$HOME/.claude}/skills。 - 运行时引导策略:首选 Zig
seq二进制文件;在 macOS 上使用brew,将brew install tkersey/tap/seq失败(或不兼容的二进制文件)视为硬错误;仅在没有兼容的seq二进制文件可用时使用uv run python "$SEQ_SCRIPT"。 - 添加
--output <路径>将结果写入文件。 query自动仅投影引用的数据集字段(where、group_by、metrics.field、select和非分组的sort)以减少扫描开销。find-session返回session_id和path;使用这些来定位后续的query或恢复工作流程。session-prompts默认使用--roles user;设置--roles user,assistant以包含对话的双方。session-prompts默认去重镜像重复行;传递--no-dedupe-exact以保留所有重复项。- 典型流程:运行
find-session,然后将返回的session_id传递给session-prompts --session-id <id>。
资源
seq二进制文件:用于排名技能、审计部分、查询数据集和总结令牌使用的 CLI。zig build bench -Doptimize=ReleaseFast -- --config perf/frozen/workload_config.json:冻结工作负载性能运行器。scripts/parity/run_diff.sh:Zig/Python 差异奇偶校验测试框架。scripts/perf/head_to_head.sh:奇偶校验门控的头对头 p50 速度基准测试。