Files
sanguo_moziplus_v2/docs/design/topic7-interaction-dashboard-proposal.md
T
2026-05-16 22:42:08 +08:00

21 KiB
Raw Blame History

课题7+9AI Native 人机交互 + Dashboard 设计方案

版本: v1.0
作者: 庞统(副军师)🐦
日期: 2026-05-15
评审: 待司马懿评审
状态: 待评审


Part AAI Native 人机交互(课题7

1. 设计目标

定义 moziplus 中人与 AI Agent 的交互范式——不是给 AI 团队做 ERP 界面,而是让 AI 主动、精准、不扰民地和用户协作。

2. 核心洞察

传统模式:用户主动查 Dashboard、主动问进度、主动分配任务。 AI Native 模式:AI 主动推送关键信息,用户只在需要决策时轻触确认。

参考六种 AI Native 交互范式(调研报告 §3.2):

# 范式 代表 moziplus 适用度
1 REPL 对话 Claude Code CLI WebChat 已有
2 Canvas/Artifacts ChatGPT Canvas 产出物交互
3 沉浸式观察 Devin 长任务监控
4 Command Palette Raycast 快捷操作
5 Contextual Inline Cursor 不适用(非IDE
6 Event-Driven Notification Linear 核心模式

结论moziplus 的核心交互范式是 Event-Driven Notification + 轻触确认,辅助以 WebChat 深度对话和 Dashboard 全局观察。

3. 设计决策

D7-1:四种交互模式

模式 触发方式 用户注意力 AI 主动性 适用场景
沉浸观察 (Dashboard) 用户主动打开 全局监控、任务详情
轻触确认 (Approval) AI 主动推送 方案审批、风控告警
即时对话 (WebChat) 双向触发 中高 复杂指令、探索性需求
被动通知 (Notify) AI 主动推送 任务完成、阶段转换

参考实践

  • Cursor4 种交互粒度(Tab/Cmd+K/Cmd+L/Cmd+I),从被动到主动覆盖所有场景
  • Devin:沉浸式观察,用户只在关键节点介入
  • Linear:精准通知,不噪音

D7-2:推送级别分级

推送级别 示例 默认行为 用户可配置
🔴 必须确认 方案审批、风控告警、预算超限 始终推送 + 阻塞等待 ✗ 不可关闭
🟡 重要进展 任务完成、阶段转换、产出交付 默认推送 可降级为摘要
🟢 一般信息 Agent 启动、中间步骤、心跳正常 默认不推送 可开启
🔵 定时摘要 每日工作汇总、Token 消耗报告 默认开启 频率可调

推送频率控制

  • 任务执行中:每 5 分钟一次进展摘要(不是每步都推)
  • 任务完成/阻塞/异常:立即推送
  • 正常心跳:不推送,只在 Dashboard 上更新

参考实践

  • Linear:关键变更推送 + 精准通知,不噪音
  • 课题4 D4-5:审批式/通知式/中断式三种确认模式,按 risk_level 动态决定

D7-3:推送渠道

渠道 推送级别 交互深度 延迟
WebChat 🔴🟡 深(可对话) 实时
Dashboard 通知 🟡🟢 浅(点击查看) 实时
Signal/Telegram 🟡🔵 极浅(只读) 实时
邮件 🔵 极浅(只读) 批量

当前落地WebChat(主) + Signal(辅)。Dashboard 通知随 M2 前端一起上线。

D7-4:用户决策点设计

用户不是全程驾驶,而是在关键节点参与:

用户参与密度:
Phase 1 需求探索 ──── 高(苏格拉底对话)
Phase 2 动态规划 ──── 中(方案确认,可跳过 simple 任务)
Phase 3 自主执行 ──── 低(只收通知,不干预)
Phase 4 验收汇报 ──── 中(审查产出,确认交付)

🔴 级别统一超时策略(适用于所有 🔴必须确认 的决策点)

核心原则:用户不在时,系统宁可暂停也不自动推进高风险操作。

时间段 行为
0-1h 正常等待,无额外动作
1-4h 每 30min 重发提醒(频率可配,通过 WebChat + Signal 双渠道)
4h 后 任务标记 escalated + 暂停(不继续执行,不自动 reject),通知渠道升级
用户回来 手动恢复(approve/reject/cancel),移除 escalated 标记

具体决策点

决策点 触发条件 交互模式 超时兜底(覆盖上面的通用策略)
需求确认 庞统完成需求结构化后 即时对话 30min 后提醒,4h 后暂停
方案审批 complex 任务规划完成后 轻触确认 同通用策略(含 risk_level=high
风控告警 关羽触发风控规则 必须确认 同通用策略:4h 后 escalated+暂停,保护资金安全
产出验收 任务全部完成后 沉浸观察 24h 自动确认(仅 risk_level=low,其余走通用策略)
异常升级 Agent 无法自主解决 即时对话 同通用策略

参考实践

  • v2.0 PRD:人的参与密度从高到低
  • GSD discuss phase:必须确认步骤
  • 课题4 D4-5:三种确认模式

D7-5Agent 主动汇报规范

Agent 不是沉默执行器——在关键节点主动向用户汇报:

汇报时机 谁汇报 内容 渠道
任务开始 庞统 "已创建任务 T-0065个节点,预估30分钟" WebChat
阶段转换 庞统 "T-006 编码完成,进入审查阶段" 通知
遇到阻塞 执行者 "发现 XXX 问题,建议 YYY 方案" 即时对话
任务完成 庞统 "T-006 完成!年化收益15.3%,最大回撤8.2%" WebChat + 通知
定时摘要 庞统 "今日完成 3 个任务,Token 消耗 ¥12.5" 通知/邮件

汇报格式(简洁、可操作):

✅ T-006 双均线策略 — 完成
   执行:张飞→司马懿→赵云
   产出:策略代码 + 回测报告
   关键指标:年化15.3% / 回撤8.2% / 夏普1.8
   [查看详情] [查看产出]

D7-6:多 Agent 协作可视化

用户观察多 Agent 协作过程的三层视图(调研报告 §4.4):

层次 展示什么 类比 用户操作
全局层 DAG 拓扑 + 节点状态 GitHub Actions 点击节点
任务层 管道进度 + Agent 头像 Edict MiniPipe 审批/暂停
Agent 层 当前操作 + 产出物预览 Devin 工作屏 评论/指导

Part BAI Native Dashboard 设计(课题9

4. 设计目标

Dashboard 不是监控面板,是人 Agent 协作界面——用户在这里观察、确认、指导 AI 团队的工作。

5. 设计决策

D9-1Dashboard 定位

参考实践

  • Hermes Kanban:Dashboard 是协作界面,不是展示墙。Comment Thread 是人 Agent 讨论的最佳实践
  • Edict:看板 + 管道 + 操作按钮 + 皇帝发言 = 完整协作
  • Linear:极简 + 键盘优先,不信息过载

三不做

  1. 不做第二个 Grafana(纯监控面板)
  2. 不做第二个 Slack(闲聊频道)
  3. 不做第二个 Jira(重到没人用)

定位:轻量协作界面——展示关键状态 + 快速操作入口 + 深入查看能力。

D9-2:三层信息架构

L1: 一眼看到(顶部栏,永远可见)
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 全局健康  │ │ 活跃任务  │ │ 待审批   │ │ Token    │
│  🟢 正常  │ │   3      │ │   1 ⚠️   │ │ ¥12.5    │
└──────────┘ └──────────┘ └──────────┘ └──────────┘

L2: 任务看板(主体区域)
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ T-003 策略回测│ │ T-004 数据采集│ │ T-005 风控  │
│ ⚙️ 执行中    │ │ 📋 规划中    │ │ ✅ 完成     │
│ ████░░ 张飞  │ │ ░░░░░░ 赵云  │ │ █████ 赵云  │
│ 3/5 节点完成 │ │ 等待审批     │ │ 产出已交付  │
└─────────────┘ └─────────────┘ └─────────────┘

L3: 任务详情(点击卡片展开)
- 管道进度:规划→审查→执行→交付
- 产出物:代码 diff / Markdown / 图表
- 评论线程:Agent 和用户的讨论
- 操作历史:所有状态变更记录

D9-3:页面结构

延续 v1.0 的 Tab 结构,但大幅精简为 5 个核心页面:

页面 展示内容 核心交互 优先级
任务看板 活跃任务卡片 + 管道进度 审批/暂停/取消、点击查看详情 P1
全局监控 DAG 拓扑 + Agent 状态 + 心跳 点击节点/Agent、Token 统计 P1
产出档案 已完成任务 + 产出物 预览/下载/复制 P2
系统配置 模型/技能/Guardrail 配置 编辑/保存 P2
AI Briefing 今日摘要 + 待处理 + 风险预警 一键操作 P3

砍掉的 v1.0 页面(合并或降级):

  • "将军总览" → 合并到全局监控的 Agent 状态面板
  • "军议大厅" → 合并到任务详情的评论线程(黑板 comment 已支持)
  • "奏折阁" → 合并到产出档案
  • "会话监控" → 合并到全局监控
  • "编排调度" → 合并到任务看板(DAG 拓扑)

理由:5 个页面覆盖所有场景。v1.0 的 10 Tab 有冗余(编排调度 vs 任务看板、奏折阁 vs 产出档案)。参考 Linear 的极简哲学——少即是多。

D9-4:任务看板设计

任务卡片L2 主体):

┌─────────────────────────────────────┐
│ T-006 双均线交叉策略                  │
│ 📋 规划中 ─── 🟡 risk: standard      │
│                                      │
│ MiniPipe: █████░░░░░░ 2/5 节点       │
│ 张飞 🟢 编码中 → 司马懿 ⏳ 等待审查   │
│                                      │
│ 预估 30min | 已用 15min | Token ¥2.3 │
│                                      │
│ [⏸暂停] [📋详情] [💬评论]            │
└─────────────────────────────────────┘

卡片上的操作按钮(按任务状态动态显示):

状态 可用操作 说明
pending 取消、编辑 规划前可改
planned 审批、驳回 等用户确认方案
executing 暂停、查看详情 执行中可暂停
reviewing 查看详情 审查中只观察
completed 查看产出、重新执行 完成后可复查
failed 重试、取消、查看详情 失败后可重试

参考实践

  • Edict TaskModal:叫停/恢复/取消统一入口
  • Hermes Kanban7 状态完整状态机 + 按钮动态显示
  • 课题3 §9.7:状态机守卫(ACTION_GUARDS),前端按钮与后端对齐

D9-5:全局监控设计

DAG 拓扑视图

  T-006 双均线策略
  ┌──────┐     ┌──────┐     ┌──────┐
  │ 赵云  │────→│ 张飞  │────→│ 司马懿│
  │ 数据  │ ✅  │ 编码  │ ⚙️  │ 审查  │ ⏳
  └──────┘     └──────┘     └──────┘
                    │
                    ▼
              ┌──────┐
              │ 关羽  │
              │ 风控  │ ⏳
              └──────┘
  • 颜色: 完成(绿) / ⚙️ 执行中(蓝动画) / 等待(灰) / 失败(红)
  • 点击节点 → 滑出该节点的详情面板
  • 连线 = depends_on 依赖关系

Agent 状态面板

┌────────────────────────────────────┐
│ 张飞 翼德 🟢                       │
│ 当前: T-006 节点2 编码中            │
│ 心跳: 30s前 | Session: 45min       │
│ 今日: 完成 2 任务 | Token ¥5.2      │
└────────────────────────────────────┘

参考实践

  • GitHub ActionsDAG 拓扑 + 点击节点看日志
  • Hermes Kanban:心跳可视化 + 僵尸检测
  • 课题2 §4.5:续杯与心跳机制

D9-6AI BriefingAI 晨报)

参考实践

  • v2.0 PRD Phase 4:主动汇报,不等人查
  • superpowers:每次 session 开始时自动 summary

位置:Dashboard 首页顶部卡片。

内容AI 自动生成,不是固定模板):

┌─────────────────────────────────────────┐
│ 🌅 今日简报 — 2026-05-16                │
│                                         │
│ 📊 活跃任务: 3 | 待审批: 1 | 今日完成: 2 │
│                                         │
│ ⚠️ 需要你处理:                          │
│ • T-006 方案审批(等待 2h)              │
│                                         │
│ 📈 今日进展:                            │
│ • T-004 数据采集完成(赵云)             │
│ • T-005 风控检查通过(关羽)             │
│                                         │
│ 💰 Token 消耗: ¥12.5 / 今日预算 ¥50     │
│                                         │
│ [审批 T-006] [查看全部]                  │
└─────────────────────────────────────────┘

生成时机

  • 用户打开 Dashboard 时自动刷新
  • 每日定时推送(可配置)
  • 关键事件后更新

D9-7Command Palette(⌘K

参考实践

  • Raycast:全局快捷键 + 模糊搜索 + 即用即走
  • cmdkshadcn/ui:成熟的 React command palette 组件

支持的命令

类别 示例
任务操作 "暂停任务 3" "查看 T-006 详情" "创建新任务"
状态查询 "张飞在干什么" "Token 用了多少" "有多少待审批"
导航 "打开产出档案" "跳转到 T-005"
配置 "切换模型" "查看技能列表"

实现Phase 2,使用 cmdk 组件。

D9-8:评论线程

参考实践

  • Hermes Kanbanper-task comment thread,人和 Agent 都可评论
  • 黑板 comment 机制(课题1 §5.2):已设计结构化 comment + @mention

每个任务有独立评论线程,展示在 L3 任务详情中:

┌─────────────────────────────────────────┐
│ 💬 T-006 讨论线程                        │
│                                         │
│ [庞统] 任务已创建,5个节点,预估30min     │
│ [张飞] ## Handoff: 编码完成 ✅            │
│        产出: strategy.py                 │
│ [司马懿] 🔍 发现2个问题...                │
│          verdict: needs_revision         │
│ [张飞] REJECT: 问题1已修复,问题2不同意   │
│ [你] → 输入评论...                       │
└─────────────────────────────────────────┘

用户可以直接在评论线程中发言,发言会被 Agent 看到(通过黑板 comment + inbox 通知)。

D9-9:技术方案

方面 方案 理由
前端框架 React 18 + Vite + Zustand + Tailwind 延续 v1.0 + Edict 已验证
实时通信 M2: HTTP 轮询(5s) → M3: WebSocket 渐进升级,延续 v1.0 策略
DAG 可视化 React Flow GitHub Actions 式 DAG,成熟方案
Command Palette cmdkshadcn/ui 成熟的 command palette 组件
图表 Recharts 轻量级,已有使用经验
后端 API FastAPI + SQLite(黑板数据库) 延续 v1.0 技术栈
UI 风格 深色主题(延续 Edict CSS 变量体系) 已有完整设计系统

注意v1.0 前端源码在 ~/.sanguo_projects/sanguo_moziplus/dashboard/React + Vite + TypeScript),可直接在此基础上重构。

D9-10API 设计

Dashboard 后端 API 直接读取黑板数据库:

端点 方法 用途
/api/tasks GET 任务列表(支持 state/agent 过滤)
/api/tasks/{id} GET 任务详情(含 comments、reviews
/api/tasks/{id}/action POST 操作(pause/resume/cancel/approve/reject
/api/agents GET Agent 状态列表
/api/stats GET 全局统计(活跃/完成/Token
/api/briefing GET AI Briefing 内容
/api/comments/{task_id} GET/POST 评论线程读写
/ws/events WebSocket 实时事件推送(M3

并发与权限保护

  1. 来源标识action 端点必须带 source 字段(dashboard / daemon / cli),Daemon 处理时检查来源合法性

    POST /api/tasks/T-006/action
    { "action": "approve", "source": "dashboard", "reason": "方案可行" }
    
  2. 乐观锁action 请求必须带 expected_version 字段,Daemon 校验当前 version 是否匹配,不匹配则拒绝(409 Conflict

    { "action": "approve", "source": "dashboard", "expected_version": 3 }
    

    → Dashboard 前端在读取任务详情时获取 version,提交时带回,防止 Dashboard 和 Daemon 并发冲突。

  3. 用户身份Dashboard 评论的 author 统一为 "user",与 Agent 的 "pangtong-fujunshi" / "zhangfei-dev" 等区分

关键设计

  • 所有数据来自黑板数据库(单一数据源)
  • Dashboard 不维护独立状态,是黑板数据的只读视图 + 操作入口
  • 操作端点(approve/reject)通过来源标识 + 乐观锁安全地调用 Daemon API

6. 和现有设计的对齐检查

已有设计 课题7+9 补充 一致性
§4.2 Tick+Inbox 事件驱动 D7-2 推送级别 → inbox 事件驱动通知 Inbox 是推送机制的基础
§5.1 Agent spawn 流程 D7-5 主动汇报 → spawn 后庞统通知用户 庞统作为协调者汇报
§3.4 原子操作 D9-10 API action 端点 → 调用原子操作 Dashboard 操作走黑板原子操作
§3.5 评论线程 D9-8 Dashboard 评论 → 黑板 comment 单一数据源
§9.7 状态机守卫 D9-4 卡片按钮 → ACTION_GUARDS 对齐 前后端一致
§4.5 续杯与心跳 D9-5 Agent 心跳状态 → Dashboard 展示 心跳数据可视化
v1.0 10 Tab 设计 D9-3 精简为 5 页 合并冗余,保留核心
Edict Dashboard D9-2 三层信息 + D9-4 卡片 + D9-5 DAG 直接复用模式

7. Phase 落地规划

Phase 人机交互 Dashboard
Phase 1 WebChat 推送(已有)+ 🔴必须确认 无前端(CLI + WebChat 够用)
Phase 2 🟡通知 + 🟢信息 + ⌘K 任务看板 + 全局监控 + 评论线程
Phase 3 🔵定时摘要 + AI Briefing 产出档案 + 系统配置 + WebSocket
Phase 4 Canvas 产出物交互 全功能 + 优化

8. 遗留 TODO

注意:新版 topic7-9-interaction-dashboard-proposal.md 已完成设计,以下遗留全部由新版覆盖或为开发实现。

# 待解决事项 归属 说明
T7-1 推送级别配置 UI Phase 2 新版已设计推送分级,用户偏好配置为开发实现
T7-2 超时兜底机制 Phase 2 新版已设计超时推送(🟡级别),具体党底在课题3解决
T7-3 WebChat 推送格式标准化 Phase 1 开发实现
T9-1 React Flow DAG 组件 Phase 2 开发实现
T9-2 cmdk Command Palette Phase 2 开发实现
T9-3 AI Briefing Phase 3 新版已设计日报/周报格式
T9-4 Dashboard 评论→黑板 Phase 2 开发实现
T9-5 WebSocket 实时推送 Phase 3 新版选 SSE + 降级轮询替代
T9-6 v1.0 前端重构 Phase 2 新版已设计 5 页面结构
T9-7 产出物预览 Canvas Phase 4 开发实现

待用户确认:课题7+9设计方案待用户进一步探讨后结题。