Skip to content

[Feature]: 补齐 Hermes 的 vault 解锁 UI(vault.unlock_prompt / vault.save_login / vault.code)—— 当前 Studio 会话里 browser_vault_unlock 恒失败 #3166

Description

@fairstar14

现象

在 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_loginvault.code 同样存在

也就是说:报错文案里的 "the Desktop app" 指的是官方 Hermes 桌面版,而不是 Studio。

机制(为什么会这样)

官方把这类"需要用户输入"的动作做成 tui_gateway server request:
tui_gateway/agent_callbacks.py:217set_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 设置面板

建议

  1. 在 Studio 前端补上这三个 server request 的处理(vault.unlock_prompt /
    vault.save_login / vault.code),实现可参考官方 apps/desktop 的同名 handler
  2. 或者在桥接层接上官方的 tui_gateway 回调安装路径(set_*_prompt_callback)
  3. 顺手改进错误文案:把"当前会话是 headless"与"该 UI 未实现"区分开

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions