Files
DevFlow/ARCHITECTURE.md
绝尘 dcc3f0d230 新增: 三层模型设计文档 — 模板/工作流/人设体系
- ARCHITECTURE.md 补充执行层级模型 + 重写 §七 三层模型章节
- 新建专项设计: 流程模板 YAML 规范/AgentPersona 数据结构/实例化流程
- 注册新文档到架构设计 INDEX
- Agent架构说明补充前向关联引用
2026-06-28 04:44:01 +08:00

34 KiB
Raw Blame History

DevFlow — 产研全流程工作流平台

版本: v0.1.0 | 创建: 2026-06-10 | 状态: 设计阶段

一、项目定位

AI 原生的产研操作系统,从想法到上线的全流程编排。

核心特性

  • 想法池 (Idea Pool)持续捕捉、AI 评估、漏斗筛选、晋升立项
  • 多项目并行:多项目同时推进,共享 AI/执行资源
  • 多任务/分支并行:同一项目内多任务同时开发,各绑独立 Git 分支,完成后合并
  • 工作流引擎DAG 驱动,节点可扩展,支持条件分支和断点续跑
  • AI 编排多模型并行Claude/GLM/DeepSeek多 Agent 协作
  • 标注系统 (Annotation):所有内容支持 FIXME/TODO/QUESTION 等标注,统一收集后批量交给 AI 处理
  • 需求-功能-测试可追溯:功能可选做/延/不做,每个功能对应测试用例和测试报告
  • 决策留痕 (Decision Journal):所有关键决策自动记录(原因/方案/时间/上下文),全程可追溯
  • 经验进化 (Evolution):开发过程中的模式自动沉淀为知识库(审查规则/Prompt模板/踩坑经验),持续进化复用
  • 阶段插件:想法→需求→编码→测试→发布,阶段即模板

层级模型(业务层级)

DevFlow 的业务抽象分三层,自上而下层层实例化:

💡 Idea Pool (想法池) — 独立运转,持续捕捉和评估
  └→ 📂 Project (项目) — 多项目并行
       ├→ 🔀 Task (任务) — 绑定 Git 分支,独立工作流
       │    └→ Workflow DAG (编码→测试→审查)
       ├→ 🔀 Task (任务) — 另一个并行任务
       │    └→ Workflow DAG
       └→ 🎯 Release (发布) — 合并多个 Task → 集成测试 → 发布

层级模型(执行层级)

Workflow DAG 的执行层进一步拆分为三层,这是 AI Factory 的核心抽象:

┌──────────────────────────────────────────────────┐
│  模板层 (Template)                                │
│  "应该做什么" — 阶段蓝图、行业最佳实践               │
│                                                   │
│  职责: 定义节点拓扑 + 产出物规范 + 质量门禁         │
│  生命周期: 长期存在,跨项目复用                     │
│  存储: YAML 文件 / DB 模板库                       │
├──────────────────────────────────────────────────┤
│  工作流层 (Workflow)                               │
│  "怎么执行" — DAG 实例、状态机、运行时               │
│                                                   │
│  职责: 拓扑排序 + 节点调度 + 状态流转 + 持久化      │
│  生命周期: 随项目启动/结束,单次执行后归档           │
│  载体: df-workflow (DAG + Executor + StateMachine) │
├──────────────────────────────────────────────────┤
│  人设层 (Persona)                                  │
│  "谁来做" — Agent 角色、能力边界、行为风格           │
│                                                   │
│  职责: 定义 system prompt + 可用工具 + 输出格式     │
│  生命周期: 长期存在,跨节点复用                     │
│  注入点: AINode 执行时载入对应人设                   │
└──────────────────────────────────────────────────┘

关键设计原则:三层各自独立演化,在 AINode 执行时交汇。

  • 模板 = 可复用的蓝图(定义节点拓扑 + 建议人设 + 质量门禁)
  • 工作流 = 模板的运行时实例(含状态、数据绑定、执行记录)
  • 人设 = Agent 的角色卡system prompt + 工具集 + 行为规则)

AI Working 定位体系

DevFlow 的终极交互模型是 AI 驱动 (AI Working)AI 是系统的主要操作者,人是监督者与决策者

         ┌──────────────────────────────────┐
         │         AI Chat唯一对话入口     │
         │  工具注册表 ←→ Agentic Loop ←→ 审批 │
         └──────────────┬───────────────────┘
                        │
    ┌───────┬───────┬───┴───┬───────┬───────┐
    │ 查看  │ 驱动  │ 创意  │ 决策  │ 录入  │  ← 人的五种行为
    └───────┴───────┴───┬───┴───────┴───────┘
                        │
         ┌──────────────┴──────────────┐
         │       IPC 命令层             │
         │  project / task / idea /    │
         │  knowledge / workflow / ai  │
         └──────────────┬──────────────┘
                        │
         ┌──────────────┴──────────────┐
         │       数据层 (SQLite)        │
         └─────────────────────────────┘

人的五种行为(均通过 AI Chat 完成)

行为 说明 示例
查看数据 不点页面翻列表,自然语言查询 "最近 blocked 的任务有哪些?" → AI 调 list_tasks
驱动执行 不手动推进状态,对话指令驱动 "把子1推进到 in_progress" → AI 调 advance_task
创意捕获 不打开灵感表单,对话中自然捕获 "这个想法记一下" → AI 调 create_idea
决策审批 不逐条点批准Chat 内确认/拒绝 工具审批卡片Agentic Loop 内)
录入信息 不填 CRUD 表单,自然语言录入 "建个项目叫 foo在 E:/bar" → AI 调 create_project

关键设计原则

  1. AI 工具注册表是主接口IPC 就绪后必须立刻注册为 AI 工具,页面是旁路查看器
  2. 页面降级为「查看层」Dashboard / Projects / Tasks / Ideas 等页面用于事后查看、审计、回放
  3. 功能优先级 = AI 工具覆盖度:人对模块的操作能力取决于 AI 工具注册表中该模块的工具是否完整
  4. 灵感 / 项目 / 任务 三模块的 AI 工具必须完全覆盖 CRUD + 状态推进 + 升级/评估

二、技术栈

技术 说明
Desktop Tauri v2 Rust 后端 + WebView 前端
Frontend Vue 3 + TypeScript + Pinia Arco Design 组件库
Engine Rust (Workspace) 多 crate 架构
Storage SQLite (rusqlite) 本地优先,零运维
AI Multi-Provider Claude/GLM/DeepSeek/OpenAI 兼容
Container Docker (bollard) 隔离构建/测试环境

三、系统架构

┌──────────────────────────────────────────────────────────────────┐
│                        DevFlow Desktop                            │
│                     Tauri v2 · Vue 3 · TS                        │
├──────────────────────────────────────────────────────────────────┤
│  💡 Idea Pool          │  📂 Multi-Project Manager              │
│  捕捉·评估·晋升         │  多项目并行·资源调度                     │
├────────────────────────┴─────────────────────────────────────────┤
│  🔀 Task & Branch Manager (任务/分支管理)                         │
│  多任务并行·分支创建·合并协调·冲突解决                              │
│  ┌──────────┬──────────┬──────────┬──────────────────────────┐  │
│  │ Task A   │ Task B   │ Task C   │ Release                  │  │
│  │ feat/auth│feat/pay  │fix/login │ main                     │  │
│  │ [DAG]    │ [DAG]    │ [DAG]    │ [合并→测试→发布]          │  │
│  └──────────┴──────────┴──────────┴──────────────────────────┘  │
├──────────────────────────────────────────────────────────────────┤
│  Workflow Engine (DAG · Node · State · Event · Persist)          │
├──────────────────────┬───────────────────────────────────────────┤
│  AI Orchestrator     │  Execution Runtime                        │
│  Multi-Provider      │  Shell (tokio::process)                   │
│  Agent Coordinator   │  Merge · Conflict Resolve                 │
├──────────────────────┴───────────────────────────────────────────┤
│  Storage Layer (SQLite)                                          │
│  ideas · projects · tasks · branches · workflows · artifacts     │
└──────────────────────────────────────────────────────────────────┘

四、Crate 结构

devflow/
├── Cargo.toml                     # Workspace 根
├── crates/
│   ├── df-core/                   # 核心类型、错误、常量、事件
│   ├── df-workflow/               # 工作流 DAG 引擎 (核心)
│   ├── df-nodes/                  # 内置节点集合 (AI/Script/Human)
│   ├── df-ai/                     # AI 编排层 (Multi-Provider/Coordinator)
│   ├── df-execute/                # 执行运行时 (Shell)
│   ├── df-storage/                # 存储层 (SQLite)
│   ├── df-ideas/                  # 想法池引擎 (捕捉/评估/评分/晋升)
│   └── df-project/                # 多项目管理 (调度/上下文/时间线)
│
│   注: df-task / df-traceability / df-evolve / df-stages / df-plugin
│       5 个 crate 已移除2026-06-14 零引用清理,推翻原"保留骨架"取舍)
├── src-tauri/                     # Tauri 主入口 (Rust)
│   └── src/
│       ├── main.rs
│       ├── state.rs
│       └── commands/              # IPC 命令
├── src/                           # Vue 3 前端
│   ├── views/                     # 页面组件
│   ├── components/                # 业务组件
│   ├── stores/                    # Pinia 状态
│   └── composables/               # 组合式函数
├── templates/                     # 工作流模板 (YAML)
└── plugins/                       # 外部插件目录

五、核心模块设计

5.1 Workflow Engine (df-workflow)

引擎不感知具体业务,只负责 DAG 执行。

  • Node trait:所有节点的统一抽象 (execute, schema, is_blocking)
  • DAG Executor:拓扑排序 → 并行调度 → 状态流转 → 持久化
  • EventBustokio::sync::broadcast 异步事件广播
  • PersisterSQLite 快照,支持断点续跑
  • Conditions:基于表达式的条件分支引擎

5.2 Idea Pool (df-ideas)

想法是独立于项目的第一公民。

  • Capture:文本/剪贴板/快捷键捕捉,不打断当前工作
  • EvaluatorAI 自动评估市场潜力、竞品、技术可行性
  • Scoring:多维加权评分 (0-100)
  • Graph:想法关联图,相似想法自动发现,可合并
  • Promotion:高分想法晋升为项目,自动携带评估结论

想法状态:Draft → PendingReview → Approved → Promoted / Rejected / Archived

5.3 Multi-Project Manager (df-project)

  • ProjectSlot每个项目的运行时槽位活跃任务数、优先级、AI 配额)
  • SchedulerAI 并发预算分配、Docker 资源配额
  • Context:项目上下文(代码结构、依赖、规范),供 AI 消费
  • Timeline:项目时间线,所有事件的时序视图

项目状态:Planning / InProgress / Testing / Releasing / Completed / Paused / Cancelled

5.3.1 Task & Branch Manager (df-task) — 已移除

2026-06-14 零引用清理df-task crate 已删除。以下内容保留作为历史设计参考,不再对应实际代码。

项目内部的并行任务管理,每个任务绑定一个 Git 分支。

  • Task:独立工作单元,包含标题、描述、绑定的分支、关联的工作流
  • BranchManager:自动创建分支、跟踪分支状态、与 main 的 diff 统计
  • MergeCoordinator合并策略管理、冲突检测、AI 辅助冲突解决
  • ReleasePlanner:选择多个已完成的 Task 合并,编排集成测试和发布流程
Task 生命周期:
  Todo → InProgress → InReview → Testing → Done
    ↓ (随时)       ↓
  Blocked        Cancelled

分支策略:
  main ────────────────────────────────
    └── feature/auth ──── ✅ merged
    └── feature/payment ─ 🔄 in progress
    └── bugfix/login ──── ✅ merged
    └── release/v2.3 ──── ⏳ waiting (merge auth + payment)

合并协调:

  1. 冲突检测Task 完成时自动检测与 main 的冲突
  2. AI 辅助解决:冲突文件交给 AI 分析并建议解决方案
  3. 发布编排:选择多个 Task → 创建 release 分支 → 合并 → 集成测试 → 发布

5.4 Traceability & Annotation (df-traceability) — 已移除

2026-06-14 零引用清理df-traceability crate 已删除。以下内容保留作为历史设计参考,不再对应实际代码。

贯穿所有阶段的可追溯性引擎。

5.4.1 标注系统 (Annotation)

任何内容(需求文档、代码、测试报告、设计文档)中都可以插入标注:

标记 含义 场景
[FIXME] 需要修复 代码/文档中发现问题
[TODO] 待办事项 后续需要补充的内容
[QUESTION] 疑问待确认 需要人工决策的问题
[RISK] 风险标记 潜在的技术/业务风险
[DECISION] 决策标记 记录为什么做此选择
[OPTIMIZE] 优化建议 可改进但不紧急

批量处理流程

人工在各内容中插标注 → 系统统一收集所有未处理标注
    → 按类型/优先级分组 → 一键交给 AI 批量处理
    → AI 逐条处理并标记完成 → 人工确认处理结果

标注可以附加在任何实体上(需求、功能、代码文件、测试用例)。

5.4.2 需求-功能-测试映射

📋 需求 (Requirement)
  └→ 功能 (Feature) [状态: Selected / Deferred / Rejected]
       └→ 测试用例 (TestCase) [自动/手动生成]
            └→ 测试执行记录 (TestRun)
                 └→ 测试报告 (TestReport)
  • 功能状态Selected(选中做) / Deferred(延期) / Rejected(不做)
  • 每个功能可标注不做的原因(自动进入决策留痕)
  • AI 根据功能描述自动生成测试用例
  • 测试用例与功能双向关联,覆盖率一目了然
  • 测试报告自动生成,标注 PASS/FAIL/SKIP

5.4.3 决策留痕 (Decision Journal)

所有关键决策自动或半自动记录,全程可追溯。

pub struct Decision {
    pub id: DecisionId,
    pub project_id: ProjectId,
    pub context: String,          // 决策背景
    pub question: String,         // 需要决定的问题
    pub alternatives: Vec<String>,// 考虑过的方案
    pub decision: String,         // 最终决定
    pub reason: String,           // 决策原因
    pub decided_by: DecidedBy,    // AI / Human
    pub related_entity: EntityRef,// 关联实体(功能/需求/代码等)
    pub impact: String,           // 影响范围
    pub created_at: DateTime,
}

自动记录的决策场景

  • 功能标记为"不做"时,强制填写原因
  • AI 选择了方案 A 而非方案 B 时,记录理由
  • 代码审查中发现风险时的处理决策
  • 测试失败后的修复策略选择
  • 发布前的检查点决策

决策时间线视图:按时间展示项目的所有决策,支持按类型/阶段筛选。

5.4 AI Orchestrator (df-ai)

  • LlmProvider trait:统一接口,各模型实现(provider.rs
  • ModelRouter:按任务类型路由到最优模型 + 降级链 — 已删R-PD-7模型选择改由调用方在 LlmProvider 实现间直接指定
  • AgentCoordinator:多 Agent 协作Planner/Coder/Reviewer/Fixer⚠️ 骨架空壳(coordinator.rs,仅单元结构体 + 日志,未实现实际协调)
  • ContextManagerToken 预算管理(context.rs,完整实现)
  • ToolRegistry:工具注册(ai_tools.rs,供 Agent 调用)

5.5 内置节点 (df-nodes)

节点 功能 状态
AINode 调用 LLM支持流式输出、工具调用 已实现
ScriptNode Shell/脚本执行 已实现
HumanNode 人工审批/确认 (阻塞) 已实现
DockerNode Docker 容器操作 未实现
GitNode Git 操作 (libgit2) 未实现
NotifyNode 通知 (桌面/飞书/Webhook) 未实现
HTTPNode HTTP 请求 未实现
SubflowNode 嵌套子工作流 未实现

crates/df-nodes/src/ 实际仅 ai_node / script_node / human_node 3 文件Docker/Git/Notify/HTTP/Subflow 为设计预留,尚未实现)。详见 df-nodes 模块文档

六、数据模型

SQLite 表结构

真相源:crates/df-storage/src/migrations.rsV1-V13幂等迁移。下表对齐真实 schema字段/类型/默认值/外键与迁移文件一致。Rust 结构体见 crates/df-storage/src/models.rs

13 张业务表(另含内部表 schema_version 记录迁移版本)。

-- 想法池 (V1 建表 / V2 补 promoted_to + ai_analysis + scores)
CREATE TABLE ideas (
    id          TEXT PRIMARY KEY,
    title       TEXT NOT NULL,
    description TEXT NOT NULL DEFAULT '',
    status      TEXT NOT NULL DEFAULT 'draft',   -- draft/pending_review/approved/rejected/promoted/archived
    priority    INTEGER NOT NULL DEFAULT 1,
    score       REAL,
    tags        TEXT,                            -- JSON 数组
    source      TEXT,
    promoted_to TEXT,                            -- 晋升后的 project_id (V2)
    ai_analysis TEXT,                            -- AI 分析结果 JSON (V2)
    scores      TEXT,                            -- 多维评分 JSON: feasibility/impact/urgency/overall (V2)
    created_at  TEXT NOT NULL,
    updated_at  TEXT NOT NULL
);

-- 项目 (V1 建表 / V11 补 deleted_at / V12 补 path + stack)
CREATE TABLE projects (
    id          TEXT PRIMARY KEY,
    name        TEXT NOT NULL,
    description TEXT NOT NULL DEFAULT '',
    status      TEXT NOT NULL DEFAULT 'planning',
    idea_id     TEXT REFERENCES ideas(id),
    path        TEXT,                            -- 绑定的本地代码目录绝对路径 (V12,可空=未绑定)
    stack       TEXT,                            -- 技术栈 JSON 数组字符串 (V12,探测填充)
    deleted_at  TEXT,                            -- 软删回收站: NULL=正常, 非空=已进回收站 (V11)
    created_at  TEXT NOT NULL,
    updated_at  TEXT NOT NULL
);

-- 任务 (V1 建表 / V2 补 workflow_def_id + base_branch)
CREATE TABLE tasks (
    id              TEXT PRIMARY KEY,
    project_id      TEXT NOT NULL REFERENCES projects(id),
    title           TEXT NOT NULL,
    description     TEXT NOT NULL DEFAULT '',
    status          TEXT NOT NULL DEFAULT 'todo', -- todo/in_progress/in_review/testing/done/blocked/cancelled
    priority        INTEGER NOT NULL DEFAULT 1,
    branch_name     TEXT,
    assignee        TEXT,
    workflow_def_id TEXT,                         -- 关联的工作流定义 ID (V2)
    base_branch     TEXT,                         -- 基础分支 (V2)
    created_at      TEXT NOT NULL,
    updated_at      TEXT NOT NULL
);

-- 分支 (V2 建表) — 任务与 Git 分支绑定
CREATE TABLE branches (
    id          TEXT PRIMARY KEY,
    project_id  TEXT NOT NULL REFERENCES projects(id),
    task_id     TEXT REFERENCES tasks(id),
    name        TEXT NOT NULL,
    base        TEXT NOT NULL DEFAULT 'main',
    status      TEXT NOT NULL DEFAULT 'active',
    created_at  TEXT NOT NULL,
    updated_at  TEXT NOT NULL,
    merged_at   TEXT
);

-- 发布计划 (V1 建表)
CREATE TABLE releases (
    id          TEXT PRIMARY KEY,
    project_id  TEXT NOT NULL REFERENCES projects(id),
    version     TEXT NOT NULL,
    status      TEXT NOT NULL DEFAULT 'planned',
    task_ids    TEXT NOT NULL DEFAULT '[]',       -- JSON 数组: 包含的 Task ID 列表
    changelog   TEXT,
    created_at  TEXT NOT NULL,
    released_at TEXT
);

-- 工作流执行 (V1 建表 / V2 补 project_id + task_id)
-- 注: 不区分 def/run, DAG 直接序列化进 dag_json, 一次执行一行
CREATE TABLE workflow_executions (
    id            TEXT PRIMARY KEY,
    name          TEXT NOT NULL,
    dag_json      TEXT NOT NULL,                  -- DAG 的 JSON 序列化
    status        TEXT NOT NULL DEFAULT 'pending', -- pending/running/paused/completed/failed/cancelled
    triggered_by  TEXT,
    project_id    TEXT,                           -- 关联项目 ID (V2)
    task_id       TEXT,                           -- 关联任务 ID (V2)
    created_at    TEXT NOT NULL,
    completed_at  TEXT
);

-- 节点执行 (V1 建表) — 工作流执行过程中每个节点的运行快照
CREATE TABLE node_executions (
    id            TEXT PRIMARY KEY,
    workflow_id   TEXT NOT NULL REFERENCES workflow_executions(id),
    node_id       TEXT NOT NULL,
    node_type     TEXT NOT NULL,
    status        TEXT NOT NULL DEFAULT 'pending',
    input_json    TEXT,
    output_json   TEXT,
    error_message TEXT,
    started_at    TEXT,
    completed_at  TEXT
);

-- AI 提供商配置 (V9 建表) — 多 Provider 统一抽象
CREATE TABLE ai_providers (
    id            TEXT PRIMARY KEY,
    name          TEXT NOT NULL,
    provider_type TEXT NOT NULL DEFAULT 'openai_compat',
    api_key       TEXT NOT NULL,
    base_url      TEXT NOT NULL,
    default_model TEXT NOT NULL,
    models        TEXT,                           -- JSON array of model names
    is_default    INTEGER NOT NULL DEFAULT 0,
    config        TEXT,                           -- JSON extra config
    created_at    TEXT NOT NULL,
    updated_at    TEXT NOT NULL
);

-- AI 对话 (V3 建表 / V4 补 archived / V5 补 prompt_tokens + completion_tokens / V6 补 models)
CREATE TABLE ai_conversations (
    id                 TEXT PRIMARY KEY,
    title              TEXT,
    messages           TEXT NOT NULL DEFAULT '[]', -- JSON array of ChatMessage
    provider_id        TEXT,
    model              TEXT,
    models             TEXT,                       -- 用过的所有 model JSON 数组字符串 (去重, V6)
    archived           INTEGER NOT NULL DEFAULT 0, -- 是否归档(侧栏折叠展示, V4)
    prompt_tokens      INTEGER,                    -- 输入 token 累计 (流式 usage 落库, V5)
    completion_tokens  INTEGER,                    -- 输出 token 累计 (流式 usage 落库, V5)
    created_at         TEXT NOT NULL,
    updated_at         TEXT NOT NULL
);

-- AI 工具执行审计 (V9 建表) — Agent 工具调用的审批/执行留痕
CREATE TABLE ai_tool_executions (
    id              TEXT PRIMARY KEY,
    conversation_id TEXT,
    tool_call_id    TEXT NOT NULL,
    tool_name       TEXT NOT NULL,
    arguments       TEXT NOT NULL,
    result          TEXT,
    status          TEXT NOT NULL DEFAULT 'pending', -- pending/approved/rejected/executing/completed/failed
    risk_level      TEXT NOT NULL DEFAULT 'medium',  -- low/medium/high
    requested_at    TEXT NOT NULL,
    executed_at     TEXT,
    decided_by      TEXT                            -- human/auto
);

-- 知识条目 (V7 建表 / V8 补 embedding / V10 补 reasoning) — 经验沉淀基本单元, 共享记忆层
-- 状态机: candidate → pending_review → published → archived
CREATE TABLE knowledges (
    id              TEXT PRIMARY KEY,
    kind            TEXT NOT NULL DEFAULT 'pitfall', -- 7 种: review_rule/prompt_template/pitfall/architecture_pattern/diagnosis/deployment_note/workflow_optimization
    title           TEXT NOT NULL,
    content         TEXT NOT NULL DEFAULT '',
    tags            TEXT,                          -- JSON 数组字符串
    status          TEXT NOT NULL DEFAULT 'candidate', -- candidate|pending_review|published|archived
    confidence      TEXT,                          -- high|medium|low (AI 提炼自评)
    reuse_count     INTEGER NOT NULL DEFAULT 0,    -- 唯一客观排序信号
    verified        INTEGER NOT NULL DEFAULT 0,    -- 发布审核时一次性人工标
    source_project  TEXT,                          -- 来源项目(仅溯源不过滤)
    source_ref      TEXT,                          -- 来源实体引用(如 conv:{id})
    reasoning       TEXT,                          -- AI 提炼判断依据("为何值得沉淀"), 手动录入为 NULL (V10)
    embedding       BLOB,                          -- Vec<f32> 小端字节序列化, NULL=未嵌入走 LIKE 降级 (V8)
    created_at      TEXT NOT NULL,
    updated_at      TEXT NOT NULL
);

-- 知识生命线事件 (V10 建表) — 追加型审计: 产生/审核/引用/归档
CREATE TABLE knowledge_events (
    id           TEXT PRIMARY KEY,
    knowledge_id TEXT NOT NULL,
    event_type   TEXT NOT NULL,                    -- created | extracted | status_changed | referenced | archived
    source_ref   TEXT,                             -- 触发来源: conv:{id} / manual / system
    context_json TEXT,                             -- JSON: 因 event_type 而异
    timestamp    TEXT NOT NULL
);

-- 通用应用设置 (V13 建表) — 前端 localStorage 迁移目标 KV 表
CREATE TABLE app_settings (
    key        TEXT PRIMARY KEY,
    value      TEXT NOT NULL,                      -- JSON 字符串
    updated_at TEXT NOT NULL
);

-- 内部表: schema_version (version INTEGER PRIMARY KEY) — 迁移版本记录

七、三层模型:模板 → 工作流 → 人设

7.1 三层定义

回答的问题 本质 生命周期 当前状态
流程模板 (Template) 应该做什么 可复用的蓝图(节点拓扑 + 建议人设 + 质量门禁) 长期存在,跨项目复用 需重新设计(原 df-stages 已移除)
工作流 (Workflow) 怎么执行 模板的运行时实例DAG + 状态 + 数据绑定) 随项目启停,单次执行归档 df-workflow 核心完成
人设 (Persona) 谁来做 Agent 角色卡system prompt + 工具集 + 行为规则) 长期存在,跨节点复用 待设计

7.2 三者关系

流程模板 (蓝图)
  │ 实例化(填入项目参数)
  ▼
工作流实例 (运行时 DAG)
  │ 分配人设(绑定到每个 AINode
  ▼
人设驱动 Agent 执行

关键点

  • 模板不绑定具体人设,只标注"建议人设类型",实例化时由用户覆盖
  • 工作流不感知人设,只管 DAG 执行;人设注入发生在 AINode 执行时
  • 人设与模板解耦:同一个人设可用于不同模板的同类节点

7.3 模板实例化流程

① 选择模板 → "功能开发模板"
   模板定义: [需求分析]→[架构设计]→[编码]→[测试]→[审查]→[发布]
   建议人设: analyst → architect → coder → tester → reviewer → none

② 实例化为工作流 DAG
   ┌─ AINode(需求分析)    建议人设: analyst
   ├─ AINode(架构设计)    建议人设: architect
   ├─ AINode(编码)        建议人设: coder
   ├─ AINode(单元测试)    建议人设: tester
   ├─ ScriptNode(运行测试)  无人设(纯脚本)
   ├─ HumanNode(审批发布)   无人设(人工)
   └─ AINode(发布说明)    建议人设: writer

③ 实际分配人设(可覆盖)
   编码节点 → coder-rust项目是 Rust 后端)
   测试节点 → tester-py测试框架是 Python

④ 执行
   工作流引擎按 DAG 拓扑调度节点
   每个 AINode 执行时载入对应人设的 system_prompt + 工具集
   NodeContext 中传递 persona_idAI Node 据此取人设配置

7.4 人设定义

/// 智能体人设Agent 角色卡)
pub struct AgentPersona {
    pub id: PersonaId,
    pub name: String,                       // 人设名称
    pub description: String,                 // 一句话描述
    pub system_prompt: String,               // 角色系统提示词
    pub allowed_tools: Vec<String>,          // 可用工具列表
    pub suggested_tier: ModelTier,           // 推荐模型层级
    pub output_format: OutputFormat,         // 输出格式约束
    pub rules: Vec<BehaviorRule>,            // 行为规则
    pub examples: Vec<PersonaExample>,       // Few-shot 样例
}

// 预置人设(平台内置,用户可自定义扩展)
Persona::coder       "你是资深 Rust/TS 工程师..."
Persona::reviewer    "你是代码审查员,关注安全漏洞..."
Persona::architect   "你是系统架构师,关注模块划分..."
Persona::tester      "你是测试工程师,生成边界用例..."
Persona::analyst     "你是需求分析师,拆解用户故事..."

7.5 模板示例功能开发模板YAML

# templates/feature-dev.yaml
id: feature-dev
name: 功能开发模板
description: 标准功能开发流程,从需求分析到发布
template_version: 1

nodes:
  - id: analysis
    type: ai
    persona_hint: analyst
    prompt: "分析以下需求:{{inputs.requirement}}"
    inputs:
      requirement: "$ctx.requirement"
    outputs:
      prd: text

  - id: design
    type: ai
    persona_hint: architect
    prompt: "基于 PRD 设计架构:{{inputs.analysis.prd}}"
    inputs:
      analysis: "$nodes.analysis"
    outputs:
      arch_doc: text

  - id: coding
    type: ai
    persona_hint: coder
    prompt: "按架构设计实现:{{inputs.design.arch_doc}}"
    inputs:
      design: "$nodes.design"
    outputs:
      code: text

  - id: review
    type: ai
    persona_hint: reviewer
    prompt: "审查代码:{{inputs.coding.code}}"
    inputs:
      coding: "$nodes.coding"

quality_gates:
  - node: review
    condition: "output.verdict == 'pass'"
    on_fail: "goto coding"

artifacts:
  prd: "$nodes.analysis.prd"
  code: "$nodes.coding.code"
  review_report: "$nodes.review.text"

## 八、Phase 规划

### Phase 1 — 引擎骨架 (4-6 周)
- df-core + df-workflow (DAG + Node trait + Executor)
- df-storage (SQLite 基础表)
- df-execute (Shell 执行)
- 最小前端:项目列表 + 工作流执行日志
- 验证:能跑通一个 3 节点的简单工作流

### Phase 2 — AI 集成 (3-4 周)
- df-ai (Multi-Provider + Router + Stream)
- AI Chat 面板
- AI Node 实现
- 验证AI 节点能流式输出到前端

### Phase 3 — 想法池 + 多项目 (3-4 周)
- df-ideas (捕捉/评估/评分/晋升)
- df-project (多项目调度/上下文)
- 前端:想法池视图 + 多项目 Tab
- 验证:想法捕捉 → AI 评估 → 立项 → 工作流执行

### Phase 4 — 节点丰富 + 三层模型落地 (3-4 周)
- df-nodes (Docker/Git/Human/HTTP)
- 流程模板系统YAML 定义 + 模板库 + 实例化引擎)
- 人设系统AgentPersona 数据结构 + 内置人设 + 工具过滤)
- 条件分支 + 断点续跑
- 验证:跑通标准产研流程模板

### Phase 5 — 体验打磨 (4-6 周)
- 拖拽式 DAG 编辑器
- Dashboard + Timeline
- 工作流模板市场
- 桌面通知 + 系统托盘
- 自动更新
- 发布 v1.0

## 九、与现有资产的关系

| 现有资产 | 关系 |
|---------|------|
| u-desk-rust (Tauri v2) | 复用架构经验Workspace + crate 拆分 + Vue 3 传输层 |
| workpod (Docker) | DockerNode 的执行后端API 集成 |
| proxy 工具链 (Rust) | 连接管理 + 执行后端,内嵌调用 |
| Skills 体系 | 核心逻辑迁移为节点模板,不保留 skill 形态 |
| product-delivery-control | 演进为「标准产研工作流模板」 |
| mission-control | 合同/质量门禁机制融入 Workflow Engine |
| CPA (LLM 代理) | AI Provider 之一 |

## 十、关键设计决策

1. **引擎不绑定业务**Workflow Engine 只做 DAG 执行,阶段是插件
2. **想法第一公民**:想法池独立于项目,持续运转
3. **多项目并行**:多项目同时推进,共享资源池
4. **多任务/分支并行**:同一项目内多任务各绑分支,独立工作流,完成后合并
5. **标注无处不在**FIXME/TODO/QUESTION 标注可附加在任何内容上批量收集→AI 处理
6. **需求-测试双向追溯**:功能可选做/延/不做,每个功能映射测试用例和报告
7. **决策必留痕**:所有关键决策自动记录,可追溯、可审计
8. **本地优先**SQLite 嵌入,不依赖云服务
9. **多模型并行**:统一抽象,按任务路由,不锁定单一模型
10. **流式优先**AI 输出、Shell 输出全部流式推送到前端
11. **模板/工作流/人设三层分离**:模板是蓝图,工作流是实例,人设是角色卡。三层各自独立演化,在 AINode 执行时交汇
12. **人设与模板解耦**:模板标注建议人设但不绑定,同一个人设可用于不同模板的同类节点
13. **模板实例化**:模板 → 工作流实例 + 人设分配,允许实例化时按项目覆盖人设