Skip to content

与 oh-my-openagent 同用时出现双输入框:双方都整体重建 session_prompt slot #35

Description

@xiongyang

环境

  • opencode 1.18.31(TUI)
  • opencode-visual-cache 1.7.0(1.6.5 同样存在,非新版本引入)
  • oh-my-openagent 5.0.0-beta.80(btw-side 功能自 beta.72 起就有该注册)
  • 平台:Linux

现象

visual-cache 与 oh-my-openagent(OMO)同时启用时,TUI 出现两个输入框。

根因

两个插件都在 session_prompt slot 上整体重建 api.ui.Prompt,而 opencode 的 slot 多注册是追加渲染(不是高 order 覆盖),于是渲染出两个 Prompt 实例 → 双输入框。

visual-cache 侧(dist/tui.js,为挂 BottomStatusBar 与 right 透传而重建):

api.slots.register({
  order: 55,
  slots: {
    session_prompt(_ctx, input) {
      return createComponent(api.ui.Prompt, {
        // ...透传 session_id / visible / disabled / onSubmit / ref
        hint: createComponent(BottomStatusBar, { api, signals, sessionId: input.session_id }),
        right: createComponent(api.ui.Slot, { name: "session_prompt_right", session_id: input.session_id }),
      })
    },
  },
})

OMO 侧(btw-side,为接管 prompt ref 做 esc-esc 返回 / ctrl+/ picker 导航):

api.slots.register({
  order: 950,
  slots: {
    session_prompt: (_context, value) => api.ui.Prompt({ /* ... */ }),
    session_prompt_right: (_context, value) => /* BTW 标签 */,
  },
})

复现

  1. tui.json 同时包含 "oh-my-openagent@beta" 与 "opencode-visual-cache@latest"(oc-tps 无关,去掉也一样)
  2. 启动 TUI → session 页出现两个输入框

建议

只要还想在 prompt 区域挂内容,"重建 session_prompt" 就和其他任何同样重建该 slot 的插件互斥。可选方向:

  1. 不再重建 session_prompt:BottomStatusBar 改挂 host slot(session_prompt_right / home_footer / app_bottom)。visual-cache 重建时本来就透传了 session_prompt_right,说明第三方内容在该 slot 上可以正常共存(我这边的 TPS 插件 oc-tps 就挂在那里工作正常);
  2. 提供开关:如 kv/配置项 cache_panel.prompt_rebuild = false,关闭后保留 sidebar 面板,prompt 交给宿主或其他插件。

当前 workaround

我把 OMO 侧 order:950 注册块里的 session_prompt 键改名成了无效 slot 名(保留它的 session_prompt_right),让 visual-cache 成为唯一重建者。结果:单输入框,hint = cache 状态栏,右侧 = TPS + BTW 标签共存,一切正常。代价是 OMO 的 btw-side prompt 导航失效。

长期看还是希望 visual-cache 能让出 session_prompt,毕竟它的场景(挂状态栏)用 side slot 就能实现,而 OMO 那种接管 prompt ref 的场景只能重建。

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