- Replace cross-ClassLoader reflection with ExtensionGetter.getEnabledExtension(AiModelService.class) - Declare optional pluginDependencies (ai-foundation?: "*") and recommended-apps annotation - Use OutputSpec.choice for structured classification (sentiment, review safety/quality) - Use GenerateTextRequest with maxRetries=2 for reliable chat generation - Add multi-turn conversation context (conversation_history placeholder) - Fix RateLimitService thread leak (implement DisposableBean) - Two-stage AI review: safety check + 1-5 quality score mapped to 0-100 - Remove redundant dashboard cards (sentiment distribution, 7-day trend, avg score) - Redesign settings page with tabbed navigation (basic/persona/model/prompt/cleanup) - Fix settings layout (move tab bar out of grid container) - Fix button icon+text alignment via :deep(.btn-content) inline-flex - Add review score grade labels (excellent/good/fair/poor) in logs
5.0 KiB
5.0 KiB
更新日志
v1.0.0-beta.2
2026-06-17
改进
- 改用 ExtensionGetter 集成 AI Foundation:通过 Halo 官方推荐的
ExtensionGetter.getEnabledExtension(AiModelService.class)获取 AI 服务,替换原先的跨 ClassLoader 反射调用方式(Issue #1) - 声明插件依赖:在
plugin.yaml中声明可选插件依赖ai-foundation?: "*",建立正确的插件依赖关系,插件在未安装 AI Foundation 时仍可正常加载 - 应用市场推荐:新增
store.halo.run/recommended-apps注解,安装本插件后可在应用市场推荐安装 AI Foundation 插件 - 使用结构化输出:情感分析和内容审核改用 AI Foundation 的
OutputSpec.choice结构化输出,替换原先的字符串匹配解析,分类更可靠 - 使用 GenerateTextRequest:AI 调用改用
GenerateTextRequest并设置maxRetries=2,由 SDK 自动重试瞬时错误 - 简化 languageModel 调用:直接传递 modelName 参数,由 SDK 处理空值(使用默认模型),无需手动判断
- 多轮对话上下文:AI 对话续接时自动获取之前的回复历史并注入到 Prompt 中,AI 能更好地理解对话上下文
- 优化 AI 自审核评分机制:审核改为两阶段评估(安全检查 + 质量评分 1-5 分),评分映射到 0-100 分(0/30/50/70/85/100),替代原先的二值评分(0/100),评分更有区分度
- 精简仪表盘:移除情感分布、近7日回复趋势、平均审核评分三个卡片,保留核心的回复概览和快捷操作,界面更简洁
- 优化设置页面布局:页面头部按钮使用 VSpace 统一排版并添加图标;侧边栏保存卡片高亮显示,新增"未保存"状态指示器;保存/重置按钮添加图标
- 优化日志页面评分显示:评分增加等级标签(优秀/良好/一般/较差),更直观
Bug 修复
- 修复 RateLimitService 线程泄漏:清理线程未在插件停止时关闭,实现
DisposableBean正确释放资源 - 修复 ReviewService 提示词不匹配:审核提示词要求"重新生成"但代码未使用重新生成的内容,移除误导性指令
v1.0.0-beta.1
2026-06-16
新功能
- AI Foundation 反射集成:通过运行时反射调用 AI Foundation 插件的
AiModelService,无需pluginDependencies,彻底解决跨 ClassLoader 类加载问题 - 草稿模式:关闭"自动发布"后,AI 回复将保存为草稿,需站长审核后才发布
- 多 AI 角色支持:支持配置多个 AI 虚拟角色,每个角色有独立的提示词、头像和模型
- 提示词预设:内置多种回复风格预设(专业型、幽默型、简洁型等),可自由组合
- 每日回复趋势图:首页新增每日回复数量柱状图,支持 7 天/30 天/全部切换
- 对话历史查看:支持查看 AI 回复的完整对话上下文
Bug 修复
- 修复草稿模式下审批失败("AI回复已存在,无法重复发布")的问题
- 修复批量审批时同样的去重检查冲突问题
- 修复 AI Foundation 不可用的问题(
PluginManager无法通过 Spring 依赖注入获取) - 修复
DefaultSpringPlugin包级私有类反射访问权限问题 - 修复 CI 构建失败(
gradlew缺少执行权限)
改进
- 审批逻辑优化:先查找已有 Reply 扩展再决定创建或更新
- 移除不必要的
AiFoundationConfiguration配置类 - 前端 UI 优化:移除编辑功能、简化角色排序逻辑、清理无用代码
v0.0.3
2026-06-15
新功能
- 多 AI 角色支持:支持创建多个 AI 角色,每个角色有独立的昵称、人格提示词和 Gravatar 头像
- 草稿模式初步实现:AI 回复可先存为草稿,管理员审核后再发布
- 提示词预设:内置友好型、专业型、幽默型、简洁型预设风格
改进
- 增强插件可靠性与可用性
- 文档全面更新
- 前端 UI 优化
v0.0.2
2026-06-10
新功能
- 自动回复:监听新评论,自动调用 AI 生成回复
- 多语言适配:根据评论语言自动用对应语言回复
- 情感分析:分析评论情感倾向,根据情感调整回复语气
- 文章/页面级开关:在文章编辑器中直接控制是否启用 AI 回复
- 评论者黑名单:屏蔽指定评论者,不触发 AI 回复
- 手动触发:在评论管理页面对历史评论手动触发 AI 回复
- 安全审核:AI 生成的内容经过安全审核,不合规内容自动拒绝
- Prompt 模板:支持自定义 Prompt 模板,提供多种模板变量
- 仪表盘统计:显示回复数、情感分布等图表
- 日志筛选搜索:按状态、情感筛选,关键词搜索
- 数据清理:自动清理超过指定天数的旧记录
- AI Foundation 集成:使用 AI Foundation 插件提供的 AI 模型能力
v0.0.1
2026-06-05
初始版本
- 基础插件框架搭建
- 基本评论监听功能
- AI 回复生成核心逻辑