OpenCode 会话安全分享实战:从入门到团队策略
📚 分类: OpenCode 入门与协作 ⏱️ 预计耗时: 15 分钟 🎯 难度: 入门 🔧 环境要求: 已安装并配置好 OpenCode CLI 或 TUI
你将学到什么
完成本教程后,你将能够:
- [ ] 理解 OpenCode
/share命令的分享机制和数据流 - [ ] 根据场景选择
manual、auto、disabled三种分享模式 - [ ] 在分享前执行“安全检查清单”,避免敏感信息泄露
- [ ] 手动分享(
/share)和取消分享(/unshare)一个会话 - [ ] 为团队项目配置默认的禁用分享策略
最终效果
你将学会如何安全地分享一个 OpenCode 会话,生成一个形如 opncd.ai/s/<share-id> 的公开链接,并在分享完成后安全地撤销它。同时,你将掌握一套团队层面的默认安全策略,防止意外泄露。
前置准备
在开始前,请确认你的环境满足以下条件:
| 检查项 | 要求 | 验证方法 |
|---|---|---|
| OpenCode | 已安装并登录 | 在终端输入 opencode --version,应看到版本号 |
1. 确认 OpenCode 已就绪
$ opencode --version
# 预期输出类似:opencode/1.2.3 (linux-x64) node-v18.16.0✅ 验证:如果看到版本号,说明 OpenCode 已正确安装。
💡 提示:如果你还没有安装 OpenCode,请先访问其官网完成安装。
第 1 步:理解分享的核心机制
🎯 目标:了解 /share 命令做了什么,以及分享后的数据流向。
在开始操作前,你需要明白:OpenCode 的 /share 命令不是截个图发给你,而是将整个当前会话(包括你的提问、OpenCode 的回复、文件片段、命令输出等)同步到 OpenCode 的分享服务器,并生成一个任何人拿到链接都能打开的公开 URL。
分享数据流
- 本地会话:你在本地终端中与 OpenCode 进行对话。
- 执行
/share:你输入/share命令。 - 同步到服务器:OpenCode 将当前会话的所有历史记录打包,发送到
opencode.ai的分享服务。 - 生成链接:服务器返回一个唯一的公开链接,例如
opncd.ai/s/abc123。 - 访问者浏览:任何拥有此链接的人都可以在浏览器中打开它,查看完整的会话内容。
取消分享
当你执行 /unshare 命令时,OpenCode 会通知服务器移除该分享链接,并删除服务器上存储的会话数据。
🤔 为什么要理解这个机制? 因为这意味着:分享前,请把该会话当成一个公开网页来处理。不要假设它“只有团队成员可见”。
✅ 验证:你已经理解了分享的本质是“生成一个公开的、可被任何人访问的网页链接”。
第 2 步:根据场景选择分享模式
🎯 目标:学会配置 OpenCode 的三种分享模式:manual、auto、disabled。
OpenCode 的 share 配置有三种模式,你需要根据使用场景进行选择。
| 模式 | 行为 | 适合场景 |
|---|---|---|
manual (默认) | 只有当你手动输入 /share 命令时,才会生成分享链接。 | 个人日常使用、临时向他人求助。 这是最安全的默认选项。 |
auto | 每次开启新会话时,都会自动创建一个分享链接。 | 极少数的公开演示,或一个固定团队的公开协作环境。请谨慎使用。 |
disabled | 完全禁用分享功能。任何 /share 命令都会被忽略。 | 私有仓库、客户项目、企业试用、任何包含敏感信息的项目。 这是最保险的策略。 |
如何配置分享模式?
你可以在项目根目录下的 opencode.json 文件中进行配置。
📝 操作:
- 打开或创建项目根目录下的
opencode.json文件。 - 在文件中添加
"share"字段。
{
"$schema": "https://opencode.ai/config.json", // 配置文件的 schema 校验地址
"share": "disabled" // 将分享模式设为“禁用”
}✅ 验证: 保存文件后,重新启动 OpenCode 会话,此时任何 /share 命令都将无效。
⚠️ 常见错误: 错误做法:在团队项目中,只靠口头约定“大家别点分享”。 正确做法:将 "share": "disabled" 写入项目配置文件,并提交到 Git 仓库。这样,所有团队成员拉取代码后,其分享功能都会被默认禁用,从根源上杜绝风险。
第 3 步:手动分享与取消分享
🎯 目标:学会使用 /share 和 /unshare 命令来手动控制会话分享。
这是 manual 模式下最常用的操作。
3.1 手动分享当前会话
📝 操作:
在 OpenCode 的对话界面中,直接输入以下命令并回车:
/share✅ 验证: 系统会输出类似以下信息,并将链接自动复制到你的剪贴板:
✅ 会话已分享!
链接:opncd.ai/s/abc123
链接已复制到剪贴板。现在,你可以将这个链接发送给其他人。
3.2 取消分享当前会话
当问题解决、复盘结束,或者链接不再需要时,你应该立即撤销分享。
📝 操作:
在 OpenCode 的对话界面中,直接输入以下命令并回车:
/unshare✅ 验证: 系统会输出类似以下信息,确认分享已撤销:
✅ 会话已取消分享,相关数据已删除。💡 提示:建议将 /unshare 作为每次分享后的“收尾动作”,形成习惯。
第 4 步:执行分享前的安全检查清单
🎯 目标:在每次执行 /share 前,系统地检查会话中是否包含敏感信息。
这是最重要的一步。在点击回车执行 /share 之前,至少花一分钟,快速扫描你的会话,检查以下内容:
- [ ] 密钥与凭证:会话中是否有 API key、Token、Cookie、SSH Key、OAuth 回调信息?
- [ ] 配置文件:命令输出中是否有
.env文件内容、CI secrets(持续集成密钥)、数据库连接串、私有镜像仓库的 Token? - [ ] 内部信息:文件片段中是否包含客户名称、邮箱、订单号、账号、内部项目代号?
- [ ] 网络与路径:错误日志中是否暴露了内网域名、私有 IP 地址、服务器上的绝对路径、用户目录名?
- [ ] 商业机密:对话中是否讨论了未公开的产品策略、报价、合同条款或安全漏洞细节?
- [ ] 基础设施:分享后是否会暴露团队正在使用的 AI 供应商(Provider)、模型(Model)、API 网关或安全策略?
🤔 为什么要做这个检查? 因为真正的安全判断不是“我有没有贴密钥”,而是“这段会话公开后,一个陌生人能不能推断出不该公开的信息”。比如,一个内部服务器的路径名,即使不包含密码,也可能泄露你的技术栈和网络结构。
💡 更稳妥的做法: 如果你只是想让人帮忙看一个报错,更安全的方法是:先将会话中相关的最小必要信息复制出来,手动脱敏(例如将 my-db-server.internal.com 替换为 [internal-db]),然后再分享,而不是把整个会话直接公开。
第 5 步:制定团队默认策略
🎯 目标:为不同性质的项目,建立一套分层级的分享默认策略。
个人学习可以保留 manual 模式。但对于团队项目,建议按以下方式分层处理:
| 项目类型 | 默认策略 | 理由 |
|---|---|---|
| 教程示例、公开 Demo | manual | 必要时手动分享,方便展示。 |
| 开源项目 | manual | 默认不分享,CI 集成时需单独检查分享配置和日志输出。 |
| 私有业务项目 | disabled | 绝对禁用,防止任何意外泄露。 |
| 客户交付项目 | disabled | 同上,保护客户数据安全。 |
| 企业统一环境 | disabled | 通过集中配置(如企业版管理后台)强制禁用或限制分享。 |
企业版额外能力: 如果使用 OpenCode Enterprise,你还可以:
- 通过 SSO(单点登录)限制只有通过公司身份系统认证的用户才能查看分享。
- 将分享页面托管在自己的服务器上,数据不出内网。
✅ 验证:你已经可以根据项目类型,为 opencode.json 文件设置正确的 share 策略。
进阶技巧(可选)
1. 分享前快速脱敏
如果你需要分享的会话中包含少量敏感信息(如一个内部 IP 地址),可以在分享前手动修改你的问题描述,用占位符替换真实信息。
- 原始:
帮我看看为什么连接 10.0.0.5:3306 失败? - 脱敏后:
帮我看看为什么连接 [内部数据库 IP]:3306 失败?
2. 结合 CI/CD 自动化检查
在 CI(持续集成)流程中,可以编写脚本检查日志输出中是否包含类似 sk-(OpenAI Key 前缀)或 -----BEGIN(SSH Key 前缀)等模式,如果发现则使流水线失败,防止敏感信息被自动分享。
常见问题 (FAQ)
Q1: 我执行了 /share,但链接打不开?A: 首先检查你的网络是否能正常访问 opencode.ai。其次,确认该会话没有被执行过 /unshare。如果链接是几小时前生成的,可能已经过期或被服务器清理。
Q2: 我不小心分享了一个包含 API Key 的会话,怎么办?A: 立即执行 /unshare 命令! 这会立即删除服务器上的数据。同时,立即去对应的服务商(如 OpenAI、AWS)的控制台,轮换(重新生成)该 API Key,让旧的 Key 失效。这是唯一能彻底解决问题的方法。
Q3: 如何知道当前会话是否已被分享?A: 在 OpenCode 的 TUI(终端用户界面)中,通常会在界面的某个角落(如标题栏)显示一个分享图标或状态。在 CLI 中,可以再次输入 /share,如果已经被分享,系统会提示“此会话已被分享”并给出链接。
总结
恭喜你完成了本教程!🎉
回顾一下我们今天学到的核心内容:
- 分享即公开:
/share生成的是任何人都能访问的公开链接,分享前务必小心。 - 选择模式:根据场景选择
manual(个人日常)、auto(公开演示)或disabled(敏感项目)。 - 安全检查:分享前执行“六项检查清单”,确认无密钥、配置、内部信息泄露。
- 手动操作:掌握
/share和/unshare命令,并养成“分享后即撤销”的习惯。 - 团队策略:为不同项目在
opencode.json中配置不同的share策略,从代码层面杜绝风险。