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
}
实现逻辑:
- 根据
context_refs调用 Query API 组装上下文 - 渲染 Prompt 模板(变量替换)
- 调用 LLM Provider(OpenAI/Dify/本地模型)
- 校验输出是否符合
output_schema - 记录审计日志
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 流程
- AI 生成草稿 → 显示"AI Draft(待确认)"
- 用户查看草稿 → 可以编辑
- 用户点击"采纳" → 产生真实 Task/Milestone/Doc 事件
- 采纳动作是普通业务动作(可审计),不是模型直接写库
3.3.2 实现
前端:
- 草稿列表页面
- 草稿详情页面(可编辑)
- "采纳"按钮
后端:
POST /api/v1/entities/{draft_id}/adoptAPI- 采纳逻辑:
- 读取草稿内容
- 解析内容(JSON/Markdown)
- 创建真实实体(Task/Milestone/Document)
- 生成实体创建事件
- 标记草稿为"已采纳"
规则:
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_command、modify_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