- 总工笔记deskmindoc
- deskmindoc总工笔记功能简介
- 技术架构
- 技术栈
- 特色功能
- 极简沉浸式编辑
- 水利院基因的垂直工具
- 强大的 Markdown 编辑
- 离线优先 + 云端同步
- 全局快捷键
- 跨平台
- 功能列表
- 编辑与预览
- 项目与分类体系
- 图片 / 附件 / 视频
- 本地草稿与离线
- 同步与发布
- 其他
- 与市面上类似平台的对比分析
- 对比矩阵
- 优势
- 不足
- 部署指南
- 环境要求
- 1. 中间件部署
- 2. 桌面端开发调试
- 3. 桌面端生产构建
- 4. Android 平板构建
- 5. 中间件容器化部署
- 配置说明
- 桌面端(运行时配置,存 localStorage,界面可改)
- 中间件(
deskmindoc-middleware/conf/app.conf) - Mindoc 服务
- 接口说明
- 1. 前端 ↔ Rust 原生命令(
invoke,仅桌面端注册) - 2. 前端 ↔ 中间件 REST API
- 3. 中间件 ↔ Mindoc HTTP API(Cookie Session)
- 日志文件
- 数据存储与备份
- 本地数据保存位置(Windows)
- 笔记文件如何备份
- 项目源码备份程序
- 使用指南
- 快速开始
- 发布步骤(公有项目)
- 私人笔记步骤(私有项目)
- 写作技巧
- 快捷键
- 鼠标操作
- 总工如何借助这款神器实现自身知识价值的传播
- 第一步:日常积累,建立个人知识库
- 第二步:结构化整理,从笔记到文章
- 第三步:从文章到出书
- 第四步:构建个人品牌
- 实际案例路径
- 项目结构
- License
总工笔记deskmindoc
一款为工程师量身打造的桌面端知识管理工具,基于 Tauri v2 + React + Beego v2 构建,支持 Windows 桌面、华为平板鸿蒙、安卓端等。
book书籍、document文档概念:mindoc中一个项目project就是一个book,里面一个个目录下的文章叫文档document
deskmindoc总工笔记功能简介
总工笔记本意是补足mindoc文档管理系统没有桌面端的缺憾,当平板、电脑桌面端离线时仍然可以写笔记。有条件后发布到服务端(mindoc/engineercms),连同本地的图片、视频和附件。
我给总工笔记设计了轻演示——带导航的分页水平滑动、导航跟随高亮,实现所记即所示。
这个工具及其轻量,仅4M多,具备我认知的绝大部分markdown类的富文本编辑功能。
它的主要特色就是轻量、轻演示功能、离线、跨平台、支持word、wps和网页图文直接复制粘贴转存后发布到服务端……
注意:它是markdown编辑器……
Q:记笔记为何不用mindoc网页端?
A:绝大部分场景网页端足够。
这个桌面端只是补齐一个很小众的场景就是没有网络情况下离线使用。
另外就是相对网页端,补齐了markdown编辑器的一点功能:字体、大小、颜色、背景、视频、图片样式、思维导图模版……鼠标中键列选择、拖动字符串……
Q:和word有什么区别
A:word和平台格式交换存在一点点障碍,markdown交换格式比较通用,可直接发布到服务端展示;word不支持插入任意视频。
总工笔记(DeskMindoc)是 Mindoc 文档服务的桌面客户端,定位为总工的”私人速记本”。它解决了水利水电设计院总工在日常工作中面临的四个核心痛点:
- 审图意见记录 — 现场看图纸时随手记录问题,拍照标注,即时发布
- 经验知识沉淀 — 将散落在笔记本、微信、口头交代中的经验系统化归档
- 出书级内容生产 — 结构化模板 + 规范引用,让写书从”挤牙膏”变为”拼积木”
- 跨平台无缝衔接 — 办公室用 Windows 桌面端,工地现场用华为平板,同一套数据
技术架构
┌─────────────────────────────────────────┐
│ Tauri v2 桌面壳 │
│ ┌───────────────────────────────────┐ │
│ │ React 18 前端 │ │
│ │ · Markdown 编辑器 + 实时预览 │ │
│ │ · 思维导图(Markmap) │ │
│ │ · IndexedDB 离线草稿(Dexie.js) │ │
│ │ · Tailwind CSS 极简 UI │ │
│ └──────────────┬────────────────────┘ │
│ ┌──────────────▼────────────────────┐ │
│ │ Rust 后端(Tauri Core) │ │
│ │ · 全局快捷键 Ctrl+Shift+M │ │
│ │ · 窗口管理 + 系统托盘 │ │
│ │ · CSP 安全策略 │ │
│ └──────────────┬────────────────────┘ │
└─────────────────┼───────────────────────┘
│ HTTP
┌─────────────────▼───────────────────────┐
│ Beego v2 中间件(Go) │
│ · JWT 认证 │
│ · 格式清洗 + 自动排版 │
│ · 图片上传中转 │
│ · 审核流程管理 │
└─────────────────┬───────────────────────┘
│ HTTP API
┌─────────────────▼───────────────────────┐
│ Mindoc 文档服务 │
│ · 文档存储 + 版本管理 │
│ · 知识库 + 团队协作 │
│ · 图床服务 │
└─────────────────────────────────────────┘技术栈
| 层级 | 技术 | 说明 |
|---|---|---|
| 桌面壳 | Tauri v2 | Rust 构建,体积小(< 10MB),性能高 |
| 前端 | React 18 + TypeScript | 组件化开发,类型安全 |
| 样式 | Tailwind CSS 3 | 原子化 CSS,暗黑模式 |
| 离线存储 | Dexie.js (IndexedDB) | 结构化草稿离线存储 |
| 思维导图 | Markmap | Markdown 转 SVG 思维导图 |
| 中间件 | Beego v2 (Go) | RESTful API,格式清洗 |
| 认证 | JWT (golang-jwt) | 一次登录,长期有效 |
| 文档服务 | Mindoc | 开源知识库系统 |
特色功能
极简沉浸式编辑
- 左右分栏布局:左侧目录导航 + 中间编辑器 + 右侧实时预览
- 暗黑模式一键切换,适配深夜写作场景
- 专业级排版:微软雅黑 / Inter 字体,行距 1.75,字号 15px
水利院基因的垂直工具
- 项目信息结构化:项目名称、阶段、标段、专业、类别(设计错误/现场问题/优化建议/规范解读)五级信息,项目/阶段/标段/专业均可在“设置”中增删
- 标签体系:坝基、温控、流沙、金结、边坡、围堰等 16 个水利水电专业标签
- 结构化模板:一键插入”问题描述 → 现场情况 → 处理建议”模板
强大的 Markdown 编辑
- 30+ 专业工具按钮(加粗、斜体、下划线、删除线、上标、下标、H1-H6、表格、代码块、引用等)
- 内联富文本:字体颜色 / 背景色 / 字体 / 字号(
<span style>)、插入视频、内嵌网页、可调大小对齐的图片 - 思维导图(Mindmap)代码块,曲线连接,彩色节点,支持暗黑模式自适应
- 6 级目录导航,支持折叠/展开,一键全部折叠为一级
- 图片粘贴/拖拽即上传,图片对话框(本地多选 / URL / 宽度 / 对齐)
- 全屏预览支持「滚动 / 演示(PPT 翻页)」两种展示模式
离线优先 + 云端同步
- IndexedDB 本地草稿存储,断网也能写
- 一键发布到 Mindoc 知识库
- 双轨制:私人笔记 / 提交审核
全局快捷键
Ctrl + Shift + M:任意位置唤起写作窗口,灵感不中断
跨平台
- Windows 桌面端(x64)
- 华为平板(Android, minSdkVersion 24)
- 横屏自适应布局
功能列表
编辑与预览
- Markdown 编辑器 + 实时预览(左右分栏)
- 全屏预览:工具条“全屏”按钮切换到系统级全屏,Esc 退出,实时同步、深色模式与字号缩放均生效
- 30+ 工具按钮:加粗、斜体、下划线、删除线、上标、下标、H1–H6、表格、代码块、引用、列表、任务列表、思维导图、图片、附件、视频、内嵌网页、模板等
- 内联富文本:文字颜色 / 背景色 / 字体 / 字号以
<span style="...">内联样式承载(兼容 Mindoc);支持插入视频、内嵌网页、可调宽度/对齐的图片 - 全屏演示模式:全屏预览可在「滚动」与「演示(PPT 翻页)」间切换,横向滑动按 H1/H2 标题分页翻页(←/→/空格/翻页键翻页,底部页码指示)
- 6 级目录导航,支持折叠/展开、一键全部折叠为一级
- 思维导图:
mindmap代码块,Markmap 渲染,暗黑模式自适应;支持mindmap>高度自定义预览高度 - 代码块:支持 30+ 语言语法高亮(
react-syntax-highlighterPrismLight),工具条语言选择菜单插入带标记的代码块 - 字体缩放 A− / A+(±0.1,范围 0.8–1.6,仅显示层,正文 Markdown 不变)
- 暗黑模式一键切换,并同步原生窗口标题栏主题
- 中键列选择:鼠标中键(滚轮)按下并拖拽,进入矩形(列)选择,多行同时出现光标,可批量编辑,与 Sublime 一致
- 拖拽移动文本:选中文本后按住拖动到新位置即移动(原位置删除、新位置插入),按住
Ctrl拖拽则为复制 - 拖动落点光标:拖动选中文本移动时,目标位置实时显示落点竖杠光标,松开即定位(与 Sublime / VS Code 一致)
- 全屏目录半透明:全屏预览右侧目录为半透明磨砂背景(
backdrop-blur),浅色 / 深色模式均自适应 - 正文字体:编辑器中文采用微软雅黑(Microsoft YaHei),英文、数字与符号采用 Times New Roman
- 拖动提示:鼠标悬停到选中的文本上时,光标自动变为箭头,提示可拖动
项目与分类体系
- 项目 / 阶段 / 标段 / 专业 / 类别 五级结构化信息
- 项目、阶段、标段、专业均可在“设置”中增删(localStorage 持久化)
- 内置默认专业分类与常用标签(
lib/lists.ts/lib/tags.ts)
图片 / 附件 / 视频
- 图片:粘贴 / 拖拽 / 点工具条「图片」插入(本地多选、URL 输入、可选宽度与对齐),复制到 app 数据目录
images/(文件模式,不存 IndexedDB),正文引用localimage://{id}占位符,发布时按目标 Book 上传 - 附件:批量选择附件,复制到 app 数据目录
attachments/(文件模式,不存 IndexedDB),正文引用localattachment://{id}占位符,预览中可点击打开或另存为,发布时按目标 Book 上传 - 视频:点工具条「插入视频」选择本地视频,复制到 app 数据目录
videos/(文件模式,不存 IndexedDB),正文引用videofile://{id}占位符 - GIF 动画:预览中 GIF 默认显示首帧 + 居中圆形「GIF」按钮,点击播放、再点暂停,避免展示前动画已播完
- 打包归档:「文件」菜单支持把笔记 + 图片/附件/视频导出为 zip,并可反向导入还原
本地草稿与离线
- IndexedDB(Dexie)四张表:草稿
drafts、图片images、附件attachments、视频videos(三者均仅存路径元数据,二进制分别在磁盘images/、attachments/、videos/目录) - 本地笔记列表(标题/项目/时间,左侧圆点标注同步状态:灰=未发布、黄=有未同步修改、绿=已同步),支持关键字筛选
- 自动保存:正文或项目/阶段/标段/专业/类别/标签变动后 800ms 防抖自动写入本地草稿,无需手动保存,崩溃/关窗不丢内容
- 打开 / 导出 Markdown 文件(原生文件对话框)
- 新建笔记、结构化模板插入、标题由正文自动派生
- 断网可正常编辑与存私人笔记,联网后发布
- 删除笔记:笔记项悬停显示删除图标,二次确认后删除,并自动清理该笔记引用的本地图片/附件/视频(
localimage://、localattachment://、videofile://)
同步与发布
- 登录:JWT(桌面端 ↔ 中间件);登录即校验 Mindoc 凭据并建立该用户的会话
- 双轨发布:
发布→ Mindoc 公有项目;私人笔记→ Mindoc 私有项目 - 发布前选择/输入目标 Book(identify),并记住上次选择
- 启动会话自检:打开应用时校验中间件里是否有本用户的 Mindoc 会话,缺失则提示重新登录
- 全局快捷键
Ctrl + Shift + M唤起写作窗口
其他
- Windows 桌面端(x64)+ 华为平板(Android, minSdk 24)
- 中间件自动排版 / 格式清洗,Swagger API 文档(
/swagger) - 关于弹框:文件菜单「关于」展示产品介绍、数据存储路径、备份方法、开源组件与代码结构说明;文档链接点击直接调用系统默认浏览器打开
与市面上类似平台的对比分析
对比矩阵
| 特性 | 总工笔记 | Notion | Obsidian | 语雀 | 为知笔记 |
|---|---|---|---|---|---|
| 水利水电行业垂直模板 | 13 专业 + 16 标签 | 需自行配置 | 需插件 | 通用模板 | 无 |
| 离线体验 | 原生 IndexedDB,零依赖 | 需网络 | 本地优先 | 弱 | 弱 |
| 桌面端体积 | < 10MB(Tauri) | Electron ~200MB | Electron ~200MB | Web | Electron |
| 内联富文本 | 颜色/字体/字号/上下标/下划线 + 视频/内嵌网页 | 原生富文本 | 需插件 | 有 | 有 |
| 思维导图 | 原生 Markmap 渲染 | 需 Mermaid 插件 | 需插件 | 有 | 无 |
| 代码块语法高亮 | PrismLight 30+ 语言 | 有 | 有 | 有 | 弱 |
| 全屏演示(PPT 翻页) | 滚动 / 演示双模式 | 有(页面演示) | 需插件 | 有 | 无 |
| 媒体打包归档(zip) | md + 图片/附件/视频 导出导入 | 导出 PDF/Markdown | 本地即文件 | 导出 | 有 |
| 全局快捷键 | Ctrl+Shift+M | 无 | 需第三方 | 无 | 无 |
| 自动保存 | 800ms 防抖 + 同步状态圆点 | 有 | 有 | 有 | 有 |
| 图片上传 | 直传 Mindoc 图床 | 有 | 本地 | 有 | 有 |
| 审核流程 | 双轨制(私人/发布) | 需团队版 | 无 | 有 | 无 |
| 华为平板适配 | 原生 Android 支持 | 有 | 需插件 | 有 | 有 |
| 数据主权 | 自建 Mindoc 服务器 | 云端 | 本地 | 云端 | 云端 |
| 开源 | 完全开源 | 否 | 是 | 否 | 否 |
| 学习成本 | 极低(Markdown) | 中 | 高 | 低 | 低 |
优势
- 行业垂直:开箱即用的水利水电专业分类体系,不需要从零配置
- 轻量高效:Tauri 构建,体积是 Electron 应用的 1/20
- 数据安全:数据存储在自建 Mindoc 服务器,不出内网
- 离线可用:工地现场无网络也能记录,回办公室自动同步
- 审核流程:内置设计院常见的”编写→审核→发布”双轨制流程
- 富文本与 Markdown 兼顾:在纯文本 Markdown 基础上,以「内联 HTML + 白名单」承载文字颜色/字体/字号、上标/下标/下划线、视频、内嵌网页、可调大小与对齐的图片,既保持文件可读可迁移,又不牺牲表达力
- 媒体随文归档:图片/附件/视频连同正文打包为 zip,一键导出/导入,跨机迁移与长期归档完整无缺
- 全屏演示汇报:全屏预览支持「滚动」与「演示(PPT 翻页)」两种模式,现场投屏直接按页翻动,纵向超长页可内部滚动
- 专业排版与极简 UI:中文微软雅黑 + 西文 Times New Roman 衬线、行高 1.75、暗黑模式、字体无级缩放,视觉打磨到产品级
不足
- 生态不如 Notion:没有丰富的第三方插件和模板市场
- 协作较弱:目前以单人写作体验为主,多人实时协作待开发
- 平台覆盖:暂不支持 iOS/macOS,优先满足 Windows + 华为平板
- 非所见即所得:仍是「Markdown + 内联 HTML」输入,没有 Notion/语雀 那种块级可视化富文本编辑器;多重嵌套表格、精确图文混排等复杂排版表达力有限
- 依赖自建 Mindoc:需自行部署维护 Mindoc 服务与中间件,相比 SaaS 产品有一定运维门槛
部署指南
环境要求
| 组件 | 版本要求 |
|---|---|
| Node.js | ≥ 18 |
| Rust | ≥ 1.70(MSVC 工具链) |
| Go | ≥ 1.21 |
| Mindoc | ≥ 2.0(需关闭登录验证码) |
| Android Studio | 仅 Android 打包需要 |
1. 中间件部署
cd deskmindoc-middleware
# 编辑 conf/app.conf(真实配置项仅以下几条):
# httpport = 8090 # 中间件监听端口
# jwt_secret = deskmindoc_secret_key_2026 # JWT 签名密钥
# jwt_expire_hours = 720 # JWT 有效期(小时)
# mindoc_base_url = http://localhost:8181 # Mindoc 服务地址(中间件自身后端依赖)
# 注意:Mindoc 登录账号密码、默认 Book 不再配置在这里,
# 改为桌面端运行时用登录凭据 + 发布时选择目标 Book(见“配置说明”)。
# 生成路由和接口文档
bee generate routers
bee run -gendoc=true -downdoc=true
# 编译运行
go build -o deskmindoc-middleware.exe .
./deskmindoc-middleware.exe
# 默认监听 8090 端口;Swagger 文档见 http://localhost:8090/swagger/2. 桌面端开发调试
cd deskmindoc-client
# 安装依赖
npm install
# 启动开发模式
npm run tauri dev
# 默认监听 1420 端口: http://localhost:1420/3. 桌面端生产构建
cd deskmindoc-client
# Windows 构建
npm run tauri build
# 产物位于:
# deskmindoc-client/src-tauri/target/release/bundle/
可执行文件:src-tauri\target\release\deskmindoc.exe
安装包:src-tauri\target\release\bundle\nsis\总工笔记_0.1.0_x64-setup.exe4. Android 平板构建
cd deskmindoc # 回到项目根目录
# 配置 Android 环境(脚本位于项目根 scripts/ 下)
.\scripts\setup-android.bat
# 构建 Android APK
cd deskmindoc-client
npx tauri android build --release
# 产物位于:
# deskmindoc-client/src-tauri/gen/android/app/build/outputs/apk/release/5. 中间件容器化部署
当前工程尚未提供 Dockerfile,中间件以二进制方式部署(见「1. 中间件部署」的 go build 步骤)。如需容器化,可自行编写 Dockerfile 打包 go build 产物,运行参数与端口通过 conf/app.conf 配置。
配置说明
配置按层级分布在三个工程,桌面端全部在界面内完成,中间件仅保留后端依赖项。
桌面端(运行时配置,存 localStorage,界面可改)
| 配置项 | 位置 | 说明 |
|---|---|---|
| 中间件服务地址 | 右上角“设置” | 含端口,如 http://192.168.1.100:8090 |
| 项目列表 | 右上角“设置” | 增删项目,同步顶部项目下拉框 |
| 阶段 / 标段 / 专业 | 右上角“设置” | 增删阶段、标段、专业,同步顶部三个下拉框 |
| 登录账号 / 密码 | 右上角“登录”弹窗 | 即 Mindoc 账号,登录即建立该用户的 Mindoc 会话 |
| 发布目标 Book(公有) | 右上角“发布”弹窗 | 输入/选择公有项目 identify,记住上次选择 |
| 私有项目 Book(identify) | 右上角“私人笔记”弹窗 | 输入私有项目 identify,记住上次选择 |
| 常用标签 | 源码 lib/tags.ts |
开发期常量,集中管理 |
中间件(deskmindoc-middleware/conf/app.conf)
| 配置项 | 默认值 | 说明 |
|---|---|---|
httpport |
8090 |
中间件监听端口 |
jwt_secret |
deskmindoc_secret_key_2026 |
JWT 签名密钥 |
jwt_expire_hours |
720 |
JWT 有效期(小时) |
mindoc_base_url |
http://localhost:8181 |
Mindoc 地址(中间件自身后端依赖,不对桌面端开放) |
Mindoc 服务
- 需关闭登录验证码,否则程序化登录会失败。
- 桌面端登录输入的账号密码即 Mindoc 的
account/password,按用户名在中间件内存缓存各自的会话(Cookie Session)。
接口说明
系统分三层接口:前端 ↔ Rust 原生命令(Tauri invoke)、前端 ↔ 中间件 REST API、中间件 ↔ Mindoc HTTP API。
1. 前端 ↔ Rust 原生命令(invoke,仅桌面端注册)
| 命令 | 参数 | 返回 | 说明 |
|---|---|---|---|
open_md_file |
— | { path, content } / null |
原生对话框打开 Markdown,读取文本 |
export_md_file |
fileName, content |
保存路径 / null |
导出单个 .md |
open_url |
url |
— | 系统默认浏览器打开链接 |
import_video_file |
— | { name, path } / null |
选择视频复制到 app 数据目录 videos/ |
import_attachment_file |
name, dataBase64 |
{ name, path } / null |
将附件字节写入 app 数据目录 attachments/ |
import_image_file |
name, dataBase64 |
{ name, path } / null |
将图片字节写入 app 数据目录 images/ |
open_local_file |
path |
— | 用系统默认应用打开本地媒体文件 |
save_local_file |
path, fileName |
保存路径 / null |
另存为对话框复制本地媒体文件 |
delete_local_file |
path |
— | 删除单个本地媒体文件(图片/附件/视频) |
export_md_zip |
fileName, content, media[] |
保存路径 / null |
导出 md+媒体为 zip |
import_md_zip |
— | { content, media[] } / null |
从 zip 导入 md+媒体 |
log_to_file |
message |
— | 追加日志到 deskmindoc.log.txt |
export_md_zip的media[]每项字段:{ id, kind(image/attachment/video), name, mime?, sourcePath?(磁盘路径)}。import_md_zip返回的media[]每项为{ id, kind, name, mime?, path },图片/附件/视频均按kind分别写入images/、attachments/、videos/目录。
2. 前端 ↔ 中间件 REST API
前缀 /api/v1,除 auth 外均需请求头 Authorization: Bearer <token>。统一响应体 { code, message, data },code = 0 成功、code = 401 会话/令牌失效;Beego 恒返回 HTTP 200,判断业务状态须看 code。
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /auth/login |
登录({username, password})→ {token, user} |
| GET | /auth/session |
校验 token + Mindoc 会话(启动自检) |
| POST | /auth/refresh |
刷新 JWT |
| POST | /upload/image |
上传图片(multipart file 或 JSON base64)→ {url} |
| POST | /upload/attachment |
上传附件(multipart file)→ {url} |
| GET | /projects |
当前用户可见书籍 → {books:[{identify,name,privately_owned}]} |
| POST | /notes |
创建笔记并推到 Mindoc({project,category,tags,body,type,book_identify}) |
| GET | /notes?book_identify= |
文档列表(Mindoc 无列表接口,暂返回空) |
| GET | /notes/:id?book_identify= |
文档详情(markdown 原文) |
| POST | /notes/sync |
批量同步离线草稿 |
| GET | /review/queue?book_identify= |
待审队列(暂返回空) |
| PUT | /review/:id/approve |
审核通过(Mindoc 无状态接口,暂未实现) |
| PUT | /review/:id/reject |
驳回(暂未实现) |
3. 中间件 ↔ Mindoc HTTP API(Cookie Session)
中间件以「先 GET /login 预热 → POST /login(account+password)」建立 Cookie 会话,按用户名缓存于内存(per-user session)。
| 用途 | 端点 | 说明 |
|---|---|---|
| 登录 | POST /login |
表单 account / password |
| 创建文档 | POST /api/{identify}/create |
表单 identify / doc_name → {doc_id, version} |
| 保存正文 | POST /api/{identify}/content/{id} |
表单 markdown / version(乐观锁) |
| 上传文件 | POST /api/upload |
multipart,字段 identify + editormd-image-file(图片)/ editormd-file-file(附件)→ 返回 JSON 数组 [{errcode, success, url}] |
| 文档详情 | GET /api/{identify}/content/{id} |
→ {markdown, release, ...} |
| 书籍列表 | GET /api/book/list |
→ 可见书籍 |
注意:Mindoc 原生无「文档列表」与「修改文档审核状态」的 REST 接口,中间件
GetDocuments/UpdateDocumentStatus目前为占位实现(返回空 / 报错),列表与审核功能待 Mindoc 侧补齐接口后启用。
日志文件
- 文件名:
deskmindoc.log.txt - 位置:与
deskmindoc.exe同一目录(即std::env::current_exe()所在目录);绿色安装运行即在安装目录,源码运行即在target/release/下。 - 内容:
时间戳 + 级别 + 信息追加写入,主要记录发布失败、文件读写失败、关键错误等。 - 注意:仅关键错误会落盘;非网络类故障如需进一步定位,请查看中间件控制台输出。
数据存储与备份
本地数据保存位置(Windows)
本地数据分两部分存放:IndexedDB/配置在 WebView2 用户数据目录(%LOCALAPPDATA% 基准),图片/附件/视频文件在 Tauri 应用数据目录(%APPDATA% 基准,一般 C:\Users\<用户名>\AppData\Roaming):
| 数据类型 | 存储位置 | 说明 |
|---|---|---|
| 笔记正文(草稿) | %LOCALAPPDATA%\com.deskmindoc.app\EBWebView\Default\IndexedDB\http_tauri.localhost_0.indexeddb.leveldb |
IndexedDB(Dexie)中的 drafts 表 |
| 图片 / 附件 / 视频元数据 | %LOCALAPPDATA%\com.deskmindoc.app\EBWebView\Default\IndexedDB\http_tauri.localhost_0.indexeddb.leveldb |
images / attachments / videos 三表仅存路径元数据 |
| 图片文件 | %APPDATA%\com.deskmindoc.app\images\ |
import_image_file 写入的图片,经 asset 协议($APPDATA/**)读取 |
| 附件文件 | %APPDATA%\com.deskmindoc.app\attachments\ |
import_attachment_file 复制的附件,经 asset 协议($APPDATA/**)读取 |
| 视频文件 | %APPDATA%\com.deskmindoc.app\videos\ |
import_video_file 复制的视频,经 asset 协议($APPDATA/**)加载播放 |
| 用户配置 | %LOCALAPPDATA%\com.deskmindoc.app\EBWebView\Default\Local Storage\leveldb |
中间件地址、项目列表、阶段/标段/专业、暗黑模式、字号、历史记录等(localStorage) |
日志文件
deskmindoc.log.txt不在此目录,而是与deskmindoc.exe同目录存放(见「日志文件」一节)。
笔记文件如何备份
方法一:应用内导出单篇笔记
工具栏「文件」→「导出为 Markdown 文件」(仅正文),或「导出压缩包(含图片/附件/视频)」把笔记连同媒体打包为一个 .zip,适合单篇归档或跨机迁移。
方法二:完整备份本地数据
关闭总工笔记后,复制以下两个目录即可完整备份所有草稿、图片、附件、视频和配置:
%LOCALAPPDATA%\com.deskmindoc.app # 草稿/图片/附件/视频元数据 + 配置
%APPDATA%\com.deskmindoc.app # 图片文件(images/)、附件文件(attachments/)、视频文件(videos/)恢复时将两个目录分别原样覆盖回原位置即可。
方法三:发布到 Mindoc(最可靠的长期归档)
「发布」到公有项目、「私人笔记」到私有项目,正文会上传到 Mindoc 服务器沉淀在云端知识库,脱离单机磁盘。
项目源码备份程序
项目根目录提供了源码备份程序,仅备份源代码与配置,不包含上述笔记数据:
| 文件 | 说明 |
|---|---|
backup.exe |
已编译的备份程序(Windows) |
backup.ps1 |
PowerShell 版本 |
BackupProgram.cs |
备份程序源码 |
用法:
.\backup.exe # 备份源码到 D:\backup\deskmindoc_<时间戳>
.\backup.exe "E:\dest" # 备份到自定义目录自动排除可重建产物:node_modules、dist、src-tauri/target、src-tauri/gen、*.exe。
使用指南
快速开始
- 配置中间件地址:首次使用点击右上角“设置”,填写 deskmindoc-middleware 服务地址(含端口,如
http://192.168.1.100:8090)。 - 登录:点击右上角“登录”,输入 Mindoc 账号密码(登录即校验并建立该用户的 Mindoc 会话)。
- 选择项目信息:顶部栏选择项目、阶段、标段、专业、类别;项目列表可在“设置”中增删。
- 开始写作:编辑区输入 Markdown,右侧实时预览;可粘贴/拖拽图片、插入思维导图、上传附件。
- 保存 / 发布 / 私人笔记:
- 正文与项目/阶段/标段/专业/类别/标签变动后自动保存为本地草稿(断网可用);顶部“保存”为即时落盘兜底
- 右上角“发布” → 发布到 Mindoc 公有项目
- 右上角“私人笔记” → 发布到 Mindoc 私有项目
发布步骤(公有项目)
- 点击右上角“发布”(鼠标悬停提示“发布到公有项目”)。
- 弹窗输入/选择目标 Book 的 identify(下方仅列出公有项目)。
- 确认后,正文中的本地图片(
localimage://)与附件(localattachment://)会逐个上传到该 Book,全部成功后提交正文。 - 任一图片/附件上传失败则整体转为本地草稿,避免误发。
私人笔记步骤(私有项目)
- 点击右上角“私人笔记”(鼠标悬停提示“发布到私有项目”)。
- 弹窗输入“私有项目”的 identify(下方仅列出私有项目)。
- 其余逻辑与“发布”完全一致。
写作技巧
插入思维导图:
```mindmap
# 坝基处理方案
## 防渗措施
- 帷幕灌浆
- 混凝土防渗墙
## 排水措施
- 排水孔
- 减压井
## 加固措施
- 固结灌浆
- 锚杆加固
```使用结构化模板:点击工具栏”模版”按钮,自动插入:
> 记录人: 张工 | 日期: 2025-01-15 | 项目: 梅山水库除险加固工程
## 问题描述
## 现场情况
## 处理建议插入图片:直接粘贴或拖拽图片到编辑器(或点工具条“图片”批量插入),先本地暂存为 localimage:// 占位符,发布时按目标 Book 上传。
插入附件:点工具条“附件”批量选择文件,本地暂存为 localattachment:// 占位符,预览中可点击下载;发布时按目标 Book 上传。
快捷键
| 快捷键 | 功能 |
|---|---|
Ctrl + Shift + M |
全局唤起应用 |
Ctrl + Z |
撤销 |
Ctrl + Y |
重做 |
鼠标操作
| 操作 | 功能 |
|---|---|
| 鼠标中键(滚轮)按下并拖拽 | 列(矩形)选择,多行同时编辑 |
| 拖动选中文本到新位置 | 移动文本(原位置删除、新位置插入,目标位置显示落点光标) |
按住 Ctrl 拖动选中文本 |
复制文本 |
| 粘贴 / 拖拽图片到编辑器 | 本地暂存为 localimage:// 占位符 |
总工如何借助这款神器实现自身知识价值的传播
第一步:日常积累,建立个人知识库
总工在日常工作中产生大量知识资产:
- 审图意见 → 记录为”设计错误”笔记
- 现场检查 → 记录为”现场问题”笔记,附照片
- 规范解读 → 记录为”规范解读”笔记,标注规范编号
- 优化方案 → 记录为”优化建议”笔记,附对比分析
关键动作:每天花 5-10 分钟,用 Ctrl+Shift+M 随时记录,不追求完美,先写下来。
第二步:结构化整理,从笔记到文章
利用项目信息体系(项目 → 阶段 → 标段 → 专业)和标签体系,将零散笔记按主题串联:
- 同一专业的笔记自动归类
- 同一标签的笔记一键聚合
- 利用思维导图梳理知识结构
第三步:从文章到出书
当某个主题积累到 30-50 篇笔记时,就是出书的时机:
- 在 Mindoc 中新建知识库,按章节目录组织
- 将笔记导入对应章节
- 利用结构化模板补充”规范引用”和”参考文献”
- 提交审核,团队协作完善
- 导出为 Word/PDF,交付出版社
第四步:构建个人品牌
- 内部影响力:Mindoc 知识库中的文章被团队查阅、引用,建立”技术权威”形象
- 行业影响力:精选文章公开发布,在水利水电行业中建立个人品牌
- 知识传承:退休后知识库仍在,成为设计院的宝贵财富
实际案例路径
现场发现坝基渗漏问题
↓ 拍照 + 记录
Ctrl+Shift+M 快速笔记
↓ 标注:专业=水工, 标签=坝基/防渗/灌浆, 类别=现场问题
积累 40 篇类似笔记
↓ 按"坝基防渗"主题整理
编写《水利水电工程坝基防渗处理实践》
↓ 提交审核 → 发布
1. 设计院内部培训教材
2. 水利水电期刊发表
3. 出版社正式出书项目结构
deskmindoc/
├── deskmindoc-client/ # Tauri 前端(React 18 + TypeScript + Tailwind)
│ ├── src/
│ │ ├── components/ # React 组件
│ │ │ ├── App.tsx # 主组件(启动会话自检、全屏、暗黑主题、演示模式)
│ │ │ ├── Editor.tsx # 编辑器(粘贴/拖拽上传、拖拽移动文本、字体样式)
│ │ │ ├── Preview.tsx # 实时预览(rehype-raw+rehype-sanitize 富文本、本地图片/附件/视频)
│ │ │ ├── MindmapRenderer.tsx # 思维导图渲染
│ │ │ ├── MarkdownToolbar.tsx # 工具条(格式化按钮、颜色/字体面板)
│ │ │ ├── ProjectBar.tsx # 项目信息栏(项目/阶段/标段/专业/类别)
│ │ │ ├── Sidebar.tsx # 目录/笔记导航
│ │ │ ├── DraftList.tsx # 笔记列表(同步状态圆点、筛选、删除)
│ │ │ ├── FullscreenToc.tsx # 全屏预览目录(半透明磨砂)
│ │ │ ├── SelectDropdown.tsx # 自定义下拉
│ │ │ ├── HistoryInput.tsx # 带历史记录的输入框(Book identify)
│ │ │ ├── FileMenu.tsx # 文件菜单(打开/导出/压缩包导入导出/关于)
│ │ │ ├── Login.tsx # 登录弹窗
│ │ │ ├── ImageUploadDialog.tsx # 图片插入(多选/URL/宽度/对齐)
│ │ │ ├── AttachmentUploadDialog.tsx # 附件上传
│ │ │ ├── IframeDialog.tsx # 内嵌网页
│ │ │ ├── PublishDialog.tsx # 发布/私人笔记目标 Book 选择
│ │ │ ├── SettingsDialog.tsx # 中间件地址 + 项目列表配置
│ │ │ ├── AboutDialog.tsx # 关于弹框
│ │ │ └── Icons.tsx # Font Awesome 图标
│ │ ├── lib/
│ │ │ ├── db.ts # IndexedDB(drafts/images/attachments/videos 四表)
│ │ │ ├── api.ts # 中间件 API 封装(含 checkSession)
│ │ │ ├── localImages.ts # 本地图片暂存(localimage://)
│ │ │ ├── localAttachments.ts # 本地附件暂存(localattachment://)
│ │ │ ├── localVideos.ts # 本地视频路径登记(videofile://)
│ │ │ ├── zipPack.ts # md+图片/附件/视频 zip 打包导出/导入
│ │ │ ├── codeLanguages.ts # 代码语言与语法包注册
│ │ │ ├── slides.ts # 正文按 H1/H2 切分为幻灯片(演示模式)
│ │ │ ├── toc.ts # 目录解析(parseToc,跳过代码块标题)
│ │ │ ├── history.ts # 历史记录列表(localStorage)
│ │ │ ├── projects.ts # 项目列表 localStorage 读写
│ │ │ ├── categories.ts # 分类常量
│ │ │ ├── tags.ts # 常用标签常量
│ │ │ ├── logger.ts # 日志上报(log_to_file)
│ │ │ └── file.ts # 打开/导出 Markdown、open_url
│ │ ├── styles/
│ │ │ └── index.css # 全局样式
│ │ ├── types/
│ │ │ └── react-syntax-highlighter.d.ts # 高亮库类型声明
│ │ ├── main.tsx # 入口
│ │ └── vite-env.d.ts # Vite 类型声明
│ └── src-tauri/ # Rust 后端
│ ├── src/
│ │ ├── lib.rs # 原生命令(打开/导出 md、视频导入、zip 打包、日志、打开链接)+ 全局快捷键
│ │ └── main.rs # 主入口
│ ├── capabilities/
│ │ └── default.json # 权限/能力配置
│ ├── build.rs # 构建脚本
│ ├── Cargo.toml
│ └── tauri.conf.json # Tauri 配置(CSP 置 null、asset 协议放行 $APPDATA)
├── deskmindoc-middleware/ # Go 中间件(Beego v2)
│ ├── controllers/ # 控制器
│ │ ├── auth.go # 登录/刷新/会话检查
│ │ ├── note.go # 笔记 CRUD
│ │ ├── project.go # 书籍列表
│ │ ├── upload.go # 图片/附件上传
│ │ └── review.go # 审核流程
│ ├── services/
│ │ ├── mindoc.go # Mindoc API 封装(per-user session)
│ │ └── formatter.go # 格式清洗
│ ├── middleware/
│ │ ├── jwt.go # JWT 认证中间件
│ │ └── logger.go # 日志中间件
│ ├── routers/
│ │ ├── router.go # namespace 路由注册
│ │ └── commentsRouter.go # 自动生成路由
│ ├── models/
│ │ └── models.go # 请求/响应模型
│ ├── conf/
│ │ └── app.conf # 配置文件
│ ├── swagger/ # Swagger API 文档(swagger.json/yml/index.html)
│ ├── main.go # 入口
│ └── go.mod / go.sum # Go 模块依赖
└── scripts/ # 构建脚本
└── setup-android.bat # Android 环境配置License
MIT
总工笔记 — 让每一位总工的知识,都能成为设计院的宝贵财富。
最后编辑:秦晓川 更新时间:2026-09-20 23:24