来源:
halo-kb/插件选型调研.md(整篇)(原文 29071 字符)
Halo 插件选型调研 — AI 个人技术知识库
调研对象:Halo 2.x 插件生态 目标实例:
http://<内网IP>:28090(站点「俗世客的思行小筑」) 调研方式:官方应用市场条目、GitHub 仓库plugin.yamlmanifest、GitHub Releases API、实例匿名端点实测
0. 证据来源与标注约定
本文严格区分两类内容:
| 标注 | 含义 |
|---|---|
| 【官方来源】 | 直接读自官方应用市场条目、仓库 manifest(plugin.yaml)、GitHub Releases API 或实例响应体 |
| 【推断】 | 我在事实基础上的推理,未经官方来源直接确认 |
| 【未确认】 | 查过但未找到可靠来源,不填猜测值 |
0.1 目标实例的版本与已装插件(实测)
实测方式(匿名可访问,无需认证):
curl.exe -s --noproxy "*" -m 12 http://<内网IP>:28090/
curl.exe -s --noproxy "*" -m 8 http://<内网IP>:28090/actuator/health
实例版本:Halo 2.26.1【官方来源】
证据是首页 HTML 中的生成器标记(原文片段):
<meta name="generator" content="Halo 2.26.1"/>
实例当前已启用的插件(从首页 HTML 里被注入的前台资源直接读出,含版本号):
| 插件标识(资源路径) | 前台版本 | 证据(HTML 原文片段) |
|---|---|---|
PluginSearchWidget | 1.7.1 | <script src="/plugins/PluginSearchWidget/assets/static/search-widget.iife.js?version=1.7.1" defer> |
PluginCommentWidget | 3.2.2 | <link rel="modulepreload" href="/plugins/PluginCommentWidget/assets/static/comment-widget.js?version=3.2.2"> |
shiki | 1.5.1 | <script type="module" src="/plugins/shiki/assets/static/shiki-code.js?version=1.5.1"> |
editor-hyperlink-card | 1.9.2 | <script src="/plugins/editor-hyperlink-card/assets/static/index.iife.js?version=1.9.2"> |
当前主题:Ethereal v1.2.4【官方来源】(HTML 中 bannerVersion = "1.2.4")
说明:这 4 个插件是实例上已经在跑的,因此「插件名 + 能在 Halo 2.26.1 上运行」这一点属于实测事实,而非文档推断。
插件清单的完整列表需要认证:Halo 的插件列表接口(Console API)需登录,匿名端点拿不到完整清单。上表只能反映"随前台页面注入资源"的插件,不含纯后台插件(如 AI Foundation、智阅、MiniDocs、项目集这类无前台注入的插件不会出现在这里)。
1. 目标插件核实表
用户点名的四类插件,其真实 metadata.name 与俗称差异较大,详见下表。
| 用户俗称 | 真实 metadata.name | 显示名 displayName | 市场 app-id | 最新版本 | 发布日期 | 兼容 Halo | 维护方 | 维护状态 |
|---|---|---|---|---|---|---|---|---|
| AI Foundation | ai-foundation | AI Foundation | app-acslk9nu | 1.1.0 | 2026-09-03 | >=2.26.0 | 官方(halo-dev / Halo) | 活跃维护 |
| AI 助手 | summaraidGPT | 智阅全能AI助手 | app-OWBzA | 4.0.5 | 2026-09-05 | >=2.25.0 | 社区个人(Handsome / acanyo) | 活跃维护 |
| MiniDocs | halo-plugin-minidocs | 知识库 | app-amj2vzxe | 1.0.2 | 2026-09-07 | >=2.26.0 | 社区个人(Cosolar) | 活跃维护 |
| 项目集 | portfolio | 项目集 | app-ix3j4n6d | 1.0.0 | 2026-06-27 | >=2.24.0 | 社区个人(Lywq / liuyiwuqing) | 低活跃(最后提交 2026-07-01) |
关键结论:整条链路的版本门槛由 AI Foundation 决定。 AI Foundation 要求 >=2.26.0,是本组四项中要求最高的;MiniDocs 同样要求 >=2.26.0。当前实例为 2.26.1,满足全部四项要求。
2. 各插件详情
2.1 AI Foundation(AI 基座)
这是用户所说"AI Foundation"的真实插件,名字与俗称完全一致。
| 项 | 值 | 来源 |
|---|---|---|
| 真实插件名 | ai-foundation | 仓库 app/src/main/resources/plugin.yaml → metadata.name |
| 显示名 | AI Foundation | 同上 → spec.displayName |
| 市场 app-id | app-acslk9nu | manifest 注解 store.halo.run/app-id + 市场页 URL |
| 最新版本 | 1.1.0 | GitHub Releases API /releases/latest → tag_name |
| 发布日期 | 2026-09-03(UTC 03:14:31) | 同上 → published_at |
| 兼容 Halo | >=2.26.0 | manifest spec.requires;市场页「Halo 版本」栏一致 |
| 维护方 | Halo 官方(author.name = "Halo") | manifest spec.author |
| 许可证 | GPL-3.0 | manifest + 市场页 |
| 仓库 | https://github.com/halo-dev/plugin-ai-foundation | manifest spec.repo |
| 市场条目 | https://www.halo.run/store/apps/app-acslk9nu | 市场页 |
| 下载产物 | plugin-ai-foundation-1.1.0.jar(9,815,989 字节) | Releases API assets[0].browser_download_url |
功能定位【官方来源】:Halo 官方 AI 能力平台,统一接入主流大模型,为插件生态提供文本生成、嵌入向量、工具调用等能力。它本身不是一个面向访客的聊天界面,而是给其他插件调用的底座。
内置 AI 提供商【官方来源,市场页与 README 略有出入,以 README(更新更全)为准】: OpenAI、OpenRouter、DeepSeek、月之暗面 Kimi、硅基流动(SiliconFlow)、阿里云百炼、豆包、文心一言、智谱开放平台、Ollama、OpenAI 兼容(OpenAI-like)、AIHubMix、Gitee 模力方舟、MiniMax、Xiaomi MiMo。
市场页列出的提供商较少(未列 OpenRouter、阿里云百炼等),说明市场页描述滞后于仓库 README。选型时以插件内实际可选项为准。
关键配置项【官方来源,README「功能特性」】:
| 配置维度 | 说明 |
|---|---|
| Provider(提供商) | 选择/新增 AI 提供商,并配置其 API Key Secret |
| API Key Secret | 凭据以 Halo Secret 形式保存(本报告不记录任何真实密钥) |
| 语言模型 | 用于文本生成的语言模型清单 |
| Embedding 模型 | 用于向量化,RAG 知识库能否工作取决于此项 |
| Rerank 模型 | 用于召回结果精排(可选增强) |
| 图像生成模型 | 文生图 / 图生图 |
| 默认模型设置 | 分别指定语言、Embedding、Rerank、图像生成的默认模型 |
| 模型自动发现 | 从 Provider 拉取可用模型列表 |
| 模型测试工作台 | 验证对话 / Embedding / Rerank / 图像生成 / 单轮 RAG |
安装方式:
- 应用市场一键安装(推荐)【官方来源,市场页「安装到 Halo」三方式】:
- 方式一:在市场页填入本站地址 → 跳转到本站后台应用市场 → 点卡片安装
- 方式二:后台 Console →「应用市场」搜索
AI Foundation安装 - 方式三:点「手动下载」拿 jar,在 Console 上传
- 后台上传 jar【官方来源】:Console → 插件管理 → 安装插件 → 上传
plugin-ai-foundation-1.1.0.jar - 官方 CLI【官方来源,语法见 §5.3】:
halo plugin install --app-id app-acslk9nu
依赖关系:ai-foundation 是被依赖方,它自身不依赖其他插件。它是整组插件的底座。
⚠️ 升级风险【官方来源,v1.1.0 Release 说明】:v1.1.0 把最低支持 Halo 版本调整为 2.26。如果你的站点低于 2.26.0,只能用 1.0.1 及更早版本 —— 而智阅 4.x 要求 Halo >=2.25.0 且需要 AI Foundation,因此实际最低门槛是 Halo 2.26.0。
2.2 AI 助手 → 真实插件名是「智阅全能AI助手」
这是本次调研最关键的纠偏:用户所说的"AI 助手",在 Halo 生态里最匹配的真实插件是 智阅全能AI助手,其 metadata.name 为 summaraidGPT(既不是 ai-assistant,也不是 plugin-ai-assistant)。
判断依据【官方来源】:市场条目标题即「智阅全能AI助手」,描述为"面向 Halo 的一站式 AI 内容与站点助手",功能覆盖用户列出的全部要点:编辑器内 AI 辅助创作(摘要/写作/润色/标题/标签)、RAG 知识库、AI 问答、前台助手、站内检索。
| 项 | 值 | 来源 |
|---|---|---|
| 真实插件名 | summaraidGPT | src/main/resources/plugin.yaml → metadata.name |
| 显示名 | 智阅全能AI助手 | 同上 → spec.displayName |
| 市场 app-id | app-OWBzA | 市场条目 URL |
| 最新版本 | 4.0.5 | GitHub Releases API → tag_name(name 为 v4.0.5) |
| 发布日期 | 2026-09-05(UTC 10:05:21) | 同上 → published_at |
| 兼容 Halo | >=2.25.0 | manifest spec.requires;市场页「Halo 版本」栏一致 |
| 维护方 | 社区个人:Handsome(https://www.xhhao.com) | manifest spec.author |
| 许可证 | GPL-3.0 | manifest + 市场页 |
| 仓库 | https://github.com/acanyo/halo-plugin-summaraidGPT | manifest spec.repo |
| 市场条目 | https://www.halo.run/store/apps/app-OWBzA | 市场页 |
| 下载产物 | plugin-summaraidGPT-4.0.5.jar(3,224,963 字节) | Releases API assets[0] |
| 市场热度 | 13,053 下载 / 7,273 应用 | 市场页(该数字随页面渲染,属快照) |
依赖关系(重点,权威证据)
manifest 中显式声明了对 ai-foundation 的依赖:
pluginDependencies:
ai-foundation?: "*"
annotations:
"store.halo.run/recommended-apps": '["app-acslk9nu"]'
【官方来源】要点解读:
ai-foundation?: "*"—— 依赖 AI Foundation,?后缀表示可选依赖(不装插件也能启用,但 AI 功能不可用)。- 注解
recommended-apps指向app-acslk9nu,正是 AI Foundation 的市场 app-id,形成交叉印证。 - 代码层面同样有证据:仓库中存在
service/AiFoundationAiService.java与降级实现service/impl/UnavailableAiFoundationAiService.java—— 后者即"AI Foundation 不可用"时的兜底,属【推断】(我依据文件名与命名惯例判断,未读其实现)。
配置文档给出了更强的表述【官方来源,docs/configuration/ai-settings.md 原文】:
请先安装并启用 Halo AI Foundation,并在 AI 基座插件中配置可用模型。本插件会通过 AI 基座调用模型,不直接维护模型 API Key。
结论:智阅不自己存 API Key,模型一律经 AI Foundation 调用。没有 AI Foundation,智阅的 AI 能力等于不可用。
关键配置项【官方来源,docs/configuration/ 目录下的配置文档】
配置组 basic(AI 设置):
| 配置项 | 字段名 | 默认值 | 说明 |
|---|---|---|---|
| 主语言模型 | languageModelName | — | 各功能未单独指定时的回退模型 |
| 摘要语言模型 | textModelSetting.summaryModelName | — | 文章摘要 |
| 标签语言模型 | textModelSetting.tagModelName | — | 标签生成 |
| 对话语言模型 | textModelSetting.assistantModelName | — | 控制台编辑器选中文本对话 |
| 润色语言模型 | textModelSetting.polishModelName | — | 文章润色 |
| 文章生成语言模型 | textModelSetting.generateModelName | — | 草稿生成 |
| 标题生成语言模型 | textModelSetting.titleModelName | — | 标题候选 |
| 知识库问答语言模型 | textModelSetting.ragLanguageModelName | — | 前台 RAG 助手 / 知识库问答 |
| 知识库 Embedding 模型 | vectorModelSetting.embeddingModelName | — | RAG 必需;换了必须重建索引 |
| 知识库 Rerank 模型 | vectorModelSetting.rerankModelName | — | 可选;未配置则回退召回顺序 |
| 标签生成数量 | generationSetting.tagGenerationCount | 5 | 范围 1–20 |
| 最大润色长度 | generationSetting.polishMaxLength | 2000 | 范围 100–8000 |
| AI 接口防盗链 | aiSecuritySetting.antiHotlinkEnabled | true | 校验 Sec-Fetch-Site / Origin / Referer |
| AI 助手访问模式 | aiSecuritySetting.accessMode | anonymous_chat_agent | 见下表 |
| 接口限流开关 | aiSecuritySetting.rateLimitEnabled | true | 按用户名或匿名 IP 限流 |
| 窗口内请求次数 | aiSecuritySetting.rateLimitRequests | 20 | — |
| 限流窗口(秒) | aiSecuritySetting.rateLimitWindowSeconds | 60 | — |
访问模式取值【官方来源】:
| 选项 | 值 |
|---|---|
| 匿名用户可对话 | anonymous_chat |
| 匿名用户可对话和使用 Agent | anonymous_chat_agent(默认) |
| 登录用户可对话 | authenticated_chat |
| 登录用户可对话和使用 Agent | authenticated_chat_agent |
配置组 rag(知识库设置)—— 这是决定 RAG 成败的一组:
| 配置项 | 字段名 | 默认值 | 范围 |
|---|---|---|---|
| 启用 RAG 知识库 | enableRag | true | — |
| 分块大小 | chunkSize | 900 | 200–3000 |
| 分块重叠 | chunkOverlap | 120 | 0–800 |
| 索引文档批量 | indexDocumentBatchSize | 8 | 1–50 |
| Embedding 批量 | embeddingCallSetting.embeddingBatchSize | 1 | 1–64 |
| Embedding 并发 | embeddingCallSetting.embeddingParallelCalls | 1 | 1–8 |
| Embedding 重试 | embeddingCallSetting.embeddingMaxRetries | 0 | 0–5 |
| Embedding 单批超时 | embeddingCallSetting.embeddingTimeoutSeconds | 180 | 30–1800 |
| 启用混合检索 | enableHybridSearch | true | 向量 + Lucene BM25 关键词,RRF 融合 |
| 向量召回数量(Top K) | vectorTopK | 20 | — |
| 关键词召回数量 | keywordTopK | 20 | — |
| 启用 Rerank 精排 | enableRerank | true | 失败回退到混合检索顺序 |
| 精排后上下文数量 | rerankTopN | 8 | 送入模型的片段数 |
| 最大上下文字符数 | maxContextCharacters | 12000 | 检索资料进模型的字符预算 |
| 多轮会话消息数 | conversationMaxMessages | 12 | 0–40 |
| 多轮上下文字符数 | conversationMaxContextCharacters | 4000 | 0–30000 |
注意:没有"相似度阈值"这一配置项【官方来源】。召回控制靠
vectorTopK/keywordTopK/rerankTopN三个数量参数完成,不存在相似度分数阈值开关。用户预期的"相似度阈值"在本插件中不存在,这是需要修正的预期。
关于"脑图"【未确认】:官方市场描述与 README 均未提及"脑图"功能。仓库中确实存在 ui/src/components/article-reading/InsightGraphPreview.vue(洞察图预览)与 ui/src/views/ArticleReadingGraphView.vue(文章阅读图谱视图)两个文件(文件名是事实),但其功能是否等同用户所指的"脑图"未确认。请勿按"有脑图"来做选型决策。
安装方式:
- 应用市场一键安装(推荐):后台 Console →「应用市场」搜索「智阅全能AI助手」安装
- 后台上传 jar:Console → 插件管理 → 安装插件 → 上传
plugin-summaraidGPT-4.0.5.jar - 官方 CLI【官方来源,语法与 app-id 见 §5.3】:
halo plugin install --app-id <本插件的 app-id>
v4.0.5 修复要点【官方来源,Release 说明】:修复新版 Halo / Lucene 10.5 环境下 RAG 重建索引与增量写入报 This postings format may not be used for writing 的问题;保留最高 4096 维向量支持。若站点跑在较新 Halo 上,务必用 4.0.5 或更高版本。
2.3 MiniDocs → 真实插件名 halo-plugin-minidocs,显示名「知识库」
| 项 | 值 | 来源 |
|---|---|---|
| 真实插件名 | halo-plugin-minidocs | src/main/resources/plugin.yaml → metadata.name |
| 显示名 | 知识库 | 同上 → spec.displayName |
| 兼容 Halo | >=2.26.0 | manifest spec.requires;README「目标平台」一致 |
| 维护方 | 社区个人:Cosolar(https://note.minims.cn) | manifest spec.author |
| 许可证 | GPL-3.0 | manifest |
| 仓库 | https://github.com/cosolar/halo-plugin-minidocs | manifest spec.repo |
| 市场 app-id | app-amj2vzxe | https://www.halo.run/store/apps/app-amj2vzxe ;市场详情 API 返回该条目 PUBLISHED/FREE,artifactIdentity.metadataName = halo-plugin-minidocs |
| 最新版本 | 1.0.2 | GitHub Releases API /releases/latest → tag_name |
| 发布日期 | 2026-09-07(UTC 04:56:49) | 同上 → published_at |
| 历史版本 | v1.0.0(2026-08-31)、v1.0.1(2026-09-02)、v1.0.2(2026-09-07) | /releases 列表 |
| 发行产物 | halo-plugin-minidocs-1.0.2.jar(3,235,948 字节) | Releases API assets[0] |
| 维护状态 | 活跃:最近提交 2026-09-07T04:53:28Z,pushed_at 2026-09-07T04:56:48Z | /commits?per_page=1、/repos/{owner}/{repo} |
注意:plugin.yaml 里的 version: 1.0.1 不是发布版本号,文件内注释明确写着"打包时由 build.gradle 的 version 自动覆盖(devtools 内置同步),请改 build.gradle 而非此处"。不要把 1.0.1 当作最新版本。
功能定位【官方来源,README】:轻量知识库插件,多知识库管理、树形文档架构、原生 Markdown 创作、分类标签与权限管控,并将内容通过公开接口与 Finder 暴露给第三方主题。
关键配置项【官方来源,README】:
| 配置项 | 字段名 | 默认值 | 说明 |
|---|---|---|---|
| 允许未登录用户阅读公开知识库 | allowAnonymousRead | false(关闭) | 开启后访客可浏览公开知识库;关闭则公共 API 返回 403 |
| 允许导出文档(Markdown) | allowDocExport | true(开启) | 关闭后导出单篇与批量导出均返回 403 |
| 控制台管理页显示统计栏 | showStats | true(开启) | 管理员可为所有用户统一关闭统计栏 |
| 编辑器代码块高亮主题 | codeBlockTheme | default | 可选 default / one-light / solarized-light / vs-light / coy / funky / dark / one-dark / okaidia / twilight / vs-dark |
来源:src/main/resources/extensions/settings.yaml(仅 basic 一组,元数据名 halo-plugin-minidocs-settings)
⚠️ 代码兜底与 yaml 默认相反(需注意的细节):
BasicSetting.java中anonymousReadEnabled()的实现是allowAnonymousRead == null || allowAnonymousRead,即值为 null 时返回 true,而settings.yaml里的默认值是false。【推断】正常安装后以 yaml 的false为准(关闭匿名阅读);仅当配置为空/未初始化时,Java 兜底才是"允许"。allowDocExport与showStats的兜底均为 true,与 yaml 一致。选型时请以插件设置页实际显示为准。
权限模型【官方来源】:两层叠加 —— Halo 角色模板(role-template-minidocs-view 知识库查看 / role-template-minidocs-manage 知识库管理 / 隐藏的匿名角色)决定"能否在 Console 操作",资源级访问控制(publicVisible 开关 + spec.members 成员列表)决定"能读哪个库"。私有库对非成员返回 403 或空。
主题集成【官方来源】:提供 Finder API minidocsFinder(listKnowledgeBases / getKnowledgeBase / listDocs / getDoc / getDocTree / getDocBySlug)与匿名公共 REST API。
安装方式【官方来源,README「安装使用」】:
- 应用市场一键安装:后台「应用市场」搜索
MiniDocs安装 - 后台上传 jar:从 GitHub Releases 下载 Assets 中的 JAR,在 Console 上传安装
- 官方 CLI【官方来源,语法与 app-id 见 §5.3】:
halo plugin install --app-id <本插件的 app-id>
附加能力【官方来源】:内置 minidocs-cli Agent Skill(npm 包 minidocs-cli,需 Node.js >= 22),可让 Claude Code / Codex 等智能体直接管理知识库与文档;CLI 用 Halo 个人访问令牌(PAT)或 Basic 认证。
2.4 项目集 → 真实插件名 portfolio
| 项 | 值 | 来源 |
|---|---|---|
| 真实插件名 | portfolio | src/main/resources/plugin.yaml → metadata.name |
| 显示名 | 项目集 | 同上 → spec.displayName |
| 兼容 Halo | >=2.24.0 | manifest spec.requires;README 徽章一致 |
| 维护方 | 社区个人:Lywq(https://github.com/liuyiwuqing) | manifest spec.author |
| 许可证 | GPL-3.0 | manifest |
| 仓库 | https://github.com/liuyiwuqing/plugin-portfolio | 实际代码仓库 |
| 对外文档页 | https://blog.muyin.site/portfolio/halo-plugin-portfolio | 木因博客「项目集」条目 |
| 市场 app-id | app-ix3j4n6d | https://www.halo.run/store/apps/app-ix3j4n6d (实测 HTTP 200,标题「应用:项目集」;市场 API artifactIdentity.metadataName = portfolio) |
| 最新版本 | 1.0.0(tag 无 v 前缀) | https://api.github.com/repos/liuyiwuqing/halo-plugin-portfolio/releases/latest |
| 发布日期 | 2026-06-27(UTC 11:09:33) | 同上 → published_at |
| 历史版本 | 1.0.0-beta1(prerelease,2026-06-16)、1.0.0(2026-06-27) | /releases 列表 |
| 发行产物 | plugin-portfolio-1.0.0.jar(298,679 字节) | Releases API assets[0] |
| 维护状态 | 低活跃 / 疑似停滞:最近提交 2026-07-01T07:25:23Z 且仅改 README;最新代码性 Release 停在 2026-06-27 | /commits?per_page=1、/repos/{owner}/{repo} |
⚠️ 仓库改名,旧名仍在多处流通【官方来源,经 GitHub API 核实】:该仓库现已改名为 liuyiwuqing/halo-plugin-portfolio;旧地址 liuyiwuqing/plugin-portfolio 会 301 重定向到新名,因此旧链接仍可用。但市场条目的 openSource.repo、市场页「去提交 issue」链接、以及 1.0.0-beta1 的 Release 正文仍写旧名。克隆、查 Release、提 issue 时以 halo-plugin-portfolio 为准。
我方先在
plugin.yaml中读到spec.repo = liuyiwuqing/halo-plugin-portfolio,一度判定为"manifest 写错",经 API 核实后确认为仓库改名而非笔误 —— 此处更正先前判断。
功能定位【官方来源,README】:统一管理和展示 GitHub、Gitee、产品、插件、工具等项目作品。支持草稿/已发布/已归档三态、多平台、多类型、技术栈与标签、推荐项目、默认页面 /projects 与 /projects/{slug}、Finder API projectFinder、编辑器项目卡片、Markdown 详情、RBAC、SEO meta。
关键配置项【官方来源:src/main/resources/extensions/settings.yaml,仅 general 一组,元数据名 plugin-portfolio-settings】:
| 配置项 | 字段名 | 说明 | 默认值 |
|---|---|---|---|
| 启用默认展示页 | defaultPageEnabled | 开启后注册默认展示页路由 | true |
| 默认每页数量 | pageSize | 列表页每页项目数(校验 min:1 / max:100) | 12 |
| 默认 SEO 标题 | seoTitle | 页面 <title> 与 OG 标题 | 项目作品集 |
| 默认 SEO 描述 | seoDescription | <meta description> | 集中展示开源项目、产品、插件、工具和其他开发作品。 |
| 平台选项 | platformOptions | 来源平台下拉项(可自定义) | github / gitee / website / private / other |
| 类型选项 | typeOptions | 项目类型下拉项(可自定义) | open_source / product / plugin / website / tool / library / other |
⚠️ 字段名纠正:README 表格只给中文名,不给字段名。经读
settings.yaml与PortfolioSetting.java确认,开关字段是defaultPageEnabled,不存在enableDefaultPage。按后者写配置会静默无效。
⚠️ 路由不一致【两个官方来源互相矛盾,按原样记录】:
settings.yaml中defaultPageEnabled的说明写的是/portfolio与/portfolio/{slug},而 README 写的是/projects与/projects/{slug}。二者必有一处过时,启用前请在实例上实测实际注册的路由,不要照抄任何一方。
设置标识:settingName = plugin-portfolio-settings,配置映射 plugin-portfolio-configmap【官方来源,manifest】。
项目数据模型要点【官方来源】:title(≤120)、slug(≤80)必填;summary、content(Markdown)、cover、platform、type、techStacks、tags、repoUrl、demoUrl、docsUrl、priority、featured、status(DRAFT/PUBLISHED/ARCHIVED)可选。
安装方式【官方来源,README「安装」】:
- 从 Release 安装(README 标注为推荐):前往 Releases 下载最新
.jar→ Console → 插件管理 → 安装插件 → 上传 jar → 启用 - 从源码构建:
git clone→./gradlew build→ 产物build/libs/plugin-portfolio-*.jar→ 控制台上传 - 应用市场:条目见 https://blog.muyin.site/portfolio/halo-plugin-portfolio ;是否有官方市场 app-id 未确认
依赖关系:不依赖其他插件(manifest 中无 pluginDependencies)【官方来源】。
3. 补充推荐插件
3.1 已在目标实例上运行的 4 个(实测证据最强)
以下 4 个不是"推荐"而是"已经在跑",版本号直接读自实例首页注入的资源路径,因此"插件真实存在 + 能在 Halo 2.26.1 上工作"是实测结论。
| 插件 | 实例版本 | 作用 | 仓库 |
|---|---|---|---|
PluginSearchWidget | 1.7.1 | 前台统一搜索组件 | https://github.com/halo-dev/plugin-search-widget |
PluginCommentWidget | 3.2.2 | 前台评论组件 | https://github.com/halo-dev/plugin-comment-widget |
shiki | 1.5.1 | 代码高亮(技术博客刚需) | https://github.com/halo-sigs/plugin-shiki |
editor-hyperlink-card | 1.9.2 | 编辑器超链接转卡片 | https://github.com/halo-sigs/plugin-editor-hyperlink-card |
这 4 个都来自官方组织(
halo-dev/halo-sigs),对技术知识库站点价值明确:搜索、评论、代码高亮、链接卡片。 editor-hyperlink-card 的版本与兼容范围未单独核实(子代理未覆盖该仓库),仅实例证据:1.9.2 正在 Halo 2.26.1 上运行。
3.2 补充推荐完整表(8 个,逐个核实)
以下 8 个均逐个读取了仓库 src/main/resources/plugin.yaml(同时比对 main HEAD 与最后 release tag 两版),并用 GitHub Releases API 取版本与日期。【官方来源】
| # | 显示名 | metadata.name | 市场 app-id | 最新版本 | 发布日期 | 兼容 Halo | 维护方 | 维护状态 |
|---|---|---|---|---|---|---|---|---|
| 1 | Sitemap | PluginSitemap | app-QDFMI | v1.3.0 | 2026-04-27 | >=2.22.7 | 官方 halo-dev | 活跃(最近提交 2026-04-27) |
| 2 | 搜索组件 | PluginSearchWidget | app-DlacW | v1.7.1 | 2025-09-09 | >=2.17.0 | 官方 halo-dev | 未归档;本组最久未更新(最近提交 2025-11-20) |
| 3 | Meilisearch 搜索引擎 | meilisearch | app-7mb5szjt | v1.2.0 | 2026-05-20 | >=2.22.0 | 官方 halo-sigs | 活跃 |
| 4 | Shiki 代码高亮 | shiki | app-kzloktzn | v1.5.1 | 2026-08-20 | >=2.26.0 | 官方 halo-sigs | 活跃 |
| 5 | 评论组件 | PluginCommentWidget | app-YXyaD | v3.2.2 | 2026-08-20 | >=2.26.0 | 官方 halo-dev | 活跃(最近提交 2026-09-12,本组最新) |
| 6 | KaTeX | plugin-katex | app-ISCsX | v3.0.0 | 2026-01-16 | >=2.22.2 | 官方 halo-sigs | 活跃 |
| 7 | 内容助手 | content-tools | app-SUvBR | v1.8.0 | 2026-08-14 | >=2.26.0 | 个人账号 ruibaby(署名 Ryan Wang) | 活跃 |
| 8 | Markdown / HTML 内容块 | hybrid-edit-block | app-NgHnY | v1.7.0 | 2026-08-17 | >=2.26.0 | 官方 halo-sigs | 活跃 |
8 个仓库全部 archived:false、disabled:false,无一停止维护。
交叉验证(强证据):halo-dev/halo 的 issue #10287(Halo 2.26.1)与 #10277(2.26.0)中用户粘贴的已启用插件清单,其版本号与本表独立取得的结果完全一致(Sitemap 1.3.0 / Meilisearch 1.2.0 / Shiki 1.5.1 / KaTeX 3.0.0 / 内容助手 1.8.0 / 内容块 1.7.0 / 评论组件 3.2.2 / 搜索组件 1.7.1)。这同时说明本表插件在 2.26.x 上有真实运行案例。
选型要点(含必须成对安装的组合)
| 结论 | 依据 |
|---|---|
| 代码高亮选 Shiki,不要选 highlight.js | Shiki README 原文:两者均为 Halo 官方维护,但更推荐使用此插件;highlight.js 将进入维护状态(仅修问题、不加新功能) |
要全文搜索,搜索组件 与 meilisearch 必须成对安装 | Meilisearch README 原文:安装 Meilisearch 插件之后仍然需要搜索组件插件,它仅仅是提供服务,不会提供 UI |
| 搜索能力本身是 Halo 核心内置的(Lucene) | halo-dev/halo issue #8297 原文提及基于 Lucene 的搜索功能与 LuceneSearchEngine;插件只是前台 UI 或替换搜索引擎实现 |
| 搜索组件与评论组件都"需要主题适配" | 两者 README 原文:不会主动显示搜索入口 / 不会主动加载评论组件。换主题后要重新确认是否适配 |
| Meilisearch 有额外运维成本 | 需自托管 Meilisearch(README 给 getmeili/meilisearch:v1.15 compose 示例)或使用 Meilisearch Cloud;【推断】这是本组唯一的额外服务依赖 |
| KaTeX 升级 3.0.0 会让旧文章公式可能不显示 | Release 原文:3.0.0 重构公式保存结构改为预渲染;升级后需开启「启用 KaTex 客户端渲染」,或重新打开并保存一次旧文章 |
| 内容助手有官方能力警告 | README 原文:「格式转换并不能完全保留原格式……建议谨慎使用」。且仓库属个人命名空间(【推断】作者为 Halo 团队核心成员,可信度接近官方,但长期可用性弱于组织仓库),建议作辅助工具而非关键链路 |
⚠️
搜索组件自 2025-09-09 起未发过新 Release(最近提交 2025-11-20)。它未归档、未停止维护,但如果你依赖 Meilisearch 全文搜索,需注意这一对组合中 UI 侧更新较慢。
⚠️ 两个 app-id 的来源不同:其余 7 个的 app-id 来自仓库内的
store.halo.run/app-id注解,而meilisearch的app-7mb5szjt来自仓库homepage字段与 README(其 plugin.yaml 没有该注解)。子代理未逐个 HTTP 验证市场页面可访问性。
3.3 一个重要的生态事实:awesome-halo 是权威插件索引
官方维护的插件索引:https://github.com/halo-sigs/awesome-halo
本次调研中,plugin-sitemap、plugin-search-widget、plugin-meilisearch、plugin-shiki、plugin-comment-widget、plugin-katex、plugin-hybrid-edit-block 等多个插件都是从这份索引里交叉验证存在的【官方来源】。建议把它作为后续选型的唯一入口,避免搜到已废弃的同名插件。
该索引中与"技术知识库"直接相关的官方插件【官方来源,索引原文】:
| 仓库 | 索引中的定位描述 |
|---|---|
halo-dev/plugin-sitemap | Sitemap 链接生成插件 |
halo-sigs/plugin-meilisearch | 支持 Meilisearch 搜索引擎集成,提供更快速、更准确的搜索体验 |
halo-sigs/plugin-katex | 为默认编辑器和文章渲染提供 KaTeX 支持 |
halo-sigs/plugin-hybrid-edit-block | 为默认富文本编辑器提供编写 Markdown / HTML 的内容块扩展 |
⚠️ 已停止维护的同类插件(索引中明确标注)【官方来源】:Rainsheep/halo-plugin-meilisearch 标注"已停止维护,可以使用 halo-sigs/plugin-meilisearch 代替"。两个仓库名高度相似,装错会拿到无维护的老版本。
4. 依赖关系图
┌─────────────────────────────┐
│ Halo 2.26.1(目标实例版本) │
└──────────────┬──────────────┘
│ 运行时平台
┌──────────────────────────┼──────────────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌──────────────────┐ ┌────────────────┐
│ ai-foundation │◄───────│ summaraidGPT │ │ halo-plugin- │
│ (AI Foundation)│ 依赖 │ (智阅全能AI助手) │ │ minidocs │
│ 需 Halo≥2.26.0│ │ 需 Halo≥2.25.0 │ │ 需 Halo≥2.26.0 │
└───────┬───────┘ └──────────────────┘ └────────────────┘
│ 提供 Provider / 语言模型 /
│ Embedding / Rerank 能力
│
│ (被依赖,自身无依赖)
│
▼
其他消费方插件(官方 README 列出的「已接入插件」)
├── AI 回评 app-mo5tivjt
├── Live2d 看板娘 app-oPNFQ
├── 评论组件 Next app-p8xona4f
├── 轻言 app-cmisffbv
└── 链接管理 app-hfbQg
独立无依赖:
portfolio(项目集,需 Halo≥2.24.0)
依赖关系要点:
ai-foundation是唯一的底座,被summaraidGPT依赖(manifest 的pluginDependencies.ai-foundation?: "*",?表示可选依赖)。portfolio与halo-plugin-minidocs互不依赖,也不依赖 AI Foundation —— 它们可以独立安装使用。- 智阅不自己存 API Key,模型一律经 AI Foundation 调用【官方来源,
ai-settings.md原文】。 ai-foundation在 README 中列出的"已接入插件"共 6 个(含智阅),说明它是生态级底座而非智阅专用组件。
5. 安装顺序建议
5.1 前置检查(必须先做)
# 确认实例版本;本报告实测为 Halo 2.26.1
curl.exe -s --noproxy "*" -m 12 http://<内网IP>:28090/ | Select-String 'generator'
版本门槛结论:AI Foundation 与 MiniDocs 均要求 >=2.26.0。若站点低于 2.26.0,这两项都装不了,必须先升级 Halo。当前实例 2.26.1 满足。
5.2 建议顺序
| 步骤 | 操作 | 理由 |
|---|---|---|
| 1 | 安装并启用 AI Foundation | 底座。先装它才能在智阅里选到模型;智阅的模型下拉依赖它的 aiModelSelector |
| 2 | 在 AI Foundation 中配置 Provider 与 API Key | 智阅不维护 Key,Key 只能在这里配 |
| 3 | 在 AI Foundation 中配置语言模型与Embedding 模型,并设默认项 | 语言模型供摘要/润色/问答;Embedding 模型是 RAG 的硬前提,缺它知识库无法建索引 |
| 4 | 用 AI Foundation 的模型测试工作台验证对话与 Embedding 可用 | 在装上层插件之前先确认底座通了,能避免把底座故障误判成上层插件故障 |
| 5 | 安装并启用 智阅全能AI助手(summaraidGPT) | 依赖第 1–4 步;装完在设置里选模型 |
| 6 | 在智阅中配置知识库参数(chunkSize / vectorTopK / rerankTopN / Embedding 模型) | RAG 质量由这组参数决定 |
| 7 | 导入内容并建索引 | 导入文章/页面/文档/文件 |
| 8 | 安装 MiniDocs(halo-plugin-minidocs) | 与 AI 链路无依赖,可随时装;但建议 AI 链路先通 |
| 9 | 安装 项目集(portfolio) | 完全独立,无依赖,最后装 |
| 10 | 补齐周边(搜索 / 评论 / 代码高亮 / SEO) | 见 §3 |
为什么底座必须先行:智阅的 vectorModelSetting.embeddingModelName 只是指向一个在 AI Foundation 里已配置的模型名,不是模型本身。若先装智阅再配底座,中途所有 AI 功能都会走 UnavailableAiFoundationAiService 降级路径(【推断】,依据是该降级类存在于源码树中)。
5.3 安装方式速查
| 方式 | 适用 | 说明 |
|---|---|---|
| 应用市场一键安装 | 全部四项 | Console →「应用市场」搜索显示名安装;市场页也提供"填入站点地址跳转安装"。⚠️ 搜索要用中文显示名:搜 portfolio 搜不到项目集,要搜「项目集」【官方来源,市场 keyword 搜索实测】 |
| 后台上传 jar | 全部 | Console → 插件管理 → 安装插件 → 上传 jar;jar 从各自 GitHub Releases 下载 |
| 官方 CLI | 全部 | 见下方命令表 —— 已从官方 CLI 技能文档确认语法 |
| HTTP API | 未确认 | 各插件文档均未提及;官方插件安装文档 https://docs.halo.run/user-guide/plugins |
官方 CLI 安装/管理插件的确认语法【官方来源:halo-dev/cli 仓库 skills/halo-cli-operations/SKILL.md】:
CLI 本身来自 npm 包 @halo-dev/cli(安装后二进制名 halo,要求 Node.js >= 22):
npm install -g @halo-dev/cli
# 先登录(Bearer 令牌或 Basic 认证)
halo auth login --profile local --url http://<内网IP>:28090 --auth-type bearer --token <你的令牌>
# 插件安装 —— 三种来源
halo plugin install --file ./plugin.jar # 本地 jar
halo plugin install --url https://example.com/plugin.jar # 远程 URL
halo plugin install --app-id app-acslk9nu # 直接按应用市场 app-id 安装
# 其他常用
halo plugin list
halo plugin get <name>
halo plugin enable <name>
halo plugin upgrade <name> --online
halo plugin upgrade --all --online --yes
可直接套用于本报告(用上表已确认的 app-id):
| 插件 | CLI 一键安装命令 |
|---|---|
| AI Foundation | halo plugin install --app-id app-acslk9nu |
| 智阅全能AI助手 | halo plugin install --app-id app-OWBzA |
| MiniDocs(知识库) | halo plugin install --app-id app-amj2vzxe |
| 项目集 | halo plugin install --app-id app-ix3j4n6d |
CLI 注意事项【官方来源,同上技能文档原文】:plugin install --url 在远程主机不是 www.halo.run 时会要求确认,自动化场景加 --yes;disable / upgrade / uninstall 属变更性操作,执行前先用 list 或 get 确认目标。
⚠️ 任务提示中写的
halo plugin install语法正确,但仓库 README 只列出plugin命令组、未给子命令 —— 上述语法来自 CLI 随包发布的 Agent Skill 文档,可信度等同官方。
6. 未确认项清单
以下内容查过但未获得可靠来源,一律标注未确认,未填入任何猜测值。
| # | 未确认项 | 已尝试的途径 | 影响 |
|---|---|---|---|
| 1 | 智阅的"脑图"功能 | 市场描述与 README 均未提及"脑图";仅见源码文件名 InsightGraphPreview.vue / ArticleReadingGraphView.vue | 不要按"有脑图"做选型决策 |
| 2 | AI Foundation 的详细配置项字段名 | README 只给功能维度(Provider / 语言 / Embedding / Rerank / 图像 / 默认模型),未给字段名 | §5.2 步骤 2–3 的具体字段名需在插件设置页确认 |
| 3 | 目标实例的完整插件清单 | 插件列表接口需认证;匿名只能拿到"注入前台资源"的插件 | §0.1 的表不是完整清单 |
| 4 | Halo 核心是否已内置 sitemap(/sitemap.xml) | 读 plugin-sitemap README(只说"安装插件之后会提供");对 halo-dev/halo 做 issue 搜索 571 条命中,top 结果均为用户环境贴,无直接结论 | 不对 plugin-sitemap 是否冗余作任何断言 |
| 5 | 评论数据层(评论实体 / API)是否由核心提供、插件只做 UI | comment-widget README 只说明 UI 用 Lit Element 编写 | 不影响安装选型 |
| 6 | 各 app-id 对应的市场页面是否真实可访问 | 未逐条 HTTP 验证。app-id 来自仓库内 store.halo.run/app-id 注解,或仓库 homepage 字段(meilisearch 仅有后者) | CLI --app-id 安装前建议先在后台应用市场搜一次确认 |
| 7 | editor-hyperlink-card 的版本与兼容范围 | 该仓库未纳入子代理核实范围 | 仅实例证据(1.9.2 在 2.26.1 上运行),升级判断缺依据 |
| 8 | 通过 HTTP API 安装插件的端点 | 四个目标插件的 README / dev.md 均未提及 | 需要 API 集成时自行确认 |
| 9 | 各插件对 Halo 2.26.x 的"实际运行兼容性" | 只读到 spec.requires 声明值;除 halo-dev/halo issue 中用户清单的时间戳外未做实际安装验证 | requires 是声明值,不等于实测兼容 |
| 10 | 搜索组件 在 v1.7.1(2025-09-09)之后是否有未发布的重要改动 | 其 pushed_at 为 2025-11-20,晚于最后一次 Release | 若依赖它 + Meilisearch 全文搜索,需自行验证 |
| 11 | sitemap tag 版 plugin.yaml 中 version: 1.0.2 与 tag 名 v1.3.0 不一致的原因 | 记录为事实;【推断】该字段由构建流程注入,仓库内是残留值 | 不要拿 plugin.yaml 里的 version 当版本号(MiniDocs 同理) |
6.1 已确认不存在或与预期不符的事项(重要)
| 用户预期 | 实际情况 | 证据 |
|---|---|---|
插件叫 ai-assistant / plugin-ai-assistant | 不存在该名称的 AI 助手插件;对应真实插件为 summaraidGPT(智阅全能AI助手) | 市场条目 + manifest |
插件叫 minidocs | 真实 metadata.name 为 halo-plugin-minidocs,显示名是「知识库」不是「MiniDocs」 | manifest |
项目集配置项叫 enableDefaultPage | 不存在;实际字段名为 defaultPageEnabled。按前者写配置会静默无效 | portfolio 的 extensions/settings.yaml 与 PortfolioSetting.java |
项目集路由是 /projects | 两个官方来源互相矛盾,未定论:README 写 /projects 与 /projects/{slug};settings.yaml 写 /portfolio 与 /portfolio/{slug} | README vs settings.yaml,启用前必须实测 |
| RAG 有"相似度阈值"配置 | 该配置项不存在。召回控制靠 vectorTopK / keywordTopK / rerankTopN 三个数量参数 | docs/configuration/rag-settings.md 全表 |
| MiniDocs 版本是 1.0.1 | plugin.yaml 中的 1.0.1 是构建期被覆盖的占位值,不是发布版本(真实最新为 1.0.2) | manifest 内注释原文 + Releases API |
项目集仓库是 liuyiwuqing/plugin-portfolio | 仓库已改名为 liuyiwuqing/halo-plugin-portfolio,旧名 301 重定向仍可用;但市场条目与 issue 链接仍写旧名 | GitHub API |
项目集可在市场搜 portfolio 找到 | 搜不到(keyword=portfolio 返回 0 条),必须搜中文 「项目集」 | 市场 keyword 搜索实测 |
| 补充推荐插件里"有些是内置的" | 8 个全部是独立可安装插件,各有多带 jar 产物、独立 Release 与独立 app-id;无一是核心内置 | 8 个仓库的 manifest + Releases API |
| MiniDocs 的两个配置项字段名 | 用户给出的 allowAnonymousRead、allowDocExport 均正确 | extensions/settings.yaml |
⚠️ 一条通用教训:plugin.yaml 里的 version 字段不可当作发布版本号 —— MiniDocs 写 1.0.1(实际 1.0.2)、sitemap tag 版写 1.0.2(tag 名 v1.3.0)。判断版本一律以 GitHub Releases 的 tag 或应用市场条目为准。
附录:本次调研使用的主要来源
| 来源 | URL |
|---|---|
| Halo 官方应用市场 · AI Foundation | https://www.halo.run/store/apps/app-acslk9nu |
| Halo 官方应用市场 · 智阅全能AI助手 | https://www.halo.run/store/apps/app-OWBzA |
| AI Foundation 仓库与 README | https://github.com/halo-dev/plugin-ai-foundation |
| 智阅仓库 | https://github.com/acanyo/halo-plugin-summaraidGPT |
| 智阅配置文档(RAG / AI) | docs/configuration/rag-settings.md、docs/configuration/ai-settings.md |
| MiniDocs 仓库与 README | https://github.com/cosolar/halo-plugin-minidocs |
| 项目集仓库 | https://github.com/liuyiwuqing/plugin-portfolio |
| 项目集对外条目 | https://blog.muyin.site/portfolio/halo-plugin-portfolio |
| Halo 官方插件索引 | https://github.com/halo-sigs/awesome-halo |
| Halo 插件安装官方文档 | https://docs.halo.run/user-guide/plugins |
来源:
halo-kb/实例现状基线.md→## B) 已装插件与主题(原文 5184 字符)
B) 已装插件与主题
B.1 当前启用的主题
仅 1 个主题被 Halo 注册:Ethereal
# MCP 工具
mcp__halo__halo_list_theme_setting_groups
{"themeName":"Ethereal","themeDisplayName":"Ethereal","themeVersion":"1.2.4",
"groups":[{"name":"layout","label":"布局设置"},
{"name":"style","label":"样式设置"},
{"name":"sidebar","label":"侧边栏"},
{"name":"post","label":"文章"},
{"name":"extendPages","label":"扩展页面"},
{"name":"footer","label":"页脚"},
{"name":"links","label":"友情链接"},
{"name":"external_link","label":"外链跳转"},
{"name":"performance","label":"速度优化"},
{"name":"auth","label":"认证"}]}
主题元信息(themes/Ethereal/theme.yaml):
| 字段 | 值 |
|---|---|
| name / displayName | Ethereal / Ethereal |
| version | 1.2.4 |
| requires | >=2.25.0 ✅ 满足(实例 2.26.1) |
| author | 楠南NanNan (https://www.nanzhiy.cn) |
| repo | https://github.com/AloneNanNan/halo-theme-ethereal |
| license | MIT |
| 描述 | 一款基于 Fuwari 二次开发,为 Halo 打造的 Fuwari 风格增强型主题 |
可配置项:10 个设置组(见上),模板文件 27 个,settings.yaml 达 99 KB(配置项极多)。 自定义页面模板 4 个:朋友圈(friends.html)、心愿便签(wishes.html)、时间轴(timeline.html)、技能(skills.html)。
⚠️ 主题配置目前基本是「出厂演示值」(从首页 HTML 内联的主题配置读出):
- 头像仍是
/themes/Ethereal/assets/images/demo-avatar.png - 侧边栏昵称是
NanNan,简介是Lorem ipsum dolor sit amet... - 站点页脚署名是 「俗世客的思行小筑」(这一项已改成真实值)
- banner 标题
Hello,Ethereal!,副标题「生而为人,爱而无畏 / 心之所向,素履以往 / 保持热爱,奔赴山海」 - 公告栏
enable: false,欢迎弹窗enable: false,ICP 备案号为空
⚠️ 磁盘上还有一个 themes/theme-earth/ 目录(Earth 1.15.3),但 Halo 并未注册它 —— 数据库 kind=Theme 的记录只有 1 条(Ethereal)。它属于文件系统残留,见 C.3。
B.2 已安装插件清单(20 个)
取证方式:两条独立通道互证,结果完全一致。
- 文件侧:
/vol1/1000/docker/halo/halo2/plugins/下 20 个 jar 内的plugin.yaml(displayName / version / author) - 同目录
disabled.txt(实例级禁用名单) - 数据库侧:
extensions表中kind=Plugin的spec.enabled字段
# 数据库侧权威查询(只读 SELECT)
docker exec PostgreSQL psql -U halo -d halo -tAc \
"select name || ' | enabled=' || coalesce(convert_from(data,'UTF8')::jsonb->'spec'->>'enabled','?')
from extensions where convert_from(data,'UTF8')::jsonb->>'kind'='Plugin' order by 1;"
✅ 已启用(10 个)
| 插件名 | 显示名 | 版本 | 作者 | jar |
|---|---|---|---|---|
ai-foundation | AI Foundation | 1.1.0 | Halo 官方 | ai-foundation-1.1.0.jar |
app-store-integration | 应用市场 | 1.18.1 | Halo | app-store-integration-1.18.1.jar |
editor-hyperlink-card | 编辑器超链接卡片 | 1.9.2 | Halo | editor-hyperlink-card-1.9.2.jar |
mcp-server | MCP Server | 1.2.0 | Halo 官方 | mcp-server-1.2.0.jar |
PluginCommentWidget | 评论组件 | 3.2.2 | Halo | PluginCommentWidget-3.2.2.jar |
PluginFeed | RSS | 1.5.0 | Halo | PluginFeed-1.5.0.jar |
PluginSearchWidget | 搜索组件 | 1.7.1 | Halo | PluginSearchWidget-1.7.1.jar |
PluginSitemap | Sitemap | 1.3.0 | Halo OSS Team | PluginSitemap-1.3.0.jar |
shiki | Shiki 代码高亮 | 1.5.1 | Halo | shiki-1.5.1.jar |
upage-portal | UPage(AI 建站工具) | 1.0.0 | 凌霞软件 | upage-portal-1.0.0.jar |
⛔ 已安装但被禁用(10 个)
| 插件名 | 显示名 | 版本 | 作者 | 备注 |
|---|---|---|---|---|
ai-assistant | AI 助手 | 2.2.3 | 凌霞软件 | 付费插件;依赖 app-store-integration;本次重点 |
aimodel-hub | AI 模型聚合接口 | 1.0.0 | Handsome | |
plugin-docsme | Docsme | 1.6.0 | 凌霞软件 | 付费;「项目文档管理」;本次重点 |
plugin-maxkb | MaxKB 小助手 | 1.4.7 | Halo | 付费;文章同步 MaxKB |
backup-improved | 增强备份(Backup IMproved) | 1.5.1 | 凌霞软件 | |
PluginContactForm | 联系表单 | 1.6.1 | 凌霞软件 | |
plugin-ldap-login | LDAP 认证 | 1.3.0 | 凌霞软件 | |
plugin-social-login | 社交 IAM 认证 | 1.7.0 | 凌霞软件 | |
restricted-reading | 文章限制阅读 Pro | 1.7.0 | 凌霞软件 | |
seo-tools | SEO 工具集 | 1.9.2 | 凌霞软件 |
禁用名单原始文件(plugins/disabled.txt,153 B,mtime 2026-09-13 19:39):
backup-improved
PluginContactForm
plugin-docsme
plugin-maxkb
plugin-ldap-login
restricted-reading
plugin-social-login
seo-tools
ai-assistant
aimodel-hub
(10 行,与数据库 enabled=false 的 10 条逐条对应,无差异)
B.3 任务点名四个插件的查证结论
| 任务点名 | 实际状态 | 真实插件名 / 确切显示名 |
|---|---|---|
| AI Foundation | ✅ 已安装 + 已启用 | ai-foundation v1.1.0,Halo 官方,requires >=2.26.0 |
| AI 助手 | ⚠️ 已安装但被禁用 | ai-assistant v2.2.3(显示名就是「AI 助手」),凌霞软件,付费插件 |
| MiniDocs | ❌ 未安装 | 插件目录与数据库均无此插件。最接近的候选是 plugin-docsme(显示名 Docsme),描述为「提供项目文档管理功能,支持创建多个文档项目、支持文档版本管理、支持多语言」——但它也被禁用了。是否即用户所指需确认 |
| 项目集 | ❌ 未安装 | 20 个插件中没有任何名字或描述含「项目集」的项。名称相近的候选:upage-portal(UPage「AI 建站工具」,已启用)、plugin-docsme(文档项目,已禁用)。需用户指认 |
B.4 AI Foundation 已完成的配置(后续工作的既定起点)
数据库 extensions 中已有的 AI 资源(只读查出):
kind=AiProvider 1 条
/registry/aifoundation.halo.run/aiproviders/deepseek-57bttiwz
spec: {"providerType":"deepseek","displayName":"深度求索 DeepSeek","enabled":true,
"apiKeySecretName":"<Secret 引用>"}
status: {"phase":"OK","message":"Connectivity check passed","lastCheckedAt":"2026-09-13T11:38:39Z"}
kind=AiModel 2 条
deepseek-57bttiwz / deepseek-flash (language, enabled=true, 支持 streaming/structured-output/tool-call/reasoning)
deepseek-57bttiwz / deepseek-v4-pro (language, enabled=true, 同上)
即:DeepSeek 供应商已接入且连通性检查通过,已注册 2 个语言模型。 (API Key 存放于 Secret 资源 <Secret 引用>,本次未读取其内容。)
来源:
halo-kb/AI能力验证.md→## 一页纸结论(原文 2605 字符)
一页纸结论
| # | 问题 | 实测结论 |
|---|---|---|
| 1 | AI Foundation 装了吗、活着吗 | ✅ 装了、启用中:ai-foundation 1.1.0,phase=STARTED,jar 位于容器 /root/.halo2/plugins/ai-foundation-1.1.0.jar |
| 2 | 配了哪些供应商 / 模型 | 1 个供应商:deepseek-57bttiwz(providerType=deepseek,深度求索 DeepSeek),status.phase=OK、message=Connectivity check passed;API Key 已配(Secret <Secret 引用>,stringData.api-key 存在,长度 35)。2 个模型,均为 modelType=language:deepseek-flash、deepseek-v4-pro |
| 3 | 有没有 embedding 模型(RAG 硬前提) | ❌ 没有。default-model-slots 实测只返回 {"languageModelName":"deepseek-…-flash-…"};ai-foundation-configmap 的 defaults 里 embeddingModelName=null、rerankModelName=null、imageGenerationModelName=null。更关键:DeepSeek 供应商在 AI Foundation 里只有 language adapter,压根没有 embedding adapter |
| 4 | 有没有嵌入向量能力可用 | ❌ 当前不可能。15 个可用供应商中 11 家支持 embedding(硅基流动 / 智谱 / OpenAI / Ollama / 百炼 …),DeepSeek 不在其中——而实例只配了 DeepSeek |
| 5 | 有前台访客问答页吗 | ❌ 没有。AI Foundation 的 HTTP 端点共 16 个,全部是管理员 console API 或只读 CRUD,无任何前台/访客端点;jar 内控制台 UI 只有 5 条路由,无聊天页、无知识库页 |
| 6 | 它的 RAG 是什么形态 | ⚠️ 只是「RAG 中间件」,不是知识库。run.halo.aifoundation.rag 包只有 RagRetriever(接口)、RagLanguageModelMiddleware、RagMiddlewares、RerankingModelRagSourceReranker——没有任何具体检索实现,检索器必须由调用方插件自己写 |
| 7 | 能拿 Halo 文章当知识源吗 | ❌ 不能。AI Foundation 里不存在文章检索器;halo-documents-provider(文章 → Lucene 索引)属 Halo 内核搜索,与 AI Foundation 无关 |
| 8 | 能拿 MiniDocs 文档当知识源吗 | ❌ 不能。对 AI Foundation 全 jar 搜索 minidocs / knowledgebase / PostRetriever:0 命中。MiniDocs 侧也无任何检索 API(只有列表/详情/导入导出) |
| 9 | 真实分块 / 召回参数名 | 没有分块参数(AI Foundation 不分块、不建索引、不存向量)。真实 RAG 参数是 retriever / reranker / maxResults / minScore / maxContextCharacters / contextHeader / promptPlacement / emptyContextPolicy / emptyContextText / retrievalFailurePolicy / rerankFailurePolicy / retrieverOptions —— 与 summaraidGPT 的 vectorTopK/keywordTopK/rerankTopN 完全不同名、也不同层 |
| 10 | 当前搜索是关键词还是语义 | 关键词。搜索引擎扩展点的唯一实现是 run.halo.app.search.lucene.LuceneSearchEngine;PluginSearchWidget 1.7.1 只调用 POST /apis/api.halo.run/v1alpha1/indices/-/search,请求体只有 keyword/limit/highlightPreTag/highlightPostTag,无任何向量参数 |
| 11 | 搜索组件与 AI Foundation 有集成点吗 | ❌ 没有。PluginSearchWidget 的 JS 里只有上面那一个 API 路径;AI Foundation 的 observed-caller-plugins 实测返回 [] |
| 12 | 三项需求现状 | 三项全部「当前不可实现(仅靠 AI Foundation)」,均需额外插件。详见 §C |
一句话:AI Foundation 1.1.0 是一个「模型接入 + 调用 SDK + 控制台测试台」的底座,它不含知识库、不含向量库、不含分块、不含前台页面、不含编辑器集成,且当前实例连 embedding 模型都没有配。任务给出的「只有控制台管理界面 + Java SDK + RAG 测试台,不含访客前台问答页」这一调研结论,经本次独立实测成立。