DESIGN.md@backend/packages/harness/evoflow/proactive · git:20260912.6c490fd · 2026-09-12 · sha256 e1be5f81f53017d4

DESIGN.md@backend/packages/harness/evoflow/proactive git:20260912.6c490fdA

Immutable. This exact content is served forever at /api/v1/blob/e1be5f81f53017d4.

# 智能体员工(Proactive AI)模块设计文档

## 1. 核心理念

### 1.1 从「被动响应」到「主动上岗」

传统 AI 模式:**人 → 发消息 → AI 响应 → 返回结果**
智能体员工模式:**AI 角色 → 自主思考 → 发起行动 → 人仅决策**

每个 AI 不再是被动等待指令的工具,而是一个**真实岗位的负责人**:
- 有明确的职责范围(Domain)
- 有需要优化的 KPI / 目标
- 定期「醒来」审视自己的领域,主动发现问题、提出改进
- 在授权范围内自主执行,超出范围时请求人类决策

### 1.2 人类角色:决策者,非执行者

人不再写 prompt、不发指令、不盯进度。人只做一件事:**决策**
- 飞书审批卡片 → 点「同意」/「拒绝」
- 桌面窗口通知 → 授权 / 驳回
- 对 AI 的行动结果进行事后评价(反馈循环)

---

## 2. 架构总览

```
┌─────────────────────────────────────────────────────────────┐
│                    EvoFlow Gateway                          │
│                                                             │
│  ┌──────────────┐    ┌──────────────────┐                   │
│  │ Proactive    │───>│  ProactiveEngine │  (LLM 思考引擎)   │
│  │ Runner       │    │  - 评估领域状态   │                   │
│  │ (心跳调度)   │    │  - 识别改进机会   │                   │
│  │              │    │  - 生成倡议       │                   │
│  │  30s tick    │    │  - 规划行动       │                   │
│  └──────┬───────┘    └────────┬─────────┘                   │
│         │                     │                             │
│         v                     v                             │
│  ┌──────────────┐    ┌──────────────────┐                   │
│  │ Initiative   │<──>│  DecisionGate    │  (人类决策门)      │
│  │ Tracker      │    │  - 飞书审批卡片   │                   │
│  │ (倡议追踪)   │    │  - 桌面通知授权   │                   │
│  │              │    │  - 超时升级       │                   │
│  └──────┬───────┘    └────────┬─────────┘                   │
│         │                     │                             │
│         v                     v                             │
│  ┌──────────────┐    ┌──────────────────┐                   │
│  │ Proactive    │    │  Execution Bridge │  (执行桥接)       │
│  │ Memory       │    │  - LangGraph run  │                   │
│  │ (角色记忆)   │    │  - Supervisor     │                   │
│  │              │    │  - Goal Service   │                   │
│  └──────────────┘    └──────────────────┘                   │
│                                                             │
│  ┌──────────────────────────────────────────────────────┐   │
│  │              API Router (/api/proactive)              │   │
│  │  角色 CRUD · 倡议查看 · 审批回调 · 记忆管理           │   │
│  └──────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘
```

---

## 3. 核心组件设计

### 3.1 ProactiveRole(智能体员工角色定义)

每个 AI 角色对应一个真实岗位,包含:

| 字 | 说明 | 示例 |
|---|------|------|
| `agent_code` | 关联 evoflow_agents 表的 agent | `frontend_architect` |
| `role_name` | 角色名称 | "前端架构负责人" |
| `department` | 所属部门 | "技术部" |
| `responsibilities` | 职责描述 | ["前端架构演进", "代码质量", "性能优化"] |
| `domain_scope` | 管辖范围(文件/模块/项目) | ["evopanel/src/", "backend/packages/harness/"] |
| `kpis` | 需要持续优化的指标 | ["代码覆盖率", "构建耗时", "Lighthouse评分"] |
| `autonomy_level` | 自主权级 | `full_auto` / `approval_for_risky` / `approval_for_all` |
| `heartbeat_schedule` | 心跳周期 | `"FREQ=HOURLY;INTERVAL=2"` (每2小时) |
| `max_initiatives_per_cycle` | 每轮最多发起的倡议数 | 3 |
| `risk_threshold` | 风险阈值(超过则需审批) | `medium` |
| `approval_channels` | 审批渠道 | `["feishu", "desktop"]` |
| `status` | 运行状态 | `active` / `paused` / `archived` |
| `soul_md` | 角色灵魂描述(人设) | "你是一位严谨的前端架构师..." |

### 3.1.1 岗位交付文档目录

每个员工在绑定的 `workspace_path` 下有独立文档树(**路径用英文 `agent_code`,不用中文岗位名**,避免跨平台乱码与重名):

```
<workspace>/
  docs/roles/
    code-agent/                    # agent_code=code-agent(例:前端工程师)
      20260721-18/                 # UTC 小时桶 YYYYMMDD-HH
        notes.md
        report.md
      20260721-19/
    xiaomi/
      20260721-18/
    …
```

规则(写进值班系统提示「交付文档目录」):

- 方案 / 报告 / 纪要 / 分析类 Markdown → **只写** `docs/roles/<agent_code>/<YYYYMMDD-HH>/…`
- 小时戳为 **UTC、精确到小时**,避免同名覆盖、目录乱堆;同一小时内可多文件
- 业务源码仍按 `domain_scope` 与仓库惯例落盘,不塞进 `docs/roles/`
- 禁止写到仓库根、`docs/` 根、`outputs/` 根、他人目录,或无时间戳直接堆在岗位根下
- 对话引用用工作区绝对路径,如 `@@/Users/me/project/docs/roles/code-agent/20260721-18/report.md@@`(禁止相对路径)

实现:`evoflow.proactive.artifacts.role_docs_rel_dir` / `role_docs_hour_stamp` / `format_role_docs_prompt_block`。

### 3.2 ProactiveEngine(主动思考引擎)

每次心跳触发时,引擎执行以下「思考循环」:

```
1. 感知 (Perceive)
   - 读取角色管辖范围内的当前状态(代码、任务、指标)
   - 读取角色记忆(上次思考的结论、未完成事项)
   - 读取环境信号(新提交、CI 结果、用户反馈)

2. 思考 (Think) — LLM 驱动
   - 基于角色 KPI 评估当前状态
   - 识别可改进的点、潜在风险、待推进事项
   - 生成 1-N 个「倡议」(Initiative)

3. 决策 (Decide)
   - 评估每个倡议的风险等级
   - autonomy_level=full_auto: 直接执行
   - autonomy_level=approval_for_risky: 低风险直接执行,高风险走审批
   - autonomy_level=approval_for_all: 全部走审批

4. 行动 (Act)
   - 通过 ExecutionBridge 执行(LangGraph / Supervisor / Goal)
   - 或通过 DecisionGate 发起审批

5. 反思 (Reflect)
   - 记录本轮思考结论到 ProactiveMemory
   - 更新策略(哪些方向值得继续关注)
```

### 3.3 Initiative(倡议)

AI 主动发起的一项工作提案:

| 字段 | 说明 |
|------|------|
| `id` | 唯一标识 |
| `role_agent_code` | 发起角色 |
| `title` | 倡议标题 |
| `description` | 详细描述(为什么要做) |
| `rationale` | 分析依据 |
| `action_type` | `code_change` / `analysis` / `report` / `task_delegation` / `alert` |
| `risk_level` | `low` / `medium` / `high` / `critical` |
| `action_plan` | 具体执行计划(JSON) |
| `expected_outcome` | 预期效果 |
| `status` | `proposed` → `pending_approval` → `approved`/`rejected` → `executing` → `completed`/`failed` |
| `approval_timeout_minutes` | 审批超时时间 |
| `approved_by` | 审批人 |
| `approved_at` | 审批时间 |
| `execution_result` | 执行结果 |
| `created_at` | 创建时间 |

### 3.4 DecisionGate(人类决策门)

```
倡议风险 > 阈值?
  ├─ 是 → 发起审批
  │   ├─ 飞书交互卡片(标题 + 描述 + 风险 + [同意] [拒绝] [需要讨论])
  │   ├─ 桌面通知(Tauri 窗口弹窗 + 操作按钮)
  │   └─ 等待审批(默认超时 30 分钟,超时后按策略升级或自动拒绝)
  │
  └─ 否 → 直接执行
```

审批流程:
1. **发送**:生成审批请求 → 推送到飞书 + 桌面通知
2. **等待**:轮询状态,超时检查
3. **回调**:
   - 飞书回调 → `POST /api/proactive/approval/callback`
   - 桌面操作 → `POST /api/proactive/approval/{initiative_id}`
4. **超时处理**:
   - Level 1 超时(30min)→ 升级通知(@更高权限人)
   - Level 2 超时(2h)→ 自动标记为 `timeout_rejected`

### 3.5 ProactiveMemory(角色记忆)

每个角色的长期记忆,跨心跳周期累积:

```json
{
  "role_agent_code": "frontend_architect",
  "memory": {
    "observations": [
      "2026-07-15: evopanel 构建耗时从 45s 降到 38s,仍有优化空间",
      "2026-07-15: src/components/ 下有 3 个组件未做懒加载"
    ],
    "strategies": [
      "优先关注构建性能优化,每次心跳检查构建耗时趋势",
      "代码审查关注 unused imports 和重复逻辑"
    ],
    "completed_initiatives": 12,
    "failed_initiatives": 2,
    "last_think_at": "2026-07-15T10:00:00Z",
    "last_think_summary": "本轮检查了构建配置,发现可拆分 vendor chunk",
    "focus_areas": ["build-perf", "code-splitting", "test-coverage"]
  }
}
```

---

## 4. 数据模型(SQLite 新表)

### 4.1 evoflow_proactive_roles
```sql
CREATE TABLE evoflow_proactive_roles (
    agent_code TEXT PRIMARY KEY,
    role_name TEXT NOT NULL,
    department TEXT NOT NULL DEFAULT '',
    config_json TEXT NOT NULL,  -- responsibilities, domain_scope, kpis, autonomy_level, etc.
    heartbeat_rrule TEXT NOT NULL DEFAULT 'FREQ=HOURLY;INTERVAL=2',
    status TEXT NOT NULL DEFAULT 'active',  -- active / paused / archived
    last_heartbeat_at TEXT,
    next_heartbeat_at TEXT,
    created_at TEXT NOT NULL,
    updated_at TEXT NOT NULL
);
```

### 4.2 evoflow_proactive_initiatives
```sql
CREATE TABLE evoflow_proactive_initiatives (
    id TEXT PRIMARY KEY,
    role_agent_code TEXT NOT NULL,
    title TEXT NOT NULL,
    description TEXT NOT NULL,
    rationale TEXT NOT NULL DEFAULT '',
    action_type TEXT NOT NULL DEFAULT 'analysis',
    risk_level TEXT NOT NULL DEFAULT 'low',
    action_plan_json TEXT NOT NULL DEFAULT '{}',
    expected_outcome TEXT NOT NULL DEFAULT '',
    status TEXT NOT NULL DEFAULT 'proposed',
    approval_id TEXT,
    approved_by TEXT,
    approved_at TEXT,
    approval_timeout_minutes INTEGER NOT NULL DEFAULT 30,
    execution_thread_id TEXT,
    execution_result TEXT,
    created_at TEXT NOT NULL,
    updated_at TEXT NOT NULL,
    FOREIGN KEY (role_agent_code) REFERENCES evoflow_proactive_roles(agent_code)
);
```

### 4.3 evoflow_proactive_approvals
```sql
CREATE TABLE evoflow_proactive_approvals (
    id TEXT PRIMARY KEY,
    initiative_id TEXT NOT NULL,
    role_agent_code TEXT NOT NULL,
    channel TEXT NOT NULL DEFAULT 'feishu',  -- feishu / desktop / both
    feishu_message_id TEXT,
    status TEXT NOT NULL DEFAULT 'pending',  -- pending / approved / rejected / timeout / escalated
    decided_by TEXT,
    decided_at TEXT,
    decision_comment TEXT,
    escalation_level INTEGER NOT NULL DEFAULT 0,
    created_at TEXT NOT NULL,
    updated_at TEXT NOT NULL,
    FOREIGN KEY (initiative_id) REFERENCES evoflow_proactive_initiatives(id)
);
```

### 4.4 evoflow_proactive_memory
```sql
CREATE TABLE evoflow_proactive_memory (
    role_agent_code TEXT PRIMARY KEY,
    memory_json TEXT NOT NULL DEFAULT '{}',
    updated_at TEXT NOT NULL
);
```

---

## 5. 思考引擎 Prompt 设计

### 系统提示词
```
你是 {role_name},{department} 的负责人。

你的职责:{responsibilities}
你管辖的范围:{domain_scope}
你需要持续优化的指标:{kpis}

你的工作方式:
1. 每次被唤醒时,审视你管辖范围内的当前状态
2. 基于你的专业判断,识别需要改进或推进的事项
3. 对每个事项,评估风险等级并决定是否需要人类审批
4. 生成结构化的倡议(Initiative)

你的记忆(上次思考的结论):
{memory_summary}

当前环境信号:
{environment_context}

请以 JSON 格式输出你的思考结果:
{
  "observations": ["观察到的现状..."],
  "initiatives": [
    {
      "title": "倡议标题",
      "description": "详细描述",
      "rationale": "分析依据",
      "action_type": "code_change|analysis|report|task_delegation|alert",
      "risk_level": "low|medium|high|critical",
      "action_plan": { ... },
      "expected_outcome": "预期效果",
      "needs_approval": true/false
    }
  ],
  "reflection": "本轮思考的总结和策略调整"
}
```

---

## 6. API 设计

| Method | Path | 说明 |
|--------|------|------|
| GET | `/api/proactive/roles` | 列出所有智能体员工角色 |
| POST | `/api/proactive/roles` | 创建智能体员工角色 |
| PUT | `/api/proactive/roles/{agent_code}` | 更新角色配置 |
| DELETE | `/api/proactive/roles/{agent_code}` | 归档角色 |
| POST | `/api/proactive/roles/{agent_code}/heartbeat` | 手动触发心跳 |
| GET | `/api/proactive/initiatives` | 列出倡议(支持过滤角色/状态) |
| GET | `/api/proactive/initiatives/{id}` | 倡议详情 |
| POST | `/api/proactive/approval/{initiative_id}` | 审批操作 |
| POST | `/api/proactive/approval/callback` | 飞书审批回调 |
| GET | `/api/proactive/memory/{agent_code}` | 查看角色记忆 |
| PUT | `/api/proactive/memory/{agent_code}` | 更新角色记忆 |
| GET | `/api/proactive/status` | 引擎运行状态 |

---

## 7. 与现有系统的集成

### 7.1 复用 automation_runner 模式
- ProactiveRunner 复用 automation_runner 的后台循环模式
- 心跳调度复用 rrule 解析
- LangGraph 运行复用信号量并发控制

### 7.2 复用 supervisor_tool
- 当倡议 action_type=task_delegation 时,通过 supervisor 分配给子 Agent
- 多角色协同时,supervisor 负责跨角色任务依赖

### 7.3 复用 goal_service
- 当倡议需要长期推进时,创建一个 Goal 任务持续跟踪
- 智能体员工角色可以成为 Goal 的「执行者」

### 7.4 复用 feishu channel
- 审批卡片使用飞书交互式消息卡片(带按钮)
- 审批回调通过飞书事件回调处理

### 7.5 复用 evoflow_agents
- 智能体员工角色关联 evoflow_agents 表中的 agent_code
- 复用 soul_md 作为角色人设
- 复用 config_json 存储扩展配置

---

## 8. 自主权级与风险矩阵

| 自主权级 | low 风险 | medium 风险 | high 风险 | critical 风险 |
|---------|---------|------------|----------|--------------|
| full_auto | ✅ 自主执行 | ✅ 自主执行 | ⚠️ 通知后执行 | ❌ 必须审批 |
| approval_for_risky | ✅ 自主执行 | ✅ 通知后执行 | ❌ 必须审批 | ❌ 必须审批 |
| approval_for_all | ✅ 通知后执行 | ❌ 必须审批 | ❌ 必须审批 | ❌ 必须审批 |

---

## 9. 实现计划

### Phase 1: 核心基础设施(本次实现)
- [x] 数据模型与 Schema 迁移
- [x] ProactiveRole 仓储层
- [x] Initiative 仓储层
- [x] ProactiveMemory 仓储层
- [x] ProactiveEngine 思考引擎
- [x] DecisionGate 决策门
- [x] ProactiveRunner 心跳调度器
- [x] API Router
- [x] Gateway 集成钩子

### Phase 2: 深度集成(后续)
- [ ] 飞书交互卡片审批
- [ ] Tauri 桌面通知授权
- [ ] 与 supervisor 多角色协同
- [ ] 与 goal_service 长期目标对接
- [ ] 前端管理界面

### Phase 3: 增强(远期)
- [ ] 角色间通信协议
- [ ] 多角色协同决策
- [ ] 策略学习与优化
- [ ] KPI 自动追踪