真正要搬的只有约 1 GB,其余 7 GB 不该搬。两个 profile 合计 1.7 GB,里面 state.db 占 963 MB、LSP 二进制 146 MB、缓存 245 MB、旧备份 371 MB、bin/tirith 34 MB(Mach-O,Linux 跑不了)。核心可迁移资产是 178 个自建技能 + 两份 config + 80/90 个密钥 + 私有脚本。
迁移路径已经有人替你铺好了:hermes-agent-data(87 MB,gitcode 私有仓库,每晚 22:00 自动提交)已经把 skills / memories / cron / config 纳入版本控制,容器 git clone 后按家族分拣即可,不需要 rsync 搬文件。
三个硬约束先说清:① 容器没有图形界面,公众号/抖音后台的扫码登录做不了;② 内网模型网关(leaptic / tokenhub / 302api)依赖 Mac 上那条 SSH 隧道,不重建就用不了;③ ~/hermes-agent-data/ssh/ 里有 明文私钥,已经推进了 git。
Mac 侧 ~/.hermes 是 git 安装(hermes-agent @ 1298c8e74b,2026-10-04,工作区干净),由 launchd 托管两个进程:
| 组件 | 实测 |
|---|---|
| ai.hermes.gateway | 常驻网关,pid 627;飞书 + Telegram + 元宝三平台接入 |
| ai.hermes.model-tunnel | pid 621,ssh -N -L 127.0.0.1:14000:litellm.leaptic.tech:443,先试办公网 10.6.41.142 再走 cloudflared 别名 cloud |
| com.nanshanju.* | 7 个站点服务(noteweb / reader / reports / books / mms / mms-tunnel / mms-revssh)——不在本次迁移范围 |
| 项 | tangming(个人向) | work(公司运维向) |
|---|---|---|
| 体积 | 707 MB | 1.0 GB |
| 接入平台 | 飞书(独立应用 cli_aa1254b5…,home oc_4bd0b182…,一个群免 @)+ Telegram + 元宝 | Telegram(config 无 platforms 块,全靠 .env);channel_directory 里有 AI Coding / 腾讯云 / Slide 多组话题群 |
| 技能 | 87 活跃(84 自建)+ 66 归档 | 97 活跃(94 自建)+ 112 归档 |
| state.db | 290 MB · 221 会话 · 45,069 消息 | 673 MB · 349 会话 · 112,271 消息 |
| cron | 4 个,1 个启用(22:00 备份) | 6 个,5 个启用(心跳 60m、备份 22:00、SSL 提醒、state.db 备份 03:20、站点保活 5m) |
| 私有脚本 | 7 个(gzh_metrics.py、wx_rate_watch.py…) | 24 个(acr_cred_refresh.py、cdn_internal_flip.py…) |
| 插件 | model-providers/opencode-acp | hermes-achievements(自写)+ opencode-acp |
| 额外状态 | A2A 127.0.0.1:9901,token 明文写在 config.yaml | a2a 会话记录 8 份;state.db.bak-migration 160 MB 旧备份 |
来源:du -sh ~/.hermes/profiles/* · sqlite3 mode=ro&immutable=1 统计 · cron/jobs.json · .env 键名(值未读取)
douyin-cli weibo-cli zhihu-cli xianyu-clituiyouhui-cli wxstore-cli wxstore-api-cliwxstore-web wxstore-mms reader-card booksnanshanju-infra noteweb(simple-note)hummerstudio.github.io yuetool-com.github.iotc-service-docs photon-srcjenkins-atom-sdk -plugin -demojenkins-shared-library pkr-step(上游)rpu ci_scripts agentic-devopsmomenta-ios-offline tc-docs-reconPycharmProjects/qc/*(3 个)hacker-path quanhermes-agent-data(数据备份仓库)~/hermes-agent-data(87 MB,gitcode/tangmoying/hermes-agent-data)由 cron 每晚 22:00 同步并 push,内容含 config.yaml / SOUL.md / memories/ / skills/ / cron/ / reports/ / tccli/ / ssh/。最近三次提交:10-26(70 文件)、10-25(55 文件)、10-25(245 文件)——这就是现成的迁移通道。
| profile | 承接 | 为什么这样切 |
|---|---|---|
| content | 内容 11 仓库 + social-media/*、creative/*;依赖 ~/.wxstore 与 API token | 共用内容风格/素材/发布红线;发布是不可逆动作,凭据边界必须独立 |
| web | 站点 6 仓库 + nanshanju-web-deploy、noteweb、jekyll-* | 共用服务器/域名/隧道,按话题分二级域;一个群足够 |
| jenkins | 插件 8 仓库 + devops/jenkins-*(6 个)、android-*、github/* | SDK↔插件版本互锁,必须同一上下文才能改 |
| ops 建议新增 | work 里 50+ 个公司运维技能:阿里云 / Devtron / LDAP / Jumpserver / 云桌面 / 成本 | 不然 jenkins profile 里混进公司内网运维,memory 与凭据全线打架 |
| default | 杂事、临时查询;历史只读检索 | 保持干净 |
依据:work 的 94 个自建技能里约 55 个属于公司运维域(devops/aliyun-ops、devtron-api、jumpserver-api、ldap-ops、cloud-desktop-*、cloud-cost/*…),全部塞进 jenkins 只会让那个 profile 膨胀到不可用。
| 条目 | 体积 | 容器上的 Linux 等价物 / 动作 | 结论 |
|---|---|---|---|
| config.yaml ×2 | 4.6 / 4.2 KB | 结构兼容(两边 _config_version: 49)。需改 3 处:browser.backend + cdp_url=127.0.0.1:9222(Mac 上的 Chrome,容器没有)、a2a token、路径类键 | 可移植 |
| .env ×2 | 24 KB / 5.3 KB 80+ / 90+ 键 | 值跨平台;按新 profile 重分组。已核实:飞书应用与三个 Telegram bot 全不同 → 切换期可并存不抢锁 | 可移植 |
| 自建 skills | 178 个 | 纯 md + 脚本。实测仅 4 个文件含 /Users/tangming 硬路径;macOS 专属技能(签名、字体、显示器、Xcode、iOS)保留但标注「需在 Mac 执行」 | 可移植 |
| state.db | 963 MB | SQLite 跨平台,但 570 个会话横跨内容+运维,无法按新 profile 干净拆分 → 只读归档,用 session_search 查 | 归档 |
| sessions/*.jsonl | 53 MB | 与 state.db 重复 | 不迁 |
| cron 10 个 | — | 可迁 3 个(SSL 提醒、state.db 备份、费用报告待定);留 Mac 6 个:站点保活、AICoding 心跳、两个备份脚本 | 部分 |
| 私有脚本 31 个 | 136 KB | 走公网的(gzh_metrics、wx_rate_watch、tyh_sync_watch)可迁;依赖内网的(acr_cred_refresh、cdn_internal_flip)留 Mac | 部分 |
| plugins | 416 KB | opencode-acp 是 git 仓库可 clone;hermes-achievements 待确认无 macOS 依赖 | 可移植 |
| hooks | 913 B ×2 | heartbeat.sh 可迁;activity.sh 打公司接口 → 留 Mac | 部分 |
| bin/tirith | 34 MB | Mach-O x86_64,Linux 不可执行;容器自带 | 丢弃 |
| lsp/ | 146 MB | macOS 版语言服务器二进制 | 重建 |
| 各类 cache | 245 MB | models_dev_cache、uv、模型清单 | 丢弃 |
| A2A(9901) | — | 容器内重建,必须换 token(现在 tangming-mima 明文躺在 config.yaml) | 重建 |
| ~/.wxstore + token | — | JSON 明文,直接搬 | 迁移 |
| model-tunnel.sh | — | 容器需重建同款隧道(办公网 10.6.41.142 或 cloudflared cloud),否则内网 provider 全部不可用 | 待决策 |
| nanshanju 7 个站点 | — | 站点本体在 Mac 上跑,不在本次范围 | 留 Mac |
| work.bak-20260921 | 371 MB | 9 月旧 profile 备份 + state.db.bak-* 160 MB | 归档后删 |
hermes-agent 源码仓库、logs、venv 等安装本体,容器已有同版本(0.22.2 / d923a5eb,2026-10-15)双跑可行性已核实:Mac 的飞书应用(cli_aa1254b5…)、容器飞书应用(cli_aa55d175…)、三个 Telegram bot 的 token 全部不同 → 切换期并行不会互相踢下线。
| # | 问题 | 我的建议 |
|---|---|---|
| 1 | ops 单独建 profile 吗? | 建。否则公司运维技能污染 jenkins |
| 2 | 570 个会话的历史怎么办 | 只读归档 + session_search,不并入新 profile |
| 3 | 密钥怎么传 | 按新 profile 拆三份,走一次性 scp;不要整包复制 |
| 4 | 公众号/抖音登录态 | 内容发布留 Mac,容器只做代码迭代与草稿审核(容器扫不了码) |
| 5 | 内网模型网关要不要接 | 先不接,新 profile 用 opencode-go / zhipu;要接再重建隧道 |
~/hermes-agent-data/ssh/ 含 id_rsa、id_buildmac,仓库推在 gitcode。建议轮换 + 只备份 .pub 与 config,私钥走密码库。
扫码类流程(公众号后台、抖音创作者中心)无法完成;cdp_url=127.0.0.1:9222 依赖 Mac 上开着 Chrome。
leaptic / tokenhub / 302api 全靠 Mac 的 SSH 隧道;容器不重建就没有这些模型。
Mac 1298c8e74b(10-04)vs 容器 0.22.2 d923a5eb(10-15)。skills/config 兼容,state.db schema 需 Phase 0 只读验证。
这次迁移的技术风险低、组织成本高:搬文件是小事(1 GB,且已有 git 通道),真正的工作量在于把 178 个技能按 4 个域重新分拣,以及决定内容发布这条线留在 Mac 还是放弃扫码走 cookie。
建议顺序:先只做 Phase 0(建 profile + 路由),拿 jenkins 和 web 两组做试点——它们不依赖扫码、不依赖内网模型;content 留到最后,因为它是唯一会被“容器没有屏幕”卡住的域。
ls / du / git log / sqlite3(mode=ro) 等只读命令,密钥只读键名不读值。摸排用的 tailscaled 用完即停。