From 63b01db83d9aad8a15276b4236a9a22e4aeef065 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 05 五月 2026 12:30:59 +0800
Subject: [PATCH] # Agent数据分析V3.0.1.7
---
src/main/java/com/zy/ai/utils/AiPromptUtils.java | 158 +++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 137 insertions(+), 21 deletions(-)
diff --git a/src/main/java/com/zy/ai/utils/AiPromptUtils.java b/src/main/java/com/zy/ai/utils/AiPromptUtils.java
index c8be348..0a499f3 100644
--- a/src/main/java/com/zy/ai/utils/AiPromptUtils.java
+++ b/src/main/java/com/zy/ai/utils/AiPromptUtils.java
@@ -1,5 +1,6 @@
package com.zy.ai.utils;
+import com.zy.ai.domain.autotune.AutoTuneControlModeSnapshot;
import com.zy.ai.enums.AiPromptBlockType;
import com.zy.ai.enums.AiPromptScene;
import org.springframework.stereotype.Component;
@@ -8,6 +9,39 @@
@Component
public class AiPromptUtils {
+
+ private static final String AUTO_TUNE_TOOL_GET_SNAPSHOT = "wcs_local_dispatch_get_auto_tune_snapshot";
+ private static final String AUTO_TUNE_TOOL_GET_RECENT_JOBS = "wcs_local_dispatch_get_recent_auto_tune_jobs";
+ private static final String AUTO_TUNE_TOOL_APPLY_CHANGES = "wcs_local_dispatch_apply_auto_tune_changes";
+ private static final String AUTO_TUNE_TOOL_REVERT_LAST_JOB = "wcs_local_dispatch_revert_last_auto_tune_job";
+
+ private static final String AUTO_TUNE_RULE_SNAPSHOT_INSTRUCTIONS =
+ "Step 4 璇诲彇璋冨弬瑙勫垯\n" +
+ "- 蹇呴』璇诲彇 snapshot.ruleSnapshot 涓殑 minValue銆乵axValue銆乵axStep銆乧ooldownMinutes銆佽鍒� note锛屼互鍙婅鍒欐槑纭彁渚涚殑 dynamicMaxValue 鍜� dynamicMaxSource銆俓n" +
+ "- 鎵�鏈夋彁浜ょ粰 " + AUTO_TUNE_TOOL_APPLY_CHANGES + " 鐨� change 閮藉繀椤诲尮閰嶅搴� targetType/targetKey 鐨勮鍒欍�俓n" +
+ "- 姣忎釜鐩爣鍙傛暟鐨勬柊鍊煎繀椤绘弧瓒冲搴� minValue銆乵axValue銆乵axStep銆乧ooldownMinutes 鍜岃鍒� note锛涘彧鏈夎鍒欐湰韬槑纭彁渚� dynamicMaxValue/dynamicMaxSource 鏃讹紝鎵嶆寜璇ュ姩鎬佷笂闄愭牎楠岋紱涓嶅緱鎶� outBufferCapacity 鎺ㄥ涓� outTaskLimit 鐨勫姩鎬佷笂闄愶紱鎵句笉鍒拌鍒欐椂绂佹鎻愪氦銆�";
+
+ public static String buildAutoTuneRuntimeGuard(String triggerType, AutoTuneControlModeSnapshot controlMode) {
+ return "璇锋墽琛屼竴娆″悗鍙� WCS 鑷姩璋冨弬銆倀riggerType=" + safeRuntimeValue(triggerType) + "銆俓n\n" +
+ "==================== 杩愯鏃跺己绾︽潫 ====================\n" +
+ "- 褰撳墠鎵ц妯″紡: modeCode=" + modeValue(controlMode == null ? null : controlMode.getModeCode())
+ + "锛宮odeLabel=" + modeValue(controlMode == null ? null : controlMode.getModeLabel())
+ + "锛宔nabled=" + modeValue(controlMode == null ? null : controlMode.getEnabled())
+ + "锛宎nalysisOnly=" + modeValue(controlMode == null ? null : controlMode.getAnalysisOnly())
+ + "锛宎llowApply=" + modeValue(controlMode == null ? null : controlMode.getAllowApply()) + "銆俓n" +
+ "- 蹇呴』鍏堣皟鐢� " + AUTO_TUNE_TOOL_GET_SNAPSHOT + " 鑾峰彇鍚庣蹇収锛屽苟璇诲彇 snapshot.controlModeSnapshot 鐨� enabled銆乤nalysisOnly銆乤llowApply銆乵odeCode銆乵odeLabel銆俓n" +
+ "- 褰� snapshot.controlModeSnapshot.analysisOnly=true 鎴� allowApply=false 鏃讹紝鍙厑璁稿垎鏋愩�佽皟鐢� " + AUTO_TUNE_TOOL_GET_RECENT_JOBS
+ + " 鍜岃皟鐢� " + AUTO_TUNE_TOOL_APPLY_CHANGES + " dryRun=true 璇曠畻锛涚姝� dryRun=false 姝e紡搴旂敤锛涚姝㈣皟鐢� "
+ + AUTO_TUNE_TOOL_REVERT_LAST_JOB + "銆俓n" +
+ "- 濡傞渶鎻愪氦 changes锛屽繀椤诲厛璋冪敤 " + AUTO_TUNE_TOOL_APPLY_CHANGES
+ + " dryRun=true锛沝ry-run 杩斿洖 success=false銆乺ejectCount>0銆乧hanges 涓虹┖鎴� changes[].resultStatus 鍏ㄩ儴涓� no_change 鏃讹紝涓嶅緱璋冪敤 dryRun=false銆俓n" +
+ "- 鍙湁 analysisOnly=false 涓� allowApply=true銆乨ry-run 閫氳繃銆佸瓨鍦ㄦ湁鏁堝彉鏇翠笖杩斿洖 dryRunToken 鏃讹紝鎵嶅厑璁搁�氳繃 "
+ + AUTO_TUNE_TOOL_APPLY_CHANGES + " dryRun=false 姝e紡搴旂敤锛涙寮忓簲鐢ㄥ繀椤绘惡甯﹁ dryRunToken銆俓n" +
+ "- 娌℃湁鏀跺埌 " + AUTO_TUNE_TOOL_APPLY_CHANGES + " 鎴� " + AUTO_TUNE_TOOL_REVERT_LAST_JOB
+ + " 鐨勫伐鍏疯繑鍥炵粨鏋滄椂锛屼笉寰楀0绉板凡璇曠畻銆佸凡搴旂敤鎴栧凡鍥炴粴锛涗笉瑕佽緭鍑鸿嚜鐢辨牸寮� JSON 渚涘灞傝В鏋愩�俓n" +
+ "- 蹇呴』妫�鏌� taskSnapshot.stationLimitBlockedTasks 鍜� taskSnapshot.outboundTaskSamples 涓殑 systemMsg銆亀rkSts銆乥atchSeq锛屽垽鏂槸鍚﹀瓨鍦ㄨ涓婇檺鎸′綇鐨勬棭搴忓嚭搴撲换鍔°�俓n\n" +
+ AUTO_TUNE_RULE_SNAPSHOT_INSTRUCTIONS;
+ }
public String getDefaultPrompt(String sceneCode) {
AiPromptScene scene = AiPromptScene.ofCode(sceneCode);
@@ -125,46 +159,117 @@
blocks.put(AiPromptBlockType.TOOL_POLICY,
"==================== 鍙敤 MCP 宸ュ叿 ====================\n\n" +
"浣犲彧鑳戒娇鐢ㄤ互涓� MCP 宸ュ叿杩涜鑷姩璋冨弬宸ヤ綔锛歕n" +
- "- dispatch_get_auto_tune_snapshot锛氳幏鍙栧綋鍓嶈皟搴︺�佽澶囥�佺珯鐐广�佸閲忎笌鍙啓鍙傛暟蹇収\n" +
- "- dispatch_get_recent_auto_tune_jobs锛氳幏鍙栬繎鏈熻嚜鍔ㄨ皟鍙備换鍔″拰鍙樻洿缁撴灉\n" +
- "- dispatch_apply_auto_tune_changes锛氭彁浜よ皟鍙傚彉鏇达紝蹇呴』鍏� dry-run 鍐嶅疄闄呭簲鐢╘n" +
- "- dispatch_revert_last_auto_tune_job锛氫粎鍦ㄦ槑纭渶瑕佸洖婊氭渶杩戜竴娆¤皟鍙傛椂浣跨敤\n\n" +
+ "- wcs_local_dispatch_get_auto_tune_snapshot锛氳幏鍙栧綋鍓嶈皟搴︺�佽澶囥�佺珯鐐广�佸閲忎笌鍙啓鍙傛暟蹇収\n" +
+ "- wcs_local_dispatch_get_recent_auto_tune_jobs锛氳幏鍙栬繎鏈熻嚜鍔ㄨ皟鍙備换鍔″拰鍙樻洿缁撴灉\n" +
+ "- wcs_local_dispatch_apply_auto_tune_changes锛氭彁浜よ皟鍙傚彉鏇达紝蹇呴』鍏� dry-run 鍐嶅疄闄呭簲鐢╘n" +
+ "- wcs_local_dispatch_revert_last_auto_tune_job锛氫粎鍦ㄨ繍琛屾ā寮忓厑璁镐笖鏄庣‘闇�瑕佸洖婊氭渶杩戜竴娆¤皟鍙傛椂浣跨敤\n\n" +
"绂佹璋冪敤涓婅堪鍒楄〃涔嬪鐨勫伐鍏峰畬鎴愯皟鍙傘�傜姝㈣緭鍑鸿嚜鐢辨牸寮� JSON 璁╁灞傝В鏋愬悗璋冨弬锛涙墍鏈夊弬鏁拌鍙栥�佽瘯绠椼�佸簲鐢ㄥ拰鍥炴粴閮藉繀椤婚�氳繃 MCP 宸ュ叿瀹屾垚銆俓n\n" +
- "瀹為檯搴旂敤鍓嶅繀椤诲厛璋冪敤 dispatch_apply_auto_tune_changes 鎵ц dry-run銆傚彧鏈� dry-run 杩斿洖鍏佽搴旂敤涓旀病鏈夐珮椋庨櫓鎷掔粷鍘熷洜鏃讹紝鎵嶅彲浠ュ啀娆¤皟鐢� dispatch_apply_auto_tune_changes 鎵ц瀹為檯搴旂敤銆�");
+ "瀹為檯搴旂敤鍓嶅繀椤诲厛璋冪敤 wcs_local_dispatch_apply_auto_tune_changes 鎵ц dry-run銆傚彧鏈� snapshot.controlModeSnapshot 鏄剧ず analysisOnly=false 涓� allowApply=true锛宒ry-run 杩斿洖鍏佽搴旂敤涓斿瓨鍦ㄦ湁鏁堝彉鏇存椂锛屾墠鍙互鍐嶆璋冪敤 wcs_local_dispatch_apply_auto_tune_changes 鎵ц瀹為檯搴旂敤銆�");
blocks.put(AiPromptBlockType.OUTPUT_CONTRACT,
"==================== 杈撳嚭瑕佹眰 ====================\n\n" +
"杈撳嚭蹇呴』浣跨敤绠�浣撲腑鏂囷紝骞朵繚鎸佸璁″弸濂斤細\n" +
"1. 蹇収鎽樿锛氳鏄庢湰杞緷鎹殑鍏抽敭浜嬪疄\n" +
"2. 璋冩暣璁″垝锛氬垪鍑虹洰鏍囧弬鏁般�佸師鍊笺�佸缓璁�煎拰鍘熷洜\n" +
"3. dry-run 缁撴灉锛氳鏄庡厑璁搞�佹嫆缁濇垨闇�瑕佷汉宸ュ鐞嗙殑鍘熷洜\n" +
- "4. 瀹為檯搴旂敤缁撴灉锛氬彧姹囨�� MCP 宸ュ叿杩斿洖鐨勫簲鐢ㄧ姸鎬乗n" +
+ "4. 瀹為檯搴旂敤缁撴灉锛氬彧姹囨�� MCP 宸ュ叿杩斿洖鐨勫簲鐢ㄧ姸鎬侊紱浠呭垎鏋愭ā寮忓繀椤昏鏄庘�滀粎鍒嗘瀽/鏈寮忓簲鐢ㄥ弬鏁扳�漒n" +
"5. 椋庨櫓涓庤瀵熺偣锛氳鏄庝笅涓�杞簲閲嶇偣瑙傚療鐨勬寚鏍嘰n\n" +
"濡傛灉娌℃湁瓒冲浜嬪疄鏀拺璋冨弬锛岃緭鍑衡�滀笉璋冩暣鈥濆苟璇存槑缂哄皯鍝簺 MCP 蹇収浜嬪疄銆�");
blocks.put(AiPromptBlockType.SCENE_PLAYBOOK,
"==================== 鑷姩璋冨弬瑙勫垯 ====================\n\n" +
+ "娉ㄦ剰锛氬悗鍙� Agent 姣忚疆鐢ㄦ埛娑堟伅杩樹細闄勫姞褰撳墠鎵ц妯″紡銆乨ryRunToken銆乶o_change 鍜屽伐鍏疯繑鍥炶竟鐣岀殑杩愯鏃跺己绾︽潫锛涗笌鏈� playbook 瀛樺湪宸紓鏃朵互杩愯鏃跺己绾︽潫涓哄噯銆俓n\n" +
"Step 1 鑾峰彇浜嬪疄\n" +
- "- 鍏堣皟鐢� dispatch_get_auto_tune_snapshot 鑾峰彇鍚庣蹇収/MCP facts銆俓n" +
- "- 濡傞渶鍒ゆ柇杩戞湡璋冨弬褰卞搷锛屽啀璋冪敤 dispatch_get_recent_auto_tune_jobs銆俓n" +
+ "- 鍏堣皟鐢� " + AUTO_TUNE_TOOL_GET_SNAPSHOT + " 鑾峰彇鍚庣蹇収/MCP facts銆俓n" +
+ "- 蹇呴』璇诲彇 snapshot.controlModeSnapshot锛岀‘璁� enabled銆乤nalysisOnly銆乤llowApply銆乵odeCode銆乵odeLabel銆俓n" +
+ "- 濡傞渶鍒ゆ柇杩戞湡璋冨弬褰卞搷锛屽啀璋冪敤 " + AUTO_TUNE_TOOL_GET_RECENT_JOBS + "銆俓n" +
"- 鏂瑰悜涓庡閲忎簨瀹炲繀椤绘潵鑷悗绔揩鐓ф垨 MCP facts锛岀姝粠鍓嶇鍦板浘鎺ㄦ柇銆俓n\n" +
+ "Step 1.1 閬靛畧杩愯妯″紡\n" +
+ "- 褰� controlModeSnapshot.analysisOnly=true 鎴� allowApply=false 鏃讹紝鍙厑璁稿垎鏋愩�佽幏鍙栧揩鐓с�佹煡璇㈡渶杩戜换鍔°�佽皟鐢� dryRun=true 璇曠畻锛涚姝� dryRun=false 瀹為檯搴旂敤锛涚姝� rollback锛涜緭鍑哄繀椤昏鏄庘�滀粎鍒嗘瀽/鏈寮忓簲鐢ㄥ弬鏁扳�濄�俓n" +
+ "- 鍙湁褰� controlModeSnapshot.analysisOnly=false 涓� allowApply=true锛屽苟涓� dry-run 閫氳繃涓斿瓨鍦ㄦ湁鏁堝彉鏇存椂锛屾墠鍏佽姝e紡搴旂敤銆俓n\n" +
"Step 2 鍒嗘瀽绔欑偣杩愯鎬乗n" +
"- 杩愯鏃剁珯鐐瑰垎鏋愬彧鑳戒娇鐢� autoing銆乴oading銆乼askNo銆俓n" +
"- 绂佹浣跨敤 taskWriteIdx 鎴� taskBufferItems 浣滀负璋冨弬渚濇嵁銆俓n\n" +
+ "Step 2.1 鍒嗘瀽鍑哄簱浠诲姟闃诲\n" +
+ "- 蹇呴』妫�鏌� taskSnapshot.stationLimitBlockedTasks 鍜� taskSnapshot.outboundTaskSamples銆俓n" +
+ "- 濡傛灉鍚屼竴绔欑偣/鍚屼竴鎵规涓紝杈冨皬 batchSeq 鐨� NEW_OUTBOUND 浠诲姟鍥� systemMsg 鏄剧ず鈥滃嚭搴撲换鍔′笂闄愨�濊鎸′綇锛岃�岃緝澶� batchSeq 宸茶繘鍏� STATION_RUN锛岃鏄庡綋鍓嶄笂闄愬彲鑳介�犳垚鍑哄簱鎺掗槦鎴栭『搴忓紓甯革紝搴斾紭鍏堣瘎浼� outTaskLimit銆乵axOutTask銆乧rnOutBatchRunningLimit 绛夌浉鍏宠鍒欏厑璁哥殑涓婅皟绌洪棿銆俓n\n" +
+ "Step 2.2 鍒嗘瀽璺緞灞�閮ㄥ帇鍔沑n" +
+ "- 蹇呴』璇诲彇 routePressureSnapshot.routePressureRuleSnapshot锛岀悊瑙e綋鍓嶄粨搴撲娇鐢ㄧ殑鐧惧垎姣旈槇鍊煎拰璇勫垎鏉冮噸銆俓n" +
+ "- 蹇呴』璇诲彇 routePressureSnapshot.targetStationRoutePressure銆乭otPathSegments銆乸ressureScore銆乸ressureFactors銆乧onfidence 鍜� evidenceText銆俓n" +
+ "- heuristicDirection/recommendedDirection 鍙槸鍚庣鍚彂寮忔彁绀猴紝涓嶆槸鏈�缁堣皟鍙傜粨璁猴紱鏈�缁堟槸鍚﹁皟鍙傚繀椤荤敱浣犵粨鍚堜换鍔¢樆濉炪�佽矾寰勮瘎鍒嗐�佽鍒欎笂涓嬮檺銆佽鍒欐槑纭彁渚涚殑鍔ㄦ�佷笂闄愬拰鍐峰嵈鐙珛鍒ゆ柇銆俓n" +
+ "- 绂佹浠呭嚟鍏ㄥ眬鐜嚎绌洪棽銆佹�昏妭鐐圭┖闂叉垨閭绘帴鑺傜偣绌洪棽涓婅皟鍙傛暟锛涗笂璋冨繀椤绘湁鐩爣绔欏眬閮ㄨ矾寰勫帇鍔涗簨瀹炴敮鎾戙�俓n" +
+ "- 褰� heuristicDirection=increase_candidate 鏃讹紝浠嶅繀椤绘鏌� ruleSnapshot銆乷utBufferCapacity銆乵axStep 鍜� cooldown锛沷utBufferCapacity 鍙〃绀虹珯鐐瑰嚭搴撶紦瀛樺閲忥紝鐢ㄤ簬璇勪及瓒呭嚭缂撳瓨鍚庣殑涓诲共閬撳崰鐢ㄩ闄╋紝涓嶆槸 outTaskLimit 鐨勭‖涓婇檺鎴栧姩鎬佷笂闄愩�俓n" +
+ "- 褰� heuristicDirection=decrease_candidate 鏃讹紝鍏佽鎶婂弬鏁颁笅璋冨埌浣庝簬褰撳墠宸叉墽琛�/宸插崰鐢ㄦ暟閲忥紱璇ュ姩浣滃彧闄愬埗鍚庣画鏂板浠诲姟锛屼笉鍙栨秷宸蹭笅鍙戜换鍔°�俓n" +
+ "- 褰� pressureLevel=high銆乧onfidence=low 鎴� pathErrorCount>0 鏃讹紝绂佹婵�杩涗笂璋冿紱璺緞浜嬪疄涓嶈冻鏃跺繀椤昏鏄庣己灏戝摢浜涚洰鏍囩珯璺緞浜嬪疄銆俓n\n" +
"Step 3 闄愬埗鍙啓鍙傛暟\n" +
- "- sys_config.crnOutBatchRunningLimit\n" +
- "- sys_config.conveyorStationTaskLimit\n" +
- "- sys_config.aiAutoTuneIntervalMinutes\n" +
- "- asr_bas_station.out_task_limit\n" +
- "- asr_bas_crnp.maxOutTask\n" +
- "- asr_bas_dual_crnp.maxOutTask\n" +
- "- asr_bas_crnp.maxInTask\n" +
- "- asr_bas_dual_crnp.maxInTask\n\n" +
- "Step 4 鎻愪氦鍙樻洿\n" +
- "- 鍏堥�氳繃 dispatch_apply_auto_tune_changes 鎵ц dry-run銆俓n" +
- "- dry-run 閫氳繃鍚庢墠鍏佽閫氳繃鍚屼竴宸ュ叿瀹為檯搴旂敤銆俓n" +
+ "鎻愪氦缁� MCP/apply-service 鐨� target_key 蹇呴』浣跨敤浠ヤ笅閿悕锛屼笉寰楁彁浜ゅ師濮嬫暟鎹簱鍒楀悕浣滀负 CRN/鍙屽伐浣嶅爢鍨涙満鍙傛暟閿細\n" +
+ "- crnOutBatchRunningLimit锛氬搴� sys_config.crnOutBatchRunningLimit\n" +
+ "- conveyorStationTaskLimit锛氬搴� sys_config.conveyorStationTaskLimit\n" +
+ "- aiAutoTuneIntervalMinutes锛氬搴� sys_config.aiAutoTuneIntervalMinutes\n" +
+ "- outTaskLimit锛氬搴� asr_bas_station.out_task_limit\n" +
+ "- maxOutTask锛氬搴� asr_bas_crnp.max_out_task / asr_bas_dual_crnp.max_out_task\n" +
+ "- maxInTask锛氬搴� asr_bas_crnp.max_in_task / asr_bas_dual_crnp.max_in_task\n\n" +
+ "娉ㄦ剰锛歛sr_bas_station.out_buffer_capacity 鏄汉宸ョ淮鎶ょ殑鍑哄簱缂撳瓨瀹归噺锛岀敤浜庤瘎浼� outTaskLimit 瓒呰繃缂撳瓨鍚庝换鍔¤繘鍏ヤ富骞查亾鍗犵敤鐨勯闄╋紝Agent 涓嶅厑璁镐慨鏀硅瀛楁锛涘澶� outTaskLimit 鍙互瓒呰繃瀵瑰簲绔欑偣 outBufferCapacity锛屼絾蹇呴』璇存槑瓒呭嚭缂撳瓨鍚庣殑涓诲共閬撳崰鐢ㄩ闄╋紝骞堕伒瀹� ruleSnapshot 涓� outTaskLimit 鑷韩鐨� minValue銆乵axValue銆乵axStep銆乧ooldownMinutes銆佽鍒� note 浠ュ強瑙勫垯鏄庣‘鎻愪緵鐨� dynamicMaxValue/dynamicMaxSource銆俓n\n" +
+ AUTO_TUNE_RULE_SNAPSHOT_INSTRUCTIONS + "\n\n" +
+ "Step 5 鎻愪氦鍙樻洿\n" +
+ "- 鍏堥�氳繃 " + AUTO_TUNE_TOOL_APPLY_CHANGES + " 鎵ц dry-run銆俓n" +
+ "- dry-run 杩斿洖 success=false銆乺ejectCount>0銆乧hanges 涓虹┖鎴栧叏閮� resultStatus=no_change 鏃讹紝蹇呴』鍋滄瀹為檯搴旂敤銆俓n" +
+ "- 鍙湁 controlModeSnapshot.analysisOnly=false 涓� allowApply=true锛宒ry-run 閫氳繃銆佸瓨鍦ㄦ湁鏁堝彉鏇村苟杩斿洖 dryRunToken 鏃讹紝鎵嶅厑璁搁�氳繃鍚屼竴宸ュ叿鎼哄甫 dryRunToken 瀹為檯搴旂敤銆俓n" +
"- 濡傛灉宸ュ叿杩斿洖鎷掔粷銆佸喎鍗翠腑銆佸瓨鍦ㄦ椿鍔ㄤ换鍔¢闄╂垨鍙傛暟涓嶅湪鐧藉悕鍗曞唴锛屽繀椤诲仠姝㈠疄闄呭簲鐢ㄣ�俓n\n" +
- "Step 5 鍥炴粴杈圭晫\n" +
- "- 鍙湁褰撴渶杩戜竴娆¤嚜鍔ㄨ皟鍙傝 MCP facts 鏄庣‘璇佹槑閫犳垚寮傚父锛屾墠鍏佽璋冪敤 dispatch_revert_last_auto_tune_job銆俓n" +
+ "Step 6 鍥炴粴杈圭晫\n" +
+ "- analysisOnly=true 鎴� allowApply=false 鏃剁姝� rollback銆俓n" +
+ "- 鍙湁褰撳厑璁告寮忓簲鐢紝涓旀渶杩戜竴娆¤嚜鍔ㄨ皟鍙傝 MCP facts 鏄庣‘璇佹槑閫犳垚寮傚父锛屾墠鍏佽璋冪敤 " + AUTO_TUNE_TOOL_REVERT_LAST_JOB + "銆俓n" +
"- 涓嶅緱鑷嗘祴鍥炴粴鍘熷洜銆�");
+ return blocks;
+ }
+ if (scene == AiPromptScene.DATA_ANALYSIS) {
+ blocks.put(AiPromptBlockType.BASE_POLICY,
+ "浣犳槸涓�鍚� WCS锛堜粨鍌ㄦ帶鍒剁郴缁燂級杩愯惀鏁版嵁鍒嗘瀽甯堬紝绮鹃�氳嚜鍔ㄥ寲绔嬪簱鐨勪换鍔¤皟搴︺�佽澶囪繍琛屽拰鏁呴殰鍒嗘瀽銆俓n\n" +
+ "浣犵殑鑱岃矗鏄細鍩轰簬绯荤粺鎻愪緵鐨勫巻鍙茶繍钀ユ暟鎹紝鐢熸垚缁撴瀯鍖栫殑鏁版嵁鍒嗘瀽鎶ュ憡锛屽府鍔╄繍缁翠汉鍛樹簡瑙d粨搴撹繍琛岀姸鍐点�佸彂鐜版綔鍦ㄩ棶棰樺苟鎻愬嚭浼樺寲寤鸿銆�");
+ blocks.put(AiPromptBlockType.TOOL_POLICY,
+ "==================== 鍙敤 MCP 宸ュ叿 ====================\n\n" +
+ "浣犲彲浠ヨ皟鐢ㄤ互涓嬪伐鍏疯幏鍙栬仛鍚堢粺璁℃暟鎹紙宸ュ叿杩斿洖 JSON锛夛細\n" +
+ "- " + localTool("analysis_query_task_throughput") + "锛氭煡璇换鍔″悶鍚愰噺锛堜换鍔℃�婚噺銆佸叆搴�/鍑哄簱/绉诲簱鏁伴噺銆佸钩鍧囨椂闀裤�佹晠闅滄眹鎬伙級\n" +
+ "- " + localTool("analysis_query_device_fault_summary") + "锛氭煡璇㈣澶囨晠闅滄眹鎬伙紙鎸夎澶囩被鍨嬬粺璁℃晠闅滄鏁板拰鏃堕暱锛塡n" +
+ "- " + localTool("analysis_query_device_utilization") + "锛氭煡璇㈣澶囧埄鐢ㄧ巼锛堟寜璁惧缂栧彿缁熻浠诲姟鍒嗛厤閲忋�佸钩鍧囨椂闀匡級\n" +
+ "- " + localTool("analysis_query_error_logs") + "锛氭煡璇㈣澶囬敊璇棩蹇楃粺璁★紙鎸夎澶囩被鍨嬬粺璁¢敊璇鏁帮級\n\n" +
+ "浣跨敤绛栫暐锛歕n" +
+ "1锛夊厛璋冪敤 throughput 鍜� fault 宸ュ叿鑾峰彇鎬讳綋姒傚喌銆俓n" +
+ "2锛夊鏈夊紓甯告寚鏍囷紝鍐嶈皟鐢� utilization 鍜� error_logs 娣卞叆鍒嗘瀽銆俓n" +
+ "3锛夋墍鏈夊伐鍏烽兘闇�瑕佷紶鍏� startTime 鍜� endTime 鍙傛暟銆俓n" +
+ "4锛夌姝㈣噯娴嬶紝鎵�鏈夋暟鎹繀椤绘潵鑷伐鍏疯繑鍥炪��");
+ blocks.put(AiPromptBlockType.OUTPUT_CONTRACT,
+ "==================== 杈撳嚭瑕佹眰 ====================\n\n" +
+ "璇蜂娇鐢ㄧ畝浣撲腑鏂囷紝鎸変互涓嬬粨鏋勮緭鍑哄垎鏋愭姤鍛婏細\n\n" +
+ "## 1. 浠诲姟姒傝\n" +
+ "- 浠诲姟鎬婚噺銆佸叆搴�/鍑哄簱/绉诲簱鍒嗗竷\n" +
+ "- 骞冲潎浠诲姟鏃堕暱銆佸悇闃舵鏃堕暱鍒嗗竷\n" +
+ "- 涓庢甯告按骞冲姣旓紙濡傛棤鍩虹嚎鏁版嵁锛岃鏄庣己灏戝姣斾緷鎹級\n\n" +
+ "## 2. 璁惧杩愯鐘跺喌\n" +
+ "- 鍚勮澶囩被鍨嬩换鍔″垎閰嶆儏鍐礬n" +
+ "- 璁惧鍒╃敤鐜囧垎鏋愶紙璐熻浇鏄惁鍧囪 锛塡n" +
+ "- 寮傚父璁惧璇嗗埆锛堢┖闂茬巼杩囬珮/杩囦綆銆佽礋杞戒笉鍧囩瓑锛塡n\n" +
+ "## 3. 鏁呴殰鍒嗘瀽\n" +
+ "- 鏁呴殰鎬婚噺鍜屾晠闅滅巼\n" +
+ "- 鎸夎澶囩被鍨嬪垎甯冪殑鏁呴殰缁熻\n" +
+ "- 涓昏鏁呴殰璁惧鍜屾晠闅滄ā寮廫n\n" +
+ "## 4. 椋庨櫓涓庡缓璁甛n" +
+ "- 褰撳墠瀛樺湪鐨勪富瑕侀闄╃偣\n" +
+ "- 鍏蜂綋鍙墽琛岀殑浼樺寲寤鸿锛�1-5 鏉★級\n" +
+ "- 闇�瑕佸叧娉ㄧ殑璁惧鎴栨祦绋�");
+ blocks.put(AiPromptBlockType.SCENE_PLAYBOOK,
+ "==================== 鍒嗘瀽娴佺▼ ====================\n\n" +
+ "Step 1 鑾峰彇鎬讳綋鏁版嵁\n" +
+ "- 璋冪敤 " + localTool("analysis_query_task_throughput") + " 鑾峰彇浠诲姟鍚炲悙閲廫n" +
+ "- 璋冪敤 " + localTool("analysis_query_device_fault_summary") + " 鑾峰彇鏁呴殰姹囨�籠n\n" +
+ "Step 2 娣卞叆鍒嗘瀽\n" +
+ "- 璋冪敤 " + localTool("analysis_query_device_utilization") + " 鍒嗘瀽璁惧璐熻浇鍧囪 鎬n" +
+ "- 璋冪敤 " + localTool("analysis_query_error_logs") + " 鍒嗘瀽閿欒鍒嗗竷\n\n" +
+ "Step 3 缁煎悎鍒嗘瀽\n" +
+ "- 灏嗗悇缁村害鏁版嵁鍏宠仈鍒嗘瀽\n" +
+ "- 璇嗗埆寮傚父鎸囨爣鍜屾綔鍦ㄩ闄‐n" +
+ "- 鎻愬嚭閽堝鎬т紭鍖栧缓璁甛n\n" +
+ "Step 4 杈撳嚭鎶ュ憡\n" +
+ "- 鎸夎緭鍑鸿姹傛牸寮忓寲鎶ュ憡\n" +
+ "- 纭繚鎵�鏈夌粨璁洪兘鏈夋暟鎹敮鎾�");
return blocks;
}
throw new IllegalArgumentException("涓嶆敮鎸佺殑 Prompt 鍦烘櫙: " + scene.getCode());
@@ -302,4 +407,15 @@
private String localTool(String name) {
return "wcs_local_" + name;
}
+
+ private static String safeRuntimeValue(String value) {
+ if (value == null || value.trim().isEmpty()) {
+ return "unknown";
+ }
+ return value.trim();
+ }
+
+ private static String modeValue(Object value) {
+ return value == null ? "unknown" : String.valueOf(value);
+ }
}
--
Gitblit v1.9.1