现象
在 Studio 的会话里调用 Hermes 的 browser_vault_unlock,必定返回:
{"success": false, "error_type": "unlock_unavailable",
"error": "Bitwarden is locked and this session cannot prompt for the master password
(headless/cron/API). Unlock it from an interactive Hermes session or the Desktop app first."}
结果是:Hermes 的浏览器凭据代填(browser_vault_list / browser_vault_fill /
browser_vault_save_login)在 Studio 里完全不可用 —— 只要密码管理器是外部后端
(Bitwarden / 1Password),就没有任何办法解锁。
环境
- Ekko Studio
v0.7.24(Windows 桌面版,同时是当前最新 release)
- 内置 hermes runtime
0.21.0;本机另装 Hermes Agent v0.21.4(28aceb3451)
- Windows 11
- 密码管理器:Bitwarden(
bw status = 已登录、仅锁定);hermes vault sources 显示
Bitwarden detected
- 配置:
multiplex_profiles: true(3 个 profile)
排查:两处独立证据,都指向 Studio 侧
1. Studio 侧全量搜索 —— 零命中
| 搜索范围 |
vault.unlock_prompt / Passwords & Logins 等 |
桥接层 resources/webui/dist/server/agent-bridge/python/(6 个模块:bridge_broker / bridge_pool / bridge_runtime / bridge_server / bridge_transport / hermes_bridge) |
❌ 0 |
前端 resources/webui/dist/client/assets/js/(296 个 js) |
❌ 0 |
Electron resources/app.asar(二进制搜 4 个关键词) |
❌ 0 |
仓库 main 分支源码(GitHub code search,4 个关键词) |
❌ 0 |
注:仓库源码那行是用 gh search code --repo EKKOLearnAI/ekko-studio 直接查上游
main 得到的,所以这不是"本机版本落后",而是从未实现。
2. 官方 Hermes 侧的对照 —— 完整实现
hermes-agent/apps/desktop/dist/assets/index-*.js 里有:
vault.unlock_prompt → server-request handler + 完整的密码卡片组件
(vaultUnlockTitle / vaultUnlockDesc / vaultUnlockPlaceholder /
vaultUnlockKeepLocked / vaultUnlockConfirm)
vault.save_login、vault.code 同样存在
也就是说:报错文案里的 "the Desktop app" 指的是官方 Hermes 桌面版,而不是 Studio。
机制(为什么会这样)
官方把这类"需要用户输入"的动作做成 tui_gateway server request:
tui_gateway/agent_callbacks.py:217 装 set_unlock_prompt_callback,把
vault.unlock_prompt 下发给渲染层;Hermes 侧 can_prompt_here() 的判定就是
"当前线程是否装了回调"。
Studio 走的是自己的桥(agent-bridge/python/hermes_bridge.py + bridge_*.py),
不经过官方的 tui_gateway,所以这个回调永远不会被装上,前端也没有对应的 UI 可弹。
影响
- Studio 用户无法使用 Hermes 的凭据代填:登录表单自动填充、一次性验证码、保存登录
- 错误信息具有误导性 —— 它让用户去 "Desktop app" 里解锁,而 Studio 正是用户此刻在用的
桌面 App,却做不到
- 目前没有任何 UI 入口可以替代:Studio 里既没有解锁对话框,也没有
Passwords & Logins 设置面板
建议
- 在 Studio 前端补上这三个 server request 的处理(
vault.unlock_prompt /
vault.save_login / vault.code),实现可参考官方 apps/desktop 的同名 handler
- 或者在桥接层接上官方的
tui_gateway 回调安装路径(set_*_prompt_callback)
- 顺手改进错误文案:把"当前会话是 headless"与"该 UI 未实现"区分开
附
现象
在 Studio 的会话里调用 Hermes 的
browser_vault_unlock,必定返回:结果是:Hermes 的浏览器凭据代填(
browser_vault_list/browser_vault_fill/browser_vault_save_login)在 Studio 里完全不可用 —— 只要密码管理器是外部后端(Bitwarden / 1Password),就没有任何办法解锁。
环境
v0.7.24(Windows 桌面版,同时是当前最新 release)0.21.0;本机另装 Hermes Agentv0.21.4(28aceb3451)bw status= 已登录、仅锁定);hermes vault sources显示Bitwarden detectedmultiplex_profiles: true(3 个 profile)排查:两处独立证据,都指向 Studio 侧
1. Studio 侧全量搜索 —— 零命中
vault.unlock_prompt/Passwords & Logins等resources/webui/dist/server/agent-bridge/python/(6 个模块:bridge_broker/bridge_pool/bridge_runtime/bridge_server/bridge_transport/hermes_bridge)resources/webui/dist/client/assets/js/(296 个 js)resources/app.asar(二进制搜 4 个关键词)main分支源码(GitHub code search,4 个关键词)2. 官方 Hermes 侧的对照 —— 完整实现
hermes-agent/apps/desktop/dist/assets/index-*.js里有:vault.unlock_prompt→ server-request handler + 完整的密码卡片组件(
vaultUnlockTitle/vaultUnlockDesc/vaultUnlockPlaceholder/vaultUnlockKeepLocked/vaultUnlockConfirm)vault.save_login、vault.code同样存在也就是说:报错文案里的 "the Desktop app" 指的是官方 Hermes 桌面版,而不是 Studio。
机制(为什么会这样)
官方把这类"需要用户输入"的动作做成 tui_gateway server request:
tui_gateway/agent_callbacks.py:217装set_unlock_prompt_callback,把vault.unlock_prompt下发给渲染层;Hermes 侧can_prompt_here()的判定就是"当前线程是否装了回调"。
Studio 走的是自己的桥(
agent-bridge/python/hermes_bridge.py+bridge_*.py),不经过官方的
tui_gateway,所以这个回调永远不会被装上,前端也没有对应的 UI 可弹。影响
桌面 App,却做不到
Passwords & Logins设置面板建议
vault.unlock_prompt/vault.save_login/vault.code),实现可参考官方apps/desktop的同名 handlertui_gateway回调安装路径(set_*_prompt_callback)附
"Studio 侧未承接官方的交互式 server request"这一类)
input()阻塞事件循环),已单独提给上游:
NousResearch/hermes-agent#120356,与本 issue 无关,仅作指引