HomeAgent 出站 Runner 与权限交集

HomeAgent 出站 Runner 与权限交集
星染网页版 ChatGPT 有 pro 模型,我的仓库在那台 Windows 台式上。中间隔着一次粘贴:我把代码贴进去,再把改好的贴回来。想要的是它自己翻开仓库,读文件、跑命令、看报错。
还有一个场景在朋友的机器上。远程改东西,装 Claude Code 或者 Codex 都行,代价是密钥留在一台别人也在用的电脑里。两件事要的是同一个结构:装在内网的 Runner 主动往外连,路由器不用开端口。
一台 VPS 和一台台式
Server 放在 VPS 上,Docker Compose 起,Caddy 在前面签证书。3210 只绑回环,80 和 443 归它。Runner 装在那台 Windows 11 台式上,开机启动。
配对在终端里做,填 Server 地址和设备名。浏览器给一个十分钟有效的批准链接,点完就连上。
入口是 /mcp,Streamable HTTP,官方 SDK v2。客户端接进来要么走 OAuth,要么用我在面板里发的 PAT。PAT 的权限分 read、write、execute、git 四档。面板、SQLite、审计都留在 Server 侧,Runner 那边只存一份设备凭据。
第一次失败
接上以后,读文件和两个发现类工具都正常,git 不动:拉库失败,提交也没成功。查下来不在 remote,在权限。
默认全关。写、执行、Git 各一组开关,设备能力和客户端授权取交集,少开一层请求就在服务端退回,仓库那边什么都收不到。
后来我把 git 的读写勾上,再试,通了。临时权限也能按分钟给,开 30 分钟到点自己收回,在飞的调用一起停。后面几条限制也围着同一件事:不让一次调用替我做决定。
白名单不是沙箱。给了 python,它就以 Runner 那个账户的权限跑。要跑不受信任的东西,换低权限账户或者进容器。
编辑、进程、输出
写文件要带整篇的 SHA-256,对不上就拒绝,不覆盖刚被别人改过的行。多文件改动进 journal,连接断过还能捡回来。进程认 job UUID,不认 OS PID。Linux 收进程组,Windows 收 Job Object,Runner 掉了整棵树跟着收。
长任务的输出不整段保存,前缀截在 64KB,尾部单独滚动,最后那行报错还在。
朋友的机器
Remote Assist。邀请十分钟过期,项目由他自己挑,1 到 16 个,读写执行分开勾,时限 30 分钟到 8 小时。他按停止,我这边立刻断,密钥不进他的电脑。
10-26 到 11-06
10-26
建仓,v0.3.0 公开,32 个工具。
10-27
v0.4.0,双层权限和受控 Git,fetch、pull、push 分开授权。
11-02
v0.4.17 与 v0.4.18,模糊 diff、持久 shell、LSP、PowerShell 引导。
11-04
文档双语化,测试 164/164。
11-06
v0.4.21 收尾,累计 24 个版本、51 个工具。
难点不在把连接打通,在打通之后,谁决定它能跑什么。
现在它在跑,Server 在 VPS,Runner 在台式上,开机启动。用的人只有我。
代码在 jhxxr/HomeAgent,MIT。朋友要用,缺的是一台能放 Server 的机器。









