文档阅读区

v0.5 升级计划

版本: v0.4 → v0.5
日期: 2025-12-17
目标: LLM 作为"解释器/写作者"(只读 AI,低风险)


一、升级概述

1.1 升级定位

v0.5 的核心:LLM 作为生产力工具,生成草稿,需要人工确认。

关键原则

  • AI 一律"受控":模型/agent/rag 都是 Core 的 Action/Tool Provider
  • 先只读,后闭环执行,且全审计
  • 不允许模型直接改 Task/Rule/Config
  • 输出只写 ai_insights/docs_drafts,并发 ai.* 事件

1.2 升级范围

Core 平台升级

  • Prompt Registry(+ PromptPack)
  • LLM Gateway(统一接入)
  • AI Actions(只读)
  • 审计增强

App 升级

  • project-mngt:工作中枢 + 文档中枢
  • os-assistant:运行哨兵 + 智能建议(只读)

1.3 升级策略

并行开发

  • Core v0.5 升级和 App 升级并行进行
  • Core 先完成 Prompt Registry 和 LLM Gateway(M1-M2)
  • App 基于 Core M1-M2 开始开发

最小闭环验证

  • 先跑通两个最小闭环(Alert → AI Summary、Meeting → AI Minutes → Draft)
  • 验证 AI 基础设施的稳定性和可用性
  • 再推进完整功能

二、Core v0.5 升级内容

2.1 Prompt Registry(+ PromptPack)

2.1.1 功能设计

位置: backend/app/core/prompts/

功能

  • 支持按 App/用途管理 prompt:project.*ops.*
  • 版本化、回滚、启用状态
  • 每个 prompt 绑定 output_schema(结构化输出,JSON Schema)

数据模型

class PromptTemplate:
    id: str  # 如 "project-mngt.task_decomposition@1.0.0"
    app_id: str
    name: str
    version: str
    template: str  # 支持变量 {{variable}}
    variables: List[str]
    output_schema: Dict  # JSON Schema,用于校验输出
    status: enum [active, deprecated]
    created_at: datetime
    updated_at: datetime

API

  • GET /api/v1/prompts/templates - 查询 Prompt 模板
  • POST /api/v1/prompts/templates - 创建 Prompt 模板
  • PUT /api/v1/prompts/templates/{id} - 更新 Prompt 模板
  • POST /api/v1/prompts/render - 渲染 Prompt(变量替换)
  • POST /api/v1/prompts/validate - 验证输出是否符合 schema

PromptPack

  • 类似 RulePack,App 可以交付 PromptPack
  • 包含多个 Prompt 模板
  • 安装时自动注册到 Prompt Registry

2.1.2 实施任务

任务 1.1: 数据库迁移(1天)

  • 创建 prompt_templates
  • 创建 Alembic 迁移脚本
  • 测试迁移

任务 1.2: Prompt Registry 模块(3天)

  • 实现 PromptTemplate 模型
  • 实现 Prompt 模板 CRUD API
  • 实现 Prompt 渲染逻辑(变量替换)
  • 实现输出 Schema 校验
  • 单元测试

任务 1.3: PromptPack 支持(2天)

  • 实现 PromptPack 加载逻辑
  • 实现 PromptPack 安装逻辑
  • 测试 PromptPack 安装

任务 1.4: 文档和测试(1天)

  • API 文档
  • 集成测试
  • 使用示例

总计: 7天

2.2 LLM Gateway(统一接入)

2.2.1 功能设计

位置: backend/app/core/llm/

功能

  • 限流/缓存/重试
  • 结构化输出校验(JSON Schema)
  • 关键:输入只用引用(eventIds/alertIds/entityIds/timeRange/viewPreset),由 Core Query API 组装 context pack

API

POST /api/v1/llm/chat
{
  "prompt_template_id": "project-mngt.task_decomposition@1.0.0",
  "context_refs": {
    "eventIds": ["evt_123", "evt_456"],
    "entityIds": ["proj_789"],
    "timeRange": {"start": "...", "end": "..."},
    "viewPreset": "project-mngt.view_project_events"
  },
  "variables": {
    "project_name": "..."
  },
  "provider": "openai",  # 可选,使用默认
  "model": "gpt-4",  # 可选,使用默认
  "temperature": 0.7,
  "max_tokens": 1000
}

实现逻辑

  1. 根据 context_refs 调用 Query API 组装上下文
  2. 渲染 Prompt 模板(变量替换)
  3. 调用 LLM Provider(OpenAI/Dify/本地模型)
  4. 校验输出是否符合 output_schema
  5. 记录审计日志

LLM Provider 抽象

class LLMProvider:
    async def chat_completion(
        self,
        messages: List[Dict],
        model: str = None,
        temperature: float = 0.7,
        max_tokens: int = None,
    ) -> Dict[str, Any]
    
    async def stream_chat_completion(
        self,
        messages: List[Dict],
        model: str = None,
    ) -> AsyncIterator[Dict[str, Any]]

配置

llm:
  default_provider: openai
  providers:
    openai:
      api_key: ${OPENAI_API_KEY}
      base_url: https://api.openai.com/v1
      default_model: gpt-4
    dify:
      api_key: ${DIFY_API_KEY}
      base_url: https://api.dify.ai/v1
    local:
      base_url: http://localhost:8000/v1
      default_model: llama-2

2.2.2 实施任务

任务 2.1: LLM Provider 抽象(3天)

  • 定义 LLM Provider 接口
  • 实现 OpenAI Provider
  • 实现 Dify Provider
  • 实现本地模型 Provider(可选)
  • Provider 配置管理
  • 单元测试

任务 2.2: Context Pack 组装(2天)

  • 实现 Context Pack 组装逻辑
  • 集成 Query API
  • 支持 eventIds/alertIds/entityIds/timeRange/viewPreset
  • 单元测试

任务 2.3: LLM Gateway 核心(3天)

  • 实现 LLM Gateway API
  • 实现限流(按租户/按 App/按用户)
  • 实现缓存(相同输入缓存结果)
  • 实现重试机制
  • 实现结构化输出校验
  • 单元测试

任务 2.4: 集成测试(2天)

  • 端到端测试(Prompt → Context → LLM → 校验)
  • 性能测试
  • 错误处理测试

总计: 10天

2.3 AI Actions(只读)

2.3.1 功能设计

位置: backend/app/kernel/actions/executor.py

新增 Action 类型

1. invoke_llm_summary - 摘要生成

action:
  type: invoke_llm_summary
  prompt_template: ops.alert_analysis@1.0.0
  context_refs:
    alertIds: ["{{alert.id}}"]
    eventIds: ["{{alert.related_event_ids}}"]
  output_schema:
    type: object
    properties:
      summary: string
      possible_causes: array
      suggestions: array
  target_type: ai_insight  # 写入 ai_insight 实体

2. invoke_llm_report - 报告生成

action:
  type: invoke_llm_report
  prompt_template: project-mngt.weekly_report@1.0.0
  context_refs:
    entityIds: ["{{project.id}}"]
    timeRange: {"start": "week_start", "end": "week_end"}
  output_schema:
    type: object
    properties:
      report: string
      highlights: array
      risks: array
  target_type: document_draft  # 写入 document_draft 实体

3. invoke_llm_generate_doc - 文档生成(关键)

action:
  type: invoke_llm_generate_doc
  prompt_template: project-mngt.meeting_minutes@1.0.0
  context_refs:
    eventIds: ["{{meeting.event_ids}}"]
    entityIds: ["{{meeting.id}}"]
  output_schema:
    type: object
    properties:
      content: string
      action_items: array
  target_type: document_draft  # 写入草稿,不直接创建实体

关键约束

  • 禁止:模型直接改 Task/Rule/Config
  • 允许:输出只写 ai_insights/docs_drafts,并发 ai.* 事件
  • 必须:人工确认后才能落地为真实实体

2.3.2 实施任务

任务 3.1: AI Actions 实现(4天)

  • 在 Action Executor 中实现 invoke_llm_summary
  • 在 Action Executor 中实现 invoke_llm_report
  • 在 Action Executor 中实现 invoke_llm_generate_doc
  • 集成 LLM Gateway
  • 实现输出写入逻辑(ai_insight/document_draft)
  • 实现事件生成逻辑(ai.* 事件)
  • 单元测试

任务 3.2: 类型定义(1天)

  • 定义 ai_insight 类型
  • 定义 document_draft 类型
  • 定义 ai.* 事件类型
  • 测试类型安装

任务 3.3: 集成测试(2天)

  • 测试 AI Actions 在规则中的使用
  • 测试输出写入和事件生成
  • 测试约束检查(禁止直接改实体)

总计: 7天

2.4 审计增强

2.4.1 功能设计

位置: backend/app/kernel/audit/

tool_call 记录增强

  • prompt 版本
  • 模型版本
  • 引用对象(eventIds/alertIds/entityIds)
  • 输出 hash
  • tokens(输入/输出/总计)
  • 耗时
  • 校验是否通过(output_schema 校验)

数据模型扩展

class ToolCall:
    # 已有字段
    id: str
    app_id: str
    user_id: str
    action_type: str
    tool_name: str
    tool_params: Dict
    created_at: datetime
    
    # v0.5 新增字段
    prompt_template_id: str
    prompt_version: str
    model_provider: str
    model_name: str
    model_version: str
    context_refs: Dict  # eventIds/alertIds/entityIds
    input_tokens: int
    output_tokens: int
    total_tokens: int
    output_hash: str
    validation_passed: bool
    execution_time_ms: int

2.4.2 实施任务

任务 4.1: 数据库迁移(1天)

  • 扩展 tool_calls 表(添加新字段)
  • 创建 Alembic 迁移脚本
  • 测试迁移

任务 4.2: 审计记录增强(2天)

  • 更新 ToolCall 模型
  • 更新审计记录逻辑
  • 实现输出 hash 计算
  • 实现 tokens 统计
  • 单元测试

任务 4.3: 审计查询增强(1天)

  • 更新审计查询 API(支持新字段过滤)
  • 更新审计视图
  • 测试查询

总计: 4天


三、project-mngt v0.5 升级内容

3.1 核心对象与事件

3.1.1 新增对象(7个)

已有对象(保持不变):

  • project - 项目
  • task - 任务
  • project_template - 项目模板
  • feature_request - 需求

新增对象

  • todo - 待办事项
  • milestone - 里程碑
  • resource - 资源
  • document - 文档
  • meeting - 会议
  • document_draft - 文档草稿(AI 生成)
  • ai_insight - AI 洞察(AI 生成)

3.1.2 新增事件

项目相关事件

  • project.milestone.created
  • project.milestone.delayed
  • project.milestone.achieved

会议相关事件

  • project.meeting.scheduled
  • project.meeting.completed
  • project.meeting.notes_uploaded

文档相关事件

  • project.doc.created
  • project.doc.updated

工作推进事件

  • project.worklog.submitted(成员推进记录)

AI 相关事件

  • ai.document_draft.created(AI 生成草稿)
  • ai.insight.created(AI 生成洞察)

3.2 v0.5 的 AI 用法(只读草稿,不自动落地)

3.2.1 任务拆解草稿

Prompt 模板: project-mngt.task_decomposition@1.0.0

触发条件

  • 项目创建时自动触发
  • 用户手动触发("AI 生成任务"按钮)

规则定义

- id: project-mngt.ai_task_decomposition
  name: AI 任务分解
  description: 使用大模型根据项目描述生成任务列表
  status: enabled
  trigger:
    type: on_event
    eventTypes: [project_created]
  condition:
    typeId: project
    filters:
      - field: data.project_type
        op: exists
  action:
    type: invoke_llm_generate_doc
    prompt_template: project-mngt.task_decomposition@1.0.0
    context_refs:
      entityIds: ["{{entity_id}}"]
    variables:
      project_name: "{{data.name}}"
      project_description: "{{data.description}}"
      project_type: "{{data.project_type}}"
    target_type: document_draft

输出

  • 写入 document_draft 实体
  • 生成 ai.document_draft.created 事件
  • 用户查看草稿 → 可以编辑 → 点击"采纳" → 创建真实 Task/Milestone 实体

3.2.2 会议纪要草稿

Prompt 模板: project-mngt.meeting_minutes@1.0.0

触发条件

  • 会议完成时自动触发

规则定义

- id: project-mngt.ai_meeting_minutes
  name: AI 会议记录生成
  description: 使用大模型生成会议纪要
  status: enabled
  trigger:
    type: on_event
    eventTypes: [meeting_completed]
  condition:
    typeId: meeting
    filters:
      - field: data.minutes
        op: eq
        value: null  # 如果还没有会议纪要
  action:
    type: invoke_llm_generate_doc
    prompt_template: project-mngt.meeting_minutes@1.0.0
    context_refs:
      entityIds: ["{{entity_id}}"]
      eventIds: ["{{meeting.event_ids}}"]
    variables:
      meeting_title: "{{data.title}}"
      agenda: "{{data.agenda}}"
      participants: "{{data.participants}}"
    target_type: document_draft

输出

  • 写入 document_draft 实体
  • 生成 ai.document_draft.created 事件
  • 用户查看草稿 → 可以编辑 → 点击"采纳" → 更新 Meeting 实体的 minutes 字段

3.2.3 周报/进展摘要

Prompt 模板: project-mngt.weekly_report@1.0.0

触发条件

  • 每周一自动触发(定时规则)

规则定义

- id: project-mngt.ai_weekly_report
  name: AI 周报生成
  description: 从本周 project events 自动生成周报
  status: enabled
  trigger:
    type: on_schedule
    cron: "0 9 * * 1"  # 每周一 9:00
  condition:
    typeId: project
    filters:
      - field: data.status
        op: eq
        value: active
  action:
    type: invoke_llm_report
    prompt_template: project-mngt.weekly_report@1.0.0
    context_refs:
      entityIds: ["{{entity_id}}"]
      timeRange: {"start": "week_start", "end": "week_end"}
    target_type: document_draft

输出

  • 写入 document_draft 实体
  • 生成 ai.document_draft.created 事件
  • 用户查看草稿 → 可以编辑 → 点击"采纳" → 创建 Document 实体

3.2.4 风险提示

Prompt 模板: project-mngt.risk_analysis@1.0.0

触发条件

  • 任务延期/阻塞/工作量偏差时触发

规则定义

- id: project-mngt.ai_risk_analysis
  name: AI 风险分析
  description: 从延期/阻塞/工作量偏差做"解释+建议"
  status: enabled
  trigger:
    type: on_event
    eventTypes: [task_status_changed, task_overdue]
  condition:
    typeId: task
    filters:
      - field: data.status
        op: in
        value: [blocked]
      # 或
      - field: data.due_date
        op: lt
        value: today
  action:
    type: invoke_llm_summary
    prompt_template: project-mngt.risk_analysis@1.0.0
    context_refs:
      entityIds: ["{{data.project_id}}"]
      eventIds: ["{{related_event_ids}}"]
    target_type: ai_insight

输出

  • 写入 ai_insight 实体
  • 生成 ai.insight.created 事件
  • 在 Dashboard 展示

3.3 草稿→落地工作流

3.3.1 UI 流程

  1. AI 生成草稿 → 显示"AI Draft(待确认)"
  2. 用户查看草稿 → 可以编辑
  3. 用户点击"采纳" → 产生真实 Task/Milestone/Doc 事件
  4. 采纳动作是普通业务动作(可审计),不是模型直接写库

3.3.2 实现

前端

  • 草稿列表页面
  • 草稿详情页面(可编辑)
  • "采纳"按钮

后端

  • POST /api/v1/entities/{draft_id}/adopt API
  • 采纳逻辑:
    1. 读取草稿内容
    2. 解析内容(JSON/Markdown)
    3. 创建真实实体(Task/Milestone/Document)
    4. 生成实体创建事件
    5. 标记草稿为"已采纳"

规则

  • project-mngt.draft_adopted 事件触发真实实体创建

3.4 与 os-assistant 的关系

事件投递

  • ops.alert.created → action:create_task_draft(AI 可帮写任务描述)
  • 人工确认后变成项目任务(谁处理、SLA、验收项)

实现

  • 规则:os-assistant.alert_to_project_task
  • Action:create_task_draft(调用 invoke_llm_generate_doc
  • 生成任务草稿,用户确认后创建 Task 实体

四、os-assistant v0.5 升级内容

4.1 Probe(探针)继续做强

4.1.1 指标/日志摘要事件化

新增事件

  • os.metric_sampled - 指标采样
  • os.log_anomaly_detected - 日志异常检测
  • os.agent_heartbeat - Agent 心跳

事件 Schema

  • os-assistant.gpu.status@1.0.0 - GPU 状态
  • os-assistant.metric.snapshot@1.0.0 - 指标快照
  • os-assistant.log.error@1.0.0 - 错误日志

4.1.2 Dashboard 展示

新增视图

  • os-assistant.view_server_overview - 服务器概览
  • os-assistant.view_realtime_monitoring - 实时监控
  • os-assistant.view_alert_center - 告警中心
  • os-assistant.view_aggregate_stats - 聚合统计

4.2 专家规则建议(RuleEngine)

4.2.1 规则库识别异常

已有

  • ✅ RuleEngine
  • ✅ RulePack(异常识别规则)

需要扩展

  • ❌ 新增异常识别规则(CPU、内存、磁盘、GPU、进程)
  • ❌ 规则命中时创建 Alert 实体

4.2.2 LLM 对告警做解释/排查建议

Prompt 模板: ops.alert_analysis@1.0.0

触发条件

  • 告警创建时自动触发

规则定义

- id: os-assistant.ai_alert_analysis
  name: AI 告警分析
  description: LLM 对告警做解释/排查建议
  status: enabled
  trigger:
    type: on_event
    eventTypes: [alert_triggered]
  condition:
    typeId: alert
    filters:
      - field: data.severity
        op: in
        value: [error, critical]
  action:
    type: invoke_llm_summary
    prompt_template: ops.alert_analysis@1.0.0
    context_refs:
      alertIds: ["{{entity_id}}"]
      eventIds: ["{{alert.related_event_ids}}"]
    target_type: ai_insight

输出

  • 写入 ai_insight 实体
  • 生成 ai.insight.created 事件
  • Alert Detail 展示 AI 洞察

4.3 禁止执行(v0.5 明确禁止)

v0.5 明确禁止

  • ❌ 自动重启
  • ❌ kill 进程
  • ❌ 改配置
  • ❌ 任何修改系统的操作

实现

  • Action Executor 中检查 Action 类型
  • 如果是 execute_commandmodify_config 等,v0.5 中直接拒绝
  • 返回错误:Action not allowed in v0.5. Use v0.6 for controlled execution.

五、实施计划

5.1 总体时间线

方案 A: 并行开发(推荐)

Week 1-4:  Core v0.5 升级(Prompt Registry + LLM Gateway)
Week 1-6:  project-mngt 开发(Phase 1-4,并行)
Week 5-8:  project-mngt Phase 5(AI 集成,依赖 Core v0.5 M1-M2)
Week 1-10: os-assistant 开发(并行,但 AI 功能需等待 Core v0.5)

5.2 Core v0.5 升级里程碑

M1: Prompt Registry(1周)

  • 任务 1.1-1.4
  • 总计:7天

M2: LLM Gateway(1.5周)

  • 任务 2.1-2.4
  • 总计:10天

M3: AI Actions(1周)

  • 任务 3.1-3.3
  • 总计:7天

M4: 审计增强(0.5周)

  • 任务 4.1-4.3
  • 总计:4天

总计: 4周(28天)

5.3 App 升级里程碑

project-mngt

  • M1: 基础类型和事件(2周)
  • M2: 视图和规则(2周)
  • M3: 事件监控和统计(1周)
  • M4: 测试和优化(1周)
  • M5: AI 集成(2周,依赖 Core v0.5 M1-M2)
  • 总计: 8周

os-assistant

  • M1: 探针 Agent 和事件采集(3周)
  • M2: 规则库和告警(2周)
  • M3: Dashboard 和视图(2周)
  • M4: AI 集成(2周,依赖 Core v0.5 M1-M2)
  • M5: 测试和优化(2周)
  • 总计: 11周(不含 Actor Agent,v0.6 实现)

5.4 最小闭环验证

闭环 A:Alert → AI Summary → View(os-assistant)

  • 时间: Core M2 完成后(Week 3)
  • 验收: 告警产生时自动生成 AI 摘要,前端正确展示

闭环 B:Meeting → AI Minutes → Draft → 人工采纳(project-mngt)

  • 时间: Core M2 + project-mngt M5 完成后(Week 6)
  • 验收: 会议完成后自动生成会议纪要草稿,用户可查看/编辑/采纳

六、验收标准

6.1 Core v0.5 验收标准

  • ✅ Prompt Registry 正常工作(CRUD、版本化、输出 Schema 校验)
  • ✅ LLM Gateway 正常工作(限流、缓存、重试、结构化输出校验)
  • ✅ AI Actions 正常工作(invoke_llm_summary、invoke_llm_report、invoke_llm_generate_doc)
  • ✅ 审计增强正常工作(tool_call 记录包含所有新字段)
  • ✅ 两个最小闭环验证通过

6.2 project-mngt v0.5 验收标准

  • ✅ 7 个新对象成功安装
  • ✅ 6 个新视图成功安装
  • ✅ 8 个新规则成功安装(5个基础 + 3个 AI)
  • ✅ AI 功能正常工作(任务拆解、会议纪要、周报、风险提示)
  • ✅ 草稿→落地工作流正常工作
  • ✅ 闭环 B 验证通过

6.3 os-assistant v0.5 验收标准

  • ✅ 5 个新对象成功安装
  • ✅ 4 个新视图成功安装
  • ✅ 异常识别规则正常工作
  • ✅ AI 告警分析正常工作
  • ✅ Probe Agent 正常工作
  • ✅ 闭环 A 验证通过

七、风险与应对

7.1 技术风险

风险: LLM API 调用不稳定

  • 应对: 实现重试机制、降级策略、错误处理

风险: 结构化输出校验失败

  • 应对: 实现重试机制、提供 fallback 方案

7.2 安全风险

风险: Prompt 注入攻击

  • 应对: Prompt 模板审查、输入验证、输出过滤

风险: 敏感信息泄露

  • 应对: 上下文脱敏、输出脱敏、审计日志脱敏

7.3 性能风险

风险: LLM 调用耗时过长

  • 应对: 异步调用、超时控制、缓存机制

风险: 高频调用导致限流

  • 应对: 限流策略、队列机制、优先级管理

文档版本: v1.0
最后更新: 2025-12-17