# EvoFlow **Repository Path**: flycatzly/EvoFlow ## Basic Information - **Project Name**: EvoFlow - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-13 - **Last Updated**: 2026-09-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: 个人工作台 ## README # EvoDesk · EvoFlow 式个人 AI 工作台 > 本地优先的个人"数字驾驶舱"——把分散的任务、笔记、资讯、日程、链接、知识库收口到一处, > 由 AI 按复杂度智能分诊、流程化执行,并用执行数据反哺流程进化,**越用越顺手**。 EvoDesk 借鉴 EvoFlow(arXiv:2502.07373)的进化式多智能体思想:任务不是简单的待办列表, 而是经过 **收件箱捕获 → AI 分诊(标签 × 复杂度)→ 路由到流程模板 → 异构执行器(AI / 脚本 / 人工) 逐步处理 → 评审打分 → 数据反哺流程进化** 的完整链路。所有数据存于本地单个 SQLite 文件, 无云端依赖;AI 不可用时整体降级为手动模式,依然可用。 - 在线仓库:GitHub · Gitee --- ## 🚀 快速开始 ```bash # 1. 安装依赖(要求 Node.js ≥ 20) npm install # 2. 启动开发服务器 npm run dev # → 打开 http://localhost:3000 ``` 首次启动自动建库(`data/evodesk.db`,SQLite + WAL)并写入种子数据: 4 条流程模板(S 轻量 / M 标准 / L 深度 / 资讯摘要)、执行器、示例项目与任务、 周期规则(每日英语 / 每周健身)、示例笔记与快捷指令——**打开即用**。 生产模式: ```bash npm run build npm start # 默认 3000;已占用时用 PORT=3001 npm start ``` **一键双实例(推荐,Windows):** 双击运行 `scripts\start-evodesk.cmd` —— 自动按需构建,并分别拉起 dev(3000) 与生产(3001) 两个独立窗口,与 ZCode 等会话工具无关,关闭窗口即停止对应实例。 日常开发中 `npm run dev` 与 `PORT=3001 npm start` 同时运行没有问题;只有 **build 时**需要先停掉两个实例 (`.next` 目录会被运行中的实例锁定,构建报 EPERM 即此原因)。 > 生产数据库备份:设置页「创建快照」(SQLite 模式),或直接复制 `data/` 目录。 --- ## 🗄️ 数据源(SQLite ⇄ MySQL) 默认 SQLite 零配置;要切换 MySQL:配置 `.env` 的 `DATABASE_URL=mysql://…` 后重启, 首次连接自动建表并写入种子数据;已有 SQLite 数据用设置页「数据源迁移」卡片一键搬迁, 或 `POST /api/db/migrate-from-sqlite`。完整步骤、能力矩阵与常见问题见 **[docs/DATA-SOURCE.md](docs/DATA-SOURCE.md)**。 --- ## 🔑 接入 AI(推荐路径) 1. 「执行器」页 → 供应商档案 → 填入你的 Claude Code 启动器配置目录(含 `*.txt`), 一键扫描导入(坏配置自动跳过,密钥仅存本地并界面掩码) 2. 从档案**按档位派生执行器**:opus → 规划/审查,sonnet → 执行,haiku → 分诊 3. 在「AI 对话台」发消息即可流式对话;会话内可按消息切换模型 4. 没配置 AI?一切照常可用——分诊自动降级为默认建议,脚本/人工步骤不受影响 --- ## 🧭 五分钟上手 1. **捕获**:顶部快速新增,或「收件箱」一句话记录(支持 `POST /api/tasks` 外部投递) 2. **分诊**:收件箱点「一键分诊」→ AI 建议标签/复杂度/流程模板 → 确认就绪 3. **执行**:执行视图逐步推进——LLM 流式产出、脚本确认后执行、人工步骤、审核通过/打回 4. **评审**:完成后打分(1–5)+ 备注,数据自动汇入模板绩效 5. **进化**:流程库「复盘分析」→ AI 生成改进变体 → 审阅 diff → 晋升取代旧版 6. **装点工作台**:首页是可拖拽画布,按喜好组合九类组件 --- ## ✨ 功能全景(M1–M9 全量交付) ### 任务与执行(M1–M3) - **收件箱**:快速录入、AI 一键分诊(失败自动降级)、周期任务到点自动投放,错过补齐 - **任务看板**:状态分列、项目过滤、手动流转(状态机保护,含今日清单勾选完成/取消勾选恢复) - **任务执行**:LLM 流式产出、脚本安全门(渲染预览 + 风险告警 + 目录白名单)、 checkpoint 通过/打回、失败兜底(重试/人工接管/跳过)、运行取消 - **执行器回退链**:角色绑定步骤缺专属执行器时自动回退(角色→executor→planner→triage→任意启用 LLM) ### 画布工作台(M6) - **拖拽画布首页**:九类组件自由组合——指标卡/待办勾选/迷你日历/笔记灵感/常用链接/ 目标进度/知识库概览/风险雷达/快捷指令 - **编辑与锁定**:拖动组件与分组、2/3 栏切换、多工作台、学生/职场/生活三套模板一键套用 - **只读分享**:一键生成 `/share/` 链接(幂等,重复点不断链),可吊销 - **权限管控**:全局模块开关 + **按工作台差异化配置可见模块**(切换工作台即切换导航组合) ### 信息管理 - **常用链接**:浏览器书签一键导入(自动剔除浏览器内部目录)、智能整理(自动分类/ 归纳合并/同标题同站去重)、拖拽移动目录、关键字搜索、分组 JSON/书签 HTML 导出 - **知识库(多资料库)**:Obsidian 主库 + 任意目录(Apifox 导出、myBase 等)统一纳入; 按扩展智能分类统计;文本类在线查看编辑;AI 摘要+标签;备份清单 JSON 导出 - **AI 资料整理**:自然语言描述要求 → 生成整理计划(智能分类划分/相同/类似文章合并重生成/ 内容完善)→ 勾选应用;原件自动备份(`_原始备份/`、`_已合并/`),绝不丢数据; 一键导入 Obsidian(全库或勾选) - **本地文件整理**:白名单目录类型统计、散文件智能分类移动(预览→确认)、 同内容哈希去重(移入 `_重复文件/`,不直接删除) - **日历**:月视图任务截止分布,按日查看与快速新增 ### AI 能力(M3/M4/M8) - **AI 对话台**:多会话、按消息切换模型、流式回复、成本记录、**需求教练模式** (教练式逐轮提问,产出可复制的搭建提示词)、会话绑定工作目录 - **模型路由**:供应商档案导入、档位派生执行器、连通性测试; 双协议(OpenAI 兼容 / Anthropic 兼容) - **流程进化**:复盘分析 → AI 变体 → 人工审阅 → 晋升/淘汰,全程事件留痕 - **自我进化 · 自愈中心**:失败自动入账(任务步骤/求职雷达/快捷指令)→ 启发式诊断 → 有界自动修复(重试步骤/重启 Chrome/重跑抓取,上限 2 次全留痕)→ AI 补充分析 → 需人工给指引 - **技能地图**:扫描本地 Skill 目录(汇总/分类/星标/备注)、本机 MCP 配置只读扫描、 技能包 zip 导出、**AI 创建技能**(逐轮追问生成 SKILL.md → 安装/下载) - **需求教练**:已并入对话台(🏃 教练对话) ### 求职雷达(M9) - BOSS直聘抓取:Chrome DevTools Protocol + 隔离 profile(不碰主浏览器), 实时流式进度、按 job_id 去重入库、筛选搜索、JD 查看、CSV 导出(UTF-8 BOM) - 环境四步引导:启动 Chrome → 登录 → 连通自检 → 抓取;卡住可「取消运行」解锁 - 守门内置:单次 ≤10 页、页间随机 12–22s 延迟、仅限个人求职研究 ### 主题系统(M7 增强) - **9 套主题**:深色科技(默认)/ 极简效率 / 蓝白学习 / 薄荷清新 / 奶油手账 / xfc / 粉色 Ins / **猫爪可爱风**(桌宠小猫+猫耳卡片+贴纸布局)/ **二次元动漫风**(糖果色+星光+吉祥物) - 每套主题独立排版:字体/圆角/阴影/背景纹理/装饰元素,不只是换色 - 顶栏色板下拉即时切换、刷新保持、首屏无闪变;`prefers-reduced-motion` 适配 ### 数据安全(M7) - **一键导出/导入**:JSON 全量备份(默认剥离 API 密钥),导入前强制快照,zod 校验失败不落库 - **快照备份/恢复**:better-sqlite3 backup API,保留最近 20 份,恢复前自动再快照 - 资料库另有备份清单(JSON,文本内联)与书签 HTML 导出 --- ## 🧱 技术栈与架构 - **框架**:Next.js 16(App Router)+ React 19 + TypeScript - **数据**:better-sqlite3 + Drizzle ORM(WAL),单文件 `data/evodesk.db` - **UI**:Tailwind CSS 4 · recharts · @dnd-kit(画布拖拽);主题 = CSS 变量 + data-style 装饰层 - **LLM**:原生 fetch 双协议客户端(OpenAI 兼容 / Anthropic 兼容),流式 SSE,120s 兜底超时 - **校验**:zod(API 与结构化输出);**测试**:vitest(430+ 用例,领域单测 + API 集成) ``` src/ app/ 页面(画布首页/收件箱/看板/对话台/知识库/权限管控/自愈中心…)与 API 路由(tasks/runs/canvases/links/vault/skills/files/self-heal/jobs/backup…) components/ UI 组件(CanvasBoard/ChatView/LinksView/VaultLibraries/SelfHealView/ DesktopPet 桌宠/ThemePicker …) lib/ db/ schema(20+ 表)+ 连接单例 + 迁移(drizzle)+ 种子 domain/ 领域逻辑(状态机/路由器/分诊/runner/进化/脚本安全门/画布/主题/ 备份/技能/MCP/自愈/链接整理/资料库 AI/文件整理…) llm/ 双协议模型客户端 data/ 运行时数据(evodesk.db、backups/、sandbox/)——已 gitignore,勿提交 scripts/ boss_cdp_raw.py(BOSS 抓取,托管运行) docs/superpowers/ 设计文档(specs)与实施计划(plans) ``` ## 🧪 测试 ```bash npx vitest run # 430+ 测试全绿(领域单测 + API 集成) npm run lint # ESLint 干净 npm run build # 生产构建 ``` ## ⚙️ 设置项(「设置」页) | 设置 | 说明 | |---|---| | 主题风格 | 9 套预设即时切换(存浏览器) | | 成本预算(USD) | 近 7 天花费超限进风险雷达 | | Obsidian vault 路径 | 主知识库(白名单,路径穿越拒绝) | | 资料库目录 | vault_roots:Apifox 导出、myBase 等任意目录 | | 技能扫描目录 / 整理目录 / BOSS Python | skills_dirs / organize_dirs / boss_python_cmd | | 待人工超时阈值 / 时区 | 雷达告警与「今天」边界 | ## 🔒 安全与隐私 - 所有数据(含 API 密钥)仅存本机 `data/`;密钥界面掩码、日志不打印、**不入 Git** - 脚本/命令执行默认人工确认,AI 生成命令强制过目;工作目录白名单;执行全量留痕 - 自愈系统的自动修复全部白名单动作 + 次数上限 + 留痕,绝不自动删除数据 - 供应商档案中的 hooks/mcpServers 段落不执行,仅原样透传给 Claude Code 启动 - BOSS 抓取守门:≤10 页、随机延迟、隔离 profile,仅限个人求职研究 ## 🗺️ 后续迭代候选 ⌘K 命令面板、RSS 自动抓取、外部日历 ICS、Obsidian 双链图谱、图片相似去重 (感知哈希)、自愈经验回流流程进化——按使用反馈迭代。 --- ## 📄 许可与声明 个人本地工具,仅供学习与个人效率用途;BOSS直聘抓取功能请遵守网站条款,仅限个人求职研究。 基于 EvoFlow(arXiv:2502.07373)思想设计,感谢开源社区。