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

101 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 系统提示词
```
### 加载方式
```java
@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);
}
}
```
### 使用方式
```java
@Autowired
private AiOpsPromptProperties promptProperties;
// 直接使用
.systemPrompt(promptProperties.getPlanner())
```
---
## 编译验证
```bash
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 关键改进
新增工具选择指南:
```markdown
- 根据查询内容选择合适的工具:
* 精确关键词(错误码、配置项名称)→ 优先使用 lookup_knowledge,未找到时降级到 queryInternalDocs
* 模糊概念、故障流程 → 直接使用 queryInternalDocs
* 告警数据 → queryPrometheusAlerts
* 日志数据 → queryLogs
```
降级策略:
- `lookup_knowledge` 未找到 → 自动降级到 `queryInternalDocs`
- 确保查询不会因为知识库缺少内容而失败