在 HexoPress 中集成 AI 写作助手时,我们面临一个核心问题:AI 领域变化极快,今天的主流模型明天可能就被超越。如何设计一个不会很快过时的集成方案?
答案是:不绑定任何特定的 AI 提供商。
提供商无关的设计
HexoPress 的 AI 集成基于 OpenAI 兼容的 API 格式。这不是因为我们偏爱 OpenAI,而是因为这个 API 格式已经成为事实上的行业标准。几乎所有主流的 AI 服务——无论是 OpenAI、Anthropic、Google,还是各种开源模型的本地部署方案——都提供了兼容这个格式的接口。
用户可以配置多个 AI 提供商,每个提供商只需要四个参数:名称、接口地址、API 密钥和模型标识。这意味着:
- 你可以用 OpenAI 的 GPT 系列
- 你可以用 Anthropic 的 Claude 系列(通过兼容接口)
- 你可以用本地部署的开源模型(如通过 Ollama 或 LM Studio)
- 你可以用任何提供 OpenAI 兼容 API 的服务
切换提供商就像切换一个下拉菜单一样简单。
流式响应
AI 的回复采用流式传输(Server-Sent Events),而不是等待完整响应后一次性显示。这意味着你可以看到 AI 逐字生成回复的过程,获得更好的交互体验,也不需要在等待长回复时面对一个空白的屏幕。
流式解析器处理了各种边界情况,包括不完整的数据块、网络中断和格式异常,确保在各种网络条件下都能稳定工作。
上下文模式
AI 助手的一个关键设计是灵活的上下文模式。不同的写作场景需要不同的上下文:
全文模式将整篇文章作为上下文发送给 AI。适合需要理解全文的任务,比如检查全文的拼写错误、分析文章结构、生成摘要。
选中模式只发送用户在编辑器中选中的文本。适合局部操作,比如润色一个段落、改写一句话。这种模式既节省了 token 消耗,也让 AI 能更专注于目标文本。
无上下文模式不附带任何文章内容,适合纯粹的问答对话。
这三种模式让用户可以精确控制 AI 能看到什么,既保护了隐私(你可能不想把整篇未发布的文章发送给 AI),也优化了效果(更精确的上下文通常带来更好的回复)。
预设系统
内置的四个预设(错别字检查、写作建议、润色、摘要生成)不是硬编码的功能,而是一种可扩展的模式。每个预设本质上是一组参数的组合:
- 一个系统提示词,定义 AI 的角色和行为
- 一个用户提示词模板,描述具体的任务
- 一个上下文模式,决定发送什么内容给 AI
这种设计意味着添加新的预设非常简单——定义这三个参数就够了。未来,这个系统可以很自然地扩展为支持用户自定义预设,让每个人都能根据自己的写作习惯创建专属的 AI 工作流。
与编辑器的集成
AI 面板通过共享状态与编辑器协作,而不是直接耦合。它从全局状态中读取文章内容、选中文本和元数据,这意味着 AI 面板的实现完全不依赖编辑器的内部细节。
这种松耦合的设计让 AI 功能可以独立演进。即使未来更换了底层的编辑引擎,只要共享状态的接口不变,AI 面板就不需要任何修改。
隐私考量
值得强调的是,AI 功能是完全可选的。如果你不配置任何 AI 提供商,HexoPress 的所有其他功能都正常工作,不会有任何数据被发送到外部。
当你使用 AI 功能时,数据直接从你的电脑发送到你配置的 AI 服务,HexoPress 不会经手或存储任何中间数据。你完全掌控数据的流向。