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

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

---

## Part A：AI 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 主动推送 | 低 | 高 | 任务完成、阶段转换 |

> **参考实践**：
> - **Cursor**：4 种交互粒度（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-5：Agent 主动汇报规范

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

| 汇报时机 | 谁汇报 | 内容 | 渠道 |
|---------|--------|------|------|
| 任务开始 | 庞统 | "已创建任务 T-006，5个节点，预估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 B：AI Native Dashboard 设计（课题9）

### 4. 设计目标

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

### 5. 设计决策

#### D9-1：Dashboard 定位

> **参考实践**：
> - **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 Kanban**：7 状态完整状态机 + 按钮动态显示
> - **课题3 §9.7**：状态机守卫（ACTION_GUARDS），前端按钮与后端对齐

#### D9-5：全局监控设计

**DAG 拓扑视图**：

```
  T-006 双均线策略
  ┌──────┐     ┌──────┐     ┌──────┐
  │ 赵云  │────→│ 张飞  │────→│ 司马懿│
  │ 数据  │ ✅  │ 编码  │ ⚙️  │ 审查  │ ⏳
  └──────┘     └──────┘     └──────┘
                    │
                    ▼
              ┌──────┐
              │ 关羽  │
              │ 风控  │ ⏳
              └──────┘
```

- 颜色：✅ 完成(绿) / ⚙️ 执行中(蓝动画) / ⏳ 等待(灰) / ❌ 失败(红)
- 点击节点 → 滑出该节点的详情面板
- 连线 = depends_on 依赖关系

**Agent 状态面板**：

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

> **参考实践**：
> - **GitHub Actions**：DAG 拓扑 + 点击节点看日志
> - **Hermes Kanban**：心跳可视化 + 僵尸检测
> - **课题2 §4.5**：续杯与心跳机制

#### D9-6：AI Briefing（AI 晨报）

> **参考实践**：
> - **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-7：Command Palette（⌘K）

> **参考实践**：
> - **Raycast**：全局快捷键 + 模糊搜索 + 即用即走
> - **cmdk（shadcn/ui）**：成熟的 React command palette 组件

**支持的命令**：

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

**实现**：Phase 2，使用 cmdk 组件。

#### D9-8：评论线程

> **参考实践**：
> - **Hermes Kanban**：per-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** | cmdk（shadcn/ui） | 成熟的 command palette 组件 |
| **图表** | Recharts | 轻量级，已有使用经验 |
| **后端 API** | FastAPI + SQLite（黑板数据库） | 延续 v1.0 技术栈 |
| **UI 风格** | 深色主题（延续 Edict CSS 变量体系） | 已有完整设计系统 |

> **注意**：v1.0 前端源码在 `~/.sanguo_projects/sanguo_moziplus/dashboard/`（React + Vite + TypeScript），可直接在此基础上重构。

#### D9-10：API 设计

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 处理时检查来源合法性
   ```json
   POST /api/tasks/T-006/action
   { "action": "approve", "source": "dashboard", "reason": "方案可行" }
   ```

2. **乐观锁**：action 请求必须带 `expected_version` 字段，Daemon 校验当前 version 是否匹配，不匹配则拒绝（409 Conflict）
   ```json
   { "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设计方案待用户进一步探讨后结题。
