把你的个人知识库交给 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 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 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 · 💡 功能建议预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
zhuzhaoyun/Molio
把你的个人知识库交给 AI。本地优先,每一个字节都归你所有。
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,778已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,110已汉化DeepSeek 客户端
70.9
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,031已汉化DSH
70.7