MarkiNote✨ 不只是一个 Markdown 阅读器——它是一个 内置 AI Agent 的智能文档管理系统。
AI Agent 能理解你的意图,自主调用 11 种工具来读取、创建、编辑、删除、移动文件,甚至搜索互联网和抓取网页内容。每一次 AI 对文件的修改都会自动备份,支持一键回滚,让你放心地把文档管理交给 AI。
- 🤖 AI Agent:不只是聊天,AI 能直接操作你的文档库(读、写、编辑、删除、移动、搜索)
- 🔧 11 种工具:AI 通过 Function Calling 自主决策调用工具,真正的 Agent 体验
- 🔄 自动备份与回滚:AI 的每次文件修改都自动备份,支持单步/批量回滚
- 📝 Markdown 全能渲染:LaTeX 数学公式、Mermaid 图表、代码高亮,一应俱全
- 📚 文档管理器:上传、新建、移动、重命名、删除,像文件管理器一样管理文档
- 🌍 多语言 / 多主题:支持中文 / English / Français / 日本語,4 种主题可切换
- 🚀 轻量级:基于 Flask + 原生 JS,无需前端框架,启动快资源省
这是 MarkiNote 的核心亮点。AI 助手不是简单的问答,而是一个拥有真实工具调用能力的 Agent:
| 工具 | 说明 |
|---|---|
read_file |
读取文件内容,支持按行范围分段读取 |
write_file |
覆盖写入文件(自动备份) |
edit_file |
查找替换方式局部编辑文件(自动备份) |
create_file |
创建新文件并写入内容 |
create_folder |
创建文件夹,支持多级目录 |
delete_item |
删除文件或文件夹(自动备份) |
move_item |
移动或重命名文件/文件夹(自动备份) |
list_directory |
列出目录内容 |
search_files |
在文档库中全文搜索关键词 |
web_search |
搜索互联网信息(Bing / DuckDuckGo) |
fetch_url |
抓取网页内容,大型页面自动 AI 摘要 |
用户指令 → AI 理解意图 → 自主选择工具 → 执行操作 → 返回结果
↓
可多轮迭代调用(最多 15 轮)
↓
所有文件修改自动备份 → 支持一键回滚
目前支持以下 AI 服务(均兼容 OpenAI API 格式,可自行扩展):
| 提供商 | 模型 |
|---|---|
| DeepSeek | DeepSeek-V3 |
| Kimi (Moonshot) | Moonshot 8K / 32K / 128K |
- ✅ 上传单个文件或整个文件夹
- ✅ 创建、删除、移动、重命名文件和文件夹
- ✅ 面包屑导航,轻松浏览文件结构
- ✅ 右键菜单快捷操作
- ✅ 文件搜索
- ✅ 实时渲染 Markdown 文档
- ✅ 支持 GFM (GitHub Flavored Markdown)
- ✅ 代码高亮显示 (Pygments)
- ✅ 数学公式渲染 (MathJax 3)
- ✅ Mermaid 图表(流程图、时序图、甘特图等)
- ✅ 表格、列表、引用等完整支持
- ✅ 查看 / 编辑源代码
- ✅ 全屏阅读模式
- ✅ 侧边栏 AI 对话面板
- ✅ 流式输出(SSE),实时显示回复
- ✅ 工具调用卡片,可视化展示 AI 操作过程
- ✅ 对话历史管理(新建、重命名、删除)
- ✅ 消息编辑与回滚(回滚时自动恢复文件修改)
- ✅ 文件附件:发送时附加文档库中的文件内容
- ✅ 上下文感知:自动关联当前预览的文件
- ✅ 联网搜索与网页内容抓取
- ✅ 4 种主题:浅色 / 深色 / 蓝色 / 粉色
- ✅ 4 种语言:中文 / English / Français / 日本語
- ✅ 可拖拽调整侧边栏和 AI 面板宽度
- ✅ 一键截图导出 JPG
- ✅ 响应式布局,适配不同屏幕
- Python 3.8 或更高版本
- pip 包管理器
1️⃣ 克隆项目
git clone https://github.com/wink-wink-wink555/MarkiNote.git
cd MarkiNote2️⃣ 创建虚拟环境(推荐)
python -m venv .venv
# Windows PowerShell
.venv\Scripts\activate
# Linux/Mac
source .venv/bin/activate3️⃣ 安装依赖
pip install -r requirements.txt4️⃣ 启动应用
python main.py5️⃣ 打开浏览器
访问 http://localhost:5000 即可使用!
- 获取 API Key:前往 DeepSeek 开放平台 或 Moonshot AI 注册并获取 API Key
- 在应用中打开 AI 面板(右上角 🤖 按钮)
- 点击设置图标,选择 AI 提供商、模型,输入 API Key
- 点击"验证"确认连接成功,即可开始对话!
提示:如需使用
web_search的 DuckDuckGo 搜索引擎,需要设置代理环境变量HTTPS_PROXY。默认使用 Bing 搜索,国内可直接访问。
- 上传文件 — 点击侧边栏的"上传"按钮,选择文件或文件夹
- 预览文档 — 点击左侧文件列表中的文件,右侧实时渲染
- 管理文件 — 右键点击文件/文件夹进行重命名、移动、删除等操作
- 打开 AI 面板 — 点击右上角的 AI 按钮
- 直接对话 — 向 AI 描述你的需求,例如:
- "帮我创建一个学习笔记模板"
- "把 notes 文件夹下的文件按日期重新组织"
- "搜索文档库中关于 Python 的内容并总结"
- "帮我把这篇文档翻译成英文"
- 文件上下文 — 预览文件时,AI 会自动关联当前文件;也可手动附加多个文件
- 回滚操作 — 若 AI 的修改不满意,点击工具卡片中的"回滚"按钮即可恢复
MarkiNote/
├── app/ # Flask 后端
│ ├── __init__.py # 应用工厂函数
│ ├── config.py # 配置文件
│ ├── routes/ # 路由模块
│ │ ├── main_routes.py # 主路由(页面渲染)
│ │ ├── library_routes.py # 文档库 API(CRUD)
│ │ └── ai_routes.py # AI 助手 API(对话/备份/回滚)
│ └── utils/ # 工具模块
│ ├── file_utils.py # 文件操作
│ ├── markdown_utils.py # Markdown 渲染
│ ├── ai_provider.py # AI 提供商适配层
│ ├── ai_tools.py # AI 工具定义与执行
│ └── ai_backup.py # 备份与回滚管理
├── static/ # 前端静态资源
│ ├── script.js # 主前端逻辑
│ ├── ai-chat.js # AI 对话面板
│ ├── i18n.js # 国际化(4 种语言)
│ ├── style.css # 主样式
│ ├── ai-chat.css # AI 面板样式
│ └── libs/ # 本地化第三方库
│ ├── tex-mml-chtml.js # MathJax
│ ├── mermaid.min.js # Mermaid
│ └── html2canvas.min.js # html2canvas
├── templates/
│ └── index.html # 单页应用模板
├── lib/ # 文档库目录(用户文档存放处)
├── main.py # 启动入口
├── requirements.txt # Python 依赖
├── LICENSE # MIT 许可证
└── README.md
- Flask 3.0.0 — Web 框架
- markdown + BeautifulSoup4 — Markdown 解析与 HTML 处理
- Pygments — 代码语法高亮
- requests — AI API 调用与网页抓取
- OpenAI 兼容 API — 支持 DeepSeek / Moonshot 等提供商
- Vanilla JavaScript — 原生 JS,零框架依赖
- MathJax 3 — LaTeX 数学公式渲染
- Mermaid — 图表渲染
- html2canvas — 截图导出
- SSE (Server-Sent Events) — AI 流式响应
- Function Calling — AI 自主调用 11 种工具
- 流式对话 (SSE) — 实时展示 AI 回复与工具调用
- 自动备份系统 — 文件修改前后快照,支持按操作组回滚
- Subagent 架构 — 大型网页内容自动调用二级 AI 生成摘要
欢迎所有形式的贡献!
- Fork 这个项目
- 创建你的特性分支 (
git checkout -b feature/AmazingFeature) - 提交你的更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开一个 Pull Request
如果你发现了 bug 或有功能建议,请在 Issues 中告诉我们!
本项目采用 MIT 许可证 — 详见 LICENSE 文件
感谢以下开源项目:
Made with ❤️ by wink-wink-wink555
如果这个项目对你有帮助,请给个 ⭐️ 支持一下吧!







