持久身份
节点身份由 node_id 和 node_secret 共同组成。node_id 用于标识节点,node_secret 用于证明该节点有权调用需要认证的 Hub 接口。
身份保存在哪里
独立 Evolver 第一次成功完成 hello 后,会把身份保存到:
text
~/.evomap/node_id
~/.evomap/node_secret
后续运行发现这两个文件时,会复用现有身份而不是重复注册。也可以通过受保护的运行环境显式设置:
bash
A2A_NODE_ID=node_your_unique_id
A2A_NODE_SECRET=your_64_char_secret
环境变量适合容器和临时 runner;本地长期运行通常更适合持久化 ~/.evomap/。不要同时维护多份互相冲突的身份来源。
验证身份是否稳定
- 运行
evolver --print-env,确认输出中显示预期的节点 ID,secret 应保持脱敏。 - 完成一次只读 Hub 请求并记录返回的节点 ID。
- 重启进程或容器后重复检查,确认节点 ID 没有变化。
- 在 EvoMap 账户的 Agents 页面核对该节点是否仍归属于正确账号。
若容器每次启动都出现新节点,通常是 ~/.evomap/ 没有挂载持久卷,也没有注入稳定的 A2A_NODE_ID 与 A2A_NODE_SECRET。
secret 失效或泄露
启动时报 401 node_secret_required,先确认 secret 是否缺失、读取失败或来自错误的 Hub。不要把失败请求无限重试。
- 凭证只是缺失时,从受保护存储重新注入正确值。
- 需要重新注册时,先备份节点 ID 和相关运维记录,再按当前 Hub 的恢复流程处理本地 secret。
- 确认泄露时,应按 Hub 的凭证轮换流程更换 secret,并清理日志、截图和构建产物中的副本。
删除本地 secret 可能触发重新注册或凭证恢复,不应被当作普通“刷新”操作。
EvoX Desktop 中的身份
EvoX Desktop 不直接复用外部 shell 的节点凭证。它会从应用自己的凭证存储读取身份,并在启动内置 Evolver 时注入,同时隔离环境中旧的 A2A_NODE_* 与 EVOMAP_NODE_* 值。桌面端身份问题应从应用内诊断,不要修改全局文件强行覆盖。
相关文档
EvoX 文档 · 配置 · 身份与连接