🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

墨库 zhuzhaoyun/Molio

MCP
zhuzhaoyun1 天前有提交已提供中文文档扫描:高危兼容 / 相关生态

把你的个人知识库交给 AI。本地优先,每一个字节都归你所有。

67.9/100
综合分
442
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/zhuzhaoyun/Molio.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
该类项目不使用 dsh plugin add 安装,静态安装检查不适用
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 1 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;engines.node 要求 >=24.0.0,不满足 Node 22.19.0;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包molio(未发布到 npm,仅可源码安装)
✗Node 引擎要求 >=24.0.0 · 基线 Node 22.19 不满足
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 15:45:43

🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0
🔴 扫描:高危尚无人工评估

静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。

命令参数由运行时变量拼接读写/删除本地文件发起外部网络请求
查看扫描证据(共 40 处,展示前 40 条)
  • 发起网络请求
    apps/cli/src/daemon-client.ts:70
    res = await fetch(`${this.baseUrl}${path}`, {
  • 发起网络请求
    apps/cli/src/daemon-client.ts:187
    await fetch(`${this.baseUrl}/api/runs/${encodeURIComponent(runId)}`, {
  • 发起网络请求
    apps/cli/src/daemon-client.ts:211
    res = await fetch(
  • 读取本地文件
    apps/daemon/src/static-files.ts:61
    if (existsSync(filePath) && statSync(filePath).isFile()) {
  • 读取本地文件
    apps/daemon/src/static-files.ts:61
    if (existsSync(filePath) && statSync(filePath).isFile()) {
  • 读取本地文件
    apps/daemon/src/static-files.ts:64
    const content = readFileSync(filePath);
  • 读取本地文件
    apps/daemon/src/static-files.ts:73
    if (existsSync(indexPath)) {
  • 读取本地文件
    apps/daemon/src/static-files.ts:74
    const content = readFileSync(indexPath);
  • 发起网络请求
    apps/desktop/src/auth-status-watch.js:68
    const res = await fetch(url, {
  • 读取本地文件
    apps/desktop/src/logger.js:71
    if (!existsSync(logDir)) {
  • 写入本地文件
    apps/desktop/src/logger.js:72
    mkdirSync(logDir, { recursive: true });
  • 读取本地文件
    apps/desktop/src/logger.js:78
    if (existsSync(logFile)) {
  • 读取本地文件
    apps/desktop/src/logger.js:79
    const size = statSync(logFile).size;
  • 写入本地文件
    apps/desktop/src/logger.js:81
    renameSync(logFile, logFile + '.old');
  • 写入本地文件
    apps/desktop/src/logger.js:118
    renameSync(logFile, logFile + '.old');
  • 写入本地文件
    apps/desktop/src/logger.js:121
    appendFileSync(logFile, line, 'utf-8');
  • 执行外部命令来自配置/变量
    apps/desktop/src/main.js:194
    daemonProcess = spawn(process.execPath, [daemonEntry], {
  • 发起网络请求
    apps/desktop/src/main.js:384
    const res = await fetch(`${DAEMON_BASE}/api/knowledge/vaults`, { signal: AbortSignal.timeout(2500) });
  • 发起网络请求
    apps/desktop/src/main.js:413
    const res = await fetch(`${DAEMON_BASE}/api/knowledge/vaults`, { signal: AbortSignal.timeout(2500) });
  • 读取本地文件
    apps/desktop/src/main.js:477
    try { return JSON.parse(readFileSync(recencyFile, 'utf-8')); } catch { return null; }
  • 写入本地文件
    apps/desktop/src/main.js:481
    mkdirSync(path.dirname(recencyFile), { recursive: true });
  • 写入本地文件
    apps/desktop/src/main.js:482
    writeFileSync(recencyFile, JSON.stringify(entries), 'utf-8');
  • 读取本地文件
    apps/desktop/src/main.js:520
    ...(existsSync(DEV_APP_ICON) ? { icon: DEV_APP_ICON } : {}),
  • 读取本地文件
    apps/desktop/src/main.js:925
    if (process.platform === 'darwin' && !app.isPackaged && existsSync(DEV_APP_ICON)) {
  • 发起网络请求
    apps/desktop/src/main.js:1133
    fetch(`${DAEMON_BASE}/api/shutdown`, { method: 'POST' }).catch((err) => {
  • 执行外部命令运行时拼接
    apps/desktop/src/main.js:1144
    execSync(`taskkill /F /T /PID ${pid}`, { timeout: 5000 });
  • 读取本地文件
    apps/desktop/src/updater.js:269
    const found = candidates.find((p) => existsSync(p));
  • 执行外部命令来自配置/变量
    apps/desktop/src/updater.js:314
    const installer = spawn(installerPath, args, {
  • 写入本地文件
    apps/desktop/src/updater.js:421
    writeFileSync(scriptPath, script);
  • 写入本地文件
    apps/desktop/src/updater.js:422
    chmodSync(scriptPath, 0o755);
  • 执行外部命令固定命令
    apps/desktop/src/updater.js:424
    const child = spawn('bash', [scriptPath, zipPath, appBundlePath, String(process.pid)], {
  • 发起网络请求
    apps/landing-page/auth.js:97
    return fetch(authBase() + '/auth/refresh', {
  • 发起网络请求
    apps/landing-page/auth.js:282
    fetch(authBase() + '/auth/send-code', {
  • 发起网络请求
    apps/landing-page/auth.js:336
    fetch(authBase() + '/auth/verify', {
  • 发起网络请求
    apps/landing-page/auth.js:440
    return fetch(authBase() + '/auth/session', {
  • 发起网络请求
    apps/landing-page/pay.js:103
    fetch(payUrl)
  • 发起网络请求
    apps/landing-page/pay.js:109
    fetch(base + '/order?out_trade_no=' + encodeURIComponent(data.out_trade_no))
  • 发起网络请求
    apps/landing-page/pay.js:115
    fetch(base + '/deliver?id=' + encodeURIComponent(r.id) + '&out_trade_no=' + encodeURIComponent(data.out_trade_no))
  • 发起网络请求
    apps/landing-page/resource-hydrate.js:48
    return fetch(marketBase() + '/market/listings/' + encodeURIComponent(m.id) + '/download', {
  • 发起网络请求
    packages/dsh-plugin-molio/src/daemon-client.ts:64
    res = await fetch(`${this.baseUrl}${path}`, {
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

为 AI 智能体打造的本地优先个人知识层,用 LLM Wiki、知识图谱和智能体工作流搭建持续演进的知识空间。

README

由 DeepSeek 最新模型翻译生成
📚 Molio 把你的个人知识库交给 AI。本地优先,每一个字节都归你所有。 English · · 🌐 官方网站 你积累下来的东西并不只有一种:散落在笔记、文档和聊天记录里的经验与方法,还有整本的书籍、满是插图的 PDF、成堆的行业资料。它们大多以 AI 读不了的形式存放,于是每次对话都从零开始。 Molio 把这些统统变成 AI 能读、能用的个人知识库:Claude Code、Codex 等智能体进入你的知识空间,在你积累的一切之上工作——调研、写作、答疑、分析——再把结果以 Markdown 写回,知识库随每个任务越积越厚。一切都在你的机器上运行,从不经过第三方服务器。 从零开始?资源库提供现成的知识库,并且持续更新——导入一个,马上开问。 ▶ 点击观看演示 —— 一本书,一个知识宇宙:《资治通鉴》1362 年的历史,经 Molio 处理成 AI 可探索的知识库 🔁 工作原理 01 · 收集与处理 —— 零散片段也好,整本书也好,都变成可调用的知识库 输入不受格式限制:用 Web Clipper 一键剪藏网页,直接打开 Obsidian 仓库,或批量导入本地文档。
展开完整文档(README 剩余 1 节)
📚 Molio

把你的个人知识库交给 AI。本地优先,每一个字节都归你所有。

English · · 🌐 官方网站

你积累下来的东西并不只有一种:散落在笔记、文档和聊天记录里的经验与方法,还有整本的书籍、满是插图的 PDF、成堆的行业资料。它们大多以 AI 读不了的形式存放,于是每次对话都从零开始。

Molio 把这些统统变成 AI 能读、能用的个人知识库:Claude Code、Codex 等智能体进入你的知识空间,在你积累的一切之上工作——调研、写作、答疑、分析——再把结果以 Markdown 写回,知识库随每个任务越积越厚。一切都在你的机器上运行,从不经过第三方服务器。

从零开始?资源库提供现成的知识库,并且持续更新——导入一个,马上开问。

▶ 点击观看演示 —— 一本书,一个知识宇宙:《资治通鉴》1362 年的历史,经 Molio 处理成 AI 可探索的知识库

🔁 工作原理

01 · 收集与处理 —— 零散片段也好,整本书也好,都变成可调用的知识库

输入不受格式限制:用 Web Clipper 一键剪藏网页,直接打开 Obsidian 仓库,或批量导入本地文档。扫描版 PDF 和 Word / PPT / Excel 文件交给内置的 docling 做版面分析、OCR 和表格重建;图片用 OCR 识别;百万字的大书走分块预处理与摘要流水线,进度可断点续传。落到磁盘上的是纯 Markdown——零迁移,不锁定。
Wiki 引擎随后从这层统一的 Markdown 中抽取实体与概念,织出密集的交叉链接和分层索引——数据只有经过处理,才会成为地基。

02 · 工作与任务——智能体在你的数据上运行

Claude Code、Codex、Gemini CLI、Qwen Code——智能体在你的知识空间里工作:调研、写作、答疑、分析。它们看到的不是白纸一张,而是你积累的全部内容。在统一 GUI 里挑一个智能体,输出流式呈现;扫个二维码,就能用微信在手机上跟你的知识库聊天。

03 · 回流与沉淀——知识库越用越厚

每个任务的产出都写回成 Markdown——可复用、可长期积累的资产。知识图谱持续生长,下一个任务就从更高的起点出发。准备发布了?用 doocs/md 排版,一键分发到 30+ 平台。

📥 支持的输入

| 输入 | 处理方式 |
| Markdown / TXT / HTML / CSV 等文本 | 原样读取——知识库的默认形态 |
| PDF | 版面分析 + OCR + 表格重建 → Markdown |
| Word / PPT / Excel | 同一套流程,保留标题层级和表格 |
| 图片(PNG / JPG / TIFF) | OCR 提取文字 |
| 网页 | 一键剪藏;微信公众号文章走正文抽取 |
| Obsidian 仓库 | 原地打开——原始文件只读 |
| 百万字书籍 | 分块预处理 + 摘要流程,可断点续跑 |

PDF 和 Office 转换由内置的 docling 技能处理。首次转换会下载工具和约 500MB 模型;之后运行复用缓存。

📦 现成的知识库

除了工具本身,Molio 还提供现成的结构化知识图谱——整本书、整个专业领域,预先整理成 AI 可直接使用的知识库,一键导入,不用从零搭建。

覆盖文学、历史、哲学、中医、医学、AI 工程,资源持续上新。亮点包括本体知识库、《资治通鉴》知识体系、产科超声知识库。完整且实时更新的目录见资源库。

这些是 AI 自己造不出来的独特结构化资产。导入 Molio,立刻就能跑 AI 问答、关系查询、专题研究。

- 红楼梦:全 120 回的人物与意象
- 金瓶梅:人物、商业与社会结构
- 史记:人物、制度、思想
- 资治通鉴:1362 年的兴衰
- 明史:帝国、制度与朝堂政治
- 周易:六十四卦全解,附爻变与象数分析
- 老子与庄子:核心概念体系
- 中西哲学:本地 AI 知识库
- 中医经典:六经与三焦辨证
- 妇产超声:胎儿异常、征象与鉴别诊断
- 知识工程:本体、RAG、GraphRAG 与智能体工程
- 广东高考志愿规划:院校与专业
- 三国演义:人物关系图谱,一百二十回全
- 图纸数据提取:从工程图纸到可计算数据
- PCB 柔性制造:从线上下单到黑灯工厂
- 法考刑法:131 个考点与主观题训练
- 中国古典诗文:全景知识库

浏览全部资源 →

📡 渠道

单个 Molio 实例可并行服务多个渠道。多数渠道都能直接在 Web 控制台接入。

| 渠道 | 文本 | 图片 | 文件 | 语音 | 群组 |
| Web 控制台 (默认) | ✅ | ✅ | ✅ | ✅ | — |
| 微信 | ✅ | ✅ | ✅ | ⏳ | ⏳ |
| 飞书 | ✅ | ✅ | ✅ | ⏳ | ✅ |
| Telegram | ⏳ | ⏳ | ⏳ | ⏳ | ⏳ |
| Slack | ⏳ | ⏳ | ⏳ | — | ⏳ |
| Discord | ⏳ | ⏳ | ⏳ | — | ⏳ |

✅ 已支持 · ⏳ 计划中 · — 不适用

🖼️ 截图

智能体工作台:支持多智能体,流式响应

知识空间:库文件树,支持 Markdown 渲染

知识图谱:知识关联的可视化地图

发布:一键同步到 30+ 平台

🚀 快速开始

安装

从 GitHub Releases 下载最新版本:

- Windows:Molio-Setup-x.x.x.exe
- macOS:Molio-x.x.x.dmg

安装并启动。首次运行时,会引导你配置 AI 运行时命令行(例如 Claude Code、Codex、Gemini)。

🐳 Docker / NAS 部署(自托管)

在 NAS 或服务器上把 Molio 跑成自托管 Web 服务。单个容器打包了守护进程、Web UI 和 Claude Code 命令行,同时支持 linux/amd64 和 linux/arm64 —— Synology、QNAP、铁威马、TrueNAS、Unraid 以及大多数其他 NAS 设备都能用。

⚠️ 和桌面应用的区别(部署前先读)

- 只能通过浏览器访问 —— 这个模式没有桌面客户端。 Electron 桌面应用只和它自己在本地启动的守护进程(localhost)通信,无法连接远程 NAS/服务器上运行的容器。
- 守护进程跑在容器里,只能读写挂载进容器的目录。 桌面端那套「用文件夹选择器随便挑本地文件夹当知识库」的流程在这里不适用 —— 浏览器没有文件夹选择器,所以添加知识库时你要填容器内部路径(例如 /vaults/your-folder,不是 NAS 宿主机路径)。
- 想把文件夹暴露成知识库,就在 docker-compose.yml 的 volumes 里把它们挂到 /vaults 下。数据依然完全归你(在你的 NAS 上)—— 变的只是访问方式,从「桌面应用」变成「浏览器 + 挂载卷」。

一键安装(需要 Docker + Docker Compose v2):

China (recommended)
curl -fsSL https://molio-releases.oss-cn-guangzhou.aliyuncs.com/script/install.sh | bash
Overseas
curl -fsSL https://raw.githubusercontent.com/zhuzhaoyun/Molio/main/install.sh | bash
Offline (clone the repo first, then run the bundled script)
bash install.sh

脚本会询问你的知识库目录和端口,然后拉取镜像并启动服务。完成后打开 http://<your-server-ip>:3100,进入 Settings → Runtimes 配置 AI 模型和 API key。首次启动时,Molio 会在挂载目录上自动创建默认知识库,所以你一进来就能直接用,无需手动设置。

手动安装(如果你更想直接用 docker compose):

git clone https://github.com/zhuzhaoyun/Molio.git && cd Molio
cp .env.example .env # AI model is configured later in the web UI
docker compose up -d # then open http://<your-server-ip>:3100

日常命令(在安装目录里执行,默认 ~/molio):

docker compose logs -f # follow logs
docker compose restart # restartbash
docker compose pull && docker compose up -d # update to the latest image
docker compose down # stop

在 .env 里设置 MOLIO_VAULT_PATH,把已有的文档目录挂载到容器内(挂载点为 /vaults)。所有可选项见 install.sh 和 .env.example。

开发(从源码构建)

如果你想从源码构建,或参与开发:

前置条件:
- Node.js >= 22
- pnpm >= 9
- 至少一个 AI 运行时命令行:
- Claude Code
- OpenAI Codex CLI
- Gemini CLI
- Qwen Code
bash

Clone the repository

git clone https://github.com/zhuzhaoyun/Molio.git
cd Molio

Install dependencies

pnpm install

Start development environment (daemon + web)

pnpm dev

Or start individually

pnpm dev:daemon # Backend only (port 3100)
pnpm dev:web # Frontend only (port 5173)

桌面端构建: bash

One-click build + generate unpacked version

pnpm desktop:run

Or full packaging as installer

pnpm package

Generate unpacked directory only (no installer)

pnpm package:dir

测试: bash
pnpm test # Run all tests (node:test)
pnpm typecheck # Type checking
pnpm build # Build all packages
pnpm test:e2e # E2E tests (requires pnpm dev running)

🔌 MCP 服务器与 Pi 包

Molio 的知识库也能以只读 MCP 服务器的形式提供,Claude Code、Cursor、Pi 以及任何兼容 MCP 的智能体都能在对话中搜索并读取你本地的知识库: bash
npx -y @molio/cli mcp # stdio MCP server, 7 read-only tools
claude mcp add molio -- npx -y @molio/cli mcp # register it in Claude Code
pi install npm:@molio/cli # Pi: auto-registers the server + a molio-kb skill

其他 MCP 客户端: json {
"mcpServers": {
"molio": { "command": "npx", "args": ["-y", "@molio/cli", "mcp"] }
}
}

工具:molio_status、kb_vaults、kb_tree、kb_read、kb_search、kb_ask_start、kb_ask_poll —— 严格只读,已以 io.github.zhuzhaoyun/molio 发布到官方 MCP Registry。需要 Molio 服务处于运行状态(桌面应用或 Docker)。详情见 apps/cli/README.md · npm: @molio/cli

🧩 DeepSeek Harness(dsh)插件

Molio 的知识库也能以只读插件的形式提供给 DeepSeek Harness(dsh),dsh 智能体可以在对话中搜索并读取你本地的 Molio 知识库: bash
dsh plugin add dsh-plugin-molio
对外提供 5 个只读工具(molio_status、molio_kb_vaults、molio_kb_tree、molio_kb_search、molio_kb_read),底层调用本地 Molio 守护进程的 HTTP API。需要 Molio 服务正在运行(桌面应用或 Docker)。详情见 packages/dsh-plugin-molio/README.md · npm: dsh-plugin-molio

🏗️ 架构

Molio/
├── packages/
│ └── contracts/ @molio/contracts — Shared type definitions ├── apps/ │ ├── daemon/ @molio/daemon — Hono HTTP server (API + SSE) │ ├── web/ @molio/web — Vite + React frontend │ └── desktop/ @molio/desktop — Electron desktop shell └── package.json Monorepo root config

技术栈:
- 前端: React 19 + Vite 6 + TypeScript
- 后端: Hono + Node.js + SQLite(better-sqlite3)
- 桌面端: Electron 40 + electron-builder
- 构建: pnpm workspace monorepo

❓ 常见问题

macOS 提示应用「已损坏,无法打开」

这是 macOS Gatekeeper 的安全警告,因为 Molio 目前没有通过 Apple 公证(需要订阅 Apple Developer Program,每年 $99)。应用本身没有问题。两种处理方式:

方式 1(推荐):右键点击应用 →「打开」→ 在弹窗中点「打开」(仅首次启动需要)。

方式 2:在终端运行:bash
sudo xattr -d com.apple.quarantine /Applications/Molio.app

之后双击即可正常打开。

🏢 定制服务

把核心知识留在自己的地盘——数据处理、咨询、按需私有化部署。一个演示说明一切。

了解更多 →

🤝 参与贡献

欢迎贡献!规范见 CONTRIBUTING.md。

核心原则:
- 所有改动必须走 Pull Request(禁止直接推送到 main)
- 遵循 Conventional Commits:feat(scope): description
- 修复 bug 要补测试(daemon/desktop 写单元测试,web 写 E2E)
- 提交 PR 前先跑冒烟测试

💬 社区与支持

到 GitHub 提 issue,或扫描下方二维码加入微信社区:

❤️ 致谢

Molio 的灵感与支持来自这些优秀的开源项目:

- multica — 开源 Agent 管理平台,启发了 Molio 的多运行时编排
- doocs/md — 微信 Markdown 编辑器,为 Molio 的排版引擎提供支持
- doocs/cose — 多平台内容分发扩展,为 Molio 的发布能力提供支持
- WeKnora — 腾讯开源的知识管理平台,可供参考设计理念

感谢这些项目的作者与社区!

📄 许可证

Modified Apache 2.0 — 基于 Apache License 2.0,附加商业使用限制。内部使用与非商业用途免费;商业托管/嵌入需获得商业许可。

如果你觉得 Molio 有用,欢迎到 GitHub 给个 ⭐️ star!

⭐ Star · 🐛 报告 Bug · 💡 功能建议
预览分享卡片长什么样 ↓zhuzhaoyun/Molio
分享 · DeepSeek Harness Hub
zhuzhaoyun/Molio

把你的个人知识库交给 AI。本地优先,每一个字节都归你所有。

回到顶部