[HexoPress] AI 集成的开放式设计

AI 领域变化极快,任何把某一家服务商写死在产品里的方案都会很快过时。HexoPress 的做法,是把 AI 设计成围绕编辑器工作的可插拔能力,而不是绑定某一个模型厂商的固定功能。

提供商无关

HexoPress 当前选择 OpenAI 兼容 API 作为接入形态,不是因为偏爱某一家,而是因为这已经成为托管模型服务和本地模型网关之间最实用的互操作层。

现在每个提供商配置包含这几项:

  • 名称
  • 接口地址
  • API Key
  • API 规范
  • 模型 ID

这让编辑器能够相对平滑地接入:

  • 商业托管模型
  • 各种代理网关
  • 通过兼容接口暴露出来的本地模型运行时,例如 Ollama、LM Studio

在界面层面,切换提供商只需要改一下 AI 输入栏里的下拉框,HexoPress 还会记住你上次使用的默认提供商。

以流式响应为默认交互

AI 回复采用流式输出,而不是等完整结果一次性返回。这很重要,因为写作辅助本质上是交互式行为。用户应该尽早判断方向是否正确,并快速继续追问,而不是长时间盯着空白面板等待。

上下文跟随编辑器状态

HexoPress 的关键设计之一是:上下文不是每次手动配置出来的,而是从编辑器状态自动推导。

  • 如果当前有选区,AI 面板优先使用选中的文本
  • 如果没有选区,则回退到全文
  • 如果你关闭上下文条,则本轮请求变成无上下文

这样一来,系统就具备了三种有效上下文模式,但又不会让每次请求都变成一次繁琐设置。

预设是数据组合,不是硬编码功能

内置的错别字检查、写作建议、段落润色、摘要生成,本质上都是以下三类输入的组合:

  • 系统提示词
  • 用户提示词模板
  • 上下文策略

这种做法比“每个按钮单独写一套逻辑”更容易扩展。要新增一个预设,核心工作往往只是把这三件事定义清楚。

和编辑器松耦合协作

AI 面板不会直接依赖编辑器内部实现,而是消费共享状态:

  • 当前正文
  • 当前选中文本
  • Front Matter
  • 当前文章上下文

这种分离非常重要。它让编辑器和 AI 面板可以各自演进,只要共享状态契约保持稳定,二者就不需要互相绑死。

天然可选

AI 功能从设计上就是可选的。即使你完全不配置任何提供商,HexoPress 的其他能力也照常可用。

而当你启用 AI 时,请求会直接发往你配置的模型端点。HexoPress 自身并不是一个中转 AI 请求的平台,这让数据流向保持明确,并尽量由用户自己掌控。