Files
SuperBizAgent-java/.docs/2026-06-24-prompt-to-markdown.md
T
zhuyongxin c4d23c3bd8 feat(ai-ops): Prompt 配置化 & 集成 LookupKnowledgeTool
## 主要改动

1. Prompt 配置化
   - 从硬编码改为独立 Markdown 文件管理
   - 新增 AiOpsPromptProperties 配置类,使用 @PostConstruct 加载
   - 创建 prompts/{planner,executor,supervisor}-prompt.md

2. 集成 LookupKnowledgeTool
   - 在 AiOpsService 中注入 LookupKnowledgeTool
   - 添加到工具数组,只给 Executor Agent 使用
   - 符合 3-Agent 协同分析模式

3. Executor Prompt 增强
   - 添加工具选择指南(精确关键词 vs 模糊概念)
   - 明确降级策略(lookup_knowledge 未找到时降级到 queryInternalDocs)

## 优势

- 易于维护:Prompt 修改不需重新编译
- 格式友好:Markdown 原生支持代码块和表格
- 性能优化:精确关键词查询 < 10ms(L0 匹配)

## 文件变更

- 新增:AiOpsPromptProperties.java
- 新增:prompts/planner-prompt.md
- 新增:prompts/executor-prompt.md
- 新增:prompts/supervisor-prompt.md
- 修改:AiOpsService.java(-136 行硬编码,+5 行配置引用)
2026-06-24 18:29:24 +08:00

2.7 KiB
Raw Blame History

Prompt 配置化改进总结

日期: 2026-06-24
改进: 从 YAML 配置改为 Markdown 文件


改进原因

YAML 格式存在以下问题:

  1. 多行字符串缩进敏感:容易出现格式错误
  2. 转义字符复杂:代码块、表格需要转义处理
  3. 可读性差:长文本在 YAML 中难以阅读和维护

Markdown 格式优势:

  • ✅ 原生支持代码块、表格、列表
  • ✅ 无需转义,所见即所得
  • ✅ 版本控制 diff 更清晰
  • ✅ 编辑器语法高亮支持好

最终方案

文件结构

src/main/resources/prompts/
├── planner-prompt.md       # Planner Agent 系统提示词
├── executor-prompt.md      # Executor Agent 系统提示词
└── supervisor-prompt.md    # Supervisor Agent 系统提示词

加载方式

@Configuration
public class AiOpsPromptProperties {
    
    @PostConstruct
    public void loadPrompts() {
        planner = loadPromptFromFile("prompts/planner-prompt.md");
        executor = loadPromptFromFile("prompts/executor-prompt.md");
        supervisor = loadPromptFromFile("prompts/supervisor-prompt.md");
    }
    
    private String loadPromptFromFile(String path) throws IOException {
        ClassPathResource resource = new ClassPathResource(path);
        return new String(resource.getInputStream().readAllBytes(), StandardCharsets.UTF_8);
    }
}

使用方式

@Autowired
private AiOpsPromptProperties promptProperties;

// 直接使用
.systemPrompt(promptProperties.getPlanner())

编译验证

mvn clean compile -DskipTests

✅ 结果: BUILD SUCCESS


完整改动清单

文件 改动
AiOpsService.java 注入 LookupKnowledgeTool + AiOpsPromptProperties
AiOpsPromptProperties.java 从 Markdown 文件加载 Prompt(使用 @PostConstruct)
prompts/planner-prompt.md 新增:Planner 系统提示词
prompts/executor-prompt.md 新增:Executor 系统提示词(含工具选择指南)
prompts/supervisor-prompt.md 新增:Supervisor 系统提示词
YamlPropertySourceFactory.java 已删除(不再需要)
prompts/ai-ops-prompts.yml 已删除(改用 Markdown)

Executor Prompt 关键改进

新增工具选择指南:

- 根据查询内容选择合适的工具:
  * 精确关键词(错误码、配置项名称)→ 优先使用 lookup_knowledge,未找到时降级到 queryInternalDocs
  * 模糊概念、故障流程 → 直接使用 queryInternalDocs
  * 告警数据 → queryPrometheusAlerts
  * 日志数据 → queryLogs

降级策略:

  • lookup_knowledge 未找到 → 自动降级到 queryInternalDocs
  • 确保查询不会因为知识库缺少内容而失败