尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

AI多Agent协作系统实战(四十三):我删了生产配置,然后从进程的内存里把它捞了回来

AI多Agent协作系统实战(四十三):我删了生产配置,然后从进程的内存里把它捞了回来 一个测试脚本的os.remove()把config.yaml和.env一起删了——飞书 API Key、视觉模型配置全部消失。就在准备重装系统的时候我突然想到进程还活着。配置就藏在它的内存里。事故现场一切正常的一天。突然vision 报错Error analyzing image: No LLM provider configured for taskvision providerauto截图分析用不了了。查配置cat~/.hermes/config.yaml# bash: No such file or directoryconfig.yaml 不存在了。再查.envcat~/.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/environLinux 上每个进程的环境变量都暴露在这里。进程不死配置不丢。恢复过程# 1. 找到 gateway 进程pid14754# ps aux | grep hermes gateway run# 2. 读它的环境变量\x00 分隔envopen(f/proc/{pid}/environ,rb).read().split(b\x00)# 3. 解析 KEYVALUE筛选需要的pairs{}forkvinenv:ifbinkv:k,vkv.split(b,1)kk.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 个密钥配置。教训测试隔离、密钥备份、进程内存是最后的保险。
返回列表