Skip to main content
能力是 UI 与运行时契约,不是营销字段。Ophel 只会展示与当前站点拓展能力集合匹配的控件;若声明了能力却缺少必需字段,运行时校验器会拒绝该包。 权威能力列表位于 src/adapters/feature-capabilities.ts。权威字段要求位于 src/adapters/declarative/validate.ts

能力目录

不存在 名为 theme-sync 的能力 ID。宿主主题联动是独立配置字段 themeSync,并可能隐含 supportsHostThemeSync

能力说明

大纲家族

  • outline 需要会话容器,以便 Ophel 限定扫描范围。
  • outline-user-queries 不能单独声明;校验器还要求 outline
  • 优先使用稳定的消息根节点,而不是翻译后的可见文案。

提示词插入

prompt-insert 需要同时具备:
  • 一个或多个 textarea / contenteditable 选择器
  • modetextareacontenteditable)与 submitKeyEnterCtrl+Enter)的 input
对 textarea,Ophel 使用原生 value setter;对 contenteditable,使用经过校验的 beforeinput / execCommand 路径。它不会静默回退到直接赋值 textContent

生成检测

使用目标站点上可靠的信号:
  • generating.existsSelectors — 生成中可见的 DOM 标记
  • networkMonitor — DOM 状态不足时的请求 URL / body 规则
站点拓展可以提供其中之一或两者。声明 generation-detect 却两者都没有,会被拒绝。

布局能力

主题联动不是能力 ID

通过写入 localStorage、并可选切换 <html> class 来切换亮暗模式的站点,可以声明 themeSync
基于当前校验器的规则:
  • 存在 themeSync 时,storageKeyvalues.darkvalues.light 必填
  • values.system 仅适用于站点本身存储独立“跟随系统”值的情况
  • darkClass / lightClass 可选;若站点自行监听 storage 事件,两者都可省略
  • 嵌套对象存储使用 valuePath;扁平 JSON 编码字符串使用 valueFormat: "json"
  • valuePathvalueFormat 不能同时使用
  • body class、data-theme 或点击模拟类主题机制不受此字段支持
  • 声明 themeSync 的同时设置 supportsHostThemeSync: false 会被拒绝

示例:Duck.ai 能力集合

已发布的 duck-ai 站点拓展当前声明:
没有声明 conversation-list、model-lock、clean、panel-avoidance 或 reading-history。因此产品 UI 不会为 Duck.ai 展示这些由站点拓展支撑的控件。

相关配置分组

这些分组本身不是能力,但常伴随能力声明出现: 完整字段、长度、正则、CSS 与体积限制由以下文件定义: 两者冲突时,以运行时校验器为准。

相关页面

最后修改于 2026年8月5日