From 1f0db72effe89280001306a0d95ae78ed0dd4db0 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期日, 15 三月 2026 17:47:02 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/ai/utils/AiPromptUtils.java |  214 ++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 155 insertions(+), 59 deletions(-)

diff --git a/src/main/java/com/zy/ai/utils/AiPromptUtils.java b/src/main/java/com/zy/ai/utils/AiPromptUtils.java
index 3f82e66..fc442f0 100644
--- a/src/main/java/com/zy/ai/utils/AiPromptUtils.java
+++ b/src/main/java/com/zy/ai/utils/AiPromptUtils.java
@@ -1,30 +1,161 @@
 package com.zy.ai.utils;
 
+import com.zy.ai.enums.AiPromptBlockType;
+import com.zy.ai.enums.AiPromptScene;
 import org.springframework.stereotype.Component;
+
+import java.util.LinkedHashMap;
 
 @Component
 public class AiPromptUtils {
+
+    public String getDefaultPrompt(String sceneCode) {
+        AiPromptScene scene = AiPromptScene.ofCode(sceneCode);
+        if (scene == null) {
+            throw new IllegalArgumentException("涓嶆敮鎸佺殑 Prompt 鍦烘櫙: " + sceneCode);
+        }
+        return getDefaultPrompt(scene);
+    }
+
+    public String getDefaultPrompt(AiPromptScene scene) {
+        if (scene == AiPromptScene.DIAGNOSE_STREAM) {
+            return getAiDiagnosePromptMcp();
+        }
+        if (scene == AiPromptScene.SENSOR_CHAT) {
+            return getWcsSensorPromptMcp();
+        }
+        throw new IllegalArgumentException("涓嶆敮鎸佺殑 Prompt 鍦烘櫙: " + scene.getCode());
+    }
+
+    public LinkedHashMap<AiPromptBlockType, String> getDefaultPromptBlocks(String sceneCode) {
+        AiPromptScene scene = AiPromptScene.ofCode(sceneCode);
+        if (scene == null) {
+            throw new IllegalArgumentException("涓嶆敮鎸佺殑 Prompt 鍦烘櫙: " + sceneCode);
+        }
+        return getDefaultPromptBlocks(scene);
+    }
+
+    public LinkedHashMap<AiPromptBlockType, String> getDefaultPromptBlocks(AiPromptScene scene) {
+        LinkedHashMap<AiPromptBlockType, String> blocks = new LinkedHashMap<>();
+        if (scene == AiPromptScene.DIAGNOSE_STREAM) {
+            blocks.put(AiPromptBlockType.BASE_POLICY,
+                    "浣犳槸涓�鍚嶈祫娣� WCS锛堜粨鍌ㄦ帶鍒剁郴缁燂級涓庤嚜鍔ㄥ寲绔嬪簱涓撳锛岀啛鎮夛細鍫嗗灈鏈恒�佽緭閫佺嚎銆佹彁鍗囨満銆佺┛姊溅绛夎澶囩殑浠诲姟鍒嗛厤鍜岃繍琛岄�昏緫锛屼篃鐔熸倝甯歌鐨勭郴缁熷崱姝汇�佷换鍔′笉鎵ц銆佽澶囩┖闂蹭絾鏃犱换鍔$瓑闂妯″紡銆�");
+            blocks.put(AiPromptBlockType.TOOL_POLICY,
+                    "浣犲彲浠ユ寜闇�璋冪敤绯荤粺鎻愪緵鐨勫伐鍏蜂互鑾峰彇瀹炴椂鏁版嵁涓庝笂涓嬫枃锛堝伐鍏疯繑鍥� JSON锛夛細\n" +
+                            "- 浠诲姟锛�" + localTool("task_query") + "\n" +
+                            "- 璁惧瀹炴椂鐘舵�侊細" + localTool("device_get_crn_status") + " / " + localTool("device_get_station_status") + " / " + localTool("device_get_rgv_status") + "\n" +
+                            "- 鏃ュ織锛�" + localTool("log_query") + "\n" +
+                            "- 璁惧閰嶇疆锛�" + localTool("config_get_device_config") + "\n" +
+                            "- 绯荤粺閰嶇疆锛�" + localTool("config_get_system_config") + "\n\n" +
+                            "浣跨敤绛栫暐锛歕n" +
+                            "1锛夐伩鍏嶈噯娴嬨�傚淇℃伅涓嶈冻锛屽厛璋冪敤鐩稿簲宸ュ叿鏀堕泦蹇呰鏁版嵁锛涘彲澶氳疆璋冪敤銆俓n" +
+                            "2锛夊宸ュ叿杩斿洖鐨� JSON 鍏堣繘琛岀粨鏋勫寲褰掔撼锛屾彁鐐煎叧閿瓧娈碉紝鍐嶅仛鎺ㄧ悊銆俓n" +
+                            "3锛変紭鍏堥『搴忥細浠诲姟鈫掕澶囩姸鎬佲啋鏃ュ織鈫掗厤缃紱鎸夐渶璋冩暣銆俓n\n" +
+                            "濡傞渶瑕侀澶栨暟鎹紝璇峰厛璋冪敤鍚堥�傜殑宸ュ叿鍐嶇户缁洖绛斻��");
+            blocks.put(AiPromptBlockType.OUTPUT_CONTRACT,
+                    "璇锋寜浠ヤ笅缁撴瀯杈撳嚭璇婃柇缁撴灉锛堜娇鐢ㄧ畝浣撲腑鏂囷級锛歕n" +
+                            "1. 闂姒傝堪锛�1-3 鍙ヨ瘽锛屾鎷綋鍓嶇郴缁熺姸鎬侊級\n" +
+                            "2. 鍙枒璁惧鍒楄〃锛堝垪鍑� 1-N 涓澶囩紪鍙凤紝骞惰鏄庢瘡涓澶囦负浠�涔堝彲鐤戯紝渚嬪锛氶厤缃鐢�/闀挎椂闂寸┖闂�/鐘舵�佸紓甯�/浠诲姟鍒嗛厤涓嶅埌瀹冪瓑锛塡n" +
+                            "3. 鍙兘鍘熷洜锛堜粠浠诲姟鍒嗛厤銆佽澶囩姸鎬併�侀厤缃敊璇�佹帴鍙�/閫氫俊寮傚父绛夎搴︼紝鍒楀嚭 3-7 鏉★級\n" +
+                            "4. 寤鸿鎺掓煡姝ラ锛堟楠� 1銆�2銆�3...锛屾瘡姝ヨ灏介噺鍏蜂綋銆佸彲鎿嶄綔锛屼緥濡傦細鍦ㄦ煇椤甸潰鏌ョ湅鏌愬瓧娈点�佹鏌ユ煇涓紑鍏炽�佸姣旀煇涓姸鎬佷綅绛夛級\n" +
+                            "5. 椋庨櫓璇勪及锛堣鏄庡綋鍓嶉棶棰樺涓氬姟褰卞搷绋嬪害锛氶珮/涓�/浣庯紝浠ュ強鏄惁闇�瑕佺珛鍗充汉宸ュ共棰勶級");
+            blocks.put(AiPromptBlockType.SCENE_PLAYBOOK,
+                    "浣犵殑鐩爣鏄細甯姪鐜板満杩愮淮浜哄憳鍒嗘瀽锛屼负浠�涔堢郴缁熷綋鍓嶄笉鎵ц浠诲姟锛屾垨鑰呬换鍔℃墽琛屾晥鐜囧紓甯革紝鎸囧嚭鍙兘鏄摢浜涜澶囧鑷寸殑闂銆�");
+            return blocks;
+        }
+        if (scene == AiPromptScene.SENSOR_CHAT) {
+            blocks.put(AiPromptBlockType.BASE_POLICY,
+                    "浣犳槸涓�鍚嶈祫娣� WCS锛堜粨鍌ㄦ帶鍒剁郴缁燂級涓庤嚜鍔ㄥ寲绔嬪簱涓撳锛孿n" +
+                            "绮鹃�氬爢鍨涙満銆佽緭閫佺嚎銆佹彁鍗囨満銆佺┛姊溅銆丷GV銆佸伐浣嶇瓑璁惧鐨刓n" +
+                            "浠诲姟鍒嗛厤銆佽繍琛岀姸鎬佹祦杞笌寮傚父澶勭悊銆俓n\n" +
+                            "浣犵殑鑱岃矗鏄細**鍩轰簬瀹炴椂鏁版嵁杩涜宸ョ▼绾ц瘖鏂紝鑰屼笉鏄嚟缁忛獙鐚滄祴銆�**");
+            blocks.put(AiPromptBlockType.TOOL_POLICY,
+                    "==================== 宸ヤ綔瑙勫垯锛堥潪甯搁噸瑕侊級 ====================\n\n" +
+                            "1. **绂佹鍦ㄦ湭鑾峰彇瀹炴椂鏁版嵁鐨勬儏鍐典笅鐩存帴涓嬬粨璁恒��**\n" +
+                            "   - 鑻ラ棶棰樻秹鍙娾�滃綋鍓嶇姸鎬� / 鏄惁鍗℃ / 鏄惁鏈変换鍔� / 鏄惁寮傚父鈥濓紝\n" +
+                            "     浣犲繀椤诲厛璋冪敤宸ュ叿鑾峰彇鏁版嵁锛屽啀杩涜鍒嗘瀽銆俓n\n" +
+                            "2. **浼樺厛浣跨敤鏈�灏戜笖鏈�鐩稿叧鐨勫伐鍏疯皟鐢ㄣ��**\n" +
+                            "   - 鏁翠綋璇婃柇鏃讹紝鍏堟煡浠诲姟涓庡叧閿澶囩姸鎬併�俓n" +
+                            "   - 闇�瑕佽ˉ璇佹嵁鏃讹紝鍐嶆煡鏃ュ織鎴栭厤缃�俓n\n" +
+                            "3. **褰撲俊鎭笉瓒充互鍒ゆ柇鏃讹紝涓嶅緱鐚滄祴鍘熷洜銆�**\n" +
+                            "   - 蹇呴』鏄庣‘鎸囧嚭鈥滅己灏戝摢浜涙暟鎹�濓紝骞惰皟鐢ㄥ搴斿伐鍏疯幏鍙栥�俓n\n" +
+                            "4. **宸ュ叿杩斿洖鐨勬暟鎹槸浜嬪疄渚濇嵁锛屽繀椤诲紩鐢ㄥ叾鍏抽敭淇℃伅杩涜鎺ㄧ悊銆�**\n\n" +
+                            "==================== 鍙敤宸ュ叿锛堣繑鍥� JSON锛� ====================\n\n" +
+                            "銆愪换鍔$浉鍏炽�慭n" +
+                            "- " + localTool("task_query") + "锛氭寜浠诲姟鍙枫�佺姸鎬併�佽澶囥�佹潯鐮併�佸簱浣嶇瓑鏉′欢鏌ヨ浠诲姟\n" +
+                            "\n銆愯澶囧疄鏃剁姸鎬併�慭n" +
+                            "- " + localTool("device_get_crn_status") + "锛氬爢鍨涙満瀹炴椂鐘舵�乗n" +
+                            "- " + localTool("device_get_station_status") + "锛氬伐浣嶅疄鏃剁姸鎬乗n" +
+                            "- " + localTool("device_get_rgv_status") + "锛歊GV / 绌挎杞﹀疄鏃剁姸鎬乗n" +
+                            "\n銆愭棩蹇椼�慭n" +
+                            "- " + localTool("log_query") + "锛氭煡璇㈢郴缁�/璁惧鏃ュ織\n" +
+                            "\n銆愰厤缃�慭n" +
+                            "- " + localTool("config_get_device_config") + "锛氳澶囬厤缃甛n" +
+                            "- " + localTool("config_get_system_config") + "锛氱郴缁熺骇閰嶇疆");
+            blocks.put(AiPromptBlockType.OUTPUT_CONTRACT,
+                    "==================== 杈撳嚭瑕佹眰 ====================\n\n" +
+                            "- 浣跨敤**绠�娲併�佹槑纭殑涓枃**\n" +
+                            "- 閬垮厤娉涙硾鑰岃皥銆侀伩鍏嶁�滃彲鑳�/涔熻鈥濆紡绌烘硾鎻忚堪\n" +
+                            "- 鑻ラ渶瑕佽繘涓�姝ユ暟鎹紝璇�**鍏堣皟鐢ㄥ伐鍏凤紝鍐嶇户缁垎鏋�**");
+            blocks.put(AiPromptBlockType.SCENE_PLAYBOOK,
+                    "==================== 鎺ㄨ崘璇婃柇娴佺▼ ====================\n\n" +
+                            "褰撴帴鍒拌瘖鏂姹傛椂锛岃閬靛惊浠ヤ笅姝ラ锛歕n\n" +
+                            "Step 1 鏄庣‘璇婃柇鐩爣\n" +
+                            "- 褰撳墠瑕佸垽鏂殑鏄細璁惧鏄惁寮傚父锛熶换鍔℃槸鍚﹀崱姝伙紵璋冨害鏄惁闃诲锛焅n\n" +
+                            "Step 2 璋冪敤蹇呰宸ュ叿鑾峰彇浜嬪疄鏁版嵁\n" +
+                            "- 璁惧鐘舵�� 鈫� 鏄惁鍦ㄧ嚎 / 鏄惁绌洪棽 / 褰撳墠浠诲姟\n" +
+                            "- 浠诲姟鐘舵�� 鈫� 鏄惁瀛樺湪寰呮墽琛�/鎸傝捣浠诲姟\n" +
+                            "- 鏃ュ織 鈫� 鏄惁瀛樺湪鍏抽敭寮傚父銆佺瓑寰呯‘璁ゃ�佸懡浠ゆ湭鍝嶅簲绛変俊鎭痋n\n" +
+                            "Step 3 鍩轰簬鏁版嵁杩涜閫昏緫鍒嗘瀽\n" +
+                            "- 浣跨敤 WCS 涓撲笟鐭ヨ瘑杩涜鍥犳灉鍒ゆ柇锛堣�岄潪鐚滄祴锛塡n\n" +
+                            "Step 4 杈撳嚭缁撴瀯鍖栫粨璁篭n" +
+                            "- 銆愮幇璞℃�荤粨銆慭n" +
+                            "- 銆愬叧閿瘉鎹紙鏉ヨ嚜宸ュ叿杩斿洖锛夈�慭n" +
+                            "- 銆愬彲鑳藉師鍥狅紙鎸変紭鍏堢骇锛夈�慭n" +
+                            "- 銆愬彲鎵ц鐨勬帓鏌� / 澶勭悊寤鸿銆�");
+            return blocks;
+        }
+        throw new IllegalArgumentException("涓嶆敮鎸佺殑 Prompt 鍦烘櫙: " + scene.getCode());
+    }
+
+    public LinkedHashMap<AiPromptBlockType, String> resolveStoredOrDefaultBlocks(AiPromptScene scene, String legacyContent) {
+        String content = trim(legacyContent);
+        if (content == null) {
+            return getDefaultPromptBlocks(scene);
+        }
+        if ((scene == AiPromptScene.DIAGNOSE_STREAM && content.equals(getAiDiagnosePromptMcp()))
+                || (scene == AiPromptScene.SENSOR_CHAT && content.equals(getWcsSensorPromptMcp()))) {
+            return getDefaultPromptBlocks(scene);
+        }
+        LinkedHashMap<AiPromptBlockType, String> blocks = new LinkedHashMap<>();
+        blocks.put(AiPromptBlockType.BASE_POLICY, "");
+        blocks.put(AiPromptBlockType.TOOL_POLICY, "");
+        blocks.put(AiPromptBlockType.OUTPUT_CONTRACT, "");
+        blocks.put(AiPromptBlockType.SCENE_PLAYBOOK, content);
+        return blocks;
+    }
+
+    private String trim(String value) {
+        if (value == null) {
+            return null;
+        }
+        String trimmed = value.trim();
+        return trimmed.isEmpty() ? null : trimmed;
+    }
 
     //AI璇婃柇绯荤粺Prompt
     public String getAiDiagnosePromptMcp() {
         String prompt = "浣犳槸涓�鍚嶈祫娣� WCS锛堜粨鍌ㄦ帶鍒剁郴缁燂級涓庤嚜鍔ㄥ寲绔嬪簱涓撳锛岀啛鎮夛細鍫嗗灈鏈恒�佽緭閫佺嚎銆佹彁鍗囨満銆佺┛姊溅绛夎澶囩殑浠诲姟鍒嗛厤鍜岃繍琛岄�昏緫锛屼篃鐔熸倝甯歌鐨勭郴缁熷崱姝汇�佷换鍔′笉鎵ц銆佽澶囩┖闂蹭絾鏃犱换鍔$瓑闂妯″紡銆俓n\n" +
                 "浣犲彲浠ユ寜闇�璋冪敤绯荤粺鎻愪緵鐨勫伐鍏蜂互鑾峰彇瀹炴椂鏁版嵁涓庝笂涓嬫枃锛堝伐鍏疯繑鍥� JSON锛夛細\n" +
-                "- 浠诲姟锛歵ask_list\n" +
-                "- 璁惧瀹炴椂鐘舵�侊細device_get_crn_status / device_get_station_status / device_get_rgv_status\n" +
-                "- 鏃ュ織锛歭og_query\n" +
-                "- 璁惧閰嶇疆锛歝onfig_get_device_config\n" +
-                "- 绯荤粺閰嶇疆锛歝onfig_get_system_config\n\n" +
+                "- 浠诲姟锛�" + localTool("task_query") + "\n" +
+                "- 璁惧瀹炴椂鐘舵�侊細" + localTool("device_get_crn_status") + " / " + localTool("device_get_station_status") + " / " + localTool("device_get_rgv_status") + "\n" +
+                "- 鏃ュ織锛�" + localTool("log_query") + "\n" +
+                "- 璁惧閰嶇疆锛�" + localTool("config_get_device_config") + "\n" +
+                "- 绯荤粺閰嶇疆锛�" + localTool("config_get_system_config") + "\n\n" +
                 "浣跨敤绛栫暐锛歕n" +
                 "1锛夐伩鍏嶈噯娴嬨�傚淇℃伅涓嶈冻锛屽厛璋冪敤鐩稿簲宸ュ叿鏀堕泦蹇呰鏁版嵁锛涘彲澶氳疆璋冪敤銆俓n" +
                 "2锛夊宸ュ叿杩斿洖鐨� JSON 鍏堣繘琛岀粨鏋勫寲褰掔撼锛屾彁鐐煎叧閿瓧娈碉紝鍐嶅仛鎺ㄧ悊銆俓n" +
                 "3锛変紭鍏堥『搴忥細浠诲姟鈫掕澶囩姸鎬佲啋鏃ュ織鈫掗厤缃紱鎸夐渶璋冩暣銆俓n\n" +
-                "浣犲皢鏀跺埌浠ヤ笅鍑犵被鏁版嵁锛歕n" +
-                "1锛変换鍔′俊鎭紙tasks锛夛細褰撳墠寰呮墽琛�/鍦ㄦ墽琛�/鎸傝捣浠诲姟\n" +
-                "2锛夎澶囧疄鏃舵暟鎹紙deviceRealtimeData锛夛細姣忓彴璁惧褰撳墠鐘舵�併�佹槸鍚﹀湪绾裤�佸綋鍓嶄换鍔″彿绛塡n" +
-                "3锛夎澶囬厤缃俊鎭紙deviceConfigs锛夛細璁惧鏄惁鍚敤銆佹湇鍔″尯鍩熴�佸厑璁哥殑浠诲姟绫诲瀷绛塡n" +
-                "4锛夌郴缁熸棩蹇楋紙logs锛夛細鎸夋椂闂撮『搴忕殑鏃ュ織鏂囨湰\n" +
-                "5锛夐澶栦笂涓嬫枃锛坋xtraContext锛夛細濡備粨搴撲唬鐮併�乄CS 鐗堟湰绛塡n\n" +
-                "6锛夌郴缁熼厤缃俊鎭紙systemConfigs锛夛細绯荤粺鐨勯厤缃弬鏁帮紝鏁版嵁搴撹〃鍚峴ys_config\n\n" +
                 "浣犵殑鐩爣鏄細甯姪鐜板満杩愮淮浜哄憳鍒嗘瀽锛屼负浠�涔堢郴缁熷綋鍓嶄笉鎵ц浠诲姟锛屾垨鑰呬换鍔℃墽琛屾晥鐜囧紓甯革紝鎸囧嚭鍙兘鏄摢浜涜澶囧鑷寸殑闂銆俓n\n" +
                 "璇锋寜浠ヤ笅缁撴瀯杈撳嚭璇婃柇缁撴灉锛堜娇鐢ㄧ畝浣撲腑鏂囷級锛歕n" +
                 "1. 闂姒傝堪锛�1-3 鍙ヨ瘽锛屾鎷綋鍓嶇郴缁熺姸鎬侊級\n" +
@@ -38,16 +169,6 @@
 
     //WCS楂樼骇涓撳Prompt
     public String getWcsSensorPromptMcp() {
-//        String prompt = "浣犳槸涓�鍚嶈祫娣� WCS锛堜粨鍌ㄦ帶鍒剁郴缁燂級涓庤嚜鍔ㄥ寲绔嬪簱涓撳锛岀啛鎮夛細鍫嗗灈鏈恒�佽緭閫佺嚎銆佹彁鍗囨満銆佺┛姊溅绛夎澶囩殑浠诲姟鍒嗛厤鍜岃繍琛岄�昏緫锛屼篃鐔熸倝甯歌鐨勭郴缁熷崱姝汇�佷换鍔′笉鎵ц銆佽澶囩┖闂蹭絾鏃犱换鍔$瓑闂妯″紡銆俓n\n" +
-//                "浣犲彲浠ユ寜闇�璋冪敤绯荤粺鎻愪緵鐨勫伐鍏蜂互鑾峰彇瀹炴椂鏁版嵁涓庝笂涓嬫枃锛堝伐鍏疯繑鍥� JSON锛夛細\n" +
-//                "- 浠诲姟锛歵ask_list\n" +
-//                "- 璁惧瀹炴椂鐘舵�侊細device_get_crn_status / device_get_station_status / device_get_rgv_status\n" +
-//                "- 鏃ュ織锛歭og_query\n" +
-//                "- 璁惧閰嶇疆锛歝onfig_get_device_config\n" +
-//                "- 绯荤粺閰嶇疆锛歝onfig_get_system_config\n\n" +
-//                "璇峰厛鐢ㄥ伐鍏疯幏鍙栧繀瑕佷俊鎭紝鍐嶄互绠�娲併�佹槑纭殑涓枃浣滅瓟锛屽苟鍦ㄩ渶瑕佹椂缁欏嚭鍙墽琛岀殑鎺掓煡寤鸿銆�" +
-//                "濡傞渶瑕侀澶栨暟鎹紝璇峰厛璋冪敤鍚堥�傜殑宸ュ叿鍐嶇户缁洖绛斻��";
-
         String prompt = "浣犳槸涓�鍚嶈祫娣� WCS锛堜粨鍌ㄦ帶鍒剁郴缁燂級涓庤嚜鍔ㄥ寲绔嬪簱涓撳锛孿n" +
                 "绮鹃�氬爢鍨涙満銆佽緭閫佺嚎銆佹彁鍗囨満銆佺┛姊溅銆丷GV銆佸伐浣嶇瓑璁惧鐨刓n" +
                 "浠诲姟鍒嗛厤銆佽繍琛岀姸鎬佹祦杞笌寮傚父澶勭悊銆俓n" +
@@ -60,10 +181,9 @@
                 "   - 鑻ラ棶棰樻秹鍙娾�滃綋鍓嶇姸鎬� / 鏄惁鍗℃ / 鏄惁鏈変换鍔� / 鏄惁寮傚父鈥濓紝\n" +
                 "     浣犲繀椤诲厛璋冪敤宸ュ叿鑾峰彇鏁版嵁锛屽啀杩涜鍒嗘瀽銆俓n" +
                 "\n" +
-                "2. **浼樺厛浣跨敤鑱氬悎寮忎俊鎭紝鍏舵鍐嶄娇鐢ㄥ崟椤规煡璇€��**\n" +
-                "   - 鑻ラ渶瑕佹暣浣撳垽鏂郴缁熺姸鎬侊紝璇蜂紭鍏堣皟鐢細\n" +
-                "     鈫� build_diagnosis_snapshot锛堝鍙敤锛塡n" +
-                "   - 鑻ュ彧闇�瑕佸眬閮ㄨˉ鍏呬俊鎭紝鍐嶈皟鐢ㄥ崟椤瑰伐鍏枫�俓n" +
+                "2. **浼樺厛浣跨敤鏈�灏戜笖鏈�鐩稿叧鐨勫伐鍏疯皟鐢ㄣ��**\n" +
+                "   - 鏁翠綋璇婃柇鏃讹紝鍏堟煡浠诲姟涓庡叧閿澶囩姸鎬併�俓n" +
+                "   - 闇�瑕佽ˉ璇佹嵁鏃讹紝鍐嶆煡鏃ュ織鎴栭厤缃�俓n" +
                 "\n" +
                 "3. **褰撲俊鎭笉瓒充互鍒ゆ柇鏃讹紝涓嶅緱鐚滄祴鍘熷洜銆�**\n" +
                 "   - 蹇呴』鏄庣‘鎸囧嚭鈥滅己灏戝摢浜涙暟鎹�濓紝骞惰皟鐢ㄥ搴斿伐鍏疯幏鍙栥�俓n" +
@@ -73,19 +193,19 @@
                 "==================== 鍙敤宸ュ叿锛堣繑鍥� JSON锛� ====================\n" +
                 "\n" +
                 "銆愪换鍔$浉鍏炽�慭n" +
-                "- task_list               鈥斺�� 鏌ヨ褰撳墠/鍘嗗彶浠诲姟鍙婄姸鎬乗n" +
+                "- " + localTool("task_query") + "              鈥斺�� 鎸変换鍔″彿銆佺姸鎬併�佽澶囥�佹潯鐮併�佸簱浣嶇瓑鏉′欢鏌ヨ浠诲姟\n" +
                 "\n" +
                 "銆愯澶囧疄鏃剁姸鎬併�慭n" +
-                "- device_get_crn_status   鈥斺�� 鍫嗗灈鏈哄疄鏃剁姸鎬乗n" +
-                "- device_get_station_status 鈥斺�� 宸ヤ綅瀹炴椂鐘舵�乗n" +
-                "- device_get_rgv_status   鈥斺�� RGV / 绌挎杞﹀疄鏃剁姸鎬乗n" +
+                "- " + localTool("device_get_crn_status") + "   鈥斺�� 鍫嗗灈鏈哄疄鏃剁姸鎬乗n" +
+                "- " + localTool("device_get_station_status") + " 鈥斺�� 宸ヤ綅瀹炴椂鐘舵�乗n" +
+                "- " + localTool("device_get_rgv_status") + "   鈥斺�� RGV / 绌挎杞﹀疄鏃剁姸鎬乗n" +
                 "\n" +
                 "銆愭棩蹇椼�慭n" +
-                "- log_query               鈥斺�� 鏌ヨ绯荤粺/璁惧鏃ュ織锛堟寜鏃堕棿/鍏抽敭瀛楋級\n" +
+                "- " + localTool("log_query") + "               鈥斺�� 鏌ヨ绯荤粺/璁惧鏃ュ織锛堟寜鏃堕棿/鍏抽敭瀛楋級\n" +
                 "\n" +
                 "銆愰厤缃�慭n" +
-                "- config_get_device_config 鈥斺�� 璁惧閰嶇疆锛堝惎鐢ㄣ�佹ā寮忋�佺瓥鐣ワ級\n" +
-                "- config_get_system_config 鈥斺�� 绯荤粺绾ц皟搴�/绛栫暐閰嶇疆\n" +
+                "- " + localTool("config_get_device_config") + " 鈥斺�� 璁惧閰嶇疆锛堝惎鐢ㄣ�佹ā寮忋�佺瓥鐣ワ級\n" +
+                "- " + localTool("config_get_system_config") + " 鈥斺�� 绯荤粺绾ц皟搴�/绛栫暐閰嶇疆\n" +
                 "\n" +
                 "==================== 鎺ㄨ崘璇婃柇娴佺▼ ====================\n" +
                 "\n" +
@@ -116,31 +236,7 @@
         return prompt;
     }
 
-    //AI璇婃柇绯荤粺Prompt
-    public String getAiDiagnosePrompt() {
-        String prompt = "浣犳槸涓�鍚嶈祫娣� WCS锛堜粨鍌ㄦ帶鍒剁郴缁燂級涓庤嚜鍔ㄥ寲绔嬪簱涓撳锛岀啛鎮夛細鍫嗗灈鏈恒�佽緭閫佺嚎銆佹彁鍗囨満銆佺┛姊溅绛夎澶囩殑浠诲姟鍒嗛厤鍜岃繍琛岄�昏緫锛屼篃鐔熸倝甯歌鐨勭郴缁熷崱姝汇�佷换鍔′笉鎵ц銆佽澶囩┖闂蹭絾鏃犱换鍔$瓑闂妯″紡銆俓n\n" +
-                "浣犲皢鏀跺埌浠ヤ笅鍑犵被鏁版嵁锛歕n" +
-                "1锛変换鍔′俊鎭紙tasks锛夛細褰撳墠寰呮墽琛�/鍦ㄦ墽琛�/鎸傝捣浠诲姟\n" +
-                "2锛夎澶囧疄鏃舵暟鎹紙deviceRealtimeData锛夛細姣忓彴璁惧褰撳墠鐘舵�併�佹槸鍚﹀湪绾裤�佸綋鍓嶄换鍔″彿绛塡n" +
-                "3锛夎澶囬厤缃俊鎭紙deviceConfigs锛夛細璁惧鏄惁鍚敤銆佹湇鍔″尯鍩熴�佸厑璁哥殑浠诲姟绫诲瀷绛塡n" +
-                "4锛夌郴缁熸棩蹇楋紙logs锛夛細鎸夋椂闂撮『搴忕殑鏃ュ織鏂囨湰\n" +
-                "5锛夐澶栦笂涓嬫枃锛坋xtraContext锛夛細濡備粨搴撲唬鐮併�乄CS 鐗堟湰绛塡n\n" +
-                "6锛夌郴缁熼厤缃俊鎭紙systemConfigs锛夛細绯荤粺鐨勯厤缃弬鏁帮紝鏁版嵁搴撹〃鍚峴ys_config\n\n" +
-                "浣犵殑鐩爣鏄細甯姪鐜板満杩愮淮浜哄憳鍒嗘瀽锛屼负浠�涔堢郴缁熷綋鍓嶄笉鎵ц浠诲姟锛屾垨鑰呬换鍔℃墽琛屾晥鐜囧紓甯革紝鎸囧嚭鍙兘鏄摢浜涜澶囧鑷寸殑闂銆俓n\n" +
-                "璇锋寜浠ヤ笅缁撴瀯杈撳嚭璇婃柇缁撴灉锛堜娇鐢ㄧ畝浣撲腑鏂囷級锛歕n" +
-                "1. 闂姒傝堪锛�1-3 鍙ヨ瘽锛屾鎷綋鍓嶇郴缁熺姸鎬侊級\n" +
-                "2. 鍙枒璁惧鍒楄〃锛堝垪鍑� 1-N 涓澶囩紪鍙凤紝骞惰鏄庢瘡涓澶囦负浠�涔堝彲鐤戯紝渚嬪锛氶厤缃鐢�/闀挎椂闂寸┖闂�/鐘舵�佸紓甯�/浠诲姟鍒嗛厤涓嶅埌瀹冪瓑锛塡n" +
-                "3. 鍙兘鍘熷洜锛堜粠浠诲姟鍒嗛厤銆佽澶囩姸鎬併�侀厤缃敊璇�佹帴鍙�/閫氫俊寮傚父绛夎搴︼紝鍒楀嚭 3-7 鏉★級\n" +
-                "4. 寤鸿鎺掓煡姝ラ锛堟楠� 1銆�2銆�3...锛屾瘡姝ヨ灏介噺鍏蜂綋銆佸彲鎿嶄綔锛屼緥濡傦細鍦ㄦ煇椤甸潰鏌ョ湅鏌愬瓧娈点�佹鏌ユ煇涓紑鍏炽�佸姣旀煇涓姸鎬佷綅绛夛級\n" +
-                "5. 椋庨櫓璇勪及锛堣鏄庡綋鍓嶉棶棰樺涓氬姟褰卞搷绋嬪害锛氶珮/涓�/浣庯紝浠ュ強鏄惁闇�瑕佺珛鍗充汉宸ュ共棰勶級\n";
-        return prompt;
+    private String localTool(String name) {
+        return "wcs_local_" + name;
     }
-
-    //WCS楂樼骇涓撳Prompt
-    public String getWcsSensorPrompt() {
-        String prompt = "浣犳槸涓�鍚嶈祫娣� WCS锛堜粨鍌ㄦ帶鍒剁郴缁燂級涓庤嚜鍔ㄥ寲绔嬪簱涓撳锛岀啛鎮夛細鍫嗗灈鏈恒�佽緭閫佺嚎銆佹彁鍗囨満銆佺┛姊溅绛夎澶囩殑浠诲姟鍒嗛厤鍜岃繍琛岄�昏緫锛屼篃鐔熸倝甯歌鐨勭郴缁熷崱姝汇�佷换鍔′笉鎵ц銆佽澶囩┖闂蹭絾鏃犱换鍔$瓑闂妯″紡銆俓n\n" +
-                "鍦ㄥ洖绛旂敤鎴烽棶棰樻椂锛岄渶瑕佺粨鍚堜笅闈㈢粰鍑虹殑绯荤粺褰撳墠涓婁笅鏂囦俊鎭紙浠诲姟銆佽澶囧疄鏃剁姸鎬併�佽澶囬厤缃�佺郴缁熸棩蹇椼�佺郴缁熼厤缃瓑锛夛紝浠ョ畝娲併�佹槑纭殑涓枃浣滅瓟锛屽苟鍦ㄩ渶瑕佹椂缁欏嚭鍙墽琛岀殑鎺掓煡寤鸿銆�";
-        return prompt;
-    }
-
 }

--
Gitblit v1.9.1