惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
腾讯CDC
Jina AI
Jina AI
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
Apple Machine Learning Research
Apple Machine Learning Research
GbyAI
GbyAI
WordPress大学
WordPress大学
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
小众软件
小众软件
M
MIT News - Artificial intelligence
MyScale Blog
MyScale Blog
D
Docker
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
月光博客
月光博客
L
LangChain Blog
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - Franky
C
Check Point Blog
U
Unit 42
人人都是产品经理
人人都是产品经理

Halo - 强大易用的开源建站工具 | 应用市场

源蝶文档 Hanlo Theme 用户小黑屋 情侣主页 微信公众号同步 互动增强 BBS 社区 重要日期 新野-粗犷主义 站点访问控制 Lottie 动画 展示架 MCP Server 绿野 Luye Log Viewer 超级链接卡片 通知聚合 Akari 深色模式 文章投稿审核 AI RolePlay GitHub 人机验证 心愿便签 Afdian Plus Publica 公共门户 资源下载管理 文章数据趋势分析 归航寻亲 项目展厅
知识库
2026-09-01 · via Halo - 强大易用的开源建站工具 | 应用市场

FIT2CLOUD

菜单

知识库 的图标

知识库

MiniDocs 知识库插件以轻量、简约的设计,可满足日常个人知识沉淀、笔记归档及团队项目文档、协作手册搭建需求,并将知识库内容通过公开接口与 Finder 暴露给第三方主题,方便开发用户侧文档站点。

logo.png

MiniDocs 知识库

MiniDocs 是一款专为 Halo 开源建站平台打造的轻量化、高性能知识库插件,主打多知识库独立管理、树形文档架构、原生 Markdown 创作、精细化分类标签与权限管控能力。无需复杂部署,即可快速为个人博主、小型团队、工作室搭建专属结构化知识库,完美适配笔记归档、项目文档、教程手册、团队协作资料等各类内容场景,丰富 Halo 平台知识库文档管理相关插件库。

plugin-minidocs 知识库插件以轻量、简约的设计,可满足日常个人知识沉淀、笔记归档及团队项目文档、协作手册搭建需求,并将知识库内容通过公开接口与 Finder 暴露给第三方主题,方便开发用户侧文档站点。

插件同时提供 Console 管理界面、minidocsFinder Finder API 和匿名公共 REST API,适用于传统 Thymeleaf 主题和前端框架渲染的文档页。

目标平台:Halo >= 2.26.0

演示界面

Snipaste_2026-08-27_15-03-11

Snipaste_2026-08-27_15-02-36

Snipaste_2026-08-27_15-24-08

功能特性

  • 知识库管理:支持多知识库创建、编辑、删除,公开 / 私有切换、成员授权与排序。
  • 文档管理:支持文档树层级、Markdown 编辑、slug 别名、发布 / 草稿状态、标签与封面。
  • 分类标签:知识库与文档均支持标签,便于按主题归类与检索。
  • 权限控制:内置「知识库查看」「知识库管理」角色模板;私有知识库可指定成员(可访问者)列表,服务端按「创建者 / 成员 / 管理员」做资源级访问校验;可开关「允许未登录用户阅读公开知识库」控制匿名访问。
  • 文档发布:支持单篇文档发布,发布后内容通过公开接口与 Finder 对外可见。
  • 文档导入导出:支持批量导入(同名知识库安全覆盖、失败自动回滚保留原数据),以及将文档导出为 Markdown(受导出开关约束)。
  • 外链分享:知识库卡片可一键开启外链分享,生成 /docs/share/{token} 对外链接,支持可选访问密码与有效期,分享页与阅读页同布局且无需登录。
  • 主题适配:提供 minidocsFinder Finder API 与匿名公共 REST API,便于主题渲染知识库列表、文档树与文档详情。

安装使用

  1. 下载插件 JAR:
    • GitHub Releases:访问本项目 Releases 下载 Assets 中的 JAR 文件。
    • Halo 应用市场:在 Halo 后台「应用市场」搜索 MiniDocs 安装。
  2. 在 Halo Console 的插件管理中上传并安装插件,安装和更新方式可参考:https://docs.halo.run/user-guide/plugins
  3. 安装完成后,访问 Console 左侧的知识库菜单管理知识库与文档。
  4. 如需游客直接访问公开知识库,请在插件设置中开启允许未登录用户阅读公开知识库;如需提供文档下载,请确认允许导出文档已开启。
  5. 主题侧接入方式见下方「主题适配」。

知识库导出与导入

导入知识库仅支持本插件导出的 ZIP 包。插件导出与导入使用固定的包结构:

{知识库名称}/
├── config.json          # 知识库元数据配置 + 文档清单(导入依据)
└── docs/
    ├── {slug}.md        # 文档 Markdown 原文
    └── ...

其中 config.json 记录了知识库的名称、描述、封面、标签、公开性,以及每个文档的 slug、标题、父子关系、作者与时间信息。导入时会通过每个知识库目录下的 config.json 识别并还原知识库;没有 config.json 的目录会被忽略。

使用与注意事项:

  • 本地修订后导回:你可以在本地用任意编辑器修订 docs/*.md 的正文内容后重新导回;请务必保留 ZIP 包根目录下的 config.json 配置文件,不要删除。它还原了文档清单、slug 与父子层级,删除后该知识库将无法被正确识别与还原。
  • 跨站迁移:在旧网站用本插件导出知识库为 ZIP,再在新网站用本插件「导入知识库」导入即可完成迁移;同名知识库默认采用「安全覆盖」策略(先建新 → 验证 → 删旧 → 恢复 slug),失败自动回滚、原数据不受影响。
  • 导入的文档默认处于草稿状态,可在知识库内一键发布后对外可见。

权限控制与知识库可见性

MiniDocs 的权限模型分为两层,叠加生效:Halo 角色模板决定「谁能在 Console 操作知识库」,资源级访问控制决定「谁能读取某个具体的知识库 / 文档」。同一套可见性规则在 Console 管理端、公共 REST API 与主题 Finder 中保持一致。

角色模板

插件安装时注册以下角色模板(在 Halo 后台「用户与权限 → 角色」中可分配给用户):

角色模板 展示名 权限
role-template-minidocs-view 知识库查看 知识库与文档的 getlist(读取)
role-template-minidocs-manage 知识库管理 知识库与文档的 createpatchupdatedeletedeletecollection(写操作),自动依赖「知识库查看」
role-template-minidocs-anonymous (隐藏,自动聚合到匿名角色) 匿名访问公开 REST API 的 getlist

「知识库查看」决定用户能否在 Console 看到知识库菜单并读取内容;「知识库管理」决定能否创建 / 编辑 / 删除知识库与文档、发布 / 取消发布、移动文档。

知识库可见性(公开 / 私有)

每个知识库都有 publicVisible 开关:

  • 公开知识库publicVisible=true):所有人可见,包括未登录访客(具体还受下方「匿名阅读开关」约束)。
  • 私有知识库publicVisible=false,默认):仅以下三类人可见——
    1. 知识库创建者(spec.creatorName,创建时自动写入);
    2. 成员列表中的用户(spec.members,在知识库编辑中维护);
    3. 具备知识库管理权限的用户(见「管理豁免」)。

其余请求一律拒绝:Console 接口返回 403,公共接口 / Finder 返回空或 404,避免通过「猜 URL / 传入私有知识库标识」越权读取私有内容。

管理豁免

以下两种身份视为知识库管理员,对所有知识库(含私有)拥有完全访问与管理权限:

  1. 超级管理员:拥有 role_super- 前缀角色的用户(Halo 超级管理员实际权限为 ROLE_super-role);
  2. 知识库管理者:拥有 plugin:halo-plugin-minidocs:knowledgebase:* 前缀权限的用户(即分配了「知识库管理」角色模板)。

判定严格限定在上述两种来源,不会把仅拥有其它模块(附件、文章、评论等)xxx-manage 权限的普通用户当作知识库管理员,防止越权读取全部私有知识库。

匿名阅读开关

插件设置「基础设置 → 允许未登录用户阅读公开知识库」(allowAnonymousRead,默认关闭):

  • 开启:未登录访客可浏览公开知识库及其已发布文档;
  • 关闭:未登录访客一律被拒(公共 API 返回 403,Finder 返回空),登录用户不受影响。

该开关只影响匿名访问公开知识库;私有知识库的创建者 / 成员 / 管理判定始终生效,不受此开关影响。

各入口的可见性边界

入口 可见内容 说明
Console 管理端(console.api.minidocs.halo.run 当前用户可访问的知识库(公开 + 自己创建 / 是成员的私有 + 管理可见全部) 所有端点经 requireAccessByName() 统一校验,无权限返回 403;创建 / 更新 / 删除 / 发布 / 导入 / 导出等操作均需先通过校验
公共 REST API(api.minidocs.halo.run 详情 / 列表 / 文档树 / 文档列表 / 单篇与全局文档读取:未登录仅公开已发布;已登录且有权限时可访问私有库内容(含草稿) 匿名访问受「匿名阅读开关」约束;对无权限的私有库一律返回 404
主题 Finder(minidocsFinder 按当前访问者返回:登录用户 = 公开 + 自己创建 / 是成员的私有库;未登录 = 仅公开库 与公共 API 一致的可见性边界;文档仅返回已发布
列表 / 分页 listAccessible 先做资源级过滤,再排序、分页 分页 total 为「过滤后的全量」,避免分页数据失真
统计面板(stats) 仅统计当前用户可访问的资源 不向普通用户泄露全站私有知识库 / 文档的聚合数量

文档级可见性

  • 文档有 draft(草稿)与 published(发布)两种状态(历史数据中的 archived 兼容显示为「已归档」)。
  • 对外(公共 API 的列表 / 文档树 / 全局读取、Finder、主题阅读页)只暴露 published 的文档;草稿不会出现在文档树与阅读页中,仅知识库的创建者 / 成员 / 管理者可在 Console 中查看与编辑。
  • 例外:公共 API 的读取端点(详情 / 文档树 / 文档列表 / 单篇与全局文档读取)已登录且对该库有权限时,可读取私有库的草稿文档(文档标识支持 metadata.namespec.slug);未登录或无权访问时这些端点仅返回「公开知识库 + 已发布文档」。详见 REST API 文档 的「可见性语义」。

导出控制

插件设置「允许导出文档(Markdown)」(allowDocExport,默认开启):

  • 开启:可导出单篇文档为 Markdown,也可批量导出知识库 ZIP;
  • 关闭:两者均返回 403;且批量导出只会包含当前用户有权访问的知识库(私有非成员不可导出)。

外链分享

MiniDocs 支持为知识库开启「外链分享」,把知识库内容通过一条对外链接分享给任意访客。分享访问走独立的分享链路,不依赖知识库的公开 / 私有权限:只要持有有效外链,即便是不公开的私有知识库,也无需登录即可查看(此时仅受分享自身的「开启状态、有效期、访问密码」约束)。

开启与管理

  1. 进入 Console 的知识库列表,点击某张知识库卡片右下角的分享图标(绿色,网络节点样式;已开启分享时图标高亮并带绿色小圆点)。
  2. 在弹出的「分享知识库」弹窗中配置:
    • 开启外链分享:总开关;
    • 访问密码:留空表示无密码访问,任何持有外链的人均可直接进入;填写后需输入密码才能查看;
    • 外链有效期:永久 / 7 天 / 30 天 / 90 天,到期后外链自动失效;
    • 复制外链:保存后复制生成的 https://你的域名/docs/share/{token} 链接分发给访客。
  3. 每次保存后弹窗保持打开,可直接复制更新后的外链;再次点击某知识库的分享图标即可重新查看、修改或关闭它的外链。

分享机制

  • 每个知识库对应一条固定外链shareToken 在开启时生成)。外链不设访问次数与人数上限,只要未关闭、未过期即持续有效。
  • 关闭再开启时外链保持不变(token 不重新生成),因此链接地址不会变化;只有设置新有效期才会改变到期时间。
  • 访问密码校验通过后,服务端下发 HttpOnly Cookie 保持该浏览器的访问状态,有效期内无需重复输入。

主题适配

此插件为主题端提供了:

  • Finder API minidocsFinder:支持 listKnowledgeBases(page, size)getKnowledgeBase(kbSlug)listDocs(kbSlug, page, size)getDoc(kbSlug, docSlug)getDocTree(kbSlug)getDocBySlug(docSlug),用于在 Thymeleaf / FreeMarker 模板中渲染知识库与文档。
  • 公共 REST API:提供匿名知识库 / 文档查询接口(含文档树、按 slug 获取),可用于前端框架、小程序或服务端集成。
  • 数据可见性:公开 API 的详情 / 列表 / 文档树 / 文档列表 / 单篇与全局文档读取——未登录仅返回 publicVisible=true 的知识库及其 phase=published 文档;已登录且有权限时可额外访问私有库内容(含草稿,文档标识兼容 metadata.namespec.slug)。Finder 则按当前访问者返回其可访问内容——未登录仅公开库,登录用户额外包含自己创建 / 是成员的私有库;Finder 中所有文档仅 phase=published。匿名访问受插件「允许未登录用户阅读」设置约束。

详细文档请参考:

开发文档

本地开发、构建与调试说明请参考 开发文档

环境要求:JDK 21、pnpm、Docker(DevTools 运行 Halo 服务)。

./gradlew haloServer   # 启动 Halo 开发服务(http://localhost:8090/console,admin/admin)
./gradlew reload       # 代码变更后热重载插件
./gradlew watch        # 监听变更自动重载
./gradlew build        # 构建插件 JAR(含 UI 产物)

许可

GPL-3.0


这是一个开源应用,我们推荐优先在开源仓库中提交 issue,以便开发者更好地接收和跟进问题。

去提交 issue