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 --gist

2. 会话包装器(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 20

4. 项目级归档(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(默认)、jsonbulletstable

验证质量#

# 检查 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-run

6. 源文件匹配#

当运行并发 AI 会话时,工具通过智能匹配识别正确的日志文件:

  1. 扫描 ±1 天范围内的会话目录
  2. 过滤在会话窗口内修改的文件
  3. 读取首尾条目获取实际会话边界
  4. 验证会话是否在预期目录中启动
  5. 最小化时间戳差值找到最佳匹配

结果保存到 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(项目根目录)

优先级(从高到低)#

  1. CLI 参数
  2. 环境变量
  3. 项目级配置(.ai-code-sessions.toml / .ais.toml
  4. 全局配置(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(1true
CTX_ACTORChangelog 作者(用户名)
CTX_CHANGELOG_EVALUATOR评估器:codexclaudecodex
CTX_CHANGELOG_MODEL评估器使用的模型
CTX_CHANGELOG_CLAUDE_THINKING_TOKENSClaude 思考 token 数8192
AI_CODE_SESSIONS_LOG_DIR日志文件目录

Changelog 系统详解#

条目结构#

每个 changelog 条目包含:

字段说明
summary会话目的的一行描述
bullets3-5 个具体变更或成果
tags分类标签(featfixrefactordocs 等)
touched_files创建/修改/删除/移动的文件
tests测试命令 + 结果(pass/fail/unknown
commits会话期间的 Git 提交

存储位置#

.changelog/
└── your-username/
    ├── entries.jsonl      # 成功的 changelog 条目(追加写入)
    └── failures.jsonl     # 失败的生成尝试(用于调试)

评估器选择#

评估器默认模型特点
codex(默认)gpt-5.2 + xhigh 推理快速,擅长摘要
claudeopus + 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-sessionsclaude-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 config

Q2:导出结果和 claude-code-transcripts 一样#

基础的 localall 命令确实输出相同的 HTML,因为 ai-code-sessions 是 claude-code-transcripts 的 fork,共享同一套 HTML 渲染引擎。区别在于 ctxarchivechangelog 等独有功能。如果只用基础导出,两者没有区别。

Q3:archive 找不到会话#

确认当前目录是 git 仓库根目录,且项目中存在 .claude/.codex/ 目录:

# 检查是否在 git 仓库中
git rev-parse --show-toplevel

# 手动指定项目根目录
ais archive --project-root D:\Documents\IDE\202602

Q4: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 变更而暂时不可用。建议使用 localall 命令导出本地会话。

Q7:--gist 选项报错#

需要安装并认证 GitHub CLI:

# 安装 gh
winget install GitHub.cli

# 认证
gh auth login

# 然后就可以使用 --gist
ais local --gist

Q8:Windows 上时区设置#

默认时区是 America/Los_Angeles,建议修改为本地时区:

# 方式 1:环境变量
$env:CTX_TZ = "Asia/Shanghai"

# 方式 2:配置文件(推荐)
# 运行 ais setup 或手动编辑 %APPDATA%\ai-code-sessions\config.toml
# [ctx]
# tz = "Asia/Shanghai"

已知限制#

  1. web 命令因 Claude 非官方 API 变更而暂时不可用
  2. macOS 上 API 凭据自动从 Keychain 获取,Windows/Linux 需手动提供 --token
  3. --gist 选项需要安装并认证 GitHub CLI(gh
  4. Changelog 回填使用外部 AI 评估器,会消耗 API 额度

相关资源#