词元之母TOK.MOM - 平台充值汇率 1:1 即 1 人民币充值到账 1 美元,支持一个 Key 调用近 600+ 海内外模型,限时特价模型低至 1 折,欢迎上岸!

HermesCLI 上暴露了受保护的扩展 hook(钩子),使包装 CLI 可以添加 widget、快捷键和布局自定义,而无需覆盖超过 1000 行的 run() 方法。这样可以让你的扩展与内部变更解耦。| Hook | 用途 | 何时覆盖 |
|---|---|---|
_get_extra_tui_widgets() | 向布局注入 widget | 需要持久 UI 元素(面板、状态栏、迷你播放器)时 |
_register_extra_tui_keybindings(kb, *, input_area) | 添加键盘快捷键 | 需要热键(切换面板、传输控制、模态快捷键)时 |
_build_tui_layout_children(**widgets) | 完全控制 widget 排序 | 需要重新排序或包装现有 widget 时(少见) |
process_command() | 添加自定义斜杠命令 | 需要处理 /mycommand 时(已有 hook) |
_build_tui_style_dict() | 自定义 prompt_toolkit 样式 | 需要自定义颜色或样式时(已有 hook) |
_get_extra_tui_widgets()#Window、ConditionalContainer、HSplit)。使用 ConditionalContainer 或 filter=Condition(...) 可使 widget 支持切换显示。_register_extra_tui_keybindings(kb, *, input_area)#kb。kb — prompt_toolkit 应用的 KeyBindings 实例input_area — 主 TextArea widget,用于读取或操作用户输入Enter(提交)、Escape Enter(换行)、Ctrl-C(中断)、Ctrl-D(退出)、Tab(接受自动建议)。F2 及以上的功能键和 Ctrl 组合键通常是安全的。_build_tui_layout_children(**widgets)#_get_extra_tui_widgets() 代替。None 的 widget 会被过滤掉):_get_extra_tui_widgets()self._invalidate() 触发 prompt_toolkit 重绘。self.agent、self.model、self.conversation_history 均可直接使用。_build_tui_style_dict() 并为自定义样式类添加条目。process_command(),处理自己的命令,其余一律调用 super().process_command(cmd)。run(),除非绝对必要——扩展 hook 的存在正是为了避免这种耦合。