运行时可观测性:
- 新增 runtime_logs SQLite 表,提供全局 log_event 写入函数(保留最近 500 条)
- mcp_server/mcp_inject/groups 关键路径接入结构化日志
- MCP 新增 get_diagnostics 工具,返回注入摘要与近期错误
- add_group_member 注入失败时前端显示黄色 toast 警告
健康中心:
- 新增 run_health_check 命令(6 项并行检查:MCP/Git 路径/项目路径/GitHub Token/编辑器/DB 延迟)
- 新增质量指标聚合(休眠项目/孤立项目/注入异常组/无路径项目)
- 侧边栏新增健康中心页面,支持手动刷新和诊断报告复制
- 设置页 MCP 状态改为真实 HTTP ping 检测
项目导师:
- 新增 get_mentor_context 后端命令,聚合健康状态/蓝图摘要/近期错误
- MCP 新增 get_project_mentor_context 工具(含产品组归属校验)
- 项目卡片底部新增 🎓 导师按钮,面板支持复制结构化 Markdown 报告
- 修复 WSL 项目路径识别:wsl_path 存 UNC 格式时自动提取 distro 和 Linux 路径,改用 wsl 命令检查路径存在性(规避 Path::exists() 对 \wsl.localhost\... 不可靠的问题)
AI 工作流:
- 新增 AI-WORKFLOW.md、.claude/skills/ 技能体系配置
- 更新 CLAUDE.md 补充蓝图驱动开发规范
91 lines
4.1 KiB
Markdown
91 lines
4.1 KiB
Markdown
# 健康中心
|
||
|
||
呈现炼境核心功能的运行状态与质量分析。分两层:代码层做客观健康检查,Claude 层做质量推断与优化建议。
|
||
|
||
## 设计思路
|
||
|
||
```
|
||
Tauri 命令层(客观检测)
|
||
├─ Git 仓库路径有效性
|
||
├─ 项目本地路径存在性
|
||
├─ GitHub Token 有效性
|
||
├─ 编辑器路径可用性
|
||
└─ SQLite 读写延迟
|
||
|
||
↓ 聚合为 HealthReport
|
||
|
||
前端健康中心页面(展示 + 交互)
|
||
├─ 每项检查:绿/黄/红状态指示
|
||
├─ 质量指标:休眠项目、孤立项目、注入异常组
|
||
└─ "生成诊断报告" → 复制结构化 Markdown
|
||
|
||
↓ 用户粘贴给 Claude / 未来 in-app API
|
||
|
||
Claude 分析层(推断 + 建议)
|
||
└─ 读数据 → 识别模式 → 给出优化建议
|
||
```
|
||
|
||
MCP 路径同步增强:扩展已有 `get_diagnostics` 工具,覆盖全部检查项,让 Claude Code 用户无需打开页面即可获得完整诊断。
|
||
|
||
## 任务卡
|
||
|
||
### ✅ T1 · Backend 健康检查聚合命令
|
||
- status: done
|
||
- complexity: M
|
||
- files: src-tauri/src/commands/settings.rs, src-tauri/src/lib.rs, src/lib/commands.ts
|
||
- acceptance:
|
||
- 新增 `run_health_check` Tauri command,无必填参数
|
||
- 检查项(全部并行执行,超时 5s):
|
||
- `git_repos`:遍历所有注册仓库,验证 `win_path` 是否为有效 git 目录(`.git` 存在)
|
||
- `project_paths`:遍历所有项目,检查 `win_path` / `wsl_path` 是否存在于文件系统
|
||
- `github_token`:若 settings 中有 token,调 `https://api.github.com/user` 验证有效性
|
||
- `editor_paths`:读取 settings 中配置的编辑器路径,验证文件是否存在
|
||
- `db_latency`:计时一次简单写入+删除,返回 ms 数
|
||
- 返回结构:`HealthReport { checked_at, items: Vec<HealthItem { id, name, status, detail }> }`
|
||
- `status` 枚举:`ok / warn / error / skip`(skip 表示未配置该项,不算失败)
|
||
|
||
### ✅ T2 · 质量指标聚合
|
||
- status: done
|
||
- complexity: S
|
||
- files: src-tauri/src/commands/settings.rs, src/lib/commands.ts
|
||
- depends: T1
|
||
- acceptance:
|
||
- `run_health_check` 返回值中追加 `quality: QualityMetrics`
|
||
- 指标:
|
||
- `dormant_projects`:`last_push_at` 超过 30 天且有 repo_url 的项目列表(id + name + days)
|
||
- `orphaned_projects`:未加入任何产品组且无 repo_url 的项目列表
|
||
- `groups_with_inject_warn`:runtime_logs 中最近有 error/warn 的产品组列表
|
||
- `projects_without_path`:win_path 和 wsl_path 均为空的项目数
|
||
- 所有指标从已有 SQLite 数据计算,无需新表
|
||
|
||
### ✅ T3 · 前端健康中心页面
|
||
- status: done
|
||
- complexity: M
|
||
- files: src/components/health/HealthPage.tsx, src/components/layout/Sidebar.tsx, src/lib/commands.ts
|
||
- depends: T1, T2
|
||
- acceptance:
|
||
- 侧边栏新增"健康中心"入口(脉搏图标),路由到 HealthPage
|
||
- 页面布局:顶部"上次检查时间 + 刷新",下方两列
|
||
- 左列:健康检查项列表,每项显示状态图标 + 名称 + 详情文字
|
||
- 右列:质量指标卡片(休眠项目数、孤立项目数、注入异常组数)
|
||
- 每项 `error` 状态展开显示具体失败原因
|
||
- "生成诊断报告"按钮:将 HealthReport 格式化为 Markdown 复制到剪贴板
|
||
- 页面挂载时自动执行一次检查,支持手动刷新
|
||
|
||
### ✅ T4 · 扩展 MCP get_diagnostics
|
||
- status: done
|
||
- complexity: S
|
||
- files: src-tauri/src/mcp_server.rs
|
||
- depends: T1, T2
|
||
- acceptance:
|
||
- `get_diagnostics` MCP 工具调用 `run_health_check` 聚合数据(复用逻辑,不重复实现)
|
||
- 返回 Markdown 追加"系统健康"和"质量指标"两节
|
||
- Claude Code 用户对话"帮我看下炼境状态"时可直接获得完整报告
|
||
|
||
## 决策记录
|
||
|
||
- 不在应用内直接调用 Anthropic API(需要用户填 API Key,增加配置成本),优先做"复制报告"路径,让用户自行粘贴给 Claude
|
||
- `run_health_check` 独立于 `check_mcp_health`,后者只查 MCP,前者是全局聚合
|
||
- 所有检查并行执行(tokio::join!),单项超时 5s,不阻塞整体
|
||
- 质量指标从已有数据计算,不引入新的数据采集,保持实现简单
|