重构: commands拆分conversation域(strategy单批1-2文件)

- 新建 commands/conversation.rs(336行, 8 conv IPC: create/list/switch/delete/rename/archive/set_pinned/export)
- commands/mod.rs 725→418行(删conv域 + pub mod conversation re-export三级透传)
- lib.rs invoke_handler + 前端零改动;F-09 batch4决策e保留(create不杀旧loop/switch删readonly)
主代兜底: cargo check --workspace 0 + test 98 + grep 8IPC/re-export印证
strategy: 单批1-2文件原子操作;进度 chat+conversation,余 provider/skills/config
This commit is contained in:
2026-06-19 03:19:48 +08:00
parent e6dbb14c5d
commit 86f6c9685b
4 changed files with 430 additions and 320 deletions

View File

@@ -433,3 +433,59 @@
`crates/df-storage/src/{models.rs,migrations.rs,crud/task_repo.rs,crud/settings.rs}` + `src-tauri/src/commands/{task.rs,ai/tool_registry.rs}` + 前端任务组件
---
### 💡 2026-06-19 新需求MCP Server·灵感来源·待实施
> 灵感来源:`9ffa5f15` DevFlow MCP Server对抗式评估 7.2/10推荐 with resources
> 评估关键结论技术切入点和研发性价比极佳ToolDefinition ↔ MCP schema 几乎一致,转换成本极低),但反方强度 0.78——暴露 delete_project 等破坏性操作缺乏鉴权/确认/回滚,外部 AI 幻觉可能导致不可逆误删。**必须在协议接入的同时做工具集安全降级**。
- [ ] **F-260619-02 [P2]****DevFlow MCP Server对外暴露任务/项目/灵感管理能力**。以 MCPModel Context Protocolserver 形式对外暴露 DevFlow 数据层工具,让外部 AI 客户端Claude Code / Cursor / Cline直接读写 DevFlow 的项目、任务、灵感数据。
**形态**:独立 stdio MCP server 子命令(方案 A`devflow mcp-server` 启动,应用未运行时也能被 Claude Code 拉起。
**协议实现**
- `initialize` → 返回 server info + capabilities(tools)
- `tools/list` → 从 AiToolRegistry::tool_definitions() 转换为 MCP Tool 格式
- `tools/call` → 路由到 handler返回 `content: [{ type: "text", text: JSON }]`
- 推荐用 rmcp官方 Rust SDK或最小化手写 JSON-RPC 2.0 over stdio
- MCP Tool schema 与现有 ToolDefinition 结构几乎一致name/description/parameters JSON Schema写一个 `tool_definition_to_mcp()` 转换函数即可
**工具集(首版只暴露数据层,不暴露文件系统工具)**
- 项目list_projects / get_project / create_project / update_project / delete_project / bind_directory
- 任务list_tasks / create_task / update_task / advance_task / delete_task
- 灵感list_ideas / create_idea / update_idea / delete_idea / evaluate_idea
- 工作流run_workflow首版只读/需确认)
- 其他list_trash / restore_project
**⚠️ 安全降级(对抗评估反方核心风险,必须同步实施)**
- **High 风险操作delete/purge/run_workflow默认拒绝** + 返回「请在 DevFlow 应用内执行」——防外部 AI 幻觉导致不可逆误删(反方强度 0.78 核心论点)
- Medium 风险操作create/update默认允许 + 日志审计(写 ai_tool_executions 表留痕)
- 可选 `--read-only` 标志仅暴露 list/get 工具
- **不暴露文件系统工具**read_file/write_file/delete_file 等),避免绕过应用内路径校验
- 仅 stdio / 127.0.0.1,不暴露网络
- 不引入 MCP 客户端功能DevFlow 只做 server
**数据库访问**
- stdio server 启动时打开同一 SQLite`app_data_dir/devflow.db``--db` 参数指定)
- **SQLite WAL 模式确认**:需确认 df-storage 已启用 WAL反方论点并发锁竞争未处理。若未启用 WAL首版要求关闭 DevFlow 再用 MCP server或 MCP server 只读连接
**配置与发现**
- `devflow mcp-server --print-config` 输出 Claude Code / Cursor 的 MCP 配置 JSON 片段
- Claude Code 接入:`claude mcp add devflow -- devflow.exe mcp-server`
**涉及文件**
- 新建 `crates/df-mcp/`Cargo.toml / src/{server.rs, tools.rs, protocol.rs}
- 修改 `src-tauri/src/main.rs`CLI 参数解析,`mcp-server` 子命令分支)
- 修改 `src-tauri/Cargo.toml`(加 df-mcp 依赖 + clap
- 可选:`ai_tools.rs` 把 handler 闭包抽为可独立复用函数
**验收标准**
1. Claude Code 配置后能 `list_projects` / `list_tasks` / `create_task` / `advance_task` 成功
2. 应用运行时 MCP server 也能读写WAL 并发安全)
3. High 风险操作delete/purge/run_workflow被拒绝并返回友好提示
4. `cargo check --workspace EXIT 0` + `cargo test -p df-mcp`(基础协议测试)
5. `devflow mcp-server --print-config` 输出正确配置片段
— 新建 `crates/df-mcp/` + `src-tauri/src/main.rs` + `src-tauri/Cargo.toml` + 可选 `crates/df-ai/src/ai_tools.rs`
---