需绕过oauth,复用本地copilot凭证并启用acp模式:一、验证cli登录状态;二、导出token填入hermes配置;三、设transport为stdio-acp并注入token环境变量;四、验证initialize响应;五、配置cliacpsessionpool复用进程。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望在 Hermes Agent 中接入 GitHub Copilot 服务,同时复用本地已有的 Copilot 认证凭证,并启用 ACP(Agent Communication Protocol)通信模式,则需绕过常规 OAuth 流程,直接配置 CLI 代理与认证上下文。以下是实现该目标的具体操作路径:
一、确认本地 Copilot CLI 已登录并可执行
Hermes Agent 依赖外部 CLI 工具链与 Copilot 交互,必须确保 copilot 命令已在系统 PATH 中且已完成身份验证。该步骤为后续 ACP 模式通信的前提条件。
1、打开终端,执行 copilot --version 验证 CLI 是否可用。
2、运行 copilot login,若提示已登录则跳过;否则按指引完成 GitHub 账户授权。
3、执行 copilot status,确认输出中包含 Authenticated: true 及有效组织上下文。
二、提取并复用本地 Copilot Token 文件
Hermes Agent 不支持直接调用 Copilot 的 Web OAuth 端点,但可通过读取其本地持久化 token 实现免重复登录。Copilot CLI 将加密凭证存于用户目录下的安全存储中,需通过官方 CLI 导出明文 token 用于 Hermes 配置。
1、运行 copilot token export --format json 获取当前会话 token 数据。
2、将输出中的 accessToken 字段值完整复制。
3、在 Hermes Agent 配置目录(如 ~/.hermes/config.yaml)中,新增或修改 github_copilot provider 区块,填入该 token 值作为 token 字段内容。
三、启用 ACP 协议并配置 StdioAcpTransport
ACP 是 Hermes Agent 与外部 AI 执行器(如 Copilot CLI)进行结构化会话通信的标准协议。启用该模式后,Hermes 将通过标准输入/输出与 copilot 子进程建立双向流式通道,而非 HTTP 调用。
1、确保 Hermes Agent 版本 ≥ v0.8.3,该版本起正式支持 StdioAcpTransport 类型。
2、编辑 ~/.hermes/providers/github_copilot.yaml,设置 transport: stdio-acp。
3、在同文件中指定 command: ["copilot", "acp"],确保该命令可在 shell 中直接执行并进入 ACP 交互模式。
4、添加 env: { GITHUB_COPILOT_TOKEN: "your_token_here" },显式注入 token 环境变量以供 CLI 进程读取。
四、验证 ACP 会话连通性
在完成上述配置后,需启动一次最小化 ACP 会话,确认 Hermes 能成功初始化、认证并接收 Copilot 的 capability 响应,这是 ACP 链路可用性的关键标志。
1、执行 hermes session/new --provider github_copilot 创建新会话。
2、观察终端输出是否包含 {"jsonrpc":"2.0","method":"initialize","params":{...}} 及对应响应。
3、若收到 {"result":{"capabilities":{...}}},说明 ACP 初始化成功;若出现 authentication failed,请返回第二步核对 token 有效性与时效性。
五、配置 CliAcpSessionPool 复用子进程
为避免每次 prompt 都重启 copilot 进程导致延迟升高,需启用会话池机制,使 Hermes 在多个用户请求间共享同一 ACP 子进程实例,显著提升响应速度与资源利用率。
1、在 ~/.hermes/config.yaml 的全局配置区,添加 session_pool: { type: cli-acp, max_sessions: 5, idle_timeout_ms: 300000 }。
2、确认 CliAcpSessionPool 类已被 Hermes 加载:执行 hermes debug providers 并查找 github_copilot → pool: cli-acp 条目。
3、发起两次连续 prompt 请求,使用 ps aux | grep copilot 观察进程 PID 是否保持一致,一致即表示复用生效。











