环境
- 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 标签 */,
},
})
复现
tui.json 同时包含 "oh-my-openagent@beta" 与 "opencode-visual-cache@latest"(oc-tps 无关,去掉也一样)
- 启动 TUI → session 页出现两个输入框
建议
只要还想在 prompt 区域挂内容,"重建 session_prompt" 就和其他任何同样重建该 slot 的插件互斥。可选方向:
- 不再重建 session_prompt:BottomStatusBar 改挂 host slot(
session_prompt_right / home_footer / app_bottom)。visual-cache 重建时本来就透传了 session_prompt_right,说明第三方内容在该 slot 上可以正常共存(我这边的 TPS 插件 oc-tps 就挂在那里工作正常);
- 提供开关:如 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 的场景只能重建。
环境
现象
visual-cache 与 oh-my-openagent(OMO)同时启用时,TUI 出现两个输入框。
根因
两个插件都在
session_promptslot 上整体重建api.ui.Prompt,而 opencode 的 slot 多注册是追加渲染(不是高 order 覆盖),于是渲染出两个 Prompt 实例 → 双输入框。visual-cache 侧(
dist/tui.js,为挂 BottomStatusBar 与 right 透传而重建):OMO 侧(btw-side,为接管 prompt ref 做 esc-esc 返回 / ctrl+/ picker 导航):
复现
tui.json同时包含"oh-my-openagent@beta"与"opencode-visual-cache@latest"(oc-tps 无关,去掉也一样)建议
只要还想在 prompt 区域挂内容,"重建 session_prompt" 就和其他任何同样重建该 slot 的插件互斥。可选方向:
session_prompt_right/home_footer/app_bottom)。visual-cache 重建时本来就透传了session_prompt_right,说明第三方内容在该 slot 上可以正常共存(我这边的 TPS 插件 oc-tps 就挂在那里工作正常);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 的场景只能重建。