跳转到内容
↑↓导航 ↵打开 esc关闭

扩展

扩展可以提供任务看板等全屏页面。从会话列表上方的扩展页面菜单打开。只有已启用并获批准的页面才会显示此菜单。选择聊天、重新加载、暂停、移除或切换服务器会关闭页面。扩展不能自行打开全屏页面。

扩展自身的数据保存在连接的服务器上,移除扩展时一并删除。看板可以跟踪多个项目和工作树的会话,而无需在项目中创建文件。

通过 设置 → 扩展 可以把其他人制作的面板添加到 OpenChamber。扩展是放在右侧栏上的一个小页面,与内置面板并排。它可以向你展示来自其他服务的数据,把任务附加到聊天中,如果你允许,还可以启动会话、发送提示或读取文件。

扩展在 OpenChamber 网页版和桌面版上运行。VS Code 和移动应用暂时不会加载它们。它们和 OpenCode 插件不是一回事。

安装扩展

标记为内置的扩展随所选 OpenChamber 实例提供。它们默认启用,声明的权限会自动授予,不显示额外的权限对话框。在卡片上使用停用或启用。内置扩展不能独立于应用删除或更新。停用会保留数据和已连接的账户,该状态在应用更新后也会保留。

它们的账户设置位于设置 → 集成 → 内置集成。服务访问你的账户时,仍可能需要 API 令牌或登录。

  1. 打开 设置 → 扩展。
  2. 把下面任意一项粘贴到 文件夹、ZIP 或 URL 字段,然后选择 添加:
    • 这台电脑上某个文件夹的绝对路径
    • 一个 .zip 文件的路径
    • 指向 git 仓库或 zip 文件的 https 链接
    • SSH Git 地址,例如 [email protected]:owner/extension.git
  3. 如果扩展请求权限,会有一个对话框列出这些权限。选择 允许并启用,或选择 移除 把它撤掉。

也可以把 .zip 拖到字段上,或者用旁边的压缩包按钮选择;压缩包会上传到 OpenChamber 服务器,所以远程实例也能用。在桌面版上,文件夹按钮会打开系统选择窗口,拖入的文件夹则按其路径安装。

扩展的图标会出现在侧栏上。如果没有出现,请看 故障排除。

从文件夹安装的扩展直接在该文件夹中运行,所以开发扩展的人可以边改边重新加载。zip 或 URL 会先复制到 OpenChamber 自己的数据文件夹;原始文件不会被改动。

私有仓库和 Git 身份

SSH 安装支持 [email protected]:owner/extension.git 和 ssh://[email protected]/owner/extension.git,可以添加 #branch-or-tag。在输入框旁的指纹菜单中选择全局身份或已保存的 Git 身份。更新检查和安装更新会沿用该选择,身份中的密钥变更会在下次操作时生效。

全局身份使用运行所选 OpenChamber 服务器的用户的 Git/SSH 配置和 SSH agent。对于远程实例,密钥必须在该服务器上可用。有密码的密钥需要先在服务器进程使用的 SSH agent 中解锁。HTTPS 使用 Git 的 HTTPS 凭据,不会自动切换为 SSH。Git 主机必须解析为公共地址;不支持本地 SSH 别名或私有网络目标。

扩展可以做什么

显示面板以及读取当前打开的项目和会话不需要权限。凡是代表你执行的操作都需要权限,整个列表你会在安装时看到一次:

  • 在你的会话中发送消息:向模型撰写并发送提示,这会消耗令牌,也可能运行工具。
  • 访问项目和会话:列出项目、工作树和会话状态,并在已添加的项目中创建和打开会话。不会读取对话内容。
  • 读写项目文件:当前打开项目中的任何文件。
  • 读写项目之外的文件:仅限对话框中列出的位置。
  • 使用你的 Small Model:在你的会话之外进行一次性文本生成,使用 设置 → 会话 → Small Model 中的模型。消耗令牌。
  • 连接外部服务:使用你在 设置 → 集成 中连接的账户。
  • 读取会话的对话:仅在你对该会话运行扩展的操作时。
  • 运行本地服务:一个拥有你全部用户权限的独立程序。只有信任作者时才允许。当扩展想得知你会话中发生的事时,这一行还会列出它会得知的时刻。一轮对话完成、一轮对话失败、代理请求权限、代理提出问题。它在每个项目中都会得知这些,无需打开窗口,而且只得到标识符,即会话、它的项目,以及你附加到它的条目。
  • 在后台读取代理所说的内容:每轮对话的最终回答、智能体提出的问题以及它请求权限的内容,会从每个项目发送到扩展的本地服务。只有信任扩展的发送目标时才允许。
  • 自行启动会话并发送消息:它的本地服务无需打开窗口就能这样做,这会消耗令牌,也可能运行工具。
  • 添加到代理读取的内容:你的会话指令中的文本,以及扩展开启时提供给每个代理的技能。
  • 向 OpenCode 添加插件:扩展开启时,包中的插件会加载到你的 OpenCode 中。插件代码像本地服务一样,以你的全部权限在 OpenCode 内部运行,所以只有信任作者时才允许。

本地服务还可以在 OpenChamber 运行期间持续运行,或按计划唤醒。对话框会在 运行本地服务 下说明这一点,也会说明你在 @ 后输入的内容何时发送给服务。扩展可以向 @ 菜单添加自己的行,也可以向代理的回复添加自己的块。暂停扩展后,这些都会失效。

把你的通知投递到 Slack、Matrix 或它自己的服务器的扩展,也会在 运行本地服务 下说明这一点。那一行以 通过 开头,后面是渠道名和 投递你的通知。在你于设置 → 集成中为它连接账户之前,什么都不会发出。之后它会收到你的手机会收到的内容,暂停扩展即可停止。

当新版本请求的权限超出你已允许的范围时,卡片会显示 需要批准 和一个 查看权限 按钮。在你允许新列表之前,这个扩展保持关闭。

它会出现在哪里

除了侧栏上的面板,扩展还可以在你已经在用的菜单里添加项目:聊天消息上的操作、会话的菜单、聊天框旁的 + 菜单,以及像 /task ABC-12 这样不打开任何东西就附加内容的斜杠命令。它还可以让自己的工具在聊天里拥有像 OpenChamber 内置工具那样的正式图标、标题和输出布局。提供哪些由扩展决定;在你允许该扩展之前,它们全部处于关闭状态。

有些扩展不显示自己的面板,而是显示实时画面:智能体在服务器上正在操作的内容,例如浏览器或模拟器。点击画面或输入即可接管控制,状态栏会显示由你控制,在你按下交还给智能体之前,智能体的浏览器操作都会被拒绝。复制和粘贴照常可用。同时连接的其他设备可以看到由谁控制,但无法夺取控制权。这类扩展还可以在画面旁边添加自己的控件,例如上方的地址栏或侧边的工具栏。

带 OpenCode 插件的扩展

扩展可以自带一个 OpenCode 插件,这样你只装一样东西而不是两样。它的权限对话框里有一行以 向 OpenCode 添加插件 开头。允许之后,OpenChamber 会在几秒内把插件加到它为你运行的 OpenCode 中,无需重启;停用或移除扩展会以同样的方式把插件拿掉。你自己的 opencode.json 不会被写入任何内容,所以插件不会比扩展活得更久,也不会在你从终端启动的 OpenCode 中运行。

当 OpenChamber 没有启动它所对话的 OpenCode,或者你的环境设置了自己的 OPENCODE_CONFIG 时,OpenChamber 的配置无法到达那个 OpenCode。扩展的页面会说明这一点并提供 添加到全局配置。它会把插件的文件夹写入你的全局 OpenCode 配置:之后它会在这台电脑上的每个 OpenCode 中运行(包括终端),在扩展关闭时仍保持启用,并由你在 设置 → 插件 中管理。如果你移除扩展,OpenCode 会把该条目列为加载失败的插件并继续运行,直到你在那里删除该条目。另一台机器上的 OpenCode 无法加载这台机器上的文件夹;页面会说明这一点。

VS Code 和移动端应用不加载扩展。隔离空间内的会话运行自己的 OpenCode,它永远不会收到插件。在企业模式下,插件被当作本地服务对待:扩展只能从管理员列出的仓库安装。

作为 Git 托管服务的扩展

扩展可以在 GitHub、GitLab、Gitea、Forgejo 和 Gerrit 旁边添加一个 Git 托管服务。这时它的权限对话框里会有一行以 作为 Git 托管服务 开头并写出托管服务名称的说明。这一行还会写明 OpenChamber 会发送给它什么:仓库名称、分支,以及你撰写的 issue 和拉取请求文本。

允许之后,该托管服务会在 设置 → 集成 中、内置托管服务旁边获得自己的卡片。在那里用令牌连接你的账号,如果卡片要求,再填写托管服务的地址。之后,远程仓库位于该托管服务上的项目就和其他项目一样:它的 issue 和拉取请求出现在 Issue 与 PR 看板和聊天的 + 菜单中,它的分支显示拉取请求徽标,你也可以从它的某个拉取请求开始一个 worktree。这些功能各自的作用见 Git 托管服务。

你的令牌留在 OpenChamber 中。扩展请求 OpenChamber 代它调用托管服务,OpenChamber 只在发往你所连接地址的调用中附上令牌。扩展永远拿不到它。

暂停扩展会让该托管服务消失,直到你重新启用,你的账号仍会保留。移除扩展会忘记该账号。VS Code 不显示来自扩展的 Git 托管服务。

OpenChamber SDK 中有一个可运行的示例 examples/source-control-provider,可以作为自己构建的起点。参阅 构建扩展。

作为跟踪器的扩展

扩展可以在 Linear 旁边添加一个工作项跟踪器:YouTrack、Jira、Plane,或它自己的跟踪器。这时它的权限对话框里会有一行以 作为跟踪器 开头并写出跟踪器名称的说明。这一行还会写明 OpenChamber 会发送给它什么:你的搜索和你打开的条目,以及会请它代你更改这些条目的状态、发布会话评论。

允许之后,该跟踪器会在 设置 → 集成 的 扩展账户 下获得自己的卡片。在那里连接账户:用令牌,或者先输入你在跟踪器注册的应用的 client id,再在浏览器中登录;如果卡片要求,先填写服务器地址。之后,它的条目会出现在 Linear 条目出现的所有地方:聊天的 + 菜单和选择器、New Worktree、会话的关联条目,以及你关注的条目的实时状态。粘贴它的条目链接也会同样被识别。这些功能各自的作用见 Linear。

你的令牌留在 OpenChamber 中。扩展请求 OpenChamber 代它调用跟踪器,OpenChamber 只在发往你所连接服务器的调用中附上凭据。扩展永远拿不到凭据,并且只有它的状态更改和评论调用可以在那里写入内容。

暂停扩展会让该跟踪器消失,直到你重新启用,你的账户仍会保留。移除扩展会忘记这些账户。VS Code 不显示跟踪器;手机上会显示跟踪器的条目,账户则在网页版或桌面版应用中连接。

OpenChamber SDK 中有一个可运行的示例 examples/tracker-provider,并附带一个可以在旁边运行的假跟踪器。参阅 构建扩展。

作为用量提供商的扩展

扩展可以在内置提供商旁边添加一个用量提供商:一个 OpenChamber 自己不读取的提供商,或者扩展自己的提供商。它的权限对话框中随之会有一行以 像内置提供商一样报告用量 开头,并列出它读取凭据的 OpenCode 提供商,例如 openrouter;不列出任何提供商的扩展会这样说明。

允许后,它的卡片会出现在 设置 → 用量 中内置提供商之后,带有扩展的名称和图标;勾选 在工作状态中显示 后,它会像任何内置提供商一样加入标题栏的速率限制、工作状态、手机的弹出层和桌面托盘。每次刷新时,OpenChamber 把 OpenCode 为每个列出的提供商保存的凭据交给扩展,此外不交任何内容;列出另一个提供商的版本会再次请求你的批准。用量由扩展自己读取,OpenChamber 则像绘制内置提供商那样绘制它。

暂停扩展会让卡片消失,直到你重新启用,你为它做的用量设置仍会保留。移除扩展会让卡片永久消失。VS Code 不显示来自扩展的用量;手机上会显示卡片,扩展则在网页版或桌面版应用中设置。隔离空间内的会话从该空间自己的服务器读取用量,那里没有扩展。

OpenChamber SDK 中有一个可运行的示例 examples/quota-provider,并附带一个可以在旁边运行的假用量 API。参阅 构建扩展。

连接它的账户

与某个服务通信的扩展会在 设置 → 集成 的 扩展账户 下获得一张卡片。根据服务不同,卡片会要求 API 令牌、用户名加令牌,或用于登录流程的 client id。选择 连接;断开 会忘记已保存的令牌。扩展声明的额外字段会在你离开时自动保存。

令牌保存在 OpenChamber 服务器上。扩展的页面永远看不到它。

更新

从 git URL 安装的扩展可以自行更新。打开 设置 → 扩展 时,每个扩展最多每小时检查一次;检查更新 会立即检查。有新版本的卡片会显示 有可用更新 和一个 更新 按钮。更新会保留你的权限、账户和设置;如果新版本要求更多权限,审批对话框会再次出现。文件夹和 zip 安装不会更新:请手动替换。

安装时在 git URL 后加上 #v1.2.0 或 #stable,即可跟随某个标签或分支,而不是默认分支。

暂停或移除

每张卡片都有一个 已启用 开关。关闭后扩展仍然保持安装,但面板会隐藏,调用会被阻止。移除 会把 zip 或 URL 安装从 OpenChamber 的数据文件夹中删除;对于文件夹安装,它只会忘记路径,你的文件夹会保留。

自己做一个

扩展能做的一切以及如何制作,请看 构建扩展。