Files
DevFlow/PROGRESS.md
绝尘 98393b4908 新增: 初始化 DevFlow 项目仓库
Tauri 2 + Vue 3 + Vite 6 桌面应用,Rust workspace 含 13 个 crate
(df-ai / df-storage / df-workflow / df-core / df-execute 等)。
核心能力:AI 聊天 agentic 循环(工具调用+人工审批)、工作流引擎、
任务/想法/项目/阶段管理、可追溯性,及配套前端组件。
2026-06-12 01:31:05 +08:00

26 KiB
Raw Blame History

DevFlow — 项目进展与工作交接

创建: 2026-06-10 | 最后更新: 2026-06-12 | 当前阶段: Phase 2 aichat UX 快赢A 路线)+ 技能联想需求调研Sprint 8


一、项目速览

项目
定位 AI 原生创作流程驾驶舱,从想法到创作成果的全流程管理
技术栈 Tauri v2 + Vue 3 + TypeScript + Pinia / Rust Workspace (13 crate) / SQLite
路径 E:/wk-lab/devflow/
架构文档 ARCHITECTURE.md (22,745 字)
Git 状态 未首次 commit代码全在 untracked
AI 能力 df-ai OpenAI 兼容 Provider + 12 工具 + Agentic Loop

二、代码规模统计

Rust 后端 (71 个 .rs 文件)

Crate 文件数 总行数 有效行 实现程度
df-core 4 259 151 完整 — 错误/事件/状态枚举/ID生成
df-workflow 7 489 333 核心 — DAG拓扑排序/执行器/状态机/事件总线 可用
df-storage 4 294 217 部分 — SQLite连接/迁移/建表完整,缺 CRUD 层
df-execute 5 203 129 混合 — Shell 执行器真实可用Docker/SSH/Git 骨架
df-ideas 6 421 278 大部分 — 捕获/评估/晋升/关联图 有逻辑,评分固定值
df-task 5 390 252 大部分 — Task/Branch/Semver 可用,合并冲突 骨架
df-project 5 272 175 混合 — 数据模型/Timeline 可用,调度器 骨架
df-ai 6 281 173 🔧 接口 — 类型/Provider trait 完整,无实际 LLM 调用
df-traceability 4 312 201 混合 — 决策记录/标注构建 可用SQLite查询 骨架
df-plugin 4 255 158 混合 — Host/Builder 有逻辑,核心加载 骨架
df-evolve 6 301 172 混合 — Knowledge/PromptTemplate 可用,引擎/提取器 骨架
df-nodes 9 344 277 混合 — script_node 真实可用(接 Shellhuman_node 半实现(审批响应 TODO其余 6 种骨架
df-stages 6 287 209 🔩 全骨架 — 11个阶段节点 Schema 完整execute() 全空
合计 71 ~4,108 ~2,625

前端 (9 页面 + Store + i18n)

类别 文件数 行数 状态
Vue 页面 9 ~3,372 UI 全部真实 — 无空壳
Pinia Store 4 ~362 ⚠️ 有 state/getter 但无 actionView 未引用
Router 1 63 9 条路由含动态路由
i18n 2 ~94 ⚠️ 翻译完整但未接入 main.ts
设计系统 1 105 CSS 变量/动画/Arco 暗色覆盖
Tauri Commands 1 13 🔩greet 示例,无业务逻辑

前端关键问题

  • 所有 View 组件数据硬编码 (ref([...])),与 Store 完全独立
  • 所有按钮事件处理函数为空函数 {}
  • i18n 插件未注册到 Vue app
  • Arco Design 组件库未实际使用(仅 CSS 变量覆盖)

三、架构分层与依赖关系

真实可用路径(有端到端逻辑):
  df-core (类型基础)
    → df-workflow (DAG 拓扑排序 + 执行器 + 状态机 + EventBus)
      → df-execute/shell (tokio::process Shell 执行)
      → df-storage (SQLite 连接 + 迁移 + 建表)

待打通路径(骨架就位,需填充):
  df-workflow → df-nodes (8种节点 execute() 待实现)
  df-workflow → df-stages (11种阶段节点 execute() 待实现)
  df-ai → LlmProvider 实现 (无 HTTP client)
  df-storage → 所有 crate 的 CRUD 操作
  Tauri commands → Rust 业务逻辑
  Vue Views → Pinia Store → Tauri IPC → Rust

四、全局性问题

# 问题 影响 优先级 状态
1 无 CRUD 层 — df-storage 只有建表 所有 crate 无法持久化数据 P0 Sprint 2
2 Tauri IPC 未建 — 只有 greet 示例 command 前端无法调用后端 P0 Sprint 317 commands
3 Store 未接入 View — 两套独立硬编码数据 数据流断裂 P0 Sprint 4
4 AI Provider 无实现 — trait 定义完整但无 HTTP client AI 功能全部不可用 P1 Sprint 5
5 同层节点未并行 — DagExecutor 有 TODO 注释 工作流执行效率 P1 Sprint 3join_all
6 条件表达式引擎 — 仅支持 true/false 字面量 条件分支不可用 P2 待办
7 i18n 未注册 — 翻译文件存在但未挂载 多语言不生效 P2 Sprint 7
8 未 git commit — 代码全 untracked 无版本基线 P0 Sprint 2

五、Phase 规划与当前进度

Phase 1 — 引擎骨架 完成

任务 状态 说明
df-core 类型系统 完成 错误/事件/状态枚举/ID生成
df-workflow DAG 引擎 完成 拓扑排序/执行器/状态机/EventBus
df-storage SQLite 基础表 完成 6 张表 + 4 索引,缺 CRUD
df-execute Shell 执行 完成 tokio::process 实现
最小前端:项目列表 + 工作流日志 完成 Sprint 45 页面接 Store + 创建/运行交互
验证3 节点简单工作流 待验证 后端就绪,需端到端跑通
df-storage CRUD 层 完成 Sprint 26 Repo + impl_repo! 宏Sprint 3 增 BranchRepo
对抗式评估系统 完成 Sprint 6AdversarialEngine + 正反方辩论 + AI 分析师
Migrations V2关联字段 + branches 表) 完成 Sprint 3
Executor 同层并行 + 状态转换校验 完成 Sprint 34 单测全绿
Tauri IPC 命令 完成 Sprint 317 commands + 事件转发
Store 接入 View 完成 Sprint 4API 层 + composable Store + 5 页面改造

Phase 2 — AI 集成 核心完成

任务 状态 说明
df-ai Provider 实现 OpenAI 兼容 HTTP client流式 SSE 解析
AI 工具注册 + V3 迁移 AiToolRegistry + 12 工具list/create/update/delete + 文件系统)
AI IPC 命令 17 个 AI command对话/工具执行/审批门控)
AI Chat 面板 侧边栏 + 分离窗口 + 拖拽调宽 + 对话管理
Agentic Loop 多轮工具调用循环max 10 轮)+ 中/高风险人工审批
AI Node 实现 df-nodes 接 df-aiconfig 驱动 providerbase_url/api_key/model/prompt→ OpenAICompatProvider.complete → 输出 text/model/usage注册 "ai" 节点;未端到端实测
AI Chat LLM 优化 🚧 P0 完成 任务 #43P0 可靠性(超时/断连/停止生成)P1 token 控制usage采集/滑动窗口/摘要)

Phase 3 — 想法池 + 多项目 (3-4 周) | 未开始

Phase 4 — 节点丰富 + 阶段插件 (3-4 周) | 未开始

Phase 5 — 体验打磨 (4-6 周) | 未开始


六、工作迭代日志

[Sprint 1] 2026-06-10 — 项目初始化

工作内容

  • 创建项目骨架:bun create vite + Tauri v2 + Cargo Workspace
  • 编写完整架构文档 ARCHITECTURE.md (22,745 字)
  • 13 个 Rust crate 全部创建,类型系统和接口设计完整
  • 9 个 Vue 页面 UI 全部编写(~3,372 行),设计系统完善
  • 4 个 Pinia Store 定义state + computed
  • i18n 中英文翻译

代码规模Rust ~4,108 行 / Vue+TS ~3,896 行 / 总计 ~8,000 行

遗留问题

  1. 所有数据硬编码,无持久化
  2. 前后端未桥接
  3. 未做 git commit

下一步建议

  1. 首次 git commit 建立基线
  2. 优先实现 df-storage CRUD 层(所有持久化的前置条件)
  3. 实现 Tauri IPC 命令层
  4. 将 Store 接入 View替换硬编码数据
  5. 端到端验证3 节点简单工作流跑通

[Sprint 2] 2026-06-10/11 — 设计审查 + 对抗论证 + 阻塞项修复

工作内容

  • 三路功能审查(架构/前端/数据模型):发现 4 条核心路径全断、缺 10 张表、状态枚举三套不一致
  • 三路对抗论证(市场/技术/需求"魔法打败魔法"):综合结论 = 方向有价值、scope 必须砍 60%
  • 修复 Phase 1 阻塞项Shell Windows 兼容cmd /C、状态枚举统一types.rs 为准、DAG 序列化DagDef + NodeRegistry
  • 实现 df-storage CRUD 层6 Repo + impl_repo! 宏 + spawn_blocking + 列名白名单)
  • ScriptNode 接入 df-execute Shell 执行器
  • 建立 docs/ 8 层文档体系(中文命名)
  • 新增设计文档:业务系统设计、对抗论证裁决报告、想法探索-对抗式评估

关键决策(详见 docs/02-架构设计/对抗论证裁决报告.md

  • 定位调整:"产研操作系统" → "本地优先的个人开发流程驾驶舱"
  • 砍掉:插件系统、经验进化(自动)、需求-测试追溯、多模型路由、Agent 协作
  • 降级:想法池(简化+对抗式评估、标注TODO 扫描器)、决策留痕(字段级)
  • Phase 1 只激活 6 个 crate其余 7 个标记预留
  • 验证策略:先自用 3 个月再决定是否对外

遗留问题

  1. Executor 同层并行化 + StateMachine 转换校验(任务 #8
  2. Migrations V2 补字段promoted_to/workflow_def_id/project_id 等)+ branches 表(任务 #9
  3. Tauri IPC / 前端 Store 对接尚未开始
  4. Sprint 2 的代码变更未 commit

下一步

  1. commit Sprint 2 变更
  2. Migrations V2 + Executor 并行化
  3. Tauri IPCAppState + project/task/workflow commands
  4. 前端类型对齐 + Store 接 View

[Sprint 3] 2026-06-11 — Migrations V2 + Executor 并行化 + Tauri IPC三代理并行

工作内容(三个子代理并行,目录互不重叠):

  • Migrations V2df-storage/df-core版本推进到 2 — ideas 补 promoted_to/ai_analysis/scores、tasks 补 workflow_def_id/base_branch、workflow_executions 补 project_id/task_id、新建 branches 表(含 2 索引BranchRecord/BranchRepo/BranchStatus 枚举同步落地ALLOWED_COLUMNS 白名单 +8 列
  • Executor 并行化df-workflow同层节点改 futures::join_all 并发三阶段模式串行准备→并发执行→串行收尾规避借用冲突StateMachine 增加转换校验(仅 Pending→Running、Running→Completed/Failed 合法set_xxx 改返回 Result4 个单测全绿(含并行耗时断言 <180ms、失败中止下游层
  • Tauri IPCsrc-tauriAppStatedb + 6 Repo + EventBus + NodeRegistry+ 17 个 commandproject/task/idea CRUD + run_workflow/list/get executionsrun_workflow 先落库 status=running 立即返回 execution_id事件经 app.emit("workflow-event") 转发前端完成后回写状态。注意NodeRegistry 不能用 default()script 工厂是 unimplemented! 占位),改为 new() + 手动注册真实 ScriptNode

验证cargo check 通过(仅 1 个 dead_code 警告releases/node_executions Repo 暂无 command 使用cargo test -p df-workflow 4 passed

遗留问题

  1. executor 失败路径只发 NodeFailed 不发 WorkflowFailed目前由 run_workflow 在 IPC 层补发——后续应下沉到 executor
  2. 前端 Store/View 仍硬编码,未调用任何 command
  3. NodeRegistry::default() 的 unimplemented! 占位是隐患,应改为注册真实节点或移除

下一步

  1. 前端类型对齐id: string、状态枚举对齐 types.rs+ src/api/ 封装层
  2. Store 加 action 接 API核心 4 页面Dashboard/Projects/ProjectDetail/Tasks接 Store
  3. 端到端验证tauri dev 创建项目 → 运行 3 节点工作流 → 日志实时展示

[Sprint 4] 2026-06-11 — 前端交互功能API 层 + Store + 5 页面)

工作内容

  • API 层:新建 src/api/ 目录 — types.ts与 Rust Record 严格对齐)+ project/task/idea/workflow 四个 invoke 封装 + 事件监听listen workflow-event
  • Store 重写stores/project.ts 改为 composable 模式reactive 全局状态 + 12 个 actions + computed stats不依赖 Pinia
  • Projects.vue:接 Store 真数据 + 创建项目模态框(名称/描述)+ 卡片点击跳详情页 + status 中文映射
  • ProjectDetail.vue:路由参数加载项目 + 真实任务列表 + 3 节点 Shell DAG 工作流运行(环境检查→运行测试→构建产物)+ 实时事件日志 + 创建任务模态框 + onUnmounted 清理监听
  • Tasks.vue:项目/状态双筛选联动 + 创建任务模态框(选择项目+标题)+ 状态/优先级中文映射
  • Ideas.vue:捕捉想法模态框 + 选中详情tags JSON 解析、scores 展示)+ 删除功能
  • Dashboard.vue:统计卡从 Store computed 计算 + Active Projects/Idea Pool 接真数据 + quickCapture 跳 Ideas

代码变更13 files, +1059/-486

遗留问题

  1. 端到端验证未完成:需 tauri dev 实际创建项目→运行工作流→确认日志展示
  2. 无数据时空状态展示较简陋
  3. Settings/Knowledge/Decisions 三个页面仍为硬编码 demo Sprint 7 已解决(三 view 接 stores/{knowledge,settings}.ts无 ref([ 硬编码)

下一步

  1. 端到端验证tauri dev → 创建项目 → 运行 3 节点工作流 → 日志实时展示
  2. 修复验证中发现的问题
  3. 考虑 Phase 2 规划

[Sprint 5] 2026-06-11 — AI Chat 全功能Provider + 工具执行 + Agentic Loop

工作内容

  • df-ai ProviderOpenAI 兼容 HTTP clientSSE 流式解析ChatMessage/CompletionRequest 类型系统
  • V3 存储迁移ai_providers、ai_conversations、ai_tool_executions 三张表 + 对应 Repo
  • AI IPC 命令层17 个 command — 对话发送/流式推送、工具执行/审批门控(低风险自动/中高风险人工、对话管理CRUD + 切换)
  • AI 工具注册12 个工具 — list_projects/tasks/ideas只读、create_project/task/idea创建、update_project更新、delete_project删除、read_file/list_directory/write_file文件系统
  • Agentic Loop多轮工具调用循环max 10 轮),流式输出→检测工具调用→执行→结果回传→继续,中高风险暂停等审批后恢复
  • AI Chat 前端:侧边栏面板 + 拖拽调宽 + 分离独立窗口 + 对话列表管理 + 工具审批弹窗 + AgentRound 多轮消息
  • Tauri Capabilitiesai-detached 窗口权限配置

代码变更20+ files新增 ~2000 行

遗留问题

  1. 空白屏问题Vite 启动正常122s、HTML 200但 webview 显示空白 Sprint 7 已修复index.html 主题防闪烁脚本 + 启动计时埋点 __APP_T0 + body 背景色)
  2. AI Node 未实现 — 目前只有骨架,需接入 df-ai 的 LlmProvider任务 #44
  3. AI Chat LLM 调用逻辑待优化长对话可靠性、大任务执行稳定性、token 消耗控制(任务 #43P0 可靠性已在 Sprint 6 完成P1 token 控制待办

下一步

  1. 排查并修复空白屏问题
  2. 实际验证 AI Chat 端到端(选 Provider → 发消息 → 工具调用 → 审批)
  3. HumanNode + Settings 页面
  4. AI Chat LLM 调用逻辑优化(任务 #43
  5. AI Node 实现(任务 #44

[Sprint 6] 2026-06-11 — AI Chat 调用可靠性 P0 + 前端类型修复

工作内容

A. AI Chat 调用可靠性 P0df-ai + src-tauri跨前后端 6 文件) — 三路代理核对(调用链/上下文-token/前端)后定位可靠性死锁类问题,本轮按"先保命"只做 P0 五项P1 token 控制设计已定,留待下轮):

  • P0-1 连接超时openai_compat.rs Client 加 connect_timeout(30s) 防连接阶段无限 hang不设总 timeout避免 reqwest 总时长限制误砍流式长生成任务)
  • P0-2 流式 idle timeoutstream_llmtokio::time::timeout(120s)stream.next(),防"连上后中途静默"无限 hang
  • P0-3 断连检测丢弃残缺:维护 finished_received 标志,流尽未收到 finished 信号 → emit AiError + 丢弃残缺响应不当完整入库(防脏历史污染)
  • P0-4 停止生成AiSession.stop_flag: Arc<AtomicBool> + 新 ai_chat_stop command + 前端停止按钮streaming 时切换为珊瑚红方块按钮run_agentic_loop/stream_llm 多检查点响应,停止后保留已生成文本
  • P0-5 切对话防护ai_conversation_switch 生成中拒绝切换(防 active_conversation_id 被改导致旧 loop 的 save_conversation 串台写库)

B. 前端既有类型错误修复14 处,让 bun run build 通过)

  • types.ts:删重复的 WorkflowEventPayloaddeclaration merging 冲突)
  • stores/project.ts:补 invoke import + payload.event.data 类型断言 + return 包 reactive() 自动解包 computed(一处解决 Dashboard/ProjectDetail 的 store.stats/pendingApproval 解包,消费端零改动)
  • Ideas/Tasks/ProjectDetail:去掉 parseInt(number) 误用 → new Date(timestamp)
  • ProjectDetail.vue:删 unused nextTick import
  • AiChat.vue:删死代码 TOOL_STATUS_MAP + toolStatusLabel

C. AI Chat 代码审查修复9 处ai.rs + openai_compat.rs — 对 P0 代码做 /review 审查后修复cargo check ✓:

  • 🔴finish_reason="length"max_tokens 截断)纳入 finished — 修「大任务输出撞 4096 上限被误判断连、丢弃整段响应」(与 ④ 配合是本轮关键)
  • 🔴② 路径校验最小加固:正斜杠→反斜杠规范化 + 拒 .. 遍历 + 扩 .aws/.gnupg(根治 workspace 白名单 + canonicalize 待定边界后再做)
  • 🔴③ tool_calls 按 index 排序assistant 消息 line506 + tool_result line709 两处),消 HashMap 迭代乱序
  • 🔴④ max_tokens 4096→8192贴合大任务
  • 🟡ai_chat_stop 在审批等待态清 pending_approvals + 复位 generating原 stop_flag 无人读取,停止按钮表面无反应、会话卡 generating=true
  • ⑨ 4 个 i18n 小函数language_instruction/capability_section/behavior_rules/context_label合并为 system_prompt_parts
  • extract_title 单次 chars 遍历
  • ⑪ reqwest builder 降级加 warn!

代码变更df-ai/openai_compat.rs、src-tauri/{commands/ai.rs, lib.rs}、前端 7 文件(+ C 轮 reviewai.rs、openai_compat.rs

验证cargo check -p devflow ✓(仅既有 warning、vue-tsc --noEmit ✓、bun run build ✓built in 2.47s

遗留问题 / 下一步

  1. P1 token 控制(任务 #43 续):流式 usage 采集(stream_options:{include_usage:true} + SSE usage 字段)+ token 预算自适应窗口chars≈/3.5 启发式估算)+ 历史摘要压缩(早期摘要 + 近期全文)—— 设计已定,未实施。⚠️ usage 采集 2026-06-11 用户叫停暂缓结构层写一半已回退P1 从 token 估算/裁剪/摘要续
  2. 实测验证cargo tauri dev 跑起来验证停止按钮/超时/断连真实生效(本轮仅编译 + 类型验证)
  3. 停止生成边界LLM 正常输出时停止立即生效(<1sidle无输出时最多等 120s idle timeout —— P2 可用 tokio::sync::Notify 优化为绝对即时
  4. Sprint 5 遗留的空白屏问题仍待排查 Sprint 7 已修复(用户实测确认)

[Sprint 7] 2026-06-11 — 空白屏修复 + i18n 接入 + 剩余页面接 Store

工作内容

  • 空白屏修复(前端):index.html 加主题防闪烁脚本localStorage df-theme 渲染前置 data-theme+ 启动计时埋点 window.__APP_T0 + body 背景 #0c0e1amain.ts.use(i18n) 并打印 mount 耗时日志。用户实测确认空白屏消失
  • i18n 接入main.ts 注册 i18n 插件;i18n/index.ts 完整legacy:false / globalInjection / zh-CN 默认 + en fallback / localStorage df-language 持久化App.vue 导航与各 view 改 $t()
  • 剩余 3 页面接 StoreKnowledge.vue/Settings.vue/Decisions 去硬编码 ref([...]),对接新建 stores/{knowledge,settings,ai}.ts
  • 新路由/ redirect → /ai-home,新增 AiHome.vue(默认落地页)/AiDetached.vue(分离窗口);路由 9→11 条
  • df-nodes 实现度修正:核对发现 script_node.rs 早为真实实现(接 df_execute Shell + 非零退出码判断),human_node.rs 半实现(发 HumanApprovalRequest 事件 + 超时循环,但审批响应 TODO 直接返回"同意")—— 非文档原记"全骨架"

遗留问题 / 下一步

  1. P1 token 控制(任务 #43 续)仍待办usage 采集用户叫停,从 token 估算/裁剪/摘要续)
  2. 条件表达式引擎conditions.rs 仍 true/false 字面量)— P2 未动
  3. AI Node 实现(任务 #44 本轮已实现:ai_node.rs 接 df-ai OpenAICompatProvider,从 ctx.config 读 base_url/api_key/model/prompt/system_prompt/temperature/max_tokens 调 complete()prompt 支持上游输入优先;df-nodes/Cargo.toml 加 df-ai 依赖;state.rs build_registry 注册 "ai"。cargo check ✓(未端到端实测真实 LLM 调用)
  4. df-stages 11 个 execute() 全空骨架 — Phase 4
  5. HumanNode 审批响应闭环:目前直接返回"同意",需前端审批弹窗回写结果

[Sprint 8] 2026-06-12 — Anthropic 协议 + 切对话不中断 + 技能联想需求调研

工作内容

A. aichat 升级 A 路线UX 快赢,已实现并验证) — 详见 memory aichat-roadmap-ab-split

  • Anthropic 协议 Provider:新增 crates/df-ai/src/anthropic_compat.rs,实现 LlmProvider trait 覆盖 Anthropic Messages APIx-api-key + anthropic-version、顶层 system、必填 max_tokens、SSE event 类型解析、content_block tool_use。按 provider_type 路由分发(run_agentic_loop / ai_node)。支持 GLM 订阅端点 https://open.bigmodel.cn/api/anthropic用户实测对话流式 OK
  • 切对话不打断生成:后端 AiChatEvent 全变体加 conversation_idagentic loop spawn 前快照 conv_id所有 emit 填充;ai_conversation_switch 生成中只读返回;前端 stores/ai.ts 按 conversation_id 路由(后台对话事件不污染当前视图,完成/错误时刷新侧边栏)
  • 审查项落地:删全屏 Tool Approval Modal保留行内卡片审批、错误友好化friendlyError 正则映射 404/401/timeout/network → 中文提示 + isError 红色气泡)、智能滚动(isNearBottom < 80px 阈值、provider bar 点击切换、未配 provider 空状态引导、删死 class
  • B 路线(规划式多智能体)单独立项:填 coordinator.rs + conditions.rs 空壳,详见 memory aichat-decision-capability

B. 技能联想功能需求(本轮重点,未实现,需求阶段)

  • 需求aichat 输入框输入 / → 联想列出本机 Claude 技能SKILL.md按输入过滤选中插入 /name;发送时后端读 SKILL.md 全文注入 system prompt / context
  • 首批数据源 = Claude 3 类SKILL.md frontmatter 统一 name / description / user_invocable / metadata.argument-hint / triggers[],只取 user_invocable: true
    1. Claude skills~/.claude/skills/*/SKILL.md23 个sleep / mission-control / idea / cpa 等)
    2. Claude commands~/.claude/commands/*.md1 个idea
    3. Claude plugins~/.claude/plugins/marketplaces/**/skills/*/SKILL.mdcaveman 全家、官方 frontend-design / skill-creator / mcp-server-dev、wuming prompt-optimizercache/marketplaces/ 重复需按 path 去重)
    • 加项目级 .claude/skills + .claude/commandsDevFlow 暂无)
  • 实现要点:① 后端新 IPC list_skills() 扫 Claude 3 类来源解析 frontmatter + 按 path 去重,返回 [{name, description, argument_hint, triggers, source}];② 前端输入框 / 触发联想浮层(名称 + description/name 发送 → 后端读 SKILL.md 注入 context④ 跨平台 home 路径dirs crate

C. 多工具 skill 体系调研结论(仅记录,后续按需扩展)

工具 本机状态 skill 机制 是否纳入
Claude Code 已装 SKILL.mdskills + commands + plugins 三类) 首批数据源
Codex (OpenAI) 已装 SKILL.md~/.codex/vendor_imports/skills/skills/.curated/*/SKILL.md39 个figma / notion / playwright / security / vercel·netlify·render-deploy / latex 等frontmatter 与 Claude 一致,可统一解析) 后续可扩展
openclaw 已装 多 agent gateway~/.openclaw/openclaw.json 注册 8 agent 绑各 workspace + glm-5经飞书 channel binding非 SKILL.mdagents/ 实体目录暂空 属 agent 选择层,非 skill 联想,暂不纳入
opencode 未装 AGENTS.md + custom agents + slash commands机制待确认 待装后调研

代码变更A 路线 — crates/df-ai/src/{anthropic_compat.rs, lib.rs}src-tauri/src/commands/ai.rscrates/df-nodes/src/ai_node.rssrc/views/Settings.vuesrc/stores/ai.tssrc/components/AiChat.vuesrc/api/types.ts

遗留问题 / 下一步

  1. 技能联想B未实现 — 需求已记,首批聚焦 Claude 3 类,等排期(工作量中:后端扫文件 + IPC、前端联想浮层
  2. A 路线剩余场景实测:切对话不中断(场景 2/3、错误友好化场景 4待用户实测
  3. B 路线(规划式能力)coordinator / conditions 空壳,单独立项

七、开发约定

构建命令

# Rust 检查
cd E:/wk-lab/devflow && cargo check

# 前端开发
cd E:/wk-lab/devflow && bun run dev

# Tauri 开发(必须用这个,不能 cargo build
cd E:/wk-lab/devflow && bun run tauri dev

# Tauri 构建
cd E:/wk-lab/devflow && bun run tauri build

关键设计决策

  1. 引擎不绑定业务 — Workflow Engine 只做 DAG 执行,阶段是插件
  2. 无 panic — 所有占位代码返回空/默认值,不使用 todo!/unimplemented!
  3. 本地优先 — SQLite 嵌入,不依赖云服务
  4. 想法第一公民 — 想法池独立于项目
  5. 多任务/分支并行 — 同一项目多任务各绑 Git 分支

复用资源

资源 路径 复用点
u-desk-rust Tauri 经验 E:/wk-lab/u-desk-rust/ Workspace + crate 拆分 + Tauri v2
Rust proxy 工具链 E:/wk-oth/rust-work/ 连接管理,内嵌调用
Tauri 开发铁律 Memory: feedback_tauri_dev_rules 必须用 cargo tauri dev/build