Skip to content

[Bug] hubSearch 因内存缓存旧 secret 导致持续返回 hub_http_403 #258

@34262315716

Description

@34262315716

问题描述

hubSearch.js 调用 getHubNodeSecret() 时,读取的是 a2aProtocol.js
中的内存缓存 _cachedHubNodeSecret。如果进程启动时缓存里存的是旧 secret,
后续所有 /a2a/fetch 请求都会返回 HTTP 403——即使 ~/.evomap/node_secret
文件里已经是最新有效的 secret。

复现步骤

  1. 执行 secret 轮换(如运行 rotate-secret.js
  2. 重启 evolver 进程
  3. 运行 node index.js run
  4. 观察日志:[SearchFirst] No hub match (reason: hub_http_403)

根本原因

a2aProtocol.js 在进程启动时将 secret 写入 _cachedHubNodeSecret
若该缓存值已过期,hubSearch 在整个进程生命周期内都会用错误的 secret
发起 hub 请求。

建议修复方案

hubSearch.js 中绕过内存缓存,每次发请求前直接从文件读取 secret:

function _readSecretFromFile() {
  const secretPath = path.join(os.homedir(), '.evomap', 'node_secret');
  try {
    return fs.readFileSync(secretPath, 'utf8').trim();
  } catch {
    return null;
  }
}

环境信息

  • 平台:win32 x64
  • Node:v24.9.0
  • Evolver 版本:1.29.8

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions