- 产品内的 站点适配设置
- 仓库示例
registry/examples/site-pack.example.json

路径 A:站点适配设置
在未支持的 HTTPS 页面上,打开向导入口(为此站点创建适配)。 向导会依次引导:- 消息输入框
- 发送按钮
- 会话容器
- 用户消息
- AI 回复
- 可选的会话列表项
- 可选的新对话按钮
- 实时大纲预览与能力摘要
- 保存 / 下载 / 打开预填的 GitHub 贡献流程
- 可在页面上点选元素,也可手动编辑选择器
- 可选 AI 选择器草稿助手,只有在你主动复制时才会生成净化后的提示词
- 本地保存要求 HTTPS
- 保存时可能请求主机权限;拒绝后已保存站点拓展会保持禁用
- 本地保存成功后需要刷新页面,让适配器模块从干净生命周期启动
路径 B:手写 JSON
把示例站点拓展复制到registry/sites/<id>.json,或从向导导出本地草稿。
不要 在清单内加入 $schema 属性。仓库会在外部把 Site Pack JSON 映射到编辑器 schema,而运行时会拒绝未知键。
身份与兼容性
名称与描述
name / description 是回退文本。nameI18n / descriptionI18n 会按匹配语言覆盖它们。更改用户可见元数据的 registry 贡献,应提供 Ophel 使用的全部 11 种语言。
匹配目标站点
- 最多 10 条 HTTPS 扩展 match 模式
- 禁止全局匹配与顶层主机通配
- 禁止与内置站点或现有站点拓展重叠
- 自托管站点拓展可使用
matches: [],仅在用户绑定精确 HTTPS 源后激活
诚实声明能力
选择对话元素
- 优先使用稳定的
data-testid、稳定 ID、语义属性与短结构关系 - 有稳定属性时,避免生成式 hash、纯工具 class 与翻译后的可见文案
- 把
:nth-child()这类位置选择器当作最后手段,并在 PR 中附上真实浏览器证据
配置常见分组
输入extraCss 仍会经过受限 CSS 值校验。解码与归一化后,远程资源函数、import、expression 与 JavaScript URL 会被拒绝。
面板避让与主题联动
panel-avoidance 需要已验证的 panelAvoidance 块。至少提供非空 widthSelectors。可选字段包括 scopeSelector、obstacleSelectors、insetSelectors、gap 与宽度阈值。
themeSync 可选,且不是能力 ID。仅当站点通过显式 localStorage 写入与可选 <html> class 切换主题时使用。见能力参考。
编写时的安全约束
- 序列化后的 Site Pack JSON 不得超过 64 KiB
- 普通数组最多 50 项
- 正则有长度限制,并通过
safe-regex2检查 - 同源路径模板必须以单个
/开头 - 不得包含令牌、Cookie、账号数据、内部 URL 或用户内容
- 不得用站点拓展覆盖内置站点
- 不得新增脚本、表达式、远程资源或破坏性自动化字段
校验与贡献
在 ophel 仓库中运行:registry:build 生成本地未签名构建,供测试使用;registry 发布流程使用的签名产物由 pnpm registry:build:signed 生成。
然后在真实站点上验证已声明能力,包括:
- 冷启动刷新
- 空闲与生成中状态
- 若已声明,验证大纲 / 导出 / 提示词插入
- 对宽度或面板避让站点拓展,验证面板打开与关闭