mirror of
https://github.com/okxlin/appstore.git
synced 2026-09-22 16:00:58 +00:00
OpenCode Workstation
产品介绍
这是一个按 1Panel v2 应用商店目录组织的 OpenCode 运行环境。容器封装了持久化存储、运行时模式切换、oh-my-opencode 自动安装等能力,可在 1Panel 上快速部署一个带 Web UI 或 ACP 接口的 OpenCode 工作节点。
主要功能
- 持久化存储:工作区、配置、缓存、运行时数据分别独立挂载,容器重建不丢失
- 双模式运行:
serve(Web UI)和acp(agent<->agent 协议)两种模式 - oh-my-opencode 集成:支持单次执行或持久化安装,配套 DCP / GPT Unlocked 插件可选
- 多 provider 支持:OpenAI、Anthropic、OpenRouter、Gemini 等 API Key / Base URL 均可通过表单配置
- Docker 套接字可选:通过表单可配置是否挂载宿主机 Docker 套接字
访问说明
- Web / serve 默认端口:
http://<host>:4096 - ACP 默认端口:
8765 serve模式适合通过 1Panel 反向代理后再对外提供访问acp端口用于 ACP transport,不适合用浏览器页面探活
环境变量
所有敏感信息(API Key 等)通过表单中的 password 字段填写,写入 .env 文件。容器启动后由 entrypoint.sh 动态注入 OpenCode 配置。
内部升级指南
这个镜像的升级分成两部分:
- OpenCode userland:升级
opencode-ai本体 - oh-my-opencode:刷新插件、安装脚本和相关配置逻辑
重建容器会更新什么
重建容器会拉取最新镜像,但不会保证自动升级已持久化的 OpenCode 本体。
原因是容器启动时:
OPENCODE_BOOTSTRAP=1只会在opencode不存在时执行首次安装- 如果
/data/opencode里已经有现成的opencode,bootstrap 会直接跳过 OMO_AUTO_INSTALL=1则会在每次启动时重新执行oh-my-opencode安装/刷新流程
所以真实效果是:
- 重建容器:一定会更新镜像层
- OpenCode 本体:已存在时默认不会自动升级
- oh-my-opencode:开启自动安装时会刷新
手动升级 OpenCode userland
如果你要升级已持久化的 OpenCode 本体,应直接在容器内执行:
docker exec -it <container_name> bash
/app/scripts/update-opencode-userland.sh
升级完成后,可检查版本文件:
cat /data/state/oh-my-opencode-bootstrap/opencode.version
刷新 oh-my-opencode
如果你希望同步最新的 oh-my-opencode 安装逻辑、插件注册和配置刷新,有两种方式:
方式一:重建容器
前提:
启动时自动安装 oh-my-opencode = true
执行:
- 打开 1Panel → 已安装应用 → OpenCode Workstation
- 点击 重建
方式二:容器内手动刷新
docker exec -it <container_name> bash
bunx oh-my-opencode install --no-tui ...
bunx oh-my-opencode doctor
什么时候用哪种方式
- 只更新 OpenCode 本体:执行
/app/scripts/update-opencode-userland.sh - 只刷新 oh-my-opencode 行为:重建容器,或手动重新执行
bunx oh-my-opencode install ... - 安装指定版本:
OpenCode Package主要影响首次安装,或清空/data/opencode后重新安装oh-my-opencode Package可配合重建容器或手动安装流程生效
- 镜像层也要更新:在 1Panel 里重建容器
在 1Panel 里重建容器
- 1Panel 应用商店 → 已安装应用 → OpenCode Workstation → 参数/重建
- 按当前表单参数重新创建容器
持久化数据说明
容器数据按功能拆分挂载,重建容器不会丢失:
APP_DATA_DIR_1(./data/workspace):工作区代码APP_DATA_DIR_2(./data/config):OpenCode 配置APP_DATA_DIR_3(./data/cache):npm/opencode 缓存APP_DATA_DIR_4(./data/runtime):运行时数据
销毁容器时若勾选"删除数据目录"才会丢失持久化数据。
表单填写指南
必填字段
| 字段 | 说明 |
|---|---|
| Serve Port | Web UI 访问端口,默认 4096 |
| ACP Port | ACP 协议端口,默认 8765 |
| 时区 | 容器时区,默认 Asia/Shanghai |
| 工作区/配置/缓存/运行时挂载目录 | 四个数据持久化目录,默认挂载到 ./data/ 下 |
| 运行模式 | serve(Web UI)或 acp(协议模式) |
oh-my-opencode 选项
| 字段 | 说明 |
|---|---|
| Bootstrap OpenCode on Start | 首次运行此开关打开即自动安装 OpenCode 本体 |
| 启动时自动安装 oh-my-opencode | 默认开启,自动安装 oh-my-opencode 及其配套插件 |
| Install DCP Plugin | 启用 DCP(分布式代码处理)插件,默认开启 |
| Install GPT Unlocked Plugin | 启用 GPT Unlocked 插件,默认开启 |
| Claude / Gemini / Copilot Install Mode | 控制各模型 provider 的安装模式 |
| Extra Install Args | 传递给 oh-my-opencode 安装脚本的额外参数 |
| OpenCode Package | 默认为 opencode-ai;可改为 opencode-ai@版本,主要用于首次安装或重装 |
| oh-my-opencode Package | 默认为 oh-my-opencode;可改为 oh-my-opencode@版本 |
API Key 填写
| 字段 | 说明 |
|---|---|
| OpenAI API Key + Base URL | 填写 OpenAI 或兼容第三方接口(vLLM、LiteLLM、Ollama 等)的 Key 与地址 |
| Anthropic / OpenRouter / Gemini | 对应 provider 的 Key 与自定义地址(若有) |
| GitHub Token | 用于 Git 操作(拉取私有仓库等) |
| Git Author / Committer | 容器内 Git 提交的作者信息 |
高级选项
| 字段 | 说明 |
|---|---|
| OpenCode Default Model / Small Model | 覆盖 OpenCode 默认使用的模型 ID |
| OpenCode Provider ID Override | 覆盖默认 provider ID |
| OpenCode Extra Plugins | 额外注册的 OpenCode 插件(逗号分隔的 npm 包名) |
| Docker 套接字路径 | 留空等于不挂载 Docker 套接字 |
Introduction
A persistent OpenCode workstation packaged as a 1Panel v2 app. Supports serve and ACP modes, oh-my-opencode auto-install, and multi-provider LLM configuration through the deployment form.
Features
- Persistent volumes for workspace, config, cache, and runtime data
- Switchable serve (Web UI) and ACP (agent protocol) modes
- oh-my-opencode integration with DCP and GPT Unlocked plugins
- Multi-provider support via form fields (OpenAI, Anthropic, OpenRouter, Gemini)
- Optional Docker socket mount
- git author identity configuration