AI多Agent协作系统实战(四十三):我删了生产配置,然后从进程的内存里把它捞了回来
2026/8/29 16:25:14 网站建设 项目流程

一个测试脚本的os.remove(),把config.yaml.env一起删了——
飞书 API Key、视觉模型配置,全部消失。
就在准备重装系统的时候,我突然想到:
进程还活着。配置就藏在它的内存里。

事故现场

一切正常的一天。突然,vision 报错:

Error analyzing image: No LLM provider configured for task=vision provider=auto

截图分析用不了了。查配置:

cat~/.hermes/config.yaml# bash: No such file or directory

config.yaml 不存在了。

再查.env

cat~/.hermes/.env# bash: No such file or directory

也没了。

飞书 AppID、App Secret、DeepSeek API Key、小米视觉模型 Key——全在这一份.env里。现在什么都没了。

谁干的?

翻测试记录。半小时前,我跑了一个"保存配置"的自动化测试——验证 save_config 写文件是否正确。测试脚本的清理逻辑:

# 测试结束清理(测试脚本里)forfin[config.yaml,.env,config.json,...]:ifos.path.exists(f):os.remove(f)

测试脚本操作的是真实路径——~/.hermes/config.yaml~/.hermes/.env

我本意是"清理测试数据"。结果:清理的是生产配置

测试代码没有隔离环境,直接删了真实文件。

后果有多严重

✅ config.yaml: 有备份(config.yaml.good——标准备份)——能恢复 ❌ .env: 没有备份!——飞书AppID/Secret/DEEPSEEK_API_KEY/XIAOMI_API_KEY 全丢

.env里的飞书凭证,是智能体跑在飞书上的"身份证"。没它,网关一重启,飞书直接断开。

更要命的是:我没有 .env 的备份。这些 Key 在配置中心页面上配置过一次,之后就没有再出现过明文。

灵光一现:进程还活着

看着还在正常运行的系统,我突然想到一件事:

gateway 进程是半小时前启动的。启动的那一刻,它把 .env 里的全部变量加载进了自己的环境。

文件删了,但进程的环境变量还在——就在:

/proc/<PID>/environ

Linux 上,每个进程的环境变量都暴露在这里。进程不死,配置不丢。

恢复过程

# 1. 找到 gateway 进程pid=14754# ps aux | grep "hermes gateway run"# 2. 读它的环境变量(\x00 分隔)env=open(f'/proc/{pid}/environ','rb').read().split(b'\x00')# 3. 解析 KEY=VALUE,筛选需要的pairs={}forkvinenv:ifb'='inkv:k,v=kv.split(b'=',1)k=k.decode('utf-8')ifany(xink.upper()forxin['FEISHU','DEEPSEEK','XIAOMI','API_SERVER']):pairs[k]=v.decode('utf-8')# 4. 写回 .envwithopen('~/.hermes/.env','w')asf:fork,vinsorted(pairs.items()):f.write(f"{k}={v}\n")

结果:

✅ 恢复 17 个 key: FEISHU_APP_ID / FEISHU_APP_SECRET / FEISHU_DOMAIN DEEPSEEK_API_KEY / XIAOMI_API_KEY / XIAOMI_BASE_URL API_SERVER_ENABLED / API_SERVER_KEY / ...

飞书凭证、模型 Key,一个不少。

进程的内存,成了配置的最后一道备份。

复盘:三个本可以避免的错误

1. 测试代码必须隔离环境。

# 错误:测试操作真实路径os.remove('~/.hermes/config.yaml')# 正确:测试用临时 HOME,碰不到生产os.environ['HERMES_HOME']='/tmp/test_hermes'

测试代码访问生产路径,是最危险的越界——它自己都不知道自己在删什么。

2. 秘密文件必须备份。

.env这种文件,平时"看不见"(不在 git 里、不导出),丢了才想起它多重要。

教训:密钥文件备份一份到安全位置(哪怕离线),或者至少:让 gateway 进程活着——它就是一份活备份。

3. /proc/PID/environ 是最被低估的恢复工具。

文件删了、备份没有、git 没有——但只要进程没重启,环境变量就在:

/proc/<PID>/environ

读它、解析它、写回文件——配置失而复得。

文件是配置的躯壳,进程是配置的灵魂。
躯壳没了,灵魂还在——
只要进程没死,配置就永远有一份复印件,
藏在 /proc 里,等你来取。


(真实事故记录:测试脚本 os.remove 删除了生产 config.yaml 和 .env,从运行中的 gateway 进程 /proc/PID/environ 恢复全部 17 个密钥配置。教训:测试隔离、密钥备份、进程内存是最后的保险。)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询