1. 终端里的排障过程,为什么总是留不下来
Claude Code 用久了会发现一个尴尬的事实:真正值钱的东西不是某一次回答,而是整条排查路径。上午让它分析一个 OData V4 绑定异常,它读了哪些文件、跑了哪条命令、哪一步判断被推翻、最后收敛到什么结论——这些轨迹在终端里滚过去就没了。窗口一关,只剩一个模糊印象。
我试过直接复制终端文本,结果很糟糕。TUI 渲染会把长输出折叠、截断,工具调用的返回结果和模型判断混在一起,粘到文档里根本没法读。更麻烦的是,Claude Code 的一次 session 不是单纯问答流,而是带工具执行痕迹的工作流:读文件、执行命令、拿到输出、调整假设。终端里看到的是渲染后的界面,不是可归档的记录。
这里要区分两个概念。Claude Code 的 session 本身会持续保存在本地 transcript 文件里,目的是让你退出后还能回来,或者/clear之后仍能恢复旧对话。官方文档写得很直接,session 是 tied to a project directory 的 saved conversation,存在~/.claude/projects/<project>/<session-id>.jsonl,每行一个 JSON object。但这是给工具恢复用的内部账本,不是给人读的报告。
/export解决的正是这个断层。它把当前 conversation 导出为 plain text,带文件名时直接写入文件,不带文件名时打开菜单让你选复制到剪贴板或保存成文件。官方命令表里它的定位很清楚:不是恢复会话,不是清理上下文,而是把当前对话变成适合人阅读的 transcript。
为什么这件事对团队重要?因为一次排障经验如果只活在终端里,它就只是个人记忆。导出成可检索的文本后,它能进知识库、进 PR 说明、进故障复盘,甚至变成下一次同类问题的提示词模板。这篇就围绕 Claude Code 会话导出与定位,把从终端输出到可检索记录的完整链路走一遍。
2. 前置准备:TaoToken 接入与 Claude Code 环境确认
在讲导出之前,得先保证 Claude Code 能正常跑起来。如果你还在为模型接入折腾,可以走 TaoToken 这条线。官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api ,注意 API 地址不带 UTM 参数。
TaoToken 在这里的角色是提供兼容 Anthropic 协议的模型调用入口,Claude Code 通过它拿到模型响应。你需要准备三样东西:Base URL、API Key、Model ID。这三件套在后面的配置里会反复出现,缺一个都跑不通。
先说 Key 怎么拿。登录后进控制台,找到 API Keys 页面创建一个新 key。这个 key 只在创建时完整显示一次,复制下来存好。控制台地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API Keys 页面是 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。
Model ID 这块,Claude Code 场景下通常用 Anthropic 兼容的模型标识。具体可选哪些模型,可以在模型对话页面确认,地址是 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。如果你打算长期用 Claude Code 做编码和 Agent 任务,Coding Plan 会更划算,入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。
环境确认这一步别跳过。先在终端里确认 Claude Code 版本,claude --version能正常输出就说明 CLI 装好了。然后确认~/.claude目录存在,Windows 上它解析到%USERPROFILE%\.claude。这个目录后面会频繁出现,transcript、配置、缓存都在里面。
如果你用的是 Claude Code 的 Anthropic 官方接入方式,配置通常写在 settings 文件里。但如果你走 TaoToken,需要把 Base URL 指向https://taotoken.net/api,Key 用刚才创建的,Model ID 填你选定的模型。这三件套配好之后,claude启动时才能正常连上模型。
有个细节要注意:Claude Code 的 session 是和 project directory 绑定的。你在哪个目录启动claude,session 就归到那个 project 下。官方 session 页面说,session picker 默认展示当前 worktree 的 interactive sessions,按 Ctrl+W 扩大到当前 repository 的所有 worktrees,按 Ctrl+A 扩大到这台机器上的所有 projects。所以启动前先cd到正确的项目目录,不然后面导出和定位都会乱。
3. 可复制配置:settings.json 与导出工作流
这一节给可直接复制的配置片段。Claude Code 的配置分几层,用户级在~/.claude/settings.json,项目级在项目根目录的.claude/settings.json。走 TaoToken 接入时,核心是把 Base URL、Key、Model ID 三件套写对。
先看用户级配置。路径是~/.claude/settings.json,Windows 上是%USERPROFILE%\.claude\settings.json。内容如下:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "你的Model ID" }, "cleanupPeriodDays": 60 }这里ANTHROPIC_BASE_URL指向 TaoToken 的 API 地址,ANTHROPIC_API_KEY填你在 API Keys 页面创建的 key,ANTHROPIC_MODEL填选定的 Model ID。cleanupPeriodDays控制 transcript 保留天数,官方默认 30 天,这里改成 60 天方便复盘周期长一点的项目。
如果你不想把 Key 写死在文件里,可以用环境变量。在~/.zshrc或~/.bashrc里加:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="sk-你的TaoToken密钥" export ANTHROPIC_MODEL="你的Model ID"Windows PowerShell 用户则在$PROFILE里加:
$env:ANTHROPIC_BASE_URL = "https://taotoken.net/api" $env:ANTHROPIC_API_KEY = "sk-你的TaoToken密钥" $env:ANTHROPIC_MODEL = "你的Model ID"项目级配置适合团队统一。在项目根目录建.claude/settings.json:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_MODEL": "你的Model ID" } }注意项目级配置里不要放 Key,Key 走用户级或环境变量,避免提交到仓库。项目级只放 Base URL 和 Model ID 这类非敏感信息。
配置好之后,导出工作流本身不需要额外配置,/export是内置命令。但为了让导出文件规整,建议约定命名规则。比如按日期加任务号加分支:2026-07-06-auth-refactor-session.txt。这个规则写进团队文档,比每次临时起名强得多。
还有一个配置项值得提:CLAUDE_CONFIG_DIR。如果你想把~/.claude整个挪到别的盘,设置这个环境变量即可。官方文档说,配置了它之后,页面上所有~/.claude路径都会落到该目录下。这对 Windows 用户把数据放到非系统盘很有用。
最后确认一下 transcript 路径。默认是~/.claude/projects/<project>/<session-id>.jsonl,其中<project>来自工作目录路径,非字母数字字符会被替换成-。比如你在/Users/me/work/auth-service启动,project 目录名大概是-Users-me-work-auth-service。这个路径后面定位 session 时会用到。
4. 验证请求:从终端输出到可检索记录的完整动作
配置就绪后,走一遍完整验证。目标是:启动一个 session,做一次小排障,导出成文本,再定位到关键信息。
第一步,进项目目录启动 Claude Code。假设项目在~/work/auth-service:
cd ~/work/auth-service claude -n auth-refactor-n auth-refactor给 session 命名。官方文档说,描述性名称能让 session 在 picker 里更容易被找到,尤其适合并行处理多个任务。命名后可以用claude --resume auth-refactor或 session 内/resume auth-refactor回到它。
第二步,在 session 里做一次真实排查。比如让它查一个登录 403 问题:
帮我排查登录接口返回 403 的原因,先看 src/auth/login.ts 和 src/middleware/auth.tsClaude Code 会读文件、执行命令、给出判断。这个过程就是你要沉淀的轨迹。等它收敛到结论后,先别急着导出,让它整理一段 recap:
把本次排查整理成简短摘要:改了哪些文件、排除了哪些方案、还剩哪些风险这一步很关键。导出的文本开头附近有一段高度压缩的摘要,后面跟着完整过程,后来的人能快速进入现场。
第三步,执行导出。带文件名直接写入:
/export auth-refactor-session.txt不带文件名则打开菜单,可以复制到剪贴板或保存成文件。菜单模式适合临时分享,文件名模式适合归档。导出后确认文件生成:
ls -la auth-refactor-session.txt wc -l auth-refactor-session.txt第四步,验证可检索性。用 grep 定位关键信息:
grep -n "403" auth-refactor-session.txt grep -n "middleware" auth-refactor-session.txt grep -n "排除" auth-refactor-session.txt如果导出的是 readable transcript,这些关键词应该能命中,而且上下文可读。这就是「可检索记录」和「终端滚动缓冲区」的区别。
第五步,定位原始 session。如果之后想回到这个 session 继续工作,用:
claude --resume auth-refactor或者查 transcript 文件:
ls ~/.claude/projects/-Users-me-work-auth-service/你会看到<session-id>.jsonl文件。注意,这个 JSONL 是内部格式,官方明确说 entry format 属于内部实现,会在版本之间变化,直接解析的脚本可能在任何一次 release 后出问题。所以定位 session 用--resume,读内容用/export的文本,两者别混。
验证成功的标志是:auth-refactor-session.txt里能 grep 到排查关键词,claude --resume auth-refactor能回到原 session,两者内容对得上但用途不同。到这一步,一次排障就从终端输出变成了可检索的团队资产。
5. 常见报错排查:401、local proxy failed 与 reading choices
接入和导出过程中会碰到几类典型报错,逐个说清楚。
401 未授权。这个最常见,通常是 Key 不对或没生效。先确认ANTHROPIC_API_KEY填的是 TaoToken 控制台创建的 key,不是别的平台的。然后确认环境变量有没有被 shell 正确加载,echo $ANTHROPIC_API_KEY看输出。如果用的是 settings.json,确认 JSON 格式没写错,逗号、引号都要对。还有一种情况是 Key 创建后没复制完整,重新去 API Keys 页面生成一个。
local proxy failed。这个报错通常和 Base URL 有关。确认ANTHROPIC_BASE_URL是https://taotoken.net/api,注意结尾不要多加斜杠,也不要写成别的路径。如果你本地有网络层工具在跑,可能会干扰请求,先关掉再试。另外确认终端能正常访问外网,curl -I https://taotoken.net/api看返回。
reading choices 相关报错。这类通常出现在模型返回格式不符合预期时。先确认 Model ID 填对了,去模型对话页面核对可用模型列表。如果 Model ID 写错,请求可能返回非预期结构,Claude Code 解析时就报 reading choices 错误。改对 Model ID 后重启claude。
OAuth 相关报错。如果你之前用过 Anthropic 官方登录方式,本地可能残留 OAuth 凭证,和 API Key 方式冲突。检查~/.claude下有没有旧的凭证文件,必要时清理掉,统一走 API Key 方式。官方文档里 session 恢复入口包括claude --continue、claude --resume、claude --from-pr <number>,这些和接入方式无关,但凭证冲突会影响启动。
导出文件为空或内容不全。/export导出的是当前 conversation,如果 session 刚开始就导出,内容自然少。另外确认导出时没有在菜单里误选。带文件名的方式最稳,直接写入不经过菜单。
session 找不到。claude --resume <name>找不到 session,通常是启动目录不对。session 和 project directory 绑定,你得在同一个目录下 resume。用claude --resume不带参数会打开 picker,按 Ctrl+W 扩大到所有 worktrees,按 Ctrl+A 扩大到所有 projects,这样能找到跨目录的 session。
transcript 被清理。默认保留 30 天,超过就没了。如果你需要长期保留,把cleanupPeriodDays调大,或者定期把/export的文本归档到知识库。注意 transcript 是 plaintext,官方 .claude 目录说明里写到,~/.claude会保存 transcripts、prompt history、file snapshots、caches 和 logs,且这些文件是 plaintext。所以别让 Claude Code 读.env,别把 token、cookie、连接串贴进 prompt,导出前审阅一遍。
排查顺序建议:先看 401 确认 Key,再看 local proxy failed 确认 Base URL,然后看 Model ID 确认模型,最后看目录确认 session 定位。大部分问题出在前两步。
6. 把导出接进团队工作流:从个人记录到可检索资产
配置和排障都通了之后,剩下的是习惯问题。/export本身很简单,但真正决定它价值的是你怎么用它。
一个实用做法是命名和导出绑定。session 叫auth-refactor,导出文件就叫auth-refactor-session.txt。如果对应某个 PR,把 PR 号、分支名、日期加进去。几周后回看,文件名本身就是索引,不用打开十几个文件猜内容。
另一个做法是导出前做收束。让 Claude Code 先整理 recap,说明改了哪些文件、排除了哪些方案、还剩哪些风险,再执行/export。这样导出的文本开头就是摘要,后面跟完整过程,像病历里的主诉加检查记录。
团队协作层面,导出的文本建议放到项目文档目录之外,避免被误认为源码。transcript 里可能包含工具输出、路径、局部代码片段,除非团队明确要纳入 repo,否则更适合放内部知识库或工单系统。/export生成 plain text,迁移方便,泄露也方便,这两面要一起看。
还有一条边界要守住:脚本自动化不要拿/export当 API。官方文档说得很清楚,/exportproduces a rendered transcript for a person to read,脚本应该用claude -p --output-format json或stream-json,或者对已有 session 用claude -p --resume <session-id>拿结构化输出。人读的归人读,机器读的归机器读。
如果你要做 session 归档系统、日报生成、成本统计,走结构化接口。如果要做复盘文档、PR 说明、知识库条目,走/export。两条线并行,边界清楚,维护成本低。
最后回到接入这块。如果你还没配好 TaoToken,按第 3 节的 settings.json 填三件套:Base URL 用https://taotoken.net/api,Key 去 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 创建,Model ID 在 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 确认。长期跑编码和 Agent 任务的话,https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 更合适。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,配置细节以文档为准。
Claude Code 越深入日常开发,session 数据就越不该只是本地目录里一批看不懂的 JSONL。该恢复时用 transcript,该分享时用/export,该自动化时用 structured output。三者分清,一次排障才不会只活在终端里。