重构: 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:
56
docs/todo.md
56
docs/todo.md
@@ -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:对外暴露任务/项目/灵感管理能力**。以 MCP(Model Context Protocol)server 形式对外暴露 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`
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user