我的个人实验室 AI 开发平台
我设置了 OpenCode Web UI,并启用了 Git 访问,以便更容易管理我的个人实验室。OpenCode 将代码推送到 Git,我批准 PR,GitOps 部署更改。最重要的是,OpenCode 作为服务器运行,具有跨设备同步的持久编码会话。我很快会分享我的个人实验室设置。有大约十几个用于我管理的服务的 Docker Compose 堆栈。我最近将它们迁移到 Arcane,以便我可以通过 GitOps 管理/部署它们。下一个合乎逻辑的步骤是使用 AI 工具来帮助维护我的服务。首先想到的用途是使用 AI 帮助更新容器。之前,我会花时间查看每个服务的发布说明,检查是否有任何破坏性更改,运行更新,并手动检查每个服务是否存在问题。我会为此花费几个小时。现在,我可以在几分钟内阅读发布说明的摘要,使版本升级变得更容易、更安全。更重要的是,我使用 AI 为大多数容器添加健康检查,以便更快地发现问题。OpenCode 我主要使用 Claude Code,但 AI 提供商最近通过令牌限制在榨取客户的价值,所以我利用这个机会查看其他选项。我想要一些不依赖特定供应商,且被主要插件支持的东西。我最后选择了 OpenCode。可能还有其他不错的编码环境,但这是我尝试过的最喜欢的。然后我发现它自带一个内置的网络服务器和 Web UI,这让我产生了一个想法。AI 开发平台 我在 Truenas 主机上设置了一个基本开发工具的简单虚拟机,并将 OpenCode 网络服务器作为 systemd 单元添加。它是一个强大的环境,具有内置终端、文件浏览器、git 差异以及 git 工作树支持,用于同时管理多个编码会话。此外,OpenCode 的移动 Web UI 中有我见过的最好的问答弹出窗口。我在我的 Git 服务器上为 OpenCode 创建了一个独立用户,并提供了专用的 SSH 密钥。它可以克隆项目并推送分支,但不能直接推送到部署分支。我的工作流程确保 AI 在 PR 审核之后。OpenCode 编写更改,我自己在 PR 中合并。我认为这很有趣,但更重要的是,它可以防止未经审核的代码被部署。虚拟机可以访问互联网和我的 Git 服务器,但无法直接访问我的实际服务。因为影响范围很小,我很放心在虚拟机上给 OpenCode root 权限,以便它需要安装构建工具或测试依赖项。我可以看到将其构建成生产开发平台的可能性。为开发人员提供的短期容器,预装工具,有访问保护和审计日志。但对我来说,它在功能上没有太多复杂的部分,正好满足我的需要。 工作流程 我的基本工作流程是:在 OpenCode 中规划一个功能或改进(规范、实施计划和自我审核),如果可能,我会测试或验证更改。与 OpenCode 迭代我不喜欢的东西,OpenCode 将更改推送到功能分支,我会为该分支打开一个 PR,一旦我满意,我就会合并 PR。GitOps 在那之后接管 - Arcane 用于 Docker 服务更改,GitOps 插件用于 Home Assistant 配置更改,Cloudflare Pages 工作者用于博客更改。我将我的服务从 Truenas 迁移到 Arcane GitOps 项目。这主要是为了为我之前在 Truenas 运行的所有 Docker Compose 堆栈提供 Git 支持的存储。我对这与 OpenCode 的结合效果感到惊讶。例如,从我的手机更新所有容器的网络,使得管理变得更简单。以前,需要花费几个小时梳理所有 Compose 堆栈,追查网络连接。现在,我可以将 OpenCode 指向代码库并设定目标,检查生成的 PR 更改,然后合并。主要缺少的部分是 CI 反馈。在 GitHub 上,我喜欢将编码代理指向 Actions 日志,以便它可以诊断失败的测试、代码格式错误、堆栈跟踪和基础设施即代码计划更改。这有助于维护一个快速的反馈循环,以覆盖单元测试未涵盖的更改。Forgejo 使得这变得更加困难。Forgejo Actions 不通过公共 API 暴露作业日志。有一些未文档化的 API,但我宁愿不围绕这些构建。这个设置让我能够从任何设备对家庭基础设施进行更改,而无需让 AI 直接访问它所更改的服务。我可以从我的计算机开始更改,从手机审核 PR,并让 GitOps 处理部署。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡