FoeFlow 是面向公众号内容工作流的桌面辅助应用,包含文章审核、AI 写作与排版、文章库、Word 导出、邮箱待办和图片压缩。项目使用 React、TypeScript、Vite、Tauri 与 SQLite。
仓库包含前端、Rust 后端、许可证服务和测试,桌面配置版本为 0.1.1。公开版本不包含个人凭据与运行数据。
打开 FoeFlow 网页版。在浏览器中使用文字与截图审核、AI 写作与排版、模板排版、文章库、草稿、Word 导出及图片压缩。
- 网页版使用账号登录。可用用户名和密码自助注册,无需邀请码或激活码;旧邮件箱账号可直接登录。模板排版、草稿与文件工具无需模型;AI 功能需配置自己的模型。
- 稿件、审核记录和设置按账号保存在当前浏览器的 IndexedDB,没有跨设备同步。旧版网页资料可在设置中导入空工作区;模型密钥需重新填写。
- 校内模型使用固定 HTTPS 转发。其他 OpenAI 兼容服务须支持从网页来源发起的跨域请求。实际调用会把相关素材和用户密钥发送给配置的模型服务。
- 「邮件箱」沿用工作台账号,可配置 163 邮箱及 IMAP 授权码,分页查看全部邮件,打开正文后同步标为已读。附件可直接下载,常见图片可预览。
- 秀米链接抓取和设备激活仍由桌面版提供。网页版可粘贴秀米正文或上传截图审核。
本地启动使用 npm run dev:web,按终端显示的地址访问 /foeflow/。部署与验证参见 网页版部署说明。
需要 Node.js / npm;桌面开发另外需要 Rust 和所在平台的 Tauri 开发环境。
npm ci
npm run dev # 前端开发服务器
npm run build # TypeScript 检查 + 前端生产构建
npm test -- --run # 单元测试
npm run lint
npm run tauri:dev # 桌面开发普通 npm run dev 是桌面前端的开发模式;独立网页版使用 npm run dev:web。AI 服务需在设置页配置可用的 API 地址、模型和密钥;默认校内 API 需要相应访问权限。
cd src-tauri
cargo check --locked原始打包配置面向 Windows NSIS。在 Windows 配置好开发环境后,于仓库根目录执行 npm run tauri -- build。
在 macOS 上安装 Xcode Command Line Tools、Node.js 和 Rust 后,于仓库根目录执行:
npm ci
rustup target add aarch64-apple-darwin x86_64-apple-darwin
LICENSE_SERVER_URL=https://your-license-server.example npm run build:macLICENSE_SERVER_URL 必须为许可证服务的 HTTPS 根地址。构建脚本会同时将该地址编译进 Rust 后端并加入 CSP,生成适用于 Apple Silicon 和 Intel 的通用 .app 与 .dmg,最低系统版本为 macOS 12。输出位于 src-tauri/target/universal-apple-darwin/release/bundle/。打开 DMG 后将 FoeFlow 拖入 Applications 安装。
仅需单一架构时,可设置 MAC_BUILD_TARGET=aarch64-apple-darwin 或 MAC_BUILD_TARGET=x86_64-apple-darwin;对应输出目录使用该目标名。Mac 配置与 Windows NSIS 配置独立。
默认采用本地 ad-hoc 签名,没有 Apple 开发者签名及公证。正式分发前需按 Tauri macOS 签名说明配置开发者证书与公证凭据。首次启动需要通过许可证后台激活,新设备不能直接沿用已绑定其他设备的激活码。
「Agent 创作」可以按需追问、查找当前工作台的文章与草稿、写作、审稿和选择排版主题。它会根据工具结果决定下一步。稿件进入「待你确认成稿」后,在预览中核对正文、排版和审稿提示,确认后可复制 HTML、保存到草稿箱或导出 Word。要求修改会生成需要重新确认的新版本。原有「手动共创」与网页的无模型模板排版也可继续使用。
检索范围为当前工作区,匹配到的素材片段会发给用户配置的模型。模型的审稿意见供编辑核对。
手动共创将文章生成、排版生成和风格分析接入共享运行循环,分离模型请求、上下文、业务校验及界面状态。支持中止请求、隔离已取消任务、按校验反馈修改、连续两轮没有变化时停止,并限制文章最多 4 轮、排版最多 3 轮。网络错误不自动重复发送生成请求;无效结果不会用占位文章覆盖预览。
「Agent 创作」参考 Pi Agent 的工具执行和结果回传机制,沿用 OpenAI 兼容模型设置。具体实现见 Agent 架构说明。
桌面后端默认连接本地 http://127.0.0.1:3000。可在编译前通过 LICENSE_SERVER_URL 环境变量指定自有服务;使用普通 Tauri 构建命令时还需核对 src-tauri/tauri.conf.json 的 CSP,Mac 构建脚本会自动加入服务地址。
cd license-server
npm ci
cp .env.example .env
# 为 LICENSE_SEED 和 JWT_SECRET 分别填写独立随机值。
npm start服务使用独立 SQLite 数据库。.env.example 不含实际密钥;测试中的凭据仅供本地测试使用。管理员账户和许可证数据需自行初始化,未包含任何生产数据库、账户密码或已发放激活码。
运行服务测试时使用内存数据库,避免影响本地数据:
DB_PATH=:memory: npm test前端构建与 Rust 检查通过;259 项前端测试和 7 项许可证服务测试通过。网页端以模拟模型验收了素材检索、审稿、成稿确认、导出与修订后重新确认。macOS 通用版本构建完成,两种架构、应用签名与 DMG 完整性校验通过,并在 Apple Silicon Mac 上实际启动至激活页、取得后台设备请求编号。Intel Mac 实机运行、激活后的完整桌面交互及真实 AI、邮箱功能尚未验收。本次改动的 Agent、调用与页面代码检查通过;仓库其他既有代码仍有检查错误。Windows 重打包尚未验收。
| 路径 | 内容 |
|---|---|
src/ |
前端页面、组件、业务逻辑 |
src-tauri/ |
Rust 桌面后端与打包配置 |
tests/ |
单元测试、桌面接口模拟与 E2E 用例 |
license-server/ |
激活、验证和管理员接口 |
public/ |
图标和通用占位素材 |
公开版本以通用演示文章替换原校园范文,以说明占位图替换个人收款二维码。真实 API 密钥与邮箱授权码需自行配置,不应写入源码。
作者:Violet