快速结论:官方 Troubleshooting 文档给出的典型路径是用户数据目录下的项目级 session 目录,例如类 Unix 环境中的 ~/.local/share/opencode/project/{project}/storage/session。实际路径会受操作系统、WSL、容器、远程 SSH 和安装方式影响,所以必须以当前运行环境中的真实目录为准。
先给结论:session 是本地、项目级数据
搜索“OpenCode 会话存在哪里”的人,通常不是想看概念解释,而是要找回历史对话、迁移上下文、排查磁盘占用,或者确认提示词和命令输出是否留在本机。它应该被当成私有项目记录:有排错价值,也可能包含敏感信息。
不要把官方路径示例理解成所有机器都完全一样。macOS、Linux、WSL、远程服务器和容器环境的用户数据目录可能不同;如果你是在 WSL 里运行 OpenCode,就不应该只在 Windows 用户目录里找。
还要区分 session、项目配置和 provider 密钥。会话历史用于恢复上下文;opencode.json 这类配置用于定义项目行为;API key 和 provider 凭据则应放在更受控的位置,不能和 session 备份混在一起。

复制或删除前的 5 个路径检查
第一,回到创建会话的同一个项目目录;第二,确认 OpenCode 当前运行环境的用户数据目录;第三,寻找与项目路径或项目 slug 对应的文件夹;第四,检查文件修改时间,确认它确实是最近使用的会话;第五,先复制到私有备份目录,再考虑删除。
如果你同时使用 Windows、WSL、远程服务器和本机终端,最容易找错位置。一个实用方法是在测试项目里新建一条极短会话,然后观察哪些目录的修改时间变化。这样可以在不碰真实项目的情况下确认路径模式。
不要只复制看起来像主文件的一个 JSON。旁边的元数据、索引或消息文件可能同样参与恢复。备份时复制整个项目 session 目录更稳妥。
先判断你要处理哪一种 session 任务
同样是查 OpenCode,本地 session、项目配置、provider 连接和社区信息其实是四类任务。先分清目标,再决定是查目录、备份、迁移、删除,还是去看配置页。
| 场景 | 建议动作 | 原因 |
|---|---|---|
| 需要找到 session 文件夹 | 先确认运行环境和项目数据路径 | 宿主机、WSL、容器、SSH 主机和不同项目 slug 都可能对应不同目录 |
| 在找 opencode.json | 去看配置教程而不是 session 目录 | 项目配置、provider 密钥和会话记录应分开管理 |
| 要排查 provider 连接 | 先检查凭据、模型和 provider 设置 | 连接失败通常不是 session 存储问题 |
| 想迁移到另一台机器 | 先在目标机器打开项目,再恢复私有备份 | 先生成目标目录能减少路径和版本不匹配 |
| 准备分享 session 文件 | 优先写摘要或最小复现 | 原始 session 可能包含 prompt、路径、代码片段、终端输出和密钥 |
如何安全备份或迁移 OpenCode session
备份前先关闭 OpenCode,避免正在写入的文件被复制到一半。把项目 session 目录复制到仓库外的私有位置,例如加密磁盘、私有备份目录或公司允许的安全存储。不要把 session 目录提交进 Git,因为里面可能有提示词、路径、代码片段和命令输出。
迁移到新机器时,先安装 OpenCode,并在目标项目里打开一次,让基础目录生成出来。然后再复制相关项目的 session 目录。恢复后先检查历史是否能正常显示,不要直接覆盖唯一备份。
团队协作时,优先分享总结,而不是直接发原始 session 文件。总结可以保留排错结论,同时减少泄露内部路径、私有代码和密钥片段的风险。

分享或清理前的隐私检查
session 文件可能不只是聊天文本,还可能包含终端输出、文件路径、堆栈、环境变量名、模型回答和局部源码。分享前至少搜索 API key、Bearer token、私有域名、客户标识、内部仓库名和环境变量。
如果你是为了反馈 bug,最好在一个最小复现项目里重新创建会话,而不是从真实业务项目里手工脱敏。脱敏很容易漏掉命令输出里的 token 或错误堆栈里的内部地址。
清理旧 session 可以降低磁盘占用和隐私风险,但前提是你知道删的是哪一个项目。如果会话可能影响审计、交接或排错,先备份再删除。

预期目录为空时怎么排查
目录为空通常意味着运行环境找错、用户账号找错、项目 slug 变化或版本路径不同。先确认当时是在本机、WSL、SSH、容器还是另一个用户下运行 OpenCode,再按修改时间反查可能的数据目录。
如果项目移动过路径,旧 session 也可能还在,只是没有被当前项目自动关联。此时不要急着运行清理命令,先复制候选目录,再查看文件名、时间戳和 JSON 结构。
重要会话没有找到时,先停止写入和删除操作。继续新建会话可能会改变目录状态,增加排查难度。
小结:把 session 当成私有项目记录
OpenCode session 能帮助恢复上下文,也可能暴露上下文。正确做法是记录路径、制定备份规则、禁止提交到 Git、分享前脱敏、删除前留存私有备份。团队可以把这些规则写入内部 AI 编程工具使用说明。
OpenCode session 存储 FAQ
OpenCode 会话到底存在哪里?
通常在 OpenCode 的本地用户数据目录中,并按项目拆分 session 目录。请以官方 Troubleshooting 文档和当前运行环境的实际路径为准。
可以删除旧 session 吗?
可以,但先关闭 OpenCode,并在可能需要排错或审计时保留私有备份。
session 文件能提交到 Git 吗?
不建议。它可能包含提示词、源码片段、命令输出、本地路径和敏感上下文。
为什么我找不到 session 目录?
常见原因是你在 Windows 找,但会话是在 WSL、SSH、容器或另一个用户环境里创建的。
可以把 session 迁移到新机器吗?
通常可以复制项目级 session 数据,但应先让新机器生成基础目录,再恢复副本并验证。
Sources
路径示例以官方文档为准,第三方工具页面只作为理解 session JSON 用途的辅助参考。