为文章生成 AI 摘要,并在正文前展示一张轻量卡片。插件复用 AI Foundation 已保存的聊天模型,不重复保存 API Key。
环境要求
- Pafish 1.2.4 或更高版本
- 已启用
ai_foundation,并至少配置一个chat类型模型 - PHP 8.1+
插件的 plugin.json 声明了 plugin:ai_foundation >=0.1.0 依赖;未启用 AI Foundation 时无法启用本插件。
工作方式
- 插件在
summaries表中按文章缓存摘要,唯一键为post_id。 - 前台渲染时用标题、正文和正文格式计算内容哈希;只有哈希匹配的缓存才会展示。作者摘要只作为生成素材,不参与哈希,避免改摘要导致全站缓存失效。
- 默认
auto_mode=lazy:文章首次被访问时,前台卡片显示骨架并异步请求/plugin/ai_summary/summary,由服务端生成后写入缓存。 auto_mode=publish:发布或更新文章时生成(在数据库事务提交后执行,避免长时间占用写锁);如果发布时生成失败,首次访问会再兜底尝试一次。定时发布不在 cron 中串行调用模型,留给首次访问生成。auto_mode=manual:只在后台文章编辑页或插件设置页手动生成。- 正文修改后摘要会自动失效;加密文章、正文为空的文章和纯外链条目默认不生成。
缓存判定
- 摘要行保存
content_hash = sha256(标题 + "\0" + 正文 + "\0" + 正文格式)。 - 展示或生成前重新计算当前哈希;只有
status为ready(或失败但仍保留旧摘要的failed)、摘要非空、且哈希一致时才直接复用。 插件升级本身不会改变哈希,也不会清空 summaries 表;版本号变化不会触发重新生成。- 会让摘要失效的情况:标题、正文或正文格式变化;文章删除/彻底删除;后台手动点“重新生成”。
- 不会自动失效的情况:修改作者摘要、封面、标签、分类、评论数,修改提示词/长度/模型等插件设置,以及插件版本升级。修改这些设置后,如果希望旧文章改用新风格,需要在后台手动重新生成。
- 生成失败但正文未变的旧摘要仍可展示,后台状态保留“生成失败”方便重试。
- 哈希算法属于缓存契约:以后升级如果要改算法,必须同时兼容旧哈希或做迁移,不能直接换算法让全站缓存失效。
省 token 与准确性
发送给模型的不再是整篇正文,而是一个本地生成的「素材包」:
- 文章小标题;
- 作者填写的摘要(可选);
- 代码块里出现频率较高的工具名、函数名、命令、HTTP 方法和参数(可选);
- 按位置、关键词、结论句和代码标识打分后选出的高价值句子。
默认素材上限 1800 字,相比直接发送 8000 字正文可明显降低输入 token;技术文章即使大部分内容是代码,也会保留 fetch、$.ajax、XMLHttpRequest、POST、CSRF 这类关键标识。模型温度固定为 0.15,提示词要求「只使用素材、保留具体名称、不要用‘本文介绍了’开头」。
前台样式

- 默认折叠为一行:机器人图标 + 「AI 摘要」+ 模型标识 + 展开箭头,点击后才展开白色摘要区。
- 可以在设置里关闭「折叠为一行」,恢复参考图那种始终展开的完整卡片。
- 支持深色模式(
.dark/[data-theme="dark"])。 - 摘要缺失且允许自动生成时显示加载点;展开后显示三行骨架。生成失败或手动模式下不显示空卡片。
- 摘要文本始终按纯文本转义输出,模型返回的 HTML 不会被执行。
- PJAX 兼容:卡片 CSS/JS 不再只注入文章页,而是全站注入;脚本监听内容区替换,PJAX 换页后会重新找卡片并补生成。HTML 正文通过
/card接口按 slug 取卡片壳。
后台入口
- 插件设置页底部有“摘要状态”表,可查看最近 30 篇文章的缓存状态并手动生成。
- 文章编辑器的发布侧栏有“AI 摘要”区块,可生成或重新生成当前文章摘要。
接口
GET /plugin/ai_summary/card?id={postId}或?slug={slug}:返回卡片 HTML(含 pending 壳),供 PJAX 和 HTML 正文补位;只返回公开、未加密文章的卡片。GET /plugin/ai_summary/summary?id={postId}:前台异步生成/读取摘要,仅返回公开、未加密、已发布文章的摘要。POST /admin/plugin/ai_summary/generate:后台手动生成,需要posts.manage权限与 CSRF 令牌。
数据与清理
激活时由扩展 schema 自动创建 pf_plugin_ai_summary_summaries。卸载时默认只删除代码;如果后台选择“同时删除数据”,核心会按 manifest 声明删除该表。
V1.0.0
版本更新。
登录后参与评论
登录
还没有评论。