办公数字化工具——以邮件和工作记录为中心的任务材料管理桌面应用。
Knot 可以从邮件或手动输入快速创建标准工作文件夹,持续沉淀 工作记录.md,并围绕当前工作、部门/项目归档、资料检索和 AI 工作报告形成一套轻量工作流。
| 页面 | 主要功能 |
|---|---|
| 邮件列表 | 连接 IMAP 邮箱;优先展示本地缓存并在后台刷新;预览正文和附件;识别任务是否已生成;从邮件创建任务并下载附件。 |
| 快速创建 | 为非邮件工作选择日期、填写内容、预览目录名称,并指定部门/项目归属和 SOP 模板后创建任务。 |
| 当前工作 | 自动扫描工作目录中的 Knot 任务;按时间浏览;打开目录;编辑标题、归属和工作记录;将任务归档到部门或项目目录。 |
| 归档管理 | 按部门/项目和年份浏览归档;搜索标题、内容或归属;打开历史任务;将任务恢复到当前工作目录。 |
| 资料检索 | 在用户明确选择的归档范围内筛选候选,由当前 AI 模型结合标题、路径和工作记录摘要返回匹配度、原因及关键词。 |
| 工作报告 | 从当前工作和归档目录按日期扫描任务,选择需要汇总的工作项,生成日报、周报、月报或自定义周期报告,并复制 Markdown。 |
| 设置 | 配置窗口与标题、邮箱、工作目录、命名规则、SOP、AI 模型,以及部门/项目归档目标。 |
| 关于 | 查看版本和更新通道、检查并安装更新、访问发布页和反馈入口;开发者模式下可查看更新诊断信息。 |
- 通过「邮件列表」或「快速创建」建立任务目录。
- 在「当前工作」中维护
工作记录.md、任务标题和部门/项目归属。 - 工作完成后,将任务归档到对应的部门或项目目录。
- 在「归档管理」中检索、查看或恢复历史任务。
- 使用「资料检索」寻找历史材料,或在「工作报告」中汇总阶段性成果。
邮件密码和 AI API Key 均通过 Electron safeStorage 加密保存。
- 桌面应用:Electron
- 前端:React + Ant Design + Vite
- 后端:Go + chi
- 目标平台:Windows / Linux(UOS 建议在目标系统手动打包)
pnpm install开发模式下 Electron 会启动 backend/knot-backend.exe,因此需要先编译后端。
# 1. 编译后端,输出文件名必须是 knot-backend.exe
cd backend
go build -o knot-backend.exe
# 2. 回到项目根目录,启动前端和 Electron
cd ..
pnpm run electron:dev如果你的 Go 工具链通过 Conda 环境提供,可以使用:
cd backend
conda run -n go go build -o knot-backend.exe仅调试前端页面时可以运行:
pnpm run devVite 开发服务器会将 /api 代理到 http://localhost:18000。
pnpm run electron:build:win当前 Windows 打包脚本会通过 conda run -n go 编译后端,并将二进制输出到 electron/bin/knot-backend.exe。如果本机 Go 不使用 Conda,请根据本地环境调整 package.json 中的 backend:build:win 脚本。
pnpm run electron:build:linux更多 UOS / Deepin 打包说明见 BUILD.md。
# 前端单元测试
pnpm test -- --run
# 前端生产构建
pnpm run build
# 后端测试
cd backend
go test ./...
# 后端编译检查
go build -buildvcs=false ./...
# Electron 主进程语法检查
node --check electron/main.js
node --check electron/preload.js- 打开「设置 → 常规设置」,选择窗口样式和应用标题。
- 在「邮件设置」中配置服务器、端口、用户名、密码和 SSL;不使用邮件功能时可以跳过。
- 在「文件夹设置」中确认工作目录和命名格式,默认格式为
{{YYYY}}.{{MM}}.{{DD}}_{{subject}}。 - 在「归档设置」中添加部门或项目,并为每个归属目标配置归档路径。
- 在「SOP 模板」中选择默认任务结构;需要 AI 功能时,再到「模型设置」配置模型和 API Key。
- 从「邮件列表」或「快速创建」建立第一个任务,然后在「当前工作」中维护和归档。
| 设置分区 | 可配置内容 | 说明 |
|---|---|---|
| 常规设置 | 运行状态、窗口样式、标题显示、开发者模式、更新通道 | 窗口样式支持一体化和经典模式,切换后需重启;标题可在 Knot 与 绳结 之间切换。 |
| 邮件设置 | 获取数量、时间范围、IMAP 地址、端口、账号、密码、SSL | 邮件缓存会按服务器、账号及获取范围隔离。密码仅保存加密结果。 |
| 文件夹设置 | 工作目录、命名预设或自定义格式 | 支持 {{YYYY}}、{{MM}}、{{DD}}、{{subject}} 和 {{from}} 变量,并实时预览目录名。 |
| SOP 模板 | 默认模板、模板目录、刷新模板列表 | 内置通用任务、学习笔记和照片项目;也可以在模板目录中安装自定义 SOP。 |
| 模型设置 | 当前模型、服务商、模型 ID、API 地址和 API Key | 支持添加、编辑和切换 OpenAI Chat Completions 兼容模型;自定义模型可以删除。 |
| 归档设置 | 部门、项目、默认归属和归档路径 | 部门归档按年份分组;项目归档直接进入项目目录。 |
- 「标题显示」控制侧边栏和关于页显示
Knot还是绳结,不会修改安装包名称或系统窗口的产品标识。 - 开发者模式默认关闭。关闭时,关于页只显示普通用户需要的版本状态和更新操作。
- 开发者模式开启后,关于页会提供「更新详情」,其中包含用于问题排查的更新诊断信息。
- 更新通道默认只跟踪正式版;开启「预览版更新」后,也会检查 alpha/preview 版本。
- 自动更新仅在打包后的桌面应用中可用。开发环境会提示前往发布页,发布包不支持自动更新时也会提供手动下载入口。
新建任务文件夹使用以下结构:
2026.04.23_工作内容/
├── 00_来源资料/
│ ├── email.txt
│ ├── email.pdf
│ └── 附件/
├── 10_过程文件/
├── 20_成果输出/
└── 工作记录.md
说明:
- 邮件来源任务会保存
email.txt、email.pdf和附件。 - 快速创建任务不会额外生成
references或requirement.md。 - 「当前工作」「归档管理」「资料检索」和「工作报告」均以
工作记录.md为核心数据源。
- 通用任务:创建
00_来源资料、10_过程文件和20_成果输出,适用于日常办公任务。 - 学习笔记:创建学习资料、学习笔记和课后作业目录,并生成对应的 Markdown 记录模板。
- 照片项目:创建面向 Lightroom Classic 和 Photoshop 的照片工作流目录,仅支持从「快速创建」使用。
- 自定义 SOP:在「设置 → SOP 模板」中打开模板目录,每个模板使用一个独立文件夹和
sop.json描述目录、初始文件及允许的任务来源;保存后点击「刷新」即可识别。
“照片项目”是仅供快速创建使用的内置 SOP,适合在 Workspace 外部的 NoAI 照片库中初始化 Lightroom Classic 项目目录。它不会创建 Lightroom 目录册;建议使用一个位于本地 SSD、Workspace 外部的主目录册。
创建前,在「文件夹设置」中将工作目录临时切换到照片库中的目标年份目录,例如 D:\PhotoLibrary_NoAI\Photos\2026,再在「快速创建」中选择“照片项目”。Knot 会生成:
2026.07.20_拍摄主题/
├── 00_Originals/
├── 10_Masters/
├── 20_Exports/
│ ├── Web/
│ ├── Social/
│ ├── Print/
│ └── Delivery/
└── 工作记录.md
00_Originals保存相机 RAW、原始 JPEG 或视频。10_Masters保存 Photoshop 生成并需要长期保留的 PSD/TIFF 主文件。20_Exports按发布用途保存可再生成的 JPEG/PNG。- 照片工作记录默认写入
ai_access: noai和contains_personal_media: true;AI 报告和 AI 资料检索会拒绝发送该项目。 - 为形成第二道边界,照片库根目录仍应包含
NoAI标识。导入后只在 Lightroom Classic 中移动或重命名照片。
工作记录.md 使用 YAML frontmatter 保存机器可读元数据,正文保存面向人工和 AI 的工作内容。
示例:
---
type: task
schema_version: 3
title: 项目材料整理
status: active
created: 2026-04-23
updated: 2026-04-23
source: email
department: 办公室
project_path: C:/Workspace/2026.04.23_项目材料整理
folder_name: 2026.04.23_项目材料整理
archive_status: local_active
hash: xxxxxxxxxxxxxxxx
tags:
- 工作材料
---
# 项目材料整理
## 工作内容
整理项目相关材料,完成来源资料归集、过程文件梳理和成果文件准备。
## 工作过程
- 2026-04-23:创建任务文件夹,整理邮件来源材料。
## 当前进展
已完成来源资料归集,正在补充过程文件。
## 下一步
继续完善成果文件,并将最终版本放入 20_成果输出。「当前工作」会截取正文中的核心内容展示;生成工作报告时,所选任务的工作记录内容会发送给当前 AI 模型。
- Go 后端仅监听
127.0.0.1:18000,不向局域网开放;开发模式只允许本机 Vite 来源,打包后的file://页面使用nullOrigin。 - 当前工作扫描、归档扫描、查重、工作报告和资料检索会跳过路径中带有
NoAI、Private、隐私、身份证、银行卡、手机号、学号信息、人员名单、家庭资料、合同原件、个人信息等标识的目录。 - 归档和恢复只接受包含
工作记录.md的 Knot 任务目录,普通目录不会被移动。 - AI 报告会发送所选任务的工作记录内容;资料检索还会发送候选归档的路径、标题和归属信息。请仅选择允许发送给当前模型服务的目录。
- 上述机制属于应用级基础防护,不能代替操作系统权限、离线备份和敏感资料专用存储。
AI 配置位于「设置 → 模型设置」。Knot 提供内置模型配置,也支持添加 OpenAI Chat Completions 兼容服务:
- 模型名称与服务商:用于在设置页中区分多个模型配置。
- 模型 ID:发送给接口的模型标识,例如
gpt-4.1-mini。 - API 地址:兼容 OpenAI Chat Completions 风格的接口地址,例如
https://api.openai.com/v1。 - API Key:保存时通过 Electron
safeStorage加密,本地设置中不存储明文。
当前选中的模型会用于:
- 工作报告:根据选定任务生成日报、周报、月报或自定义周期报告。
- 资料检索:对本地筛选出的候选归档进行相关性判断,并给出匹配结果。
使用这些功能前必须完成模型、API 地址和 API Key 配置。接口调用失败时会显示错误,不会用虚构内容替代真实工作记录。
knot/
├── electron/ # Electron 主进程和预加载脚本
│ ├── main.js
│ └── preload.js
├── src/ # React 前端
│ ├── components/ # 页面和业务组件
│ ├── services/ # API、设置、路径和邮件缓存服务
│ ├── App.jsx
│ └── main.jsx
├── backend/ # Go 后端
│ ├── api/ # REST API、任务目录、归档和日报逻辑
│ ├── mail/ # IMAP 邮件处理
│ └── main.go
├── scripts/ # 图标生成等辅助脚本
├── BUILD.md # 打包说明
└── package.json
- 邮件列表缓存会按邮箱服务器、账号、端口、SSL、获取数量和时间范围区分,避免不同邮箱混用缓存。
- 「当前工作」依赖文件夹中的
工作记录.md,删除该文件后任务不会被扫描识别。 - 在「当前工作」中编辑任务标题会尝试同步重命名文件夹;如果目标文件夹已存在,会阻止更新并提示冲突。
- Windows 开发模式下后端文件名必须为
backend/knot-backend.exe。