VibeWriting 是一款 Electron + React 写作工具,聚焦于从 PDF 高亮中收集素材并借助大模型完成日系风格的写作工作流。
- Electron 主进程提供选择多份 PDF、解析高亮、调用大模型等核心能力,并输出结构化日志,方便复盘和问题定位。
- PDF 解析器可精准恢复高亮文本、批注内容并按照段落位置分组,可作为写作素材直接送入编辑器。
- Preload 层通过
contextBridge暴露最小化window.api调用面,前端在无 Node.js 权限的前提下完成所有操作。 - 前端使用 React + Vite,提供日系风格的写作界面、交互式差异对比视图和写作代理集成。
- 复制
.env.example并根据自身的 OpenAI / OpenAPI 配置填写API_KEY、BASE_URL、MODEL_NAME等字段:cp .env.example .env
- 安装依赖并启动开发调试:
npm install npm run dev
npm run dev会同时启动 Vite 和 Electron,自动打开调试窗口,便于前后端联调。
如需仅运行 Electron 加载打包后的前端,可先执行
npm run build:renderer,随后通过npm start启动。
| 命令 | 说明 |
|---|---|
npm run build:renderer |
仅打包前端到 dist/,供 Electron 生产模式加载。 |
npm run build |
构建前端并调用 electron-builder 生成安装包。 |
npm run pack |
生成解压式目录,便于快速验证产物。 |
npm run build:mac|win|linux |
为指定平台打包(需相应平台环境)。 |
生成的桌面端产物及配置位于 build/,如需自定义图标、签名或渠道包,请在此目录中调整。
├── src/
│ ├── main/ # Electron 主进程(窗口、IPC、PDF 解析、AI 调用)
│ ├── preload/ # 通过 contextBridge 暴露的安全 API
│ └── renderer/ # React + Vite 前端界面与日系风格组件
├── tests/ # PDF 解析脚本与样例文件
├── public/ # 静态资源(含效果图)
└── build/ # electron-builder 配置与打包资源
.env 支持下列字段:
API_KEY:访问模型服务所需密钥。BASE_URL:自定义 OpenAI 兼容服务地址,默认官方。MODEL_NAME:调用模型的名称,例如gpt-4o、gpt-5等。LOG_PATH:可选,控制日志输出目录(默认logs/)。
应用会在运行时自动创建日志目录,并将 PDF 解析与 AI 对话的入参、耗时、返回结果以 JSON 保存,便于排查与审计。
- 主流程:通过“选择 PDF”按钮调用
window.api.openPDFs,主进程会递归遍历目录中的 PDF 并返回路径集合;随后调用window.api.extractHighlights提取结构化高亮数据。 - 命令行验证:
该脚本会读取
node tests/testAtonation.js
tests/files/下示例 PDF,并打印分组后的高亮、批注及摘要信息,便于调试提取效果。
- 效果图无法显示? 请确认仓库包含
public/效果图.png,或在 README 中替换为你自己的截图。 - 对话接口报错? 检查
.env中的API_KEY、BASE_URL与MODEL_NAME是否配置正确,必要时查看logs/下的 JSON 日志获取详细错误信息。
欢迎提交 Issue 或 PR,帮助完善写作体验与 PDF 高亮解析能力。
