ai-code-sessions 完整指南#
claude-code-transcripts 的增强版 fork,支持 Claude + Codex 双平台,提供自动化工作流和变更日志功能。
GitHub: hbruss/ai-code-sessions · PyPI: ai-code-sessions · 最新版本: 0.1.7(2026-02-17)· 许可证: Apache-2.0
安装#
# 方式 1:uvx 直接运行(无需安装,推荐)
uvx ai-code-sessions
# 方式 2:pip 安装
pip install ai-code-sessions
# 方式 3:pipx 安装(隔离环境)
pipx install ai-code-sessions
# 方式 4:uv 工具安装
uv tool install ai-code-sessions
# 验证安装
ais --help安装后可以使用简写命令
ais代替ai-code-sessions。如果
uvx未安装,先安装 uv:irm https://astral.sh/uv/install.ps1 | iex
命令总览#
| 命令 | 说明 | 来源 |
|---|---|---|
local | 交互式选择并转换本地 Claude 会话为 HTML | 继承自上游 |
all | 转换所有本地 Claude 会话为可浏览的 HTML 归档 | 继承自上游 |
json | 转换 JSON/JSONL 文件为 HTML | 继承自上游 |
web | 从 Claude API 导出 Web 会话 | 继承自上游 |
ctx | 运行 Claude/Codex 并在退出时自动导出 | 独有 |
ctx-resume / resume | 恢复之前的会话 | 独有 |
archive | 生成项目级归档(扫描 .codex/.claude) | 独有 |
changelog backfill | 为已导出会话回填变更日志 | 独有 |
changelog since | 按日期/提交查询变更日志 | 独有 |
changelog lint | 验证变更日志质量 | 独有 |
changelog refresh-metadata | 重新计算元数据 | 独有 |
export-latest | 导出最近时间窗口内的会话 | 独有 |
find-source | 查找匹配的原始会话日志文件 | 独有 |
config show | 查看当前配置 | 独有 |
setup | 交互式配置向导 | 独有 |
web命令目前因 Claude 非官方 API 变更而暂时不可用(参见上游 issue #77)。
核心功能#
1. 基础导出(继承自 claude-code-transcripts)#
# 交互式选择并导出本地会话
ais local
# 限制显示数量
ais local --limit 20
# 导出所有会话为 HTML 归档
ais all -o ./archive --open
# 转换指定的 JSONL 文件
ais json path/to/session.jsonl -o ./output
# 转换并附带标签和 GitHub 提交链接
ais json session.jsonl -o ./output --label "修复登录 Bug" --repo owner/repo --open
# 在输出目录中包含原始 JSON 文件
ais json session.jsonl -o ./output --json
# 导出并上传到 GitHub Gist
ais local --gist2. 会话包装器(ctx)— 核心工作流#
运行 AI 工具并在退出时自动导出会话记录。这是 ai-code-sessions 最核心的独有功能。
# 运行 Claude 并自动导出
ais ctx claude "修复数据库连接池"
# 运行 Codex 并自动导出
ais ctx codex "重构认证模块"
# 导出后自动打开浏览器
ais ctx claude "调试内存泄漏" --open
# 同时生成变更日志
ais ctx claude "添加用户认证" --changelog
# 指定 GitHub 仓库(用于提交链接)
ais ctx claude "修复 Bug" --repo owner/repo --changelog --open会话退出后自动导出到:
| 工具 | 输出路径 |
|---|---|
| Claude | .claude/sessions/YYYY-MM-DD-HHMM_Your_Label/ |
| Codex | .codex/sessions/YYYY-MM-DD-HHMM_Your_Label/ |
标签命名建议:使用描述性标签如
"Fix login race condition"而非"debug",它们会成为目录名并出现在转录标题中。
3. 会话恢复(ctx-resume)#
# 交互式选择之前的 Claude 会话恢复
ais ctx claude --resume
# 交互式选择之前的 Codex 会话恢复
ais ctx codex --resume
# 从列表中选择恢复
ais ctx codex --resume --pick
# 恢复特定会话(按 ID)
ais ctx claude --resume --session-id <id> "继续调试"
# 直接恢复最新的会话
ais ctx-resume claude --latest
# 限制显示数量
ais ctx-resume claude --limit 204. 项目级归档(archive)#
扫描 git 仓库中的 .codex/ 和 .claude/ 目录,生成项目级归档。
# 在当前 git 仓库生成归档
ais archive
# 指定项目根目录
ais archive --project-root /path/to/repo
# 指定输出目录并打开
ais archive -o ./my-archive --open默认输出到 <project_root>/.ais-archive。
5. 变更日志(changelog)#
从会话记录自动生成结构化的项目变更日志。
回填已有会话#
# 为已导出但未生成 changelog 的会话补充
ais changelog backfill
# 指定项目根目录
ais changelog backfill --project-root "$(git rev-parse --show-toplevel)"
# 使用 Claude 作为评估器
ais changelog backfill --evaluator claude --max-concurrency 5
# 覆盖作者
ais changelog backfill --actor your-github-username按日期查询#
# 查看某个日期之后的变更
ais changelog since 2026-02-01
# 支持自然语言日期
ais changelog since yesterday
ais changelog since "3 days ago"
# 按 Git 提交查询
ais changelog since HEAD~10
# 输出为 JSON 格式
ais changelog since 2026-01-15 --format json
# 按工具过滤
ais changelog since 2026-01-15 --tool codex
# 按标签过滤
ais changelog since 2026-01-15 --tag feat --tag fix--format 支持:summary(默认)、json、bullets、table
验证质量#
# 检查 changelog 质量
ais changelog lint
# 自动修复有问题的条目
ais changelog lint --fix
# 预览修复但不实际更改
ais changelog lint --fix --dry-run刷新元数据#
# 重新计算 touched_files、tests、commits 等元数据
ais changelog refresh-metadata --project-root "$(git rev-parse --show-toplevel)"
# 刷新所有条目(默认仅刷新空的)
ais changelog refresh-metadata --all
# 预览更改
ais changelog refresh-metadata --dry-run6. 源文件匹配#
当运行并发 AI 会话时,工具通过智能匹配识别正确的日志文件:
- 扫描 ±1 天范围内的会话目录
- 过滤在会话窗口内修改的文件
- 读取首尾条目获取实际会话边界
- 验证会话是否在预期目录中启动
- 最小化时间戳差值找到最佳匹配
结果保存到 source_match.json,包含选中的文件和最多 25 个候选项。
# 手动查找匹配的原始会话日志
ais find-source codex "$PWD" "$(git rev-parse --show-toplevel)"
# 如果匹配错误,用正确的文件重新导出
ais json <correct-file> -o <output-dir>7. 交互式设置#
# 完整设置向导
ais setup
# 跳过全局配置
ais setup --skip-global
# 跳过项目配置
ais setup --skip-repo
# 覆盖已有配置
ais setup --overwrite向导会配置:GitHub 用户名、时区、changelog 生成偏好,并可选更新 .gitignore。
命令详细参数#
all 命令#
ais all [OPTIONS]
选项:
--source PATH Claude Code projects 目录(默认 ~/.claude/projects)
-o, --output PATH 输出目录(必填)
--include-agents 包含 agent-* 会话文件(默认排除)
--dry-run 预览模式,不创建文件
--open 导出后在浏览器中打开
--gist 上传到 GitHub Gist
-q, --quiet 静默模式ctx 命令#
ais ctx [codex|claude] [OPTIONS] [LABEL]
选项:
--resume 恢复之前的会话
--pick 从列表中选择恢复(配合 --resume)
--session-id TEXT 指定恢复的会话 ID(配合 --resume)
--tz TEXT 时区(默认 America/Los_Angeles)
--repo TEXT GitHub 仓库(owner/name),用于提交链接
--open 导出后打开 index.html
--changelog 导出后追加变更日志条目
--changelog-evaluator 变更日志评估器(codex/claude)
--changelog-actor TEXT 覆盖变更日志中的 actor
--changelog-model TEXT 覆盖变更日志评估模型json 命令#
ais json <FILE> [OPTIONS]
选项:
-o, --output PATH 输出目录(必填)
--label TEXT 转录标题中显示的标签
--repo TEXT GitHub 仓库(owner/name),用于提交链接
--json 在输出目录中包含原始会话文件
--open 生成后在浏览器中打开
--gist 上传到 GitHub Gist日志功能#
# 单级详细日志
ais -v local
# 双级详细日志
ais -vv local
# 输出到日志文件
ais --log-file ./debug.log local配置系统#
配置文件位置#
| 类型 | 路径 |
|---|---|
| 全局 (Windows) | %APPDATA%\ai-code-sessions\config.toml |
| 全局 (macOS) | ~/Library/Application Support/ai-code-sessions/config.toml |
| 全局 (Linux) | ~/.config/ai-code-sessions/config.toml |
| 项目级 | .ai-code-sessions.toml 或 .ais.toml(项目根目录) |
优先级(从高到低)#
- CLI 参数
- 环境变量
- 项目级配置(
.ai-code-sessions.toml/.ais.toml) - 全局配置(
config.toml)
配置文件示例#
[ctx]
tz = "Asia/Shanghai" # 会话文件夹名的时区
[changelog]
enabled = true # 启用 changelog 生成
actor = "your-github-username" # changelog 中的署名
evaluator = "codex" # "codex" 或 "claude"
model = "" # 留空使用工具默认值
claude_thinking_tokens = 8192 # Claude 评估器专用设置环境变量#
| 变量 | 说明 | 默认值 |
|---|---|---|
CTX_TZ | 会话文件夹名的时区 | America/Los_Angeles |
CTX_CODEX_CMD | 覆盖 Codex 可执行文件路径 | — |
CTX_CLAUDE_CMD | 覆盖 Claude 可执行文件路径 | — |
CTX_CHANGELOG | 启用 changelog(1 或 true) | — |
CTX_ACTOR | Changelog 作者(用户名) | — |
CTX_CHANGELOG_EVALUATOR | 评估器:codex 或 claude | codex |
CTX_CHANGELOG_MODEL | 评估器使用的模型 | — |
CTX_CHANGELOG_CLAUDE_THINKING_TOKENS | Claude 思考 token 数 | 8192 |
AI_CODE_SESSIONS_LOG_DIR | 日志文件目录 | — |
Changelog 系统详解#
条目结构#
每个 changelog 条目包含:
| 字段 | 说明 |
|---|---|
summary | 会话目的的一行描述 |
bullets | 3-5 个具体变更或成果 |
tags | 分类标签(feat、fix、refactor、docs 等) |
touched_files | 创建/修改/删除/移动的文件 |
tests | 测试命令 + 结果(pass/fail/unknown) |
commits | 会话期间的 Git 提交 |
存储位置#
.changelog/
└── your-username/
├── entries.jsonl # 成功的 changelog 条目(追加写入)
└── failures.jsonl # 失败的生成尝试(用于调试)评估器选择#
| 评估器 | 默认模型 | 特点 |
|---|---|---|
codex(默认) | gpt-5.2 + xhigh 推理 | 快速,擅长摘要 |
claude | opus + 8192 思考 token | 更详细的分析 |
建议将
.changelog/添加到.gitignore(尤其是公开仓库),避免泄露内部开发细节。
HTML 输出详解#
每次导出生成一个自包含目录:
.codex/sessions/2026-01-02-1435_fix-auth-race-condition/
├── index.html # 提示时间线 + 统计信息
├── page-001.html # 前 5 个对话
├── page-002.html # 后续对话(每页 5 个)
├── source_match.json # 源文件匹配信息
└── session.jsonl # 原始日志(归档)HTML 渲染特性(继承自 Simon Willison 的渲染引擎):
- 用户提示保留 Markdown 格式
- 助手回复显示文本、工具调用和推理块
- 工具结果带语法高亮且可折叠
- 文件编辑显示为并排 diff
- 长内容优雅截断,带展开按钮
- Git 提交自动链接到 GitHub
- 索引页显示每个提示的时间线和统计(工具调用次数、提交数、测试结果)
使用场景#
场景 1:日常开发工作流#
# 用 ctx 启动每个开发任务,自动记录和导出
ais ctx claude "添加用户认证功能" --changelog --open
# 任务完成后,changelog 自动生成
# 转录自动保存到 .claude/sessions/场景 2:恢复中断的工作#
# 恢复最近的 Claude 会话
ais ctx claude --resume
# 或从列表中选择
ais ctx codex --resume --pick场景 3:同时管理 Claude 和 Codex#
# 用 Claude 做架构设计
ais ctx claude "设计微服务架构" --changelog
# 用 Codex 做具体实现
ais ctx codex "实现用户服务 API" --changelog
# 统一归档
ais archive --open场景 4:团队变更追踪#
# 查看本周所有 AI 辅助变更
ais changelog since "1 week ago" --format table
# 按成员过滤
ais changelog since 2026-02-01 --actor alice
# 按标签过滤
ais changelog since 2026-02-01 --tag feat --tag fix
# 导出为 JSON 供其他工具消费
ais changelog since 2026-02-01 --format json > weekly-report.json场景 5:项目级会话归档#
# 在项目根目录生成所有 AI 会话的归档
cd /path/to/my-project
ais archive --open
# 指定输出目录
ais archive -o ./ai-sessions-archive --open场景 6:调试导出问题#
# 开启详细日志排查问题
ais -vv all -o ./debug-archive --log-file ./debug.log
# 检查源文件匹配结果
Get-Content .codex/sessions/*/source_match.json | ConvertFrom-Json
# 用正确的文件重新导出
ais json <correct-file> -o <output-dir> --label "重新导出"场景 7:回填历史会话的 Changelog#
# 启用 changelog 后,为之前的会话补充生成
ais changelog backfill
# 使用 Claude 评估器获得更详细的分析
ais changelog backfill --evaluator claude --max-concurrency 5
# 检查质量
ais changelog lint
# 自动修复有问题的条目
ais changelog lint --fix场景 8:分享会话到 GitHub Gist#
# 导出并上传到 Gist(需要 gh CLI 已认证)
ais local --gist
# 或从 JSONL 文件
ais json session.jsonl -o ./output --gist与 claude-code-transcripts 的区别#
| 功能 | ai-code-sessions | claude-code-transcripts |
|---|---|---|
| 基础 HTML 导出 | ✅ | ✅ |
| Codex 支持 | ✅ | ❌ |
| 会话包装器(ctx) | ✅ | ❌ |
| 会话恢复(resume) | ✅ | ❌ |
| 项目级归档(archive) | ✅ | ❌ |
| 变更日志(changelog) | ✅ | ❌ |
| 源文件智能匹配 | ✅ | ❌ |
| TOML 配置文件 | ✅ | ❌ |
| 设置向导(setup) | ✅ | ❌ |
| 多评估器(GPT/Claude) | ✅ | ❌ |
| 日志级别控制 | ✅ | ❌ |
| GitHub Gist 发布 | ✅ | ✅ |
| 命令数量 | 15+ | 4 个 |
常见问题#
Q1:config 直接运行报错#
Exit code 2
Usage: ai-code-sessions config [OPTIONS] COMMAND [ARGS]...config 是命令组,需要加子命令:
# ✅ 正确
ais config show
# ❌ 错误
ais configQ2:导出结果和 claude-code-transcripts 一样#
基础的 local 和 all 命令确实输出相同的 HTML,因为 ai-code-sessions 是 claude-code-transcripts 的 fork,共享同一套 HTML 渲染引擎。区别在于 ctx、archive、changelog 等独有功能。如果只用基础导出,两者没有区别。
Q3:archive 找不到会话#
确认当前目录是 git 仓库根目录,且项目中存在 .claude/ 或 .codex/ 目录:
# 检查是否在 git 仓库中
git rev-parse --show-toplevel
# 手动指定项目根目录
ais archive --project-root D:\Documents\IDE\202602Q4:changelog 评估器选择#
默认使用 Codex 作为评估器。如果想用 Claude:
# 命令行参数
ais ctx claude "我的任务" --changelog --changelog-evaluator claude
# 或设置环境变量
$env:CTX_CHANGELOG_EVALUATOR = "claude"
ais ctx claude "我的任务" --changelog
# 或写入配置文件
# .ai-code-sessions.toml
# [changelog]
# evaluator = "claude"Q5:并发会话时源文件匹配错误#
检查 source_match.json 确认匹配结果:
Get-Content .codex/sessions/*/source_match.json
# 如果匹配错误,用正确的文件重新导出
ais json <correct-file> -o <output-dir>Q6:web 命令报错#
web 命令依赖 Claude 非官方 API,目前因 API 变更而暂时不可用。建议使用 local 或 all 命令导出本地会话。
Q7:--gist 选项报错#
需要安装并认证 GitHub CLI:
# 安装 gh
winget install GitHub.cli
# 认证
gh auth login
# 然后就可以使用 --gist
ais local --gistQ8:Windows 上时区设置#
默认时区是 America/Los_Angeles,建议修改为本地时区:
# 方式 1:环境变量
$env:CTX_TZ = "Asia/Shanghai"
# 方式 2:配置文件(推荐)
# 运行 ais setup 或手动编辑 %APPDATA%\ai-code-sessions\config.toml
# [ctx]
# tz = "Asia/Shanghai"已知限制#
web命令因 Claude 非官方 API 变更而暂时不可用- macOS 上 API 凭据自动从 Keychain 获取,Windows/Linux 需手动提供
--token --gist选项需要安装并认证 GitHub CLI(gh)- Changelog 回填使用外部 AI 评估器,会消耗 API 额度