想在自家服务器上跑一套完整的AI编程代理环境,到底有多难?一位折腾过Proxmox家庭实验室的用户给出了自己的答案:装起来意外地简单,难的是后面怎么让本地模型别乱来。
![]()
他此前一直不擅长写代码,如今靠Claude Code这类代理式编程工具边做边学,还把工具接到本地模型上以压低token开销。麻烦在于每换一台机器都要重新配置,于是他想到把整套东西集中到Proxmox上,通过浏览器随时访问。
最终选中的是Jean——来自coolLabs的开源工作区,采用Apache 2.0协议,同一团队还做过Coolify。它本身不运行模型,而是驱动Claude Code、Codex、OpenCode、Cursor、Pi、Grok、Kimi Code、Antigravity CLI等代理命令行工具。
Jean的机制是给每个任务分配独立的git worktree和分支,代理不会误写到主分支;一个无头服务守护进程把完整界面送到浏览器,靠访问令牌保证安全。任务在笔记本上发起后可以关掉设备,服务器继续跑,隔段时间登录界面看进度、批准卡住的运行即可。
它还带一个“Magic Menu”,预置了提交、审查、PR、冲突解决等提示词,可以在设置里改,也能自己加。对他而言,这解决了代理式编程最头疼的问题之一:搞清楚每个代理到底在干什么,同时让代码在同一台机器上获得规范的Git版本管理。
清单:这套环境是怎么搭起来的
- 在Proxmox上开一个Debian 13非特权LXC,分配四核、8GB内存、32GB存储。
- 安装Node LTS,创建非root的Jean用户,装好OpenCode,以该用户身份连接GitHub。
- 把Lemonade配置为OpenCode的提供方,让仪表盘接上本地模型。
- 在Caddy里为Jean的LXC加一段配置,拿到本地域名和HTTPS,随后就能开始使用。
默认安装会让代理以root身份运行,他不希望在存有真实数据的设备上这样,于是用--user jean参数建了非root用户,换来一层基本的安全保障。
真正费神的都在周边工具上:Debian的LXC要先设好locale,Perl才不再报错;GitHub登录必须以jean而非root身份执行;Cloudflare API令牌的存放位置也得修正,Caddy才能和新容器正常配合。这些都不算Jean本身的问题,更像是任何带多重依赖的Linux项目都会遇到的常规流程。
本地模型则让这份顺滑打了折扣。测试期间Jean和OpenCode双双更新,他没多想就都升了级,结果OpenCode 2.0.32版本出现登录异常,本地模型连不上。回滚到1.19.3后恢复正常,他把版本钉死,避免再次自动升级。
模型本身的表现更值得警惕。Jean的worktree路径把某个目录重复了一层,变成/home/jean/jean/jean-smoke/hello-script,Qwen3-Coder-Next自作主张“纠正”了这个路径,删掉一个“jean”,把代码写进了错误目录。它还顺手执行了git init、配置了新的全局身份,把文件提交进一个他根本没要求创建的仓库。
换到gpt-oss-120b后,问题变成另一种画风:第一次运行只写了个计划就停下,没有任何工具调用和文件产出,却声称自己创建了文件、改了权限、提交了hello.sh。另一次运行中,它选中Jean安装的agent-browser MCP,把worktree路径加为允许域名;关掉该MCP服务器后它不再走这条路,但仍反复请求离开worktree去用自己想用的文件夹。
解法是把模式切到Supervised,让代理做任何事之前先请求许可,同时在提示词里写明确切的worktree路径、限定只用该文件夹。两者结合后,Qwen3-Coder-Next按三步写出了要求的代码,并提交到git。
他的结论是:Jean装起来确实容易,现在家里任何一块屏幕都能访问;但学会怎么用好它更棘手,部分原因就是本地模型会以奇怪的方式卡住。他推测若换成云端订阅方案,遇到的问题大概会少一些,只是他坚持把所有东西留在本地。本地大模型,最好当成实习生来带。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.