dev-manager-tauri/.blueprint/modules/architecture-evolution.md
lanrtop 7b702a9d88 docs(blueprint): 新建 architecture-evolution 模块,记录技术栈评估与 A1–A4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:49:59 +09:00

3.5 KiB
Raw Blame History

id name status progress
architecture-evolution 炼境架构演进 planned 0

概述

2026-10-01 评估结论:现有技术栈(Tauri v2 + Rust + React/TS + SQLite)适合「管家 / agent 客户端兼容层」方针,不换栈。常驻托盘服务、凭据安全、单文件分发、cargo test 快速回归都是 Rust/Tauri 的强项;真正的难点在 Windows 与各客户端自身机制(cmd 引号与 %VAR% 展开、CRLF、Claude 配置作用域、DSH !!js、Node 拒绝直接执行 .cmd),与语言无关。Electron 全 Node 栈(与三家客户端同生态、JSON/YAML 顺手)因常驻内存大、凭据需原生模块且须整体重写而否决;Go、Python 无明显收益。

本模块收集比「换语言」更影响实现效率的结构性改进,按收益排序。

任务拆解

📋 A1 — 本体与投影分离:core crate + CLI

  • status: todo
  • complexity: L(先 /architect 再拆)
  • files: src-tauri/Cargo.toml(改为 workspace)、新增 core 与 cli crate(实现时定)
  • acceptance: "agent_verify: [cargo test] 业务逻辑位于不依赖 Tauri 的 core crate;[CLI] 同一 exe 或独立 cli 在炼境界面未运行时可执行 onboard / probe / diagnostics 等命令并返回结构化结果。"
  • 为什么:核心逻辑写在 Tauri 应用内,炼境不运行时 agent 与脚本无法调用。业务函数已按「连接由调用方注入」编写,拆出成本可控。拆分后 Tauri 界面、MCP 服务、命令行成为同一本体的三个投影,契合「一个本体 + 多个投影」原则;agent-client-parity 的 P4 探针、P8 一键接入可直接做成命令。shim 已在用 exe 的命令行模式(--lianjing-mcp-header),只是尚未系统化。

📋 A2 — 前后端类型契约自动生成

  • status: todo
  • complexity: M
  • files: src-tauri/src/commands/、src/lib/commands.ts
  • acceptance: "agent_verify: [pnpm typecheck] commands.ts 的参数与返回类型由 Rust 定义生成(tauri-specta 或 ts-rs),新增 command 不再手抄类型;删改 Rust 字段时 typecheck 报出所有受影响处。"
  • 为什么:现由规则 R01 要求手动同步 commands.ts,易漏;对应四支柱「可推理」。

📋 A3 — 配置文本生成模板化

  • status: todo
  • complexity: M
  • files: src-tauri/src/mcp_inject.rs、src-tauri/resources/
  • acceptance: "agent_verify: [cargo test] Codex 托管块、DSH 托管块、shim 等由模板(如 minijinja)渲染,并有「渲染结果是合法 YAML/TOML/JSON」测试。"
  • 为什么:2026-10-01 实现 P1 时在 Rust 中手拼 YAML/JS,出现缩进被字符串续行吞掉、转义少一个反斜杠两个缺陷(均被测试拦下)。模板能从写法上避免这类问题。

📋 A4 — MCP 协议改用官方 Rust SDK(rmcp)

  • status: todo
  • complexity: M
  • files: src-tauri/src/mcp_server.rs、src-tauri/src/mcp_tools.rs
  • acceptance: "agent_verify: [cargo test + 三端无头探针] 换用 rmcp 后 scoped 路由、敏感读取认证、SSE 与 streamable HTTP 行为不变,三端 A–F 矩阵不回退。"
  • 为什么:现为手写 JSON-RPC + SSE。各客户端对 MCP 的支持持续演进(streamable HTTP、认证、服务器说明等),自维护协议细节的成本会上升。

附:调用外部进程的 Tauri command 统一 async

  • 同步 Tauri command 跑在主线程,内部调用 claude CLI 等外部进程会卡界面;agent-client-parity 审查已两次发现此类问题。新增此类 command 默认 async,存量随相关改动迁移,不单独立卡。