新增: - docs/adr/ADR-019-system-prompt-management.md - System Prompt 規範 - apps/api/src/core/prompts.py - 集中管理 System Prompts - .github/workflows/nightly-llm.yaml - 每夜 LLM 迴歸測試 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1.8 KiB
1.8 KiB
ADR-019: System Prompt 集中管理
| 屬性 | 值 |
|---|---|
| 狀態 | Accepted |
| 建立日期 | 2026-03-26 |
| 決策者 | 首席架構師 |
| 關聯 | Phase 17 P2 改進 |
背景
System Prompt 分散在多個檔案中:
src/services/openclaw.py- 生產環境 Prompt (約 125 行)tests/test_prompt_validation.py- 測試用 Prompt (約 15 行)
問題:
- 違反 DRY 原則 - 相同內容重複定義
- 維護困難 - 修改需同步多處
- 版本不一致風險 - 容易遺漏同步
決策
建立 src/core/prompts.py 集中管理所有 System Prompt。
結構
# src/core/prompts.py
# 生產環境完整 Prompt
OPENCLAW_SYSTEM_PROMPT = """..."""
# 測試用精簡 Prompt
OPENCLAW_TEST_PROMPT = """..."""
# 版本資訊
PROMPT_VERSION = "7.1"
PROMPT_UPDATED = "2026-03-26"
使用方式
# 生產環境
from src.core.prompts import OPENCLAW_SYSTEM_PROMPT
# 測試
from src.core.prompts import OPENCLAW_TEST_PROMPT
影響檔案
| 檔案 | 變更 |
|---|---|
src/core/prompts.py |
新增 |
src/services/openclaw.py |
改為 import |
tests/test_prompt_validation.py |
改為 import |
優點
- 單一來源 - 所有 Prompt 集中管理
- 版本追蹤 - 明確的版本號和更新日期
- 易於測試 - 可獨立測試 Prompt 內容
- 可擴展 - 未來可加入更多 Prompt 變體
替代方案
| 方案 | 優點 | 缺點 | 決定 |
|---|---|---|---|
| 維持現狀 | 無需改動 | DRY 違規 | ❌ |
| 外部檔案 (YAML/JSON) | 非開發者可編輯 | 增加複雜度 | ❌ |
| 集中式 Python 模組 | 類型安全,IDE 支援 | - | ✅ |
實作完成
- 建立
src/core/prompts.py - 更新
openclaw.pyimport - 更新
test_prompt_validation.pyimport - 驗證 import 正確