Skip to content

OpenCode 会话安全分享实战:从入门到团队策略

📚 分类: OpenCode 入门与协作 ⏱️ 预计耗时: 15 分钟 🎯 难度: 入门 🔧 环境要求: 已安装并配置好 OpenCode CLI 或 TUI


你将学到什么

完成本教程后,你将能够:

  • [ ] 理解 OpenCode /share 命令的分享机制和数据流
  • [ ] 根据场景选择 manualautodisabled 三种分享模式
  • [ ] 在分享前执行“安全检查清单”,避免敏感信息泄露
  • [ ] 手动分享(/share)和取消分享(/unshare)一个会话
  • [ ] 为团队项目配置默认的禁用分享策略

最终效果

你将学会如何安全地分享一个 OpenCode 会话,生成一个形如 opncd.ai/s/<share-id> 的公开链接,并在分享完成后安全地撤销它。同时,你将掌握一套团队层面的默认安全策略,防止意外泄露。


前置准备

在开始前,请确认你的环境满足以下条件:

检查项要求验证方法
OpenCode已安装并登录在终端输入 opencode --version,应看到版本号

1. 确认 OpenCode 已就绪

bash
$ opencode --version
# 预期输出类似:opencode/1.2.3 (linux-x64) node-v18.16.0

验证:如果看到版本号,说明 OpenCode 已正确安装。

💡 提示:如果你还没有安装 OpenCode,请先访问其官网完成安装。


第 1 步:理解分享的核心机制

🎯 目标:了解 /share 命令做了什么,以及分享后的数据流向。

在开始操作前,你需要明白:OpenCode 的 /share 命令不是截个图发给你,而是将整个当前会话(包括你的提问、OpenCode 的回复、文件片段、命令输出等)同步到 OpenCode 的分享服务器,并生成一个任何人拿到链接都能打开的公开 URL。

分享数据流

  1. 本地会话:你在本地终端中与 OpenCode 进行对话。
  2. 执行 /share:你输入 /share 命令。
  3. 同步到服务器:OpenCode 将当前会话的所有历史记录打包,发送到 opencode.ai 的分享服务。
  4. 生成链接:服务器返回一个唯一的公开链接,例如 opncd.ai/s/abc123
  5. 访问者浏览:任何拥有此链接的人都可以在浏览器中打开它,查看完整的会话内容。

取消分享

当你执行 /unshare 命令时,OpenCode 会通知服务器移除该分享链接,并删除服务器上存储的会话数据。

🤔 为什么要理解这个机制? 因为这意味着:分享前,请把该会话当成一个公开网页来处理。不要假设它“只有团队成员可见”。

验证:你已经理解了分享的本质是“生成一个公开的、可被任何人访问的网页链接”。


第 2 步:根据场景选择分享模式

🎯 目标:学会配置 OpenCode 的三种分享模式:manualautodisabled

OpenCode 的 share 配置有三种模式,你需要根据使用场景进行选择。

模式行为适合场景
manual (默认)只有当你手动输入 /share 命令时,才会生成分享链接。个人日常使用、临时向他人求助。 这是最安全的默认选项。
auto每次开启新会话时,都会自动创建一个分享链接。极少数的公开演示,或一个固定团队的公开协作环境。请谨慎使用。
disabled完全禁用分享功能。任何 /share 命令都会被忽略。私有仓库、客户项目、企业试用、任何包含敏感信息的项目。 这是最保险的策略。

如何配置分享模式?

你可以在项目根目录下的 opencode.json 文件中进行配置。

📝 操作

  1. 打开或创建项目根目录下的 opencode.json 文件。
  2. 在文件中添加 "share" 字段。
json
{
  "$schema": "https://opencode.ai/config.json", // 配置文件的 schema 校验地址
  "share": "disabled"                           // 将分享模式设为“禁用”
}

验证: 保存文件后,重新启动 OpenCode 会话,此时任何 /share 命令都将无效。

⚠️ 常见错误错误做法:在团队项目中,只靠口头约定“大家别点分享”。 正确做法:将 "share": "disabled" 写入项目配置文件,并提交到 Git 仓库。这样,所有团队成员拉取代码后,其分享功能都会被默认禁用,从根源上杜绝风险。


第 3 步:手动分享与取消分享

🎯 目标:学会使用 /share/unshare 命令来手动控制会话分享。

这是 manual 模式下最常用的操作。

3.1 手动分享当前会话

📝 操作

在 OpenCode 的对话界面中,直接输入以下命令并回车:

bash
/share

验证: 系统会输出类似以下信息,并将链接自动复制到你的剪贴板:

text
✅ 会话已分享!
链接:opncd.ai/s/abc123
链接已复制到剪贴板。

现在,你可以将这个链接发送给其他人。

3.2 取消分享当前会话

当问题解决、复盘结束,或者链接不再需要时,你应该立即撤销分享。

📝 操作

在 OpenCode 的对话界面中,直接输入以下命令并回车:

bash
/unshare

验证: 系统会输出类似以下信息,确认分享已撤销:

text
✅ 会话已取消分享,相关数据已删除。

💡 提示:建议将 /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 模式。但对于团队项目,建议按以下方式分层处理:

项目类型默认策略理由
教程示例、公开 Demomanual必要时手动分享,方便展示。
开源项目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,如果已经被分享,系统会提示“此会话已被分享”并给出链接。


总结

恭喜你完成了本教程!🎉

回顾一下我们今天学到的核心内容:

  1. 分享即公开/share 生成的是任何人都能访问的公开链接,分享前务必小心。
  2. 选择模式:根据场景选择 manual(个人日常)、auto(公开演示)或 disabled(敏感项目)。
  3. 安全检查:分享前执行“六项检查清单”,确认无密钥、配置、内部信息泄露。
  4. 手动操作:掌握 /share/unshare 命令,并养成“分享后即撤销”的习惯。
  5. 团队策略:为不同项目在 opencode.json 中配置不同的 share 策略,从代码层面杜绝风险。