nolo-cli 0.33.0-alpha.8 → 0.34.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/{_executeModel-RI6DRQTP.js → _executeModel-BUYCXZCQ.js} +65 -65
  2. package/{action-SMLG6OTB.js → action-KMBZ3LCZ.js} +12 -12
  3. package/{addContentAction-SFO244QN.js → addContentAction-KQ44UT2U.js} +10 -10
  4. package/{addDialogAgentAction-W44ZCEHB.js → addDialogAgentAction-ILSDCMYL.js} +9 -9
  5. package/{agentDeleteCommand-F2P4PF6R.js → agentDeleteCommand-WSS2IJVM.js} +40 -39
  6. package/{agentEmailCommands-BW6ZDQ3C.js → agentEmailCommands-SHTPJTSX.js} +75 -75
  7. package/{agentListCommands-IC3GH45S.js → agentListCommands-GV6UYVAF.js} +47 -37
  8. package/{agentMachineCommands-LGYGQX75.js → agentMachineCommands-FLD7TAFH.js} +37 -36
  9. package/agentProviderCommands-65ZC2WB4.js +122 -0
  10. package/{agentPullCommand-YH5GEBK4.js → agentPullCommand-TSWAJPS2.js} +1 -1
  11. package/agentRecordCommands-57W6R7QW.js +113 -0
  12. package/{agentRunCommand-F5L6GPSK.js → agentRunCommand-HJGXSMDN.js} +78 -76
  13. package/{agentRunControl-SCIVRZWX.js → agentRunControl-GXOB47YI.js} +5 -1
  14. package/{agentRuntimeLocal-B7SHOEHJ.js → agentRuntimeLocal-G7ZV55I6.js} +33 -33
  15. package/{agentSlice-GMKJKCPY.js → agentSlice-HFR7SP3B.js} +12 -12
  16. package/agentSuperviseCommands-Q64S5SPG.js +640 -0
  17. package/{appDeleteCommands-63VCZ5CT.js → appDeleteCommands-SHHE56Y2.js} +35 -34
  18. package/{appDeployCommands-YFTG2P3K.js → appDeployCommands-WUMSO2VS.js} +35 -34
  19. package/{appDeployStatusCommands-R5ENU5CQ.js → appDeployStatusCommands-VZSVN6SR.js} +35 -34
  20. package/{appGetCommands-3CH3VMUB.js → appGetCommands-ZJ2C3A5Y.js} +35 -34
  21. package/{appListCommands-Q2HVYG7J.js → appListCommands-W33L6U5X.js} +35 -34
  22. package/{authCommand-6Y5LTMZB.js → authCommand-B2XRHNJH.js} +19 -19
  23. package/{authCommands-EAPFGNHN.js → authCommands-GWABTFMR.js} +6 -6
  24. package/{chatQueueReduxAdapter-ZRFKEKD3.js → chatQueueReduxAdapter-SYIX4ODY.js} +28 -28
  25. package/{chunk-57QJXIB6.js → chunk-23KKIMD5.js} +7 -7
  26. package/{chunk-HUCT7HID.js → chunk-2KO5QQFV.js} +2 -2
  27. package/{chunk-2UECQ7RE.js → chunk-3AOLVADY.js} +1 -1
  28. package/{chunk-PVVAWIUN.js → chunk-3LWZNEGQ.js} +1 -1
  29. package/{chunk-2GKZGZBN.js → chunk-3XZUNRYF.js} +33 -158
  30. package/{chunk-M2YMQOLC.js → chunk-4APLX2RT.js} +75 -10
  31. package/{chunk-ZHYK3N56.js → chunk-4AWH4LQA.js} +3 -1
  32. package/{chunk-3GZXL6FM.js → chunk-4DMPISV6.js} +7 -3
  33. package/chunk-4HOXB6SY.js +297 -0
  34. package/{chunk-OIQPORYI.js → chunk-64KIQZA2.js} +175 -2
  35. package/{chunk-MUCM2MZB.js → chunk-6KYCG5GW.js} +1216 -690
  36. package/chunk-6XG52ZQ6.js +146 -0
  37. package/{chunk-XFV2VK7O.js → chunk-74IQ5RRO.js} +21 -8
  38. package/{chunk-FMEVI5TG.js → chunk-7CH6U3FL.js} +1 -1
  39. package/{chunk-6FNS3SQF.js → chunk-7YDKVLAE.js} +10 -10
  40. package/{chunk-LZC5YX6P.js → chunk-AUH2LTIY.js} +7 -7
  41. package/{chunk-CLP2K7U4.js → chunk-B6H5XCT2.js} +8 -8
  42. package/{chunk-NNWHHCVP.js → chunk-BMB563Y6.js} +10 -4
  43. package/{chunk-DFUPZE6V.js → chunk-C6ELZQ7H.js} +249 -34
  44. package/{chunk-XL7BR2GE.js → chunk-DX6BP4K7.js} +285 -251
  45. package/{chunk-6HYVJV7B.js → chunk-ESHYE7WU.js} +2 -1
  46. package/{chunk-JZPBVBIY.js → chunk-FD36SCCD.js} +19 -8
  47. package/{chunk-W7J5HZI7.js → chunk-FDKEDU7R.js} +14 -14
  48. package/{chunk-AOXVOC6D.js → chunk-FGLKRJDI.js} +54 -3
  49. package/{chunk-2QTEYCR7.js → chunk-FTM4KUOZ.js} +17 -17
  50. package/{chunk-U4TRT5V4.js → chunk-GEPHJJW4.js} +1 -1
  51. package/{chunk-7YYHKBJP.js → chunk-GKHV4UH5.js} +1 -1
  52. package/{chunk-2IVEXF7P.js → chunk-GUYMR3JL.js} +6 -33
  53. package/{chunk-YDTYDA5W.js → chunk-GZRMWK5R.js} +6 -4
  54. package/{chunk-KBZCACG7.js → chunk-HDT2RB7T.js} +3 -3
  55. package/{chunk-X664KVEV.js → chunk-HHBXCRJS.js} +204 -123
  56. package/{chunk-37V5LNEQ.js → chunk-IFS5CUEH.js} +1 -1
  57. package/{chunk-WLH5BAKX.js → chunk-IIOHYLIG.js} +9 -4
  58. package/{chunk-ADLYMQB6.js → chunk-IZCHPD7T.js} +52 -3
  59. package/{chunk-ITIA6OAQ.js → chunk-IZNJDUJ4.js} +5 -5
  60. package/{chunk-X2DAEZ3X.js → chunk-J5NMOM35.js} +1 -1
  61. package/{chunk-PREQU5QV.js → chunk-JI2TIPLP.js} +1 -1
  62. package/{chunk-EGRJC4ZN.js → chunk-JIADXJYU.js} +1 -1
  63. package/{chunk-IHEC7VBF.js → chunk-K4KIFRIN.js} +1 -1
  64. package/{chunk-JCGIUBE3.js → chunk-KCBK4MDT.js} +294 -54
  65. package/{chunk-WJSW43QZ.js → chunk-L3JWI7WX.js} +0 -1
  66. package/{chunk-VOBUVWP5.js → chunk-LAUUAYLK.js} +39 -2672
  67. package/{chunk-TFPUAELY.js → chunk-LD6Y6RJY.js} +4 -4
  68. package/{chunk-NKFMFT4W.js → chunk-LQ6PUHW6.js} +4195 -2631
  69. package/chunk-M3JQWYBC.js +387 -0
  70. package/{chunk-GM6PU7B6.js → chunk-MEYIRKDN.js} +0 -1
  71. package/{chunk-JZ5AMMXU.js → chunk-MGIHZ5CJ.js} +4 -4
  72. package/chunk-MI2J67UU.js +43 -0
  73. package/{chunk-JTSGWTYZ.js → chunk-MJWX4JQO.js} +2 -2
  74. package/{chunk-Q5ITEGIN.js → chunk-N4XRDM26.js} +1 -1
  75. package/{chunk-5CS33IBL.js → chunk-NQ4N4IGO.js} +11 -12
  76. package/{chunk-ZZ2MH7LE.js → chunk-O6OSWFZQ.js} +0 -1
  77. package/{chunk-ZURFOV5J.js → chunk-OFZPJ3NT.js} +13 -4
  78. package/{chunk-CHYAYZJH.js → chunk-OSCSEJJR.js} +15 -8
  79. package/{chunk-SCUETSRP.js → chunk-PV734VZX.js} +1 -1
  80. package/{chunk-7E72JMBB.js → chunk-SMPAUSX5.js} +46 -5
  81. package/{chunk-XCCGU6QB.js → chunk-U6QQLXWI.js} +1 -1
  82. package/{chunk-NUO3QFWD.js → chunk-UNHKVD2N.js} +1 -1
  83. package/{chunk-GE6IWA5N.js → chunk-UNZDCI3O.js} +126 -1
  84. package/{chunk-CPYYM4RJ.js → chunk-V5GA74HI.js} +19 -5
  85. package/{chunk-O6W5PZXA.js → chunk-VBD7W4Q6.js} +2057 -212
  86. package/{chunk-RTJWH72P.js → chunk-VD2SO4RG.js} +4 -4
  87. package/{chunk-FXFGNOT2.js → chunk-VFVCYIRQ.js} +1 -1
  88. package/{chunk-7KNERA53.js → chunk-VSA6QAGV.js} +47 -3
  89. package/{chunk-G7E4NWFE.js → chunk-W445DPVT.js} +1 -1
  90. package/{chunk-VH2F7ZB6.js → chunk-WN5AJG5I.js} +1 -1
  91. package/{chunk-KSRFVP36.js → chunk-WRN7L5CS.js} +1 -1
  92. package/{chunk-4C7K5NXX.js → chunk-WRP5TTM6.js} +4 -84
  93. package/chunk-X2K2JSO4.js +163 -0
  94. package/{chunk-OR2HNLVO.js → chunk-X6EN3KJX.js} +279 -477
  95. package/{chunk-IL545V3E.js → chunk-XQES6LXQ.js} +2 -2
  96. package/{chunk-UK5JGQVU.js → chunk-XT73C4VH.js} +26 -21
  97. package/{chunk-RY57GLGW.js → chunk-YPREESF4.js} +42 -5
  98. package/{chunk-YBPAQV37.js → chunk-YRP7LG4R.js} +4527 -4080
  99. package/{chunk-BQXOGBFN.js → chunk-YZ2WE6CW.js} +2 -2
  100. package/{chunk-3WXRAHCG.js → chunk-ZBB3MZR3.js} +3 -3
  101. package/{cliExecutor-DW3PHGEL.js → cliExecutor-BBUVQU4L.js} +2 -2
  102. package/{clipboardy-MMBYVRLF.js → clipboardy-PRUHGPGC.js} +4 -3
  103. package/{codingSkills-DY5MINPG.js → codingSkills-H6N5EKSX.js} +3 -3
  104. package/cooldownCommands-C2SZLEEO.js +90 -0
  105. package/{createAgentAutomationAction-6SE7CQ7F.js → createAgentAutomationAction-BH3D2L2H.js} +28 -30
  106. package/{createDialogAction-AROAXAPM.js → createDialogAction-U4LDV2RW.js} +31 -33
  107. package/{createPageAction-GCO3R6GR.js → createPageAction-Q2ANG535.js} +30 -32
  108. package/{dbSlice-3SD5L5H2.js → dbSlice-PIQGICNM.js} +9 -9
  109. package/{deleteFile-XQXPBFFB.js → deleteFile-NPZ64DFN.js} +4 -4
  110. package/{dialogCommands-N26NNRRD.js → dialogCommands-C556D6WD.js} +37 -36
  111. package/{dialogSlice-JVPBOMFB.js → dialogSlice-P2VSKG2X.js} +27 -27
  112. package/dist-VODFSGNG.js +7442 -0
  113. package/{docCreateCommands-PON6FF4V.js → docCreateCommands-AAVGLQWE.js} +36 -35
  114. package/{docDeleteCommands-WWRFONDS.js → docDeleteCommands-PKMKSQD2.js} +37 -36
  115. package/{docReadCommands-S4Z275LB.js → docReadCommands-2WUH7UXC.js} +36 -35
  116. package/{docStore-WGDO3I76.js → docStore-J5UWRBB4.js} +29 -31
  117. package/{docUpdateCommands-TJQB4IJ7.js → docUpdateCommands-B2N4E5HQ.js} +38 -37
  118. package/{fetchMessages-7QRCCRYK.js → fetchMessages-CUEFN4GQ.js} +4 -4
  119. package/{getPricing-L2ENXWHV.js → getPricing-P3E2WRIH.js} +5 -5
  120. package/{handleSendMessageAction-T7AS7DDY.js → handleSendMessageAction-RRZ53YYH.js} +29 -29
  121. package/index.js +92 -77
  122. package/{localDialogRead-SLMPV5SK.js → localDialogRead-P7CHFMIC.js} +1 -1
  123. package/{localRuntimeAuthority-E3R24J4T.js → localRuntimeAuthority-S77B5QVB.js} +6 -2
  124. package/{localRuntimeDb-DDZCJFQZ.js → localRuntimeDb-N3H3HQ7G.js} +1 -1
  125. package/{machineCommands-C6CPXZRR.js → machineCommands-CWKMJG33.js} +77 -77
  126. package/{machineInfo-M6KB6HZN.js → machineInfo-66ZFUMLE.js} +1 -1
  127. package/{machineWsRunDispatch-27K2P4OP.js → machineWsRunDispatch-UYNVNX4A.js} +69 -69
  128. package/{models-OX2S5C6Q.js → models-L7S2EKPM.js} +2 -2
  129. package/package.json +1 -1
  130. package/{read-6G73BMEY.js → read-6C2XD3YZ.js} +5 -5
  131. package/{readDocTool-DK4EI2GA.js → readDocTool-Y7AB365O.js} +1 -1
  132. package/{readlineWorkspace-LBWKTPJE.js → readlineWorkspace-VYELP22P.js} +2851 -1515
  133. package/{removeDialogAgentAction-E7H557UO.js → removeDialogAgentAction-KG5WMJRZ.js} +13 -13
  134. package/{runAgentClientLoop-D2T2P36H.js → runAgentClientLoop-35GKZDOZ.js} +62 -61
  135. package/{runtimeDoctorCommands-KIKM6BIO.js → runtimeDoctorCommands-HT4O2PXL.js} +6 -6
  136. package/{setDialogExtraReferencesAction-RMMGBR5F.js → setDialogExtraReferencesAction-O2NLXMSM.js} +10 -10
  137. package/{setPrimaryDialogAgentAction-FWBKKLVA.js → setPrimaryDialogAgentAction-FYYUY7PB.js} +13 -13
  138. package/{settingSlice-73PV4KG4.js → settingSlice-GPLI6E3M.js} +11 -11
  139. package/{skillDiscovery-KLLKXPUO.js → skillDiscovery-COX56OBO.js} +3 -3
  140. package/{slateUtils-VO2FU36K.js → slateUtils-RIZES3PV.js} +1 -1
  141. package/{spaceCommands-B6LO4U5R.js → spaceCommands-AAKQM2PM.js} +223 -37
  142. package/{spaceSlice-VUAEZVDS.js → spaceSlice-NSNGR4Y2.js} +28 -30
  143. package/{streamAgentChatTurn-BBPSFMTZ.js → streamAgentChatTurn-D5IDHXMV.js} +116 -129
  144. package/{switchDialogAgentAction-US6QNL3N.js → switchDialogAgentAction-GH5P6Q3Z.js} +9 -9
  145. package/{chunk-IDAU4UFS.js → syncMapping-N6RGXGBW.js} +11 -11
  146. package/{tableCommands-QE47K72R.js → tableCommands-PQUJ55AS.js} +3 -3
  147. package/{tools-NWA3J7KE.js → tools-JQOETZP5.js} +44 -45
  148. package/{tuiSummaryLlmCaller-KC7JCJBB.js → tuiSummaryLlmCaller-LH7F2SP7.js} +18 -18
  149. package/{updateCommands-AK2RDOFR.js → updateCommands-MNDUIKN7.js} +2 -2
  150. package/{updateDialogTitleAction-TDDQ4J4L.js → updateDialogTitleAction-WOTSDSFQ.js} +31 -33
  151. package/agentRecordCommands-FCQ7ZF6C.js +0 -113
  152. package/chunk-5SBK2MTI.js +0 -528
  153. package/chunk-M3JEW6N6.js +0 -193
  154. package/chunk-OOK2ZT5F.js +0 -1800
  155. package/syncMapping-RK2MANUX.js +0 -43
  156. package/{chunk-KMSZPTM6.js → chunk-2WKUUY2E.js} +3 -3
  157. package/{chunk-CWMSB67P.js → chunk-AGGIDPCZ.js} +0 -0
  158. package/{chunk-SAQQLJZ5.js → chunk-JDSUTNYY.js} +3 -3
package/chunk-5SBK2MTI.js DELETED
@@ -1,528 +0,0 @@
1
- import {
2
- isImageUrlPart
3
- } from "./chunk-NNWHHCVP.js";
4
- import {
5
- canonicalizeToolNames
6
- } from "./chunk-ZZ2MH7LE.js";
7
- import {
8
- asTrimmedLowercaseString
9
- } from "./chunk-QSJ3HFEF.js";
10
- import {
11
- asTrimmedString
12
- } from "./chunk-3EUW3WEO.js";
13
-
14
- // packages/agent-runtime/identityBlock.ts
15
- var buildIdentityBlock = (input) => {
16
- const lines = [
17
- "--- \u8EAB\u4EFD\u4FE1\u606F ---",
18
- asTrimmedString(input.agentName) ? `\u540D\u79F0: ${asTrimmedString(input.agentName)}` : "",
19
- asTrimmedString(input.agentId) ? `ID: ${asTrimmedString(input.agentId)}` : "",
20
- asTrimmedString(input.model) ? `\u6A21\u578B: ${asTrimmedString(input.model)}` : ""
21
- ].filter(Boolean);
22
- return lines.join("\n");
23
- };
24
-
25
- // packages/agent-runtime/contextLayerContract.ts
26
- var buildContextLayerContractBlock = (options = {}) => {
27
- const lines = [
28
- "--- \u77E5\u8BC6\u5B58\u50A8\u7EA6\u5B9A ---",
29
- "\u4E0D\u8981\u628A\u6240\u6709\u4FE1\u606F\u585E\u8FDB\u540C\u4E00\u5C42\uFF0C\u5408\u7406\u5229\u7528\u5206\u5C42\u8FB9\u754C\uFF1A",
30
- "1. memory layer\uFF1A\u77ED\u5230\u4E2D\u671F\u3001\u53EF\u590D\u7528\u4F46\u4E0D\u5FC5\u6C38\u4E45\u6302\u8F7D\u7684\u504F\u597D\u3001\u8FD1\u671F\u5171\u8BC6\u4E0E\u7ECF\u9A8C\uFF08\u77ED\u3001\u53EF\u68C0\u7D22\u3001\u53EF\u66FF\u6362\uFF09\u3002",
31
- "2. knowledge layer\uFF1A\u7A33\u5B9A\u89C4\u5219\u3001\u957F\u671F\u6709\u6548\u4E8B\u5B9E\u4E0E\u6BCF\u8F6E\u4F9D\u8D56\u7684\u8BF4\u660E\uFF08\u901A\u8FC7 prompt / references \u81EA\u52A8\u52A0\u8F7D\uFF09\u3002",
32
- "3. doc layer\uFF1A\u9700\u8DE8\u8F6E\u6B21\u7EF4\u62A4\u7684\u5916\u90E8\u5DE5\u4F5C\u53F0\uFF08runbook\u3001mission\u3001incident\u3001checkpoint\u3001idea backlog\u3001experiment log \u7B49\uFF0C\u663E\u5F0F\u6309\u9700\u8BFB\u5199\uFF09\u3002",
33
- "",
34
- "\u5199\u5165\u539F\u5219\uFF1A",
35
- "- \u4E34\u65F6\u6B65\u9AA4\u3001\u539F\u59CB\u957F\u65E5\u5FD7\u3001\u4E00\u6B21\u6027\u601D\u8DEF\u4E0D\u8981\u76F4\u63A5\u5199\u8FDB memory \u6216 knowledge\u3002",
36
- "- \u7A33\u5B9A\u89C4\u5219\u6C89\u6DC0\u5230 knowledge\uFF0C\u53EF\u590D\u7528\u504F\u597D/\u5171\u8BC6\u6C89\u6DC0\u5230 memory\uFF0C\u8DE8\u8F6E\u63A5\u529B\u72B6\u6001/\u6587\u6863\u5199\u5165 doc\u3002"
37
- ];
38
- if (options.hasRememberMemoryTool) {
39
- lines.push(
40
- "- \u9047\u5230\u5BF9\u672A\u6765\u660E\u663E\u6709\u5E2E\u52A9\u7684\u504F\u597D/\u5171\u8BC6\u65F6\u8C03\u7528 rememberMemory\uFF08\u5199\u6210\u7B80\u6D01\u53EF\u590D\u7528\u7684\u4E00\u53E5\u8BDD\uFF1B\u7ED1\u5B9A space \u4E14\u5C5E\u5171\u4EAB\u89C4\u5219\u65F6\u4F20 scope=space\uFF0C\u8BB0\u4E3A space memory\uFF09\u3002"
41
- );
42
- }
43
- if (options.hasDocTools) {
44
- lines.push(
45
- "- \u4EFB\u52A1\u9700 24h \u8FDE\u7EED\u8FD0\u884C\u3001\u8DE8 dialog \u63A5\u529B\u6216\u5171\u8BFB\u65F6\uFF0C\u4F18\u5148\u628A mission / runbook / incident / checkpoint / idea backlog / experiment log \u5199\u5165 doc layer\u3002"
46
- );
47
- }
48
- return lines.join("\n");
49
- };
50
-
51
- // packages/agent-runtime/startupProtocol.ts
52
- var buildStartupProtocolBlock = (options = {}) => {
53
- const lines = [
54
- "--- \u542F\u52A8\u534F\u8BAE ---",
55
- "\u542F\u52A8\u987A\u5E8F\uFF1A",
56
- "1. \u5148\u8BFB\u53D6 policy / knowledge\uFF1A\u4F60\u7684\u6838\u5FC3 prompt\u3001\u81EA\u52A8\u52A0\u8F7D\u7684 references\u3001\u4EE5\u53CA\u7528\u6237\u7B56\u7565\u7EA6\u675F\u3002",
57
- "2. \u518D\u63D0\u70BC current mission\uFF1A\u4F18\u5148\u4ECE\u5F53\u524D\u7528\u6237\u8F93\u5165\u548C\u5F53\u524D\u8F93\u5165\u4E0A\u4E0B\u6587\u91CC\u786E\u8BA4\u672C\u8F6E\u76EE\u6807\u3001\u4EA4\u4ED8\u7269\u548C\u505C\u6B62\u6761\u4EF6\u3002",
58
- "3. \u518D\u5438\u6536 recent memory\uFF1A\u7ED3\u5408 Memory Overlay\u3001\u5386\u53F2\u6458\u8981\u3001\u6700\u8FD1\u5DE5\u4F5C\u8BB0\u5FC6\u548C\u5FC5\u8981\u7684\u5386\u53F2\u5F15\u7528\uFF0C\u53EA\u4FDD\u7559\u5BF9\u672C\u8F6E\u771F\u6B63\u6709\u5E2E\u52A9\u7684\u90E8\u5206\u3002",
59
- "4. \u9700\u8981\u65F6\u518D\u8BFB\u53D6 doc\uFF1A\u5982\u679C\u4EFB\u52A1\u6D89\u53CA\u8DE8\u8F6E\u6B21\u63A5\u529B\u3001\u8FD0\u884C\u624B\u518C\u6216\u5171\u4EAB\u5DE5\u4F5C\u53F0\uFF0C\u8BFB\u53D6\u76F8\u5173 doc \u83B7\u53D6\u6700\u65B0\u72B6\u6001\u3002",
60
- "",
61
- "\u5728\u7B2C\u4E00\u6B21\u5DE5\u5177\u8C03\u7528\u524D\uFF0C\u5148\u5F62\u6210\u4E00\u4EFD\u5185\u90E8 working state\uFF0C\u81F3\u5C11\u5305\u542B\uFF1A",
62
- "- current_goal\uFF1A\u8FD9\u4E00\u8F6E\u771F\u6B63\u8981\u5B8C\u6210\u4EC0\u4E48",
63
- "- constraints\uFF1A\u5F53\u524D\u7EA6\u675F\u3001\u504F\u597D\u3001\u8FB9\u754C\u6761\u4EF6",
64
- "- missing_facts\uFF1A\u8FD8\u7F3A\u54EA\u4E9B\u4E8B\u5B9E\u624D\u80FD\u5B89\u5168\u884C\u52A8",
65
- "- next_action\uFF1A\u4E0B\u4E00\u6B65\u6700\u5C0F\u4E14\u9AD8\u4EF7\u503C\u7684\u52A8\u4F5C",
66
- "",
67
- "\u51B3\u7B56\u89C4\u5219\uFF1A",
68
- "- policy / knowledge \u8DB3\u591F\u56DE\u7B54\u65F6\u76F4\u63A5\u56DE\u7B54\uFF0C\u4E0D\u8981\u4E3A\u4E86\u663E\u5F97\u5FD9\u800C\u4E71\u8C03\u7528\u5DE5\u5177\u3002",
69
- "- recent memory \u4E0E\u7528\u6237\u8F93\u5165\u51B2\u7A81\u65F6\uFF0C\u4EE5\u5F53\u524D\u7528\u6237\u8F93\u5165\u4E3A\u51C6\u3002",
70
- "- \u4F9D\u8D56\u5916\u90E8\u73AF\u5883\u3001\u6587\u4EF6\u6216\u4E8B\u5B9E\u65F6\u5148\u9A8C\u8BC1\u518D\u884C\u52A8\uFF1B\u5C0F\u6B65\u63A8\u8FDB\uFF0C\u6BCF\u8F6E\u505A\u6700\u80FD\u964D\u4F4E\u4E0D\u786E\u5B9A\u6027\u7684\u52A8\u4F5C\u3002"
71
- ];
72
- if (options.hasCheckEnvTool || options.hasExecShellTool) {
73
- lines.push(
74
- "- \u4EFB\u52A1\u6D89\u53CA\u547D\u4EE4\u6267\u884C\u3001shell \u8BED\u6CD5\u3001\u8DEF\u5F84\u7EA6\u5B9A\u6216\u670D\u52A1\u72B6\u6001\u4E14\u4E8B\u5B9E\u4E0D\u660E\u786E\u65F6\uFF0C\u5148\u786E\u8BA4\u73AF\u5883\u3002"
75
- );
76
- }
77
- if (options.hasCheckEnvTool) {
78
- lines.push(
79
- "- \u73AF\u5883\u4E0D\u660E\u786E\u65F6\uFF0C\u4F18\u5148\u8C03\u7528 checkEnv({ check: 'context' })\uFF0C\u518D\u51B3\u5B9A\u540E\u7EED\u547D\u4EE4\u548C\u5DE5\u5177\u8DEF\u5F84\u3002"
80
- );
81
- }
82
- if (options.hasExecShellTool) {
83
- lines.push(
84
- "- \u6267\u884C\u547D\u4EE4\u65F6\u6839\u636E\u73AF\u5883\u9009 shell\uFF08Windows \u9ED8\u8BA4 PowerShell\uFF0CLinux/macOS \u9ED8\u8BA4 bash\uFF09\uFF1B\u6536\u96C6\u591A\u4E2A\u53EA\u8BFB\u4E8B\u5B9E\u4F18\u5148\u5408\u5E76\u4E3A\u4E00\u6B21 shell \u590D\u5408\u8C03\u7528\uFF0C\u907F\u514D\u62C6\u6210\u7EC6\u788E\u63A2\u9488\u3002"
85
- );
86
- }
87
- return lines.join("\n");
88
- };
89
-
90
- // packages/agent-runtime/runtimeGuidance.ts
91
- var normalizeToolName = (name) => name.replace(/[-_]/g, "").toLowerCase();
92
- var hasAnyTool = (normalizedTools, candidates) => candidates.some((candidate) => normalizedTools.has(normalizeToolName(candidate)));
93
- var hasAllTools = (normalizedTools, candidates) => candidates.every((candidate) => normalizedTools.has(normalizeToolName(candidate)));
94
- var buildEmailRegistrationWorkflowBlock = (enabled) => {
95
- if (!enabled) return "";
96
- return [
97
- "--- \u90AE\u7BB1\u9A8C\u8BC1\u7801\u6CE8\u518C\u6D41\u7A0B ---",
98
- "\u5F53\u7528\u6237\u8981\u6C42\u4F60\u6CE8\u518C\u7F51\u7AD9\u8D26\u53F7\u65F6\uFF0C\u53EA\u5141\u8BB8\u5904\u7406\u7528\u6237\u660E\u786E\u6307\u5B9A\u7684\u5F53\u524D\u76EE\u6807\u7F51\u7AD9\uFF0C\u4E0D\u8981\u81EA\u884C\u6269\u5C55\u5230\u5176\u4ED6\u7F51\u7AD9\u3001\u6279\u91CF\u6CE8\u518C\u6216\u89C4\u907F\u5E73\u53F0\u98CE\u63A7\u3002",
99
- "",
100
- "\u5206\u9636\u6BB5\u534F\u8BAE\uFF1Adiscover before acting -> assess supportability -> register -> verify -> closeout\u3002",
101
- "",
102
- "\u63A8\u8350\u6D41\u7A0B\uFF1A",
103
- "1. discover before acting\uFF1A\u5148\u7528 browser_openSession / browser_readContent \u9605\u8BFB\u9875\u9762\uFF0C\u786E\u8BA4\u76EE\u6807\u6CE8\u518C\u9875 URL\u3001\u8D26\u53F7\u7528\u9014\u3001\u5FC5\u586B\u9879\u548C\u505C\u6B62\u6761\u4EF6\uFF1B\u4E0D\u8981\u4E00\u6253\u5F00\u9875\u9762\u5C31\u76F2\u70B9\u6309\u94AE\u3002\u5982\u679C\u7F3A\u5C11\u76EE\u6807\u7F51\u7AD9\uFF0C\u5148\u8BE2\u95EE\u7528\u6237\u3002",
104
- "2. assess supportability\uFF1A\u5148\u5224\u65AD\u8BE5\u6D41\u7A0B\u662F\u5426\u652F\u6301\u5F53\u524D\u53D7\u63A7\u81EA\u52A8\u5316\u3002\u9047\u5230 CAPTCHA\u3001\u624B\u673A\u53F7\u9A8C\u8BC1\u3001\u652F\u4ED8\u3001\u8EAB\u4EFD/KYC\u3001OAuth-only\u3001\u670D\u52A1\u6761\u6B3E\u786E\u8BA4\u3001\u6216\u4EFB\u4F55\u770B\u8D77\u6765\u50CF\u89C4\u907F\u98CE\u63A7\u7684\u6B65\u9AA4\u65F6\uFF0C\u5FC5\u987B\u7ACB\u5373\u505C\u6B62\u5E76\u5411\u7528\u6237\u8BF4\u660E blockingReason\uFF1B\u4E0D\u8981\u786C\u95EF\u3002",
105
- "3. register\uFF1A\u53EA\u6709\u5728\u786E\u8BA4\u652F\u6301\u540E\uFF0C\u624D\u4F7F\u7528 email_provision_identity \u4E3A\u5F53\u524D agent \u751F\u6210\u53D7\u63A7\u57DF\u540D\u90AE\u7BB1\u8EAB\u4EFD\uFF0C\u518D\u4F7F\u7528 browser_openSession / browser_typeText / browser_click / browser_readContent \u586B\u5199\u5E76\u63D0\u4EA4\u6CE8\u518C\u8868\u5355\u3002",
106
- "4. verify\uFF1A\u63D0\u4EA4\u540E\u4F7F\u7528 email_wait_for \u7B49\u5F85\u8BE5 agent \u6536\u4EF6\u7BB1\u91CC\u7684\u9A8C\u8BC1\u90AE\u4EF6\uFF0C\u518D\u7528 email_extract_verification \u63D0\u53D6\u9A8C\u8BC1\u7801\u6216\u9A8C\u8BC1\u94FE\u63A5\uFF0C\u56DE\u586B\u9A8C\u8BC1\u7801\u6216\u6253\u5F00\u9A8C\u8BC1\u94FE\u63A5\u5B8C\u6210\u9A8C\u8BC1\u3002",
107
- "5. closeout\uFF1A\u65E0\u8BBA\u6210\u529F\u8FD8\u662F\u5931\u8D25\u90FD\u8981 always close sessions\uFF0C\u4E3B\u52A8\u6E05\u7406\u6D4F\u89C8\u5668\u4F1A\u8BDD\uFF08\u4F8B\u5982 browser_closeSession\uFF09\u3002\u5982\u679C\u6D41\u7A0B\u5931\u8D25\uFF0C\u5FC5\u987B\u660E\u786E failedStage \u4E0E blockingReason\uFF0C\u5E76\u8BF4\u660E\u53EF\u6062\u590D\u9009\u9879\uFF1B\u4E0D\u8981\u76F2\u76EE\u5C1D\u8BD5\u65E0\u5173\u7F51\u7AD9\u6216\u7ED5\u8FC7\u9A8C\u8BC1\u3002",
108
- "6. \u6700\u7EC8\u53EA\u5728\u5BF9\u8BDD\u4E2D\u8FD4\u56DE\u8D26\u53F7\u3001\u90AE\u7BB1\u548C\u4E00\u6B21\u6027\u751F\u6210\u7684\u5BC6\u7801\uFF1B\u4E0D\u8981\u6301\u4E45\u5316\u5BC6\u7801\uFF0C\u4E0D\u8981\u5199\u5165 agent metadata\u3001\u6570\u636E\u5E93\u3001\u6587\u6863\u6216\u8BB0\u5FC6\u3002",
109
- "",
110
- "\u5FC5\u987B\u6682\u505C\u5E76\u8BE2\u95EE\u7528\u6237\u7684\u60C5\u51B5\uFF1ACAPTCHA\u3001\u624B\u673A\u53F7\u9A8C\u8BC1\u3001\u652F\u4ED8\u3001\u8EAB\u4EFD/KYC\u3001OAuth \u6388\u6743\u3001OAuth-only\u3001\u670D\u52A1\u6761\u6B3E\u786E\u8BA4\u3001\u6216\u4EFB\u4F55\u770B\u8D77\u6765\u50CF\u89C4\u907F\u98CE\u63A7\u7684\u6B65\u9AA4\u3002",
111
- "\u5982\u679C\u6D41\u7A0B\u5931\u8D25\uFF0C\u8BF4\u660E failedStage\u3001blockingReason \u548C\u53EF\u6062\u590D\u9009\u9879\uFF0C\u4E0D\u8981\u76F2\u76EE\u5C1D\u8BD5\u65E0\u5173\u7F51\u7AD9\u6216\u7ED5\u8FC7\u9A8C\u8BC1\u3002"
112
- ].join("\n");
113
- };
114
- var buildWebResearchToolPolicyBlock = (hasExecShellTool, hasFetchWebpageTool) => {
115
- if (!hasExecShellTool || !hasFetchWebpageTool) return "";
116
- return [
117
- "--- \u751F\u4EA7\u73AF\u5883\u7F51\u9875\u7814\u7A76\u5DE5\u5177\u7B56\u7565 ---",
118
- "\u751F\u4EA7\u73AF\u5883\u7F51\u9875\u7814\u7A76\u4F18\u5148\u4F7F\u7528 fetchWebpage\u3001\u7AD9\u70B9 Markdown / llms.txt\u3001\u6216\u4E13\u7528\u6D4F\u89C8/\u641C\u7D22\u5DE5\u5177\u3002",
119
- "\u4E0D\u8981\u7528 execShell \u8C03 curl\u3001grep\u3001sed \u7B49\u547D\u4EE4\u6293\u7F51\u9875\u6216\u622A\u53D6\u7F51\u9875\u6BB5\u843D\uFF1B\u751F\u4EA7\u73AF\u5883\u901A\u5E38\u4F1A\u7981\u7528 dev shell\uFF0C\u53CD\u590D\u5C1D\u8BD5\u53EA\u4F1A\u6D6A\u8D39\u56DE\u5408\u3002",
120
- "\u5982\u679C\u7F51\u9875\u5185\u5BB9\u8FC7\u957F\u6216\u951A\u70B9\u6BB5\u843D\u6CA1\u6709\u88AB\u5355\u72EC\u63D0\u53D6\uFF0C\u5148\u5BFB\u627E\u8BE5\u6587\u6863\u7AD9\u63D0\u4F9B\u7684 Markdown \u7248\u672C\u3001\u72EC\u7ACB\u9875\u9762\u3001llms.txt \u7D22\u5F15\u6216\u66F4\u5177\u4F53 URL\uFF0C\u518D\u7EE7\u7EED\u56DE\u7B54\u3002"
121
- ].join("\n");
122
- };
123
- var resolveRuntimeGuidanceToolOptions = (tools = []) => {
124
- const normalizedTools = canonicalizeToolNames(tools);
125
- const normalizedToolSet = new Set(normalizedTools.map(normalizeToolName));
126
- const hasBrowserTools = hasAllTools(normalizedToolSet, [
127
- "browser_openSession",
128
- "browser_readContent",
129
- "browser_typeText",
130
- "browser_click",
131
- "browser_closeSession"
132
- ]);
133
- const hasBrowserProbe = hasAnyTool(normalizedToolSet, ["browser_probePage", "browserProbePage"]);
134
- const hasEmailRegistrationTools = hasAllTools(normalizedToolSet, [
135
- "email_provision_identity",
136
- "email_wait_for",
137
- "email_extract_verification"
138
- ]);
139
- return {
140
- hasCheckEnvTool: normalizedTools.includes("checkEnv"),
141
- hasExecShellTool: normalizedTools.includes("execShell"),
142
- hasRememberMemoryTool: normalizedTools.includes("rememberMemory"),
143
- hasDocTools: normalizedTools.some(
144
- (tool) => ["read", "readDoc", "readPage", "createDoc", "updateDoc"].includes(tool)
145
- ),
146
- hasBrowserTools,
147
- hasEmailRegistrationTools,
148
- // Require browser_probePage to be present before enabling email registration workflow guidance.
149
- hasEmailRegistrationWorkflow: hasBrowserTools && hasBrowserProbe && hasEmailRegistrationTools
150
- };
151
- };
152
- var buildRuntimeGuidanceBlocks = (tools = []) => {
153
- const options = resolveRuntimeGuidanceToolOptions(tools);
154
- const normalizedTools = canonicalizeToolNames(tools);
155
- return {
156
- startupProtocol: buildStartupProtocolBlock({
157
- hasCheckEnvTool: options.hasCheckEnvTool,
158
- hasExecShellTool: options.hasExecShellTool
159
- }),
160
- contextLayerContract: buildContextLayerContractBlock({
161
- hasRememberMemoryTool: options.hasRememberMemoryTool,
162
- hasDocTools: options.hasDocTools
163
- }),
164
- emailRegistrationWorkflow: buildEmailRegistrationWorkflowBlock(
165
- options.hasEmailRegistrationWorkflow
166
- ),
167
- webResearchToolPolicy: buildWebResearchToolPolicyBlock(
168
- options.hasExecShellTool,
169
- normalizedTools.includes("fetchWebpage")
170
- )
171
- };
172
- };
173
-
174
- // packages/agent-runtime/menuUsage.ts
175
- var MENU_USAGE_INSTRUCTIONS = `--- \u4EA4\u4E92\u8BF4\u660E ---
176
- \u6240\u6709\u7528\u6237\u8F93\u5165\u5747\u4E3A\u7EAF\u6587\u672C\u6D88\u606F\uFF0C\u76F4\u63A5\u7406\u89E3\u5373\u53EF\uFF0C\u4E0D\u8981\u5728\u56DE\u590D\u4E2D\u63D0\u53CA\u6309\u94AE\u3001\u83DC\u5355\u3001\u754C\u9762\u7B49 UI \u5143\u7D20\u3002
177
-
178
- ## \u4F55\u65F6\u8C03\u7528 ask_user
179
- \u9ED8\u8BA4\u503E\u5411"\u76F4\u63A5\u884C\u52A8"\uFF1A\u5F53\u4F60\u80FD\u57FA\u4E8E\u73B0\u6709\u4E0A\u4E0B\u6587\u7ED9\u51FA\u9AD8\u8D28\u91CF\u7B54\u6848\u6216\u6267\u884C\u65F6\uFF0C\u4F18\u5148\u76F4\u63A5\u505A\uFF0C\u4E0D\u8981\u4E3A\u4E86\u95EE\u800C\u95EE\u3002\u4EC5\u5728\u4EE5\u4E0B\u60C5\u51B5\u8C03\u7528 ask_user\uFF1A
180
- 1\uFF09\u7528\u6237\u9700\u6C42\u5BBD\u6CDB\u6216\u6A21\u7CCA\uFF0C\u4E14\u4F60\u80FD\u7ED9\u51FA 2\uFF5E5 \u4E2A\u4E92\u65A5\u3001\u90FD\u5408\u7406\u7684\u65B9\u5411\u5019\u9009\u2014\u2014\u8BA9\u7528\u6237\u5148\u9009\u4E00\u4E2A\u65B9\u5411\u518D\u6DF1\u5165\uFF1B
181
- 2\uFF09\u8BA1\u5212/\u6D41\u7A0B\u5230\u4E86\u771F\u6B63\u7684\u5206\u652F\u8282\u70B9\uFF0C\u4E0D\u540C\u9009\u62E9\u4F1A\u5BFC\u81F4\u663E\u8457\u4E0D\u540C\u7684\u6210\u672C\u3001\u9690\u79C1\u6216\u7ED3\u679C\u8D70\u5411\uFF0C\u4E14\u4F60\u65E0\u6CD5\u4ECE\u4E0A\u4E0B\u6587\u63A8\u65AD\u7528\u6237\u504F\u597D\uFF1B
182
- 3\uFF09\u65B0\u4F1A\u8BDD\u5F00\u5934\uFF0C\u6839\u636E\u7528\u6237\u753B\u50CF\u7ED9\u51FA\u82E5\u5E72"\u63A5\u4E0B\u6765\u53EF\u4EE5\u5C1D\u8BD5\u7684\u4E8B\u60C5"\u4F5C\u4E3A\u529F\u80FD\u5BFC\u822A\u6216\u4F7F\u7528\u5F15\u5BFC\u3002
183
-
184
- ## \u8C03\u7528 ask_user \u7684\u89C4\u8303
185
- - \u8C03\u7528\u524D\u5FC5\u987B\u5148\u5728\u666E\u901A\u56DE\u590D\u6587\u672C\u91CC\u5199\u6E05\u80CC\u666F\u3001\u7406\u7531\u6216\u6743\u8861\uFF08\u5148\u89E3\u91CA\uFF0C\u518D\u8C03\u7528\u5DE5\u5177\uFF09\uFF1B
186
- - \u63D0\u4F9B 2\uFF5E5 \u4E2A\u4E92\u65A5\u9009\u9879\uFF1B\u5982\u679C\u4F60\u6709\u63A8\u8350\u65B9\u5411\uFF0C\u628A\u5B83\u653E\u5728 choices \u7684\u7B2C\u4E00\u4F4D\uFF0C\u5E76\u7ED9\u8BE5\u9009\u9879\u6807 recommended: true\uFF1B
187
- - \u82E5\u6CA1\u6709\u660E\u786E\u7684\u63A8\u8350\u9879\uFF0C\u5FC5\u987B\u5728\u8C03\u7528\u524D\u7684\u666E\u901A\u56DE\u590D\u6587\u672C\u91CC\u7B80\u8981\u8BF4\u660E\u6BCF\u4E2A\u9009\u9879\u7684\u4F18\u7F3A\u70B9\uFF08\u6216\u5404\u9009\u9879\u7684\u5173\u952E\u5DEE\u5F02\uFF09\uFF0C\u5E2E\u52A9\u7528\u6237\u6743\u8861\uFF0C\u800C\u4E0D\u662F\u53EA\u5217\u51FA\u9009\u9879\u5C31\u5B8C\u4E8B\uFF1B
188
- - \u9009\u9879\u53EA\u627F\u8F7D\u9002\u5EA6\u4FE1\u606F\uFF1Alabel \u4E3A\u7B80\u77ED\u6309\u94AE\u6587\u6848\uFF1Bdetail \u4E3A\u53EF\u9009\u3001\u81F3\u591A\u4E00\u53E5\u8BDD\u7684\u7B80\u77ED\u8865\u5145\uFF1B\u7981\u6B62\u628A\u957F\u6BB5\u89E3\u91CA\u6216\u6743\u8861\u585E\u8FDB choices/detail\uFF1B
189
- - \u6BCF\u4E2A\u9009\u9879\u7684 userMessage \u5199\u6210\u5B8C\u6574\u7684\u4E0B\u4E00\u53E5\u8BDD\uFF0C\u65B9\u4FBF\u7528\u6237\u70B9\u51FB\u540E\u4E0A\u4E0B\u6587\u8FDE\u8D2F\uFF1B
190
- - \u4E0D\u8981\u5728\u9009\u9879\u5217\u8868\u91CC\u653E"\u5176\u4ED6/Other"\u2014\u2014\u5BA2\u6237\u7AEF\u4F1A\u81EA\u52A8\u4E3A\u7528\u6237\u8FFD\u52A0\u81EA\u7531\u8F93\u5165\u7684\u9000\u8DEF\uFF1B
191
- - \u628A\u8981\u95EE\u7528\u6237\u7684\u95EE\u9898\u5199\u5728 question \u5B57\u6BB5\u91CC\uFF0C\u4E0D\u8981\u5728\u540C\u4E00\u8F6E assistant \u666E\u901A\u6587\u672C\u91CC\u91CD\u590D\u8FD9\u53E5\u8BDD\uFF08\u89E3\u91CA\u80CC\u666F\u4E0E\u6743\u8861\u2260\u91CD\u590D\u95EE\u9898\u53E5\uFF09\uFF1B
192
- - \u5982\u679C\u7528\u6237\u7684\u76EE\u6807\u5DF2\u7ECF\u975E\u5E38\u5177\u4F53\u6E05\u6670\uFF0C\u5373\u4FBF\u4E0A\u8FF0\u6761\u4EF6\u770B\u4F3C\u6EE1\u8DB3\uFF0C\u4E5F\u4F18\u5148\u76F4\u63A5\u56DE\u7B54\uFF0C\u4E0D\u8981\u5F3A\u884C\u5F39\u9009\u62E9\u83DC\u5355\u3002`;
193
-
194
- // packages/ai/agent/pageBuilderHandoffRules.ts
195
- var PAGE_BUILDER_AGENT_PUBLIC_KEY = "agent-pub-01PAGEBUILDR00000000FT7R9G";
196
- var PAGE_BUILDER_SCENARIOS = [
197
- {
198
- id: "information-display",
199
- label: "\u4FE1\u606F\u5C55\u793A",
200
- userIntent: "\u4E3B\u9875\u3001\u4EA7\u54C1\u4ECB\u7ECD\u3001\u670D\u52A1\u4ECB\u7ECD\u3001\u4F5C\u54C1\u96C6\u3001\u6D3B\u52A8\u9875\u3001\u62A5\u4EF7\u9875",
201
- prompt: "\u5E2E\u6211\u505A\u4E00\u4E2A\u72EC\u7ACB AI \u4EA7\u54C1\u987E\u95EE\u7684\u4E2A\u4EBA\u4E3B\u9875\u3002\u8981\u770B\u8D77\u6765\u4E13\u4E1A\uFF0C\u5305\u542B\u4E2A\u4EBA\u5B9A\u4F4D\u3001\u80FD\u63D0\u4F9B\u7684\u670D\u52A1\u5361\u7247\u3001\u4EE3\u8868\u6210\u679C\u5361\u7247\u3001\u53EF\u4FE1\u80CC\u4E66\u548C\u8054\u7CFB\u5408\u4F5C\u6309\u94AE\u3002"
202
- },
203
- {
204
- id: "data-analysis",
205
- label: "\u6570\u636E\u5206\u6790",
206
- userIntent: "\u65E5\u62A5\u3001\u5468\u62A5\u3001\u7ECF\u8425\u770B\u677F\u3001\u8D28\u68C0\u62A5\u544A\u3001\u9500\u552E\u6F0F\u6597\u3001\u53CD\u9988\u5206\u6790",
207
- prompt: "\u5E2E\u6211\u505A\u4E00\u4E2A AI \u5BA2\u670D\u8D28\u68C0\u65E5\u62A5\uFF0C\u5305\u542B\u6838\u5FC3\u6307\u6807\u3001\u8FD1 7 \u5929\u98CE\u9669\u8D8B\u52BF\u3001\u5F02\u5E38\u4F1A\u8BDD\u660E\u7EC6\u8868\uFF0C\u4EE5\u53CA\u660E\u5929\u9700\u8981\u8DDF\u8FDB\u7684\u5EFA\u8BAE\u3002"
208
- },
209
- {
210
- id: "process-guide",
211
- label: "\u6D41\u7A0B\u8BF4\u660E",
212
- userIntent: "\u6559\u7A0B\u3001SOP\u3001onboarding\u3001\u64CD\u4F5C\u6307\u5357\u3001\u8BFE\u7A0B\u6B65\u9AA4\u3001\u7533\u8BF7\u6D41\u7A0B",
213
- prompt: "\u5E2E\u6211\u505A\u4E00\u4E2A\u65B0\u5458\u5DE5\u4F7F\u7528 CRM \u7684\u4EA4\u4E92\u6559\u7A0B\u9875\u9762\uFF0C\u5305\u542B\u5B66\u4E60\u76EE\u6807\u3001\u64CD\u4F5C\u6B65\u9AA4\u3001\u793A\u4F8B\u7EC3\u4E60\u3001\u68C0\u67E5\u6E05\u5355\u548C\u4E0B\u4E00\u6B65\u6309\u94AE\u3002"
214
- },
215
- {
216
- id: "decision-comparison",
217
- label: "\u51B3\u7B56\u6BD4\u8F83",
218
- userIntent: "\u65B9\u6848\u5BF9\u6BD4\u3001\u4EA7\u54C1\u9009\u578B\u3001\u5019\u9009\u4EBA\u5BF9\u6BD4\u3001\u7ADE\u54C1\u5206\u6790\u3001\u91C7\u8D2D\u5EFA\u8BAE",
219
- prompt: "\u5E2E\u6211\u505A\u4E00\u4E2A\u4E09\u6B3E CRM \u65B9\u6848\u5BF9\u6BD4\u9875\uFF0C\u5305\u542B\u5BF9\u6BD4\u7EF4\u5EA6\u8868\u683C\u3001\u6BCF\u4E2A\u65B9\u6848\u7684\u4F18\u7F3A\u70B9\u5361\u7247\u3001\u8BC4\u5206\u3001\u9002\u5408\u56E2\u961F\u7C7B\u578B\u548C\u6700\u7EC8\u63A8\u8350\u3002"
220
- },
221
- {
222
- id: "plan-roadmap",
223
- label: "\u8BA1\u5212\u6392\u5E03",
224
- userIntent: "\u9879\u76EE\u8BA1\u5212\u3001\u5B66\u4E60\u8BA1\u5212\u3001\u5065\u8EAB\u8BA1\u5212\u3001\u5185\u5BB9\u65E5\u5386\u3001\u53D1\u5E03\u8282\u594F",
225
- prompt: "\u5E2E\u6211\u505A\u4E00\u4E2A 30 \u5929\u5185\u5BB9\u53D1\u5E03\u8BA1\u5212\u9875\u9762\uFF0C\u5305\u542B\u9636\u6BB5\u76EE\u6807\u3001\u6BCF\u5468\u4EFB\u52A1\u3001\u4F18\u5148\u7EA7\u3001\u91CC\u7A0B\u7891\u5361\u7247\u548C\u98CE\u9669\u63D0\u9192\u3002"
226
- },
227
- {
228
- id: "mixed-pitch",
229
- label: "\u6DF7\u5408\u957F\u5C3E",
230
- userIntent: "\u6C47\u62A5\u9875\u3001\u878D\u8D44\u6750\u6599\u3001\u590D\u6742\u9879\u76EE\u6982\u89C8\uFF0C\u6DF7\u5408\u5C55\u793A\u3001\u6570\u636E\u3001\u8BA1\u5212\u3001\u5BF9\u6BD4",
231
- prompt: "\u7ED9\u4E00\u4E2A\u65E9\u671F AI \u5BA2\u670D\u521B\u4E1A\u9879\u76EE\u505A\u4E00\u9875\u878D\u8D44\u6C47\u62A5\u9875\uFF0C\u5305\u542B\u5E02\u573A\u673A\u4F1A\u3001\u5173\u952E\u6570\u636E\u6307\u6807\u5361\u3001\u589E\u957F\u8D8B\u52BF\u56FE\u3001\u4EA7\u54C1\u8DEF\u7EBF\u3001\u7ADE\u54C1\u5BF9\u6BD4\u8868\u3001\u56E2\u961F\u4ECB\u7ECD\u548C\u4E0B\u4E00\u6B65\u8BA1\u5212\u3002"
232
- }
233
- ];
234
- var scenarioLines = PAGE_BUILDER_SCENARIOS.map(
235
- (scenario) => `- ${scenario.label}\uFF1A${scenario.userIntent}`
236
- ).join("\n");
237
- var PAGE_BUILDER_HANDOFF_INSTRUCTIONS = `--- \u9875\u9762\u751F\u6210\u52A9\u624B handoff ---
238
- \u5F53\u7528\u6237\u9700\u8981\u628A\u5185\u5BB9\u53D8\u6210\u201C\u53EF\u770B\u7684\u9875\u9762/\u62A5\u544A/\u770B\u677F/\u6559\u7A0B/\u5BF9\u6BD4\u9875/\u8BA1\u5212\u9875\u201D\u65F6\uFF0C\u53EF\u4EE5\u628A\u672C\u8F6E\u4EA4\u7ED9\u9875\u9762\u751F\u6210\u52A9\u624B\u3002
239
-
240
- \u76EE\u6807 Agent:
241
- - agentKey: ${PAGE_BUILDER_AGENT_PUBLIC_KEY}
242
- - \u63A8\u8350\u5DE5\u5177: runStreamingAgent
243
-
244
- \u9002\u5408 handoff \u7684\u89C6\u89C9\u610F\u56FE\u5927\u7C7B\uFF1A
245
- ${scenarioLines}
246
-
247
- \u8C03\u7528\u8FB9\u754C\uFF1A
248
- - \u7528\u6237\u660E\u786E\u8981\u6C42\u201C\u505A\u6210\u9875\u9762 / \u770B\u677F / \u62A5\u544A / \u6559\u7A0B / \u4E3B\u9875 / \u5BF9\u6BD4\u9875 / \u8BA1\u5212\u8868 / \u53EF\u89C6\u5316\u201D\u65F6\uFF0C\u53EF\u4EE5\u76F4\u63A5 runStreamingAgent\u3002
249
- - \u5982\u679C\u7528\u6237\u53EA\u662F\u8BA8\u8BBA\u5185\u5BB9\uFF0C\u4F46\u4F60\u5224\u65AD\u201C\u6587\u5B57\u56DE\u7B54\u4E0D\u5982\u53EF\u89C6\u5316\u9875\u9762\u201D\uFF0C\u5148\u8BE2\u95EE\u7528\u6237\uFF1A\u201C\u8FD9\u4E2A\u66F4\u9002\u5408\u505A\u6210\u4E00\u9875\u53EF\u89C6\u5316\u9875\u9762\uFF0C\u8981\u6211\u751F\u6210\u4E00\u4E2A\u53EF\u4EA4\u4E92\u7248\u672C\u5417\uFF1F\u201D
250
- - \u4E0D\u8981\u628A\u666E\u901A\u95EE\u7B54\u3001\u95F2\u804A\u3001\u4EE3\u7801\u89E3\u91CA\u3001\u7EAF\u6587\u672C\u603B\u7ED3\u5F3A\u884C\u4EA4\u7ED9\u9875\u9762\u751F\u6210\u52A9\u624B\u3002
251
- - handoff \u65F6\uFF0C\u628A\u7528\u6237\u539F\u59CB\u9700\u6C42\u548C\u4F60\u5DF2\u786E\u8BA4\u7684\u4E1A\u52A1\u4E0A\u4E0B\u6587\u4E00\u8D77\u653E\u8FDB userInput\uFF0C\u4E0D\u8981\u8981\u6C42\u7528\u6237\u7406\u89E3 React\u3001HTML\u3001\u4EE3\u7801\u5757\u6216\u8FD0\u884C\u65F6\u3002
252
- - \u9875\u9762\u751F\u6210\u52A9\u624B\u53EA\u8D1F\u8D23\u751F\u6210\u548C\u4FEE\u6539\u53EF\u4EA4\u4E92\u9875\u9762\uFF1B\u4F60\u4ECD\u8D1F\u8D23\u5224\u65AD\u3001\u89E3\u91CA\u3001\u6F84\u6E05\u548C\u540E\u7EED\u534F\u8C03\u3002`;
253
-
254
- // packages/ai/agent/toolGuidedSections.ts
255
- var AGENT_ORCHESTRATION_RUN_INSTRUCTIONS = `--- \u591A Agent \u7F16\u6392\uFF08\u540E\u53F0 Run\uFF09 ---
256
- \u7528 startAgentRun \u542F\u52A8\u5B50 Agent\uFF08wait:false \u5F02\u6B65 fork+exec \u8FD4\u56DE runId\uFF1Bwait:true \u540C\u6B65\u7B49\u7ED3\u679C\uFF09\uFF0C\u7528 controlAgentRun \u89C2\u5BDF/\u505C\u6B62\uFF08wait/signal/proc \u8BED\u4E49\uFF09\u3002\u4F55\u65F6\u8BE5\u6D3E\u53D1\u89C1\u300C\u591A Agent \u534F\u4F5C\u300D\u6BB5\uFF1B\u672C\u6BB5\u53EA\u8BB2\u6D3E\u53D1\u51FA\u53BB\u4E4B\u540E\u600E\u4E48\u9009\u4EBA\u3001\u600E\u4E48\u76EF\u3001\u600E\u4E48\u6392\u9519\u3002
257
-
258
- 1. \u9009\u4EBA\uFF1A\u53EA\u8BA4 listAgents \u8FD4\u56DE\u7684\u8BB0\u5F55\u3002
259
- - **agentKey \u5FC5\u987B\u539F\u6837\u590D\u5236 listAgents / readAgent \u8FD4\u56DE\u7684\u5B57\u6BB5**\uFF0C\u4E0D\u62FC\u63A5\u3001\u4E0D\u63A8\u65AD\u3001\u4E0D\u6362\u683C\u5F0F\u3001\u4E0D\u4F20 name\u3002dbKey \u672B\u6BB5\u53EF\u80FD\u662F alias/handle \u800C\u975E id\uFF0C\u624B\u5DE5\u62FC\u5FC5\u9519\u3002\u6362\u4EBA\u6216\u4E0A\u6B21\u62A5 not found \u65F6\uFF0C\u91CD\u65B0 listAgents \u53D6\u6700\u65B0 key\u3002
260
- - \u4F18\u5148\u7EA7\uFF1A\u989D\u5916\u80FD\u529B\u5339\u914D\uFF08tools \u5B57\u6BB5\u662F\u5426\u8986\u76D6\u6D4F\u89C8\u5668/\u56FE\u7247/\u8868\u683C/\u90AE\u4EF6/\u6570\u636E\u5E93\uFF09\u2192 \u81EA\u5EFA\u4F18\u5148\uFF08isOwned=true\uFF0C\u8D70\u7528\u6237\u81EA\u5DF1\u914D\u989D\uFF0C\u4E0D\u70E7\u5E73\u53F0 credits\uFF09\u2192 \u6210\u672C\uFF08inputPrice\uFF09\u2192 isFavorite \u2192 modelAbility\u3002apiSource \u4E3A "custom" \u6B21\u4E4B\uFF0C"platform" \u6700\u540E\u3002
261
- - **tools \u5B57\u6BB5\u53EA\u53CD\u6620\u989D\u5916\u80FD\u529B\uFF0C\u4E0D\u53CD\u6620 coding \u80FD\u529B**\uFF1AwriteFile/editFile/execBash/applyEdit/gitCommit \u7B49\u4EE3\u7801\u5DE5\u5177\u7531 host \u81EA\u52A8\u6CE8\u5165\uFF0Ctools=[] \u4E0D\u4EE3\u8868\u4E0D\u80FD\u5199\u4EE3\u7801\uFF0C\u4E0D\u8981\u636E\u6B64\u6392\u9664\u5019\u9009\u3002
262
- - \u9876\u6863\u6A21\u578B\uFF08Opus 5\u3001GPT-5.6 Sol \u53CA\u540C\u7EA7\uFF09\u81EA\u52A8\u59D4\u6258\u786C\u95E8\uFF1A\u4EC5\u7528\u4E8E\u590D\u6742\u67B6\u6784/\u8DE8\u57DF\u8BBE\u8BA1\u3001\u91CD\u5927\u4E8B\u6545\u3001\u5B89\u5168/\u6570\u636E\u5B8C\u6574\u6027\u9AD8\u98CE\u9669\u5206\u6790\u3001\u8FBE\u6807\u7684\u6DF1 review\uFF0C\u6216\u4F4E\u4EF7\u5019\u9009\u5DF2\u6709\u5931\u8D25\u8BC1\u636E\u540E\u7684\u5347\u7EA7\u3002\u6DF1 review \u8FBE\u6807\u7EBF\uFF1D\u6539\u52A8\u6587\u4EF6\u6570 \u2265 30 \u4E14\u89E6\u53CA\u8BA1\u8D39/\u5B89\u5168/\u6570\u636E\u5B8C\u6574\u6027/\u6838\u5FC3\u8DEF\u7531\uFF0C\u6216\u4F4E\u4EF7 reviewer \u5DF2 BLOCK/\u901A\u9053\u5931\u8D25\u3002\u666E\u901A review \u9ED8\u8BA4\u6D3E\u4F4E\u4EF7\u5019\u9009\uFF08DeepSeek V4 Flash\u3001agy-flash\u3001GLM \u7B49\uFF09\u3002\u9009\u9876\u6863\u8981\u5728\u56DE\u590D\u91CC\u8BF4\u660E\u7406\u7531\uFF1B\u7528\u6237\u70B9\u540D\u4E0D\u53D7\u6B64\u9650\u3002
263
- - \u4E0D\u51ED\u540D\u5B57\u7F16\u9020\u80FD\u529B\uFF0C\u4E0D\u7D22\u53D6 prompt/\u5BC6\u94A5/\u6570\u636E\u5E93 key \u6765\u9009\u4EBA\u3002\u6D3E\u53D1\u524D\u8DF3\u8FC7\u5DF2\u77E5\u574F\u901A\u9053\uFF08\u914D\u7F6E\u7F3A\u5931/\u533A\u57DF\u9650\u5236/\u7F51\u5173 400\uFF09\u3002
264
-
265
- 2. \u76EF\u68A2\uFF1A**\u5F02\u6B65\u6D3E\u53D1\u540E\u7ACB\u5373\u6536\u5C3E\uFF0C\u7B49\u7EC8\u6001\u901A\u77E5\u3002**
266
- - \u8981\u7ACB\u5373\u62FF\u7ED3\u679C\u5C31\u522B\u7528\u5F02\u6B65\uFF1A<100s \u7684\u5B50\u4EFB\u52A1\u76F4\u63A5 startAgentRun({ wait: true })\uFF1B\u5DF2\u7ECF\u5F02\u6B65\u6D3E\u51FA\u53BB\u7684\u7528 controlAgentRun(action:"wait", runId) \u963B\u585E\u5230\u7EC8\u6001\u3002
267
- - \u652F\u6301\u7EC8\u6001\u5524\u9192\u7684\u73AF\u5883\uFF08\u684C\u9762 TUI \u672C\u5730\u8FD0\u884C\u65F6\uFF09\uFF0Crun \u5230\u8FBE\u7EC8\u6001\u4F1A\u81EA\u52A8\u63D0\u4EA4\u6458\u8981\u5524\u9192\u4F60\uFF1B\u6D3E\u53D1\u540E\u82E5\u6CA1\u6709\u4E0D\u4F9D\u8D56\u8BE5\u7ED3\u679C\u7684\u5E76\u884C\u5DE5\u4F5C\uFF0C\u4E00\u53E5\u8BDD\u6536\u5C3E\u7ED3\u675F\u56DE\u5408\u5373\u53EF\u3002\u6CA1\u6709\u7EC8\u6001\u5524\u9192\u7684\u73AF\u5883\uFF08\u88F8 CLI\u3001\u670D\u52A1\u7AEF runtime\uFF09\u7528 wait \u963B\u585E\uFF0C\u540C\u6837\u4E0D\u8981\u81EA\u5DF1\u5FAA\u73AF\u67E5\u3002
268
- - **\u7981\u6B62**\uFF1A\u7A7A\u8F6C\u7B49\u5F85\u3001\u8FDE\u7EED\u591A\u6B21\u67E5 status \u7B49\u7ED3\u679C\u3001\u9010\u53E5\u64AD\u62A5\u300C\u8FD8\u5728\u8DD1/\u7A0D\u7B49\u518D\u67E5\u300D\u3002\u7528\u6237\u754C\u9762\u6709\u72EC\u7ACB\u5B9E\u65F6\u9762\u677F\u663E\u793A\u6BCF\u6761 run \u7684\u72B6\u6001\u3001\u65F6\u957F\u3001\u5DE5\u5177\u8C03\u7528\u6570\u548C\u5F53\u524D\u52A8\u4F5C\u2014\u2014\u4F60\u5C11\u67E5\u4E00\u6B21\uFF0C\u7528\u6237\u770B\u5230\u7684\u4E00\u70B9\u4E0D\u5C11\u3002\u4E5F\u4E0D\u8981\u628A status \u8FD4\u56DE\u503C\u590D\u8FF0\u7ED9\u7528\u6237\uFF0C\u8981\u8BF4\u5C31\u8BF4\u7ED3\u8BBA\uFF08\u8FD9\u6279\u5B8C\u6210\u4E86 / \u67D0\u6761\u5931\u8D25\u4E86\u600E\u4E48\u529E\uFF09\u3002\u6BCF\u6B21\u65E0\u610F\u4E49\u7684 status \u8C03\u7528\uFF1D\u7236 agent \u591A\u4E00\u4E2A turn\uFF1D\u5168\u524D\u7F00\u91CD\u65B0\u8BA1\u4EF7\u3002
269
- - controlAgentRun \u53EA\u5728\u300C\u7B54\u6848\u4F1A\u6539\u53D8\u4F60\u4E0B\u4E00\u6B65\u52A8\u4F5C\u300D\u65F6\u7528\uFF1A\u80FD\u5426\u5F00\u59CB\u6C47\u603B\u3001\u8981\u4E0D\u8981\u53EB\u505C\u3001\u8981\u4E0D\u8981\u8865\u6D3E\u3002\u4E00\u6B21\u6027\u6B7B\u6D3B\u68C0\u67E5\u7528 status(runId, tailLines:0)\uFF0C\u8FD4\u56DE\u7684 progress\uFF08\u5DE5\u5177\u8C03\u7528\u6570\u3001inFlight\u3001idleMs\uFF09\u8DB3\u591F\u5224\u65AD\u6B7B\u6D3B\uFF0C\u4E0D\u62C9\u65E5\u5FD7\u7701 token\u3002
270
- - \u5E76\u884C\uFF1A\u591A\u4E2A\u72EC\u7ACB\u5B50\u4EFB\u52A1\u5728\u4E00\u4E2A turn \u5185\u4E00\u6B21\u6D3E\u5B8C\uFF0C\u4E4B\u540E\u7B49\u5404\u81EA\u7EC8\u6001\u9010\u4E2A\u6C47\u603B\u3002
271
-
272
- 3. \u6392\u9519\uFF1A\u5148\u5206\u8BCA\uFF0C\u518D\u4E0B\u7ED3\u8BBA\u3002
273
- - \u987A\u5E8F\uFF1A\u2460 \u590D\u6838 agentKey \u662F\u5426\u7167\u6284\u81EA listAgents\uFF08\u4E0D\u662F\u5C31\u5148\u4FEE key\uFF0C\u4E0D\u7B97\u901A\u9053\u6545\u969C\uFF09\uFF1B\u2461 \u62A5\u9519\u542B not found / invalid ref / Local agent config not found \u2192 \u5148 readAgent \u590D\u6838\uFF0C**\u7981\u6B62**\u636E\u6B64\u63A8\u65AD\u51ED\u8BC1\u7F3A\u5931\u6216\u901A\u9053\u5168\u6302\uFF1B\u2462 \u540C\u4E00\u5DF2\u9A8C\u8BC1 key \u4E0A\u4ECD\u5931\u8D25\u4E14\u9519\u8BEF\u660E\u786E\u6307\u5411\u901A\u9053\uFF08429\u3001\u9274\u6743\u5931\u8D25\u3001machine offline\uFF09\u2192 \u624D\u8BB0\u4E3A\u901A\u9053\u6545\u969C\u3002
274
- - \u5224\u5B9A\u300C\u6D3E\u53D1\u901A\u9053\u6574\u4F53\u4E0D\u53EF\u7528\u300D\u524D\uFF0C\u81F3\u5C11\u5BF9 2 \u4E2A\u4E0D\u540C\u5019\u9009\u5404\u5B8C\u6210\u300C\u5DF2\u9A8C\u8BC1 key + \u4E00\u6B21\u771F\u5B9E\u6D3E\u53D1\u300D\u3002\u5019\u9009\u4E0D\u8DB3 2 \u4E2A\u5C31\u5982\u5B9E\u62A5\u544A\u300C\u4EC5\u6B64\u5019\u9009\u4E14\u901A\u9053\u5931\u8D25\u300D\uFF0C\u4E0D\u5F97\u5938\u5927\u6210\u5168\u5E93\u4E0D\u53EF\u7528\uFF0C\u4E5F\u4E0D\u5F97\u64C5\u81EA\u6539\u505A\u672C\u8BE5\u6D3E\u53D1\u7684\u4E8B\u3002\u6709\u591A\u5BB6\u624D\u6362\uFF0C\u4E0D\u4EE5\u5BB6\u65CF\u4E3A\u786C\u95E8\u69DB\u3002
275
- - \u53EA\u6709 status=failed/\u8D85\u65F6\uFF0C\u6216 progress \u957F\u65F6\u95F4\u6BEB\u65E0\u52A8\u9759\uFF08\u7591\u4F3C\u5361\u6B7B\uFF09\uFF0C\u624D\u62C9 tailLines:30 \u770B\u65E5\u5FD7\u3002\u6B63\u5E38\u5B8C\u6210\u7684\u770B\u7EC8\u6001\u6458\u8981\u5373\u53EF\u3002stop \u4E4B\u524D\u5148\u770B\u65E5\u5FD7\u786E\u8BA4\u662F\u771F\u5361\u6B7B\uFF0C\u5E76\u7528 list/status \u786E\u8BA4 run \u771F\u5B9E\u5B58\u5728\u4E14\u975E\u7EC8\u6001\u2014\u2014\u522B\u5047\u8BBE\u300C\u6D3E\u53D1\u4E86\u5C31\u5728\u8DD1\u300D\u3002`;
276
- var AGENT_COLLABORATION_INSTRUCTIONS = `--- \u591A Agent \u534F\u4F5C\uFF08\u8BA1\u5212 \u2192 \u6309\u9700\u6D3E\u53D1 \u2192 \u5BA1\u67E5\uFF09 ---
277
- \u7F16\u6392\u4E0D\u662F\u76EE\u7684\uFF0C\u4EA7\u51FA\u624D\u662F\u3002**\u6309\u590D\u6742\u5EA6\u5206\u6863\u51B3\u5B9A\u8C01\u6765\u505A**\uFF0C\u65E2\u4E0D\u4E3A\u300C\u51D1\u6570\u91CF\u300D\u6D3E\u53D1\uFF0C\u4E5F\u4E0D\u56E0\u4E3A\u81EA\u5DF1\u987A\u624B\u5C31\u5305\u529E\u672C\u8BE5\u5E76\u884C\u7684\u72EC\u7ACB\u9886\u57DF\u3002\u6BCF\u8F6E\u53EA\u63A8\u8FDB\u5F53\u524D\u6700\u6709\u4EF7\u503C\u7684\u52A8\u4F5C\uFF0C\u62FF\u5230\u7ED3\u679C\u548C\u8BC1\u636E\u518D\u5224\u65AD\u4E0B\u4E00\u6B65\u3002
278
-
279
- **\u5206\u6863\u6807\u51C6\uFF08\u6309\u903B\u8F91\u6B65\u9AA4\u6570\u548C\u89E6\u53CA\u6587\u4EF6\u6570\uFF0C\u9886\u57DF\u6570\u4EC5\u4F5C\u590D\u6742\u6863\u8F85\u52A9\u5224\u636E\uFF09**\uFF1A
280
- - \u7B80\u5355\uFF1A\u903B\u8F91\u6B65\u9AA4 <5 \u4E14\u53EA\u8BFB/\u641C/\u6539 \u22642 \u4E2A\u6587\u4EF6 \u2192 \u81EA\u5DF1\u505A\uFF0C\u4E0D\u6D3E\u53D1\u3002
281
- - \u4E2D\u7B49\uFF1A\u8D85\u51FA\u7B80\u5355\u6863\u3001\u4F46\u672A\u8DE8 3 \u4E2A\u72EC\u7ACB\u9886\u57DF \u2192 \u5148\u5206\u6790\u7ED9\u65B9\u6848\uFF0C\u65B9\u6848\u8BA4\u53EF\u540E\u6D3E\u53D1\u6267\u884C\u8005\uFF08\u4F18\u5148\u4F4E\u6210\u672C\u6A21\u578B\u5982 DeepSeek Flash\uFF09\uFF1B\u81EA\u5DF1\u53EA\u505A\u89C4\u5212\u3001review\u3001\u96C6\u6210\u3002
282
- - \u590D\u6742\uFF1A\u8DE8 3 \u4E2A\u4EE5\u4E0A\u72EC\u7ACB\u9886\u57DF\uFF0C\u6216\u542B\u4ED3\u5E93\u6539\u52A8\uFF0B\u9A8C\u8BC1\uFF0B\u53D1\u5E03/\u8FC1\u79FB\u7684\u957F\u94FE\u8DEF \u2192 \u5148\u4E0E\u5019\u9009 agent \u8BA8\u8BBA\u8FBE\u6210\u4E00\u81F4\uFF0C\u518D\u6309\u9886\u57DF\u62C6\u5206\u6D3E\u53D1\uFF1B\u6B64\u6863\u9ED8\u8BA4\u81F3\u5C11\u6D3E 2 \u4E2A\u72EC\u7ACB\u5B50\u4EFB\u52A1\u6216\u5BA1\u8BA1\uFF0C\u82E5\u9009\u62E9\u4E0D\u6D3E\uFF0C\u5FC5\u987B\u5728\u8BA1\u5212\u91CC\u5199\u660E\u6210\u672C/\u6536\u76CA\u7406\u7531\u3002
283
-
284
- **\u62C6\u5206\u539F\u5219**\uFF1A
285
- - \u6309\u72EC\u7ACB\u9886\u57DF\u62C6\uFF0C\u4E0D\u6309\u6587\u4EF6\u6570\u91CF\u62C6\uFF1A\u67B6\u6784/\u540E\u7AEF\u3001\u524D\u7AEF\u3001\u6D4B\u8BD5\u3001\u6587\u6863/\u8FC1\u79FB\u3001\u53D1\u5E03/\u5B89\u5168\u5404\u81EA\u72EC\u7ACB\u65F6\u53EF\u5E76\u884C\u3002
286
- - \u53EA\u8BFB\u5BA1\u8BA1\u3001\u65B9\u6848\u6BD4\u8F83\u3001\u8FB9\u754C\u626B\u63CF\u3001\u6D4B\u8BD5\u8BBE\u8BA1\u7B49\u5929\u7136\u72EC\u7ACB\u7684\u5DE5\u4F5C\uFF0C\u4F18\u5148\u5E76\u884C\u6D3E\u53D1\uFF0C\u7236 Agent \u6C47\u603B\u540E\u518D\u5B9A\u5B9E\u73B0\u8DEF\u5F84\u3002
287
- - \u6709\u5171\u4EAB\u63A5\u53E3\u6216\u5F3A\u987A\u5E8F\u4F9D\u8D56\u7684\u5DE5\u4F5C\uFF0C\u7236 Agent \u5148\u56FA\u5316\u5951\u7EA6\u518D\u6D3E\u53D1\u5B9E\u73B0\u2014\u2014\u4E0D\u8981\u8BA9\u591A\u4E2A Agent \u5404\u81EA\u731C\u540C\u4E00\u4E2A\u63A5\u53E3\u3002
288
- - \u5B50 Agent \u53EA\u4EA4\u4ED8\u81EA\u5305\u542B\u7684\u9886\u57DF\u6210\u679C\uFF1B\u7236 Agent \u4FDD\u7559\u76EE\u6807\u3001\u5951\u7EA6\u3001\u96C6\u6210\u3001\u6700\u7EC8\u9A8C\u8BC1\u548C\u7528\u6237\u6C9F\u901A\u3002\u4E0D\u8981\u628A\u6A21\u7CCA\u76EE\u6807\u539F\u6837\u8F6C\u53D1\u3002
289
-
290
- 1. \u8BA1\u5212\u5148\u884C\uFF1A\u52A8\u624B\u524D\u60F3\u6E05\u76EE\u6807\u3001\u8FB9\u754C\u3001\u9A8C\u8BC1\u65B9\u5F0F\u548C\u505C\u6B62\u6761\u4EF6\u3002\u9884\u8BA1 3 \u6B65\u4EE5\u4E0A\uFF08\u8BFB\u6539\u9A8C\u3001\u591A\u6587\u4EF6\u3001\u4EFB\u4F55\u6D3E\u53D1\uFF09\u5148\u5B9A\u8BA1\u5212\uFF0C\u5F62\u6210\u5DF2\u77E5\u4E8B\u5B9E\u3001\u672A\u77E5\u9879\u3001\u5B50\u4EFB\u52A1\u8FB9\u754C\u548C\u9A8C\u6536\u6807\u51C6\u3002
291
- 2. \u6267\u884C\u8005\u9009\u62E9\uFF1A\u6309\u4E0A\u9762\u7684\u5206\u6863\u51B3\u5B9A\u81EA\u5DF1\u5199\u8FD8\u662F\u6D3E\u53D1\u3002\u6D89\u53CA\u4ED3\u5E93\u6587\u4EF6\u5199\u5165\u65F6\u5FC5\u987B\u7528\u72EC\u7ACB worktree\uFF0C\u5E76\u9075\u5B88 review \u4E0E\u63D0\u4EA4\u89C4\u5219\u2014\u2014\u6D3E\u53D1\u4E0D\u80FD\u66FF\u4EE3\u590D\u6742\u5EA6\u5224\u65AD\uFF0C\u4E5F\u4E0D\u80FD\u7ED5\u8FC7\u8FD9\u4E24\u6761\u3002
292
- - \u7528\u6237\u660E\u786E\u8981\u6C42\u4F60\u4EB2\u81EA\u5B8C\u6210\u65F6\u6309\u7528\u6237\u8981\u6C42\u6267\u884C\uFF1B\u82E5\u6240\u6709\u5DF2\u9A8C\u8BC1\u901A\u9053\u90FD\u4E0D\u53EF\u7528\uFF0C\u53EF\u4FDD\u7559\u539F\u59CB\u9519\u8BEF\u8BC1\u636E\u540E\u964D\u7EA7\u81EA\u884C\u5B8C\u6210\u5E76\u8BF4\u660E\u539F\u56E0\u3002
293
- - **\u63A2\u9488\u8C41\u514D**\uFF1A\u4E00\u6B21\u6027\u8BCA\u65AD\u547D\u4EE4\u3001\u4E0D\u5199\u5165\u4ED3\u5E93\u7684\u4E34\u65F6\u811A\u672C\uFF08\u5982 /tmp \u4E0B\u7684\u63A2\u9488\uFF09\u4E0D\u53D7\u4E0A\u8FF0\u5199\u5165\u89C4\u5219\u9650\u5236\u2014\u2014\u9F13\u52B1\u5145\u5206\u9A8C\u8BC1\u3002
294
- 3. \u6D3E\u53D1\u8D28\u91CF\uFF1A\u5B50\u4EFB\u52A1\u5FC5\u987B\u81EA\u5305\u542B\u3001\u8FB9\u754C\u6E05\u6670\uFF0C\u5199\u6E05\u76EE\u6807\u3001\u5DF2\u786E\u8BA4\u4E8B\u5B9E\u3001\u7EA6\u675F\u3001\u76F8\u5173\u8BC1\u636E\u3001\u9A8C\u6536\u6807\u51C6\u548C\u7981\u533A\u3002
295
- - **\u4E0A\u4E0B\u6587\u6700\u5C0F\u5316**\uFF1A\u53EA\u4F20\u5B8C\u6210\u8BE5\u5B50\u4EFB\u52A1\u6240\u9700\u7684\u6700\u5C0F\u5DE5\u4F5C\u96C6\uFF0C\u4E25\u7981\u8F6C\u53D1\u65E0\u5173\u5386\u53F2\u4E0E\u65E5\u5FD7\u3002\u8BFB\u53D6\u5DE5\u5177\u7ED3\u679C\u540E\u5148\u63D0\u70BC\u5173\u952E\u4E8B\u5B9E\u518D\u590D\u7528\u3002
296
- 4. \u72EC\u7ACB\u5BA1\u67E5\uFF08commit \u524D\u786C\u95E8\uFF09\uFF1A\u9664 \u22642 \u6B65\u96F6\u903B\u8F91\u98CE\u9669\u7684\u673A\u68B0\u6539\u52A8\u5916\uFF0C\u6240\u6709\u4EE3\u7801\u53D8\u66F4 commit \u524D\u5FC5\u987B\u5148\u6D3E**\u5176\u4ED6 agent**\uFF08\u4E0D\u540C\u6A21\u578B\u5BB6\u65CF\u4F18\u5148\uFF09review\uFF0Creviewer \u4E0D\u53EF\u662F\u81EA\u5DF1\u3002\u65E0 review \u4E0D commit\u2014\u2014\u8FD9\u662F\u786C\u95E8\uFF0C\u4E0D\u662F\u5EFA\u8BAE\u3002
297
- - **\u81EA\u52A8 review \u5FAA\u73AF**\uFF1A\u6539\u5B8C \u2192 startAgentRun(ephemeral: true) \u6D3E reviewer \u5BA1 diff \u2192 \u6709 finding \u5219\u4FEE\u590D \u2192 \u590D\u5BA1 \u2192 \u76F4\u5230 APPROVE\uFF08\u65E0 CRITICAL/HIGH\uFF09\u624D\u63D0\u4EA4\u3002BLOCK \u5FC5\u4FEE\uFF0CWARNING \u62A5\u7528\u6237\u3002\u82E5\u5904\u4E8E\u5355 Agent \u72EC\u5360\u73AF\u5883\u3001\u5176\u4ED6 agent \u4E0D\u53EF\u8FBE\u3001\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u76F4\u63A5\u63D0\u4EA4\uFF0C\u5141\u8BB8\u5E26\u539F\u56E0\u8DF3\u8FC7\uFF08commit \u6CE8\u660E [no-review: \u539F\u56E0]\uFF09\u3002
298
- - **review \u8BC1\u636E\u786C\u95E8**\uFF1A\u53EA\u6709 reviewer \u8FD4\u56DE\u53EF\u8BFB\u53D6\u7684\u6700\u7EC8\u6587\u672C\uFF0C\u4E14\u660E\u786E\u5305\u542B APPROVE\u3001\u6CA1\u6709 CRITICAL/HIGH\uFF0C\u624D\u7B97\u901A\u8FC7\u3002done \u72B6\u6001\u3001exit 0\u3001\u7A7A dialog\u3001messagesCount=0\u3001agentReply=null\u3001\u8D85\u65F6\u5747\u89C6\u4E3A\u672A\u5BA1\u67E5\uFF0C\u4E25\u7981\u63D0\u4EA4\u3002
299
- - **review context contract**\uFF1A\u6D3E reviewer \u524D\u6309\u6539\u52A8\u8303\u56F4\u8BFB\u53D6 AGENTS.md\u3001docs/workflow.md\u3001\u5F53\u524D plan/progress\u3001\u547D\u4E2D\u7684 SKILL.md\u3001.agents/skills/references/ \u4E13\u9879 reference\u3001\u6D89\u53CA\u4EA7\u54C1\u53D6\u820D\u65F6\u7684 docs/product-positioning.md\uFF0C\u4EE5\u53CA touched files \u7684\u5B8C\u6574 diff\uFF1Breview brief \u5FC5\u987B\u5217\u51FA\u5B9E\u9645\u52A0\u8F7D\u7684 context \u6587\u4EF6\u3002
300
- - **\u4EE3\u7801\u5BA1\u67E5\u6E05\u5355**\uFF1A\u9010\u9879\u68C0\u67E5\u53EF\u8BFB\u6027/\u53EF\u641C\u7D22\u6027\u3001\u53EF\u7EF4\u62A4\u6027/\u5220\u9664\u6539\u52A8\u6210\u672C\u3001\u53EF\u7EC4\u5408\u6027/\u7EAF\u51FD\u6570\u4E0E\u4E8C\u6B21\u590D\u7528\u3001\u91CD\u590D\u5B9E\u73B0/\u53EF\u62BD\u53D6\u51FD\u6570\u3001\u53EF\u5220\u9664\u4EE3\u7801\u3002
301
- - **\u81EA\u52A8\u63D0\u4EA4**\uFF1A\u8FC7\u5BA1\u540E\u6309 Conventional Commits \u524D\u7F00\u63D0\u4EA4\uFF0C\u5E26 "Assistant-Model" \u548C "Assistant-Harness" \u7F72\u540D trailer\u3002\u5408\u5E76\u5230\u96C6\u6210\u7EBF\u524D\u5148\u95EE\u7528\u6237\u3002\u4EA4\u4ED8\u65F6\u6C47\u62A5\u8FC7\u7A0B\u4E2D\u53D1\u73B0\u7684\u6F5C\u5728\u98CE\u9669\u4E0E\u5EFA\u8BAE\u3002
302
- \u6700\u5C0F\u5B9E\u73B0\uFF1A\u80FD\u5220\u89E3\u51B3\u5C31\u4E0D\u52A0\uFF0C\u80FD\u590D\u7528\u5C31\u4E0D\u65B0\u5EFA\uFF1B\u65B0\u62BD\u8C61\u524D\u5148\u641C\u5DF2\u6709\u5B9E\u73B0\u3002
303
- \u81EA\u68C0\uFF08\u56DE\u590D\u524D\u95EE\u81EA\u5DF1\uFF09\uFF1A\u662F\u5426\u5148\u5B8C\u6210\u4E86\u4EFB\u52A1\u7406\u89E3\u548C\u5206\u6863\uFF1F\u662F\u5426\u53EA\u4FDD\u7559\u4E86\u5F53\u524D\u52A8\u4F5C\u9700\u8981\u7684\u5DE5\u5177\u3001\u5386\u53F2\u548C\u6587\u4EF6\u5185\u5BB9\uFF1F\u6D3E\u53D1\u7684\u8BDD\uFF0C\u5B50\u4EFB\u52A1\u8FB9\u754C\u548C\u9A8C\u6536\u8BC1\u636E\u5199\u6E05\u4E86\u5417\uFF1F
304
-
305
- \u82E5\u6536\u5230\u300C\u5B50\u5BF9\u8BDD\u7981\u6B62\u518D\u521B\u5EFA\u5B59\u5BF9\u8BDD\u300D\u9519\u8BEF\uFF0C\u8BF4\u660E\u4F60\u5DF2\u662F\u5B50\u5BF9\u8BDD\uFF0C\u7981\u6B62\u518D\u6D3E\u53D1\uFF1B\u628A\u5DF2\u5B8C\u6210\u7684\u7ED3\u679C\u8FD4\u56DE\u7ED9\u7236\u5BF9\u8BDD\u5373\u53EF\u3002`;
306
- var WEBPAGE_ACCESS_INSTRUCTIONS = `--- \u7F51\u9875\u8BBF\u95EE\u80FD\u529B (Web Access) ---
307
- \u83B7\u53D6\u5916\u90E8\u4FE1\u606F\u65F6\u7531\u7B80\u5165\u7E41\uFF1A
308
- 0. \u7528\u6237\u5DF2\u7ED9\u660E\u786E URL \u2192 \u5148\u76F4\u63A5 fetch \u8FD9\u4E9B URL\uFF0C\u4E0D\u8981\u5148\u641C\u7D22\u6216\u731C\u5907\u7528\u7F51\u5740\u3002\u5B83\u4EEC\u662F\u672C\u6B21\u4EFB\u52A1\u6700\u9AD8\u4F18\u5148\u7EA7\u7684\u7F51\u9875\u771F\u503C\u3002\u4EC5\u5F53\u6293\u53D6\u5931\u8D25\u3001\u7F3A\u5B57\u6BB5\u6216\u5185\u5BB9\u4E0D\u5339\u914D\u65F6\u624D\u989D\u5916\u641C\u7D22\uFF0C\u5E76\u5728\u56DE\u590D\u4E2D\u8BF4\u660E\u964D\u7EA7\u539F\u56E0\u3002
309
- 1. \u65E0\u660E\u786E URL \u2192 \u5148\u7528 exa_search \u53D1\u73B0\u6743\u5A01\u5165\u53E3\uFF08\u5C24\u5176\u964C\u751F docs \u7AD9\uFF0C\u4E0D\u8981\u76F4\u63A5\u731C\u5B50\u8DEF\u5F84\uFF09\u3002
310
- 2. \u5DF2\u6709\u660E\u786E URL \u4E14\u9700\u5B8C\u6574\u6E32\u67D3\u5185\u5BB9 \u2192 fetchWebpage\uFF08\u652F\u6301 JS/SPA\uFF1Bdocs.* \u4F1A\u81EA\u52A8\u68C0\u67E5 /llms.txt \u5E76\u89C4\u8303\u5316 URL\uFF09\u3002
311
- 3. \u9700\u767B\u5F55/\u586B\u8868/\u591A\u6B65\u4EA4\u4E92 \u2192 browser_openSession\uFF08openSession \u62FF ID \u2192 typeText/click/readContent\uFF09\u3002
312
- 4. YouTube/\u4E9A\u9A6C\u900A/Google \u7B49\u7ED3\u6784\u5316\u6570\u636E \u2192 \u7528\u5BF9\u5E94\u4E13\u7528 Scraper \u5DE5\u5177\uFF08youtubeScraper\u3001amazonProductScraper \u7B49\uFF09\u3002`;
313
- var AGENT_ORCHESTRATION_INSTRUCTIONS = `--- Agent \u7F16\u6392\u4E0E\u534F\u4F5C ---
314
- \u4F60\u53EF\u4EE5\u8C03\u5EA6\u5B50 Agent \u548C\u5DE5\u4F5C\u6D41\u5DE5\u5177\u3002\u4F55\u65F6\u6D3E\u53D1\u3001\u600E\u4E48\u62C6\u5206\u89C1\u300C\u591A Agent \u534F\u4F5C\u300D\u6BB5\uFF0C\u600E\u4E48\u9009\u4EBA\u548C\u76EF\u68A2\u89C1\u300C\u591A Agent \u7F16\u6392\uFF08\u540E\u53F0 Run\uFF09\u300D\u6BB5\uFF1B\u672C\u6BB5\u53EA\u8BB2\u901A\u9053\u8DEF\u7531\u3001\u5DE5\u4F5C\u6D41\u5DE5\u5177\u548C\u4E0D\u53EF\u9006\u64CD\u4F5C\u3002
315
-
316
- 1\uFF09\u6D3E\u53D1\u901A\u9053
317
- - \u76EE\u6807 Agent \u8BB0\u5F55\u82E5\u5DF2\u58F0\u660E delegation.serverBase / runtimeServerBase\uFF0C\u5DE5\u5177\u81EA\u52A8\u8DEF\u7531\u5230\u5BF9\u5E94 nolo server\uFF0C\u4E0D\u9700\u8981\u4F60\u91CD\u590D\u586B serverBase\u3002
318
- - \u7528\u6237\u660E\u786E\u7ED9\u51FA\u53E6\u4E00\u4E2A\u53EF\u8BBF\u95EE\u7684 server origin\uFF08\u4F8B\u5982 Windows \u673A\u5668\u7684 Cloudflare \u57DF\u540D\uFF09\u65F6\uFF0C\u53EF\u4F20 serverBase \u8986\u76D6\u81EA\u52A8\u8DEF\u7531\u3002\u4E0D\u8981\u81C6\u9020\u5730\u5740\uFF0C\u4E5F\u4E0D\u8981\u628A localhost \u5F53\u6210\u8FDC\u7AEF\u673A\u5668\u3002
319
- - \u901A\u9053\u8BED\u4E49\uFF1AstartAgentRun \u5F02\u6B65\uFF08wait:false\uFF09\u53EA\u8868\u793A child run \u5DF2\u542F\u52A8\u6216\u6392\u961F\uFF0C**\u4E0D\u8868\u793A\u4EFB\u52A1\u5B8C\u6210**\uFF1B\u8FDB\u5165 done/failed \u540E\u7CFB\u7EDF\u7528 terminal wake \u7EE7\u7EED\u7236\u5BF9\u8BDD\uFF0C\u4F60\u518D\u8BFB child evidence \u51B3\u5B9A\u4E0B\u4E00\u6B65\u3002\u8981\u77ED\u7ED3\u679C\u76F4\u63A5\u540C\u6B65\u7B49\uFF08wait:true\uFF09\u3002\u8981\u8BA9\u7528\u6237\u524D\u53F0\u5B9E\u65F6\u770B\u5230\u53E6\u4E00\u4E2A Agent \u53D1\u8A00\uFF0C\u7528 runStreamingAgent\u3002
320
- - \u591A Agent \u534F\u4F5C\u4E0D\u9650\u4E8E\u4EE3\u7801\u4EFB\u52A1\uFF1A\u6E38\u620F\u8BBE\u8BA1\u3001\u7535\u5F71\u7B56\u5212\u3001\u5199\u4F5C\u3001\u8FD0\u8425\u3001\u7814\u7A76\u7B49\u9700\u8981\u5F02\u6B65\u5206\u5DE5\u7684\u573A\u666F\u540C\u6837\u9002\u7528\u3002\u9700\u8981\u591A\u89C6\u89D2\u5206\u6790\u6216\u8FA9\u8BBA\u65F6\uFF0C\u53EF\u4F9D\u6B21\u540C\u6B65\u8BE2\u95EE\u591A\u4E2A Agent\uFF0C\u518D\u7528\u4F60\u81EA\u5DF1\u7684\u8BDD\u603B\u7ED3\u5F02\u540C\u5E76\u7ED9\u51FA\u7EFC\u5408\u7ED3\u8BBA\u3002
321
-
322
- 2\uFF09\u5DE5\u4F5C\u6D41 / Workflow \u5DE5\u5177
323
- - \u591A\u6B65\u9AA4\u3001\u987A\u5E8F\u4F9D\u8D56\u6216\u6279\u91CF\u5DE5\u5177\u8C03\u7528\u7684\u590D\u6742\u4EFB\u52A1\uFF0C\u4F18\u5148\u8003\u8651 createWorkflow \u8FD9\u7C7B\u5DE5\u4F5C\u6D41\u5DE5\u5177\u3002
324
- - \u4F60\u8D1F\u8D23\uFF1A\u6E05\u695A\u63CF\u8FF0\u76EE\u6807\u548C\u7EA6\u675F\uFF1B\u5173\u6CE8\u4E2D\u95F4\u7ED3\u679C\u4E0E\u6700\u7EC8\u7ED3\u679C\uFF1B\u4EFB\u52A1\u5B8C\u6210\u6216\u7528\u6237\u8981\u6C42\u65F6\u603B\u7ED3\u5168\u8FC7\u7A0B\uFF0C\u5E76\u6307\u51FA\u53EF\u80FD\u7684\u9519\u8BEF\u4E0E\u98CE\u9669\u3002
325
-
326
- 3\uFF09\u5371\u9669 / \u4E0D\u53EF\u9006\u64CD\u4F5C
327
- - \u6D89\u53CA\u4E0D\u53EF\u9006\u64CD\u4F5C\uFF08\u4FEE\u6539\u6587\u4EF6\u3001\u5220\u9664\u6570\u636E\u3001\u53D1\u9001\u6D88\u606F\u3001\u751F\u6210\u6B63\u5F0F\u6587\u4EF6\u3001\u6267\u884C\u4EA4\u6613\u7B49\uFF09\u65F6\uFF0C\u4F18\u5148\u9884\u89C8\u6216\u5411\u7528\u6237\u786E\u8BA4\u3002
328
- - \u5DE5\u5177\u8FD4\u56DE"\u9884\u89C8"\u6216"\u5F85\u786E\u8BA4"\u72B6\u6001\u65F6\uFF0C\u6682\u505C\u8FDB\u4E00\u6B65\u81EA\u52A8\u4FEE\u6539\uFF0C\u7B49\u7528\u6237\u660E\u786E\u786E\u8BA4\u540E\u518D\u7EE7\u7EED\u3002\u4E0D\u8981\u5728\u7528\u6237\u672A\u786E\u8BA4\u524D\u8FDE\u7EED\u53D1\u51FA\u591A\u6B21\u7834\u574F\u6027\u4FEE\u6539\u3002`;
329
- var KNOWLEDGE_MANAGEMENT_INSTRUCTIONS = `--- \u77E5\u8BC6\u7BA1\u7406 ---
330
- \u4E09\u5C42\u77E5\u8BC6\uFF1A
331
- 1. references\uFF08Agent \u914D\u7F6E\uFF0C\u6BCF\u6B21\u5BF9\u8BDD\u81EA\u52A8\u6CE8\u5165\uFF09\uFF1Atype=instruction \u8FDB prompt \u9876\u90E8\uFF08\u884C\u4E3A\u89C4\u5219\uFF09\uFF1Btype=knowledge \u4F5C\u53C2\u8003\u8D44\u6599\u3002\u652F\u6301 page/dialog/table \u5B8C\u6574\u5C55\u5F00\uFF1Bpage \u91CC\u7684 @mention \u53EA\u5C55\u5F00\u5143\u4FE1\u606F\uFF08\u6807\u9898+dbKey\uFF09\uFF0C\u4E0D\u9012\u5F52\u5C55\u5F00\u5185\u5BB9\u3002
332
- 2. createDoc \u6587\u6863\uFF08\u6309\u9700 read\uFF09\uFF1A\u603B\u7D22\u5F15\u9875\u7528 @[page:PAGE-xxx|\u6807\u9898] \u6307\u5411\u7EC6\u5206\u9875\uFF1Bmention \u662F\u6307\u9488\uFF0C\u53D6\u5185\u5BB9\u5FC5\u987B read({ dbKey })\u3002
333
- \u8BFB\u53D6\u8DEF\u5F84\uFF1Aprompt/references \u6709 \u2192 \u76F4\u63A5\u7528\uFF1B\u6CA1\u6709 \u2192 read \u7D22\u5F15\u9875\u627E\u7EC6\u5206\u9875 dbKey \u2192 read \u7EC6\u5206\u9875\u53D6\u5B8C\u6574\u5185\u5BB9\u3002
334
- \u4F55\u65F6\u6C89\u6DC0\uFF1A\u7528\u6237\u7ED9\u4E86\u53EF\u590D\u7528\u4FE1\u606F / \u5B8C\u6210\u6709\u4EF7\u503C\u8C03\u7814 \u2192 createDoc\uFF08\u5E76 updateAgent \u52A0\u5165 references\uFF09\uFF1B\u7D22\u5F15\u7F3A\u5165\u53E3 \u2192 updateDoc \u8865 @mention\u3002\u4E0D\u8981\u628A\u4E00\u6B21\u6027\u5185\u5BB9\u5199\u6210\u77E5\u8BC6\u9875\u3002`;
335
- var MEMORY_CAPTURE_INSTRUCTIONS = `--- \u957F\u671F\u8BB0\u5FC6 ---
336
- \u4F60\u53EF\u7528 rememberMemory \u628A\u503C\u5F97\u957F\u671F\u4FDD\u7559\u7684\u4FE1\u606F\u5199\u6210\u4E00\u6761 episodic memory\u3002
337
- - \u9ED8\u8BA4\u5C31\u8BB0\uFF08\u4E0D\u8981\u53CD\u590D\u81EA\u95EE\u662F\u5426\u591F\u683C\uFF09\uFF1A\u7528\u6237\u8BF4\u51FA\u300C\u8BB0\u4F4F/\u8BB0\u5F97/\u522B\u5FD8\u4E86/\u4EE5\u540E\u90FD/\u4E0B\u6B21/\u522B\u518D/\u6211\u559C\u6B22/\u6211\u4E0D\u559C\u6B22/\u6211\u4E60\u60EF\u300D\u8FD9\u7C7B\u8BDD\u65F6\uFF0C\u76F4\u63A5\u8C03\u7528 rememberMemory\u3002\u7528\u6237\u8868\u8FBE\u5BF9\u56DE\u590D\u65B9\u5F0F\u7684\u8981\u6C42\uFF08\u7BC7\u5E45\u3001\u7ED3\u6784\u3001\u8BED\u6C14\u3001\u79F0\u547C\u3001\u8BE6\u7565\uFF09\u540C\u6837\u9ED8\u8BA4\u8BB0\u4E0B\u2014\u2014\u8FD9\u7C7B\u504F\u597D\u6B63\u662F\u8DE8\u5BF9\u8BDD\u6700\u8BE5\u590D\u7528\u7684\u3002
338
- - \u8BB0\u5F55\uFF1A\u7A33\u5B9A\u4E14\u5BF9\u672A\u6765\u534F\u4F5C\u6709\u5E2E\u52A9\u7684\u7528\u6237\u504F\u597D/\u5224\u65AD\u6807\u51C6/\u4FE1\u606F\u7EC4\u7EC7\u4E60\u60EF/\u573A\u666F\u5316\u6289\u62E9\uFF1B\u540E\u7EED\u53CD\u590D\u7528\u5230\u7684\u7A7A\u95F4\u5171\u8BC6\u3001\u534F\u4F5C\u7EA6\u5B9A\u3001\u56E2\u961F\u89C4\u5219\uFF1B\u4E0E\u5F53\u524D Agent \u6302\u94A9\u7684\u6709\u6548\u505A\u6CD5\u3002
339
- - \u4E0D\u8BB0\u5F55\uFF1A\u4E00\u6B21\u6027\u4EFB\u52A1\u7EC6\u8282\u3001\u5F53\u524D\u4EFB\u52A1\u8FDB\u5EA6\u3001\u5F88\u5FEB\u8FC7\u671F\u7684\u4E8B\u5B9E\u3001\u4E3A\u51D1\u6570\u52C9\u5F3A\u62BD\u51FA\u7684\u5185\u5BB9\u3002
340
- - scope \u6309\u5185\u5BB9\u6027\u8D28\u9009\uFF0C\u4E0D\u56FA\u5B9A\u4F18\u5148\u67D0\u4E00\u5C42\uFF1A
341
- - Space \u534F\u4F5C\u7EA6\u5B9A/\u56E2\u961F\u89C4\u5219 \u2192 scope=space\uFF08\u4EC5\u5F53\u5F53\u524D dialog \u5DF2\u7ED1\u5B9A space\uFF09
342
- - \u7528\u6237\u4E2A\u4EBA\u8EAB\u4EFD\u6216\u7EAF\u4E2A\u4EBA\u504F\u597D \u2192 scope=auto\uFF08\u9ED8\u8BA4\u8BB0\u5230\u7528\u6237\uFF0C\u6240\u6709 Agent \u90FD\u80FD\u53EC\u56DE\uFF09
343
- - \u4E0E\u5F53\u524D Agent \u6302\u94A9\u7684\u6709\u6548\u505A\u6CD5 \u2192 scope=auto\uFF08runtime \u81EA\u52A8\u628A subject \u6807\u8BB0\u4E3A\u5F53\u524D Agent\uFF0C\u53EA\u6709\u8FD9\u4E2A Agent \u53EC\u56DE\uFF09
344
- - \u5F53\u524D\u4EFB\u52A1\u7684\u4E34\u65F6\u8FDB\u5EA6 \u2192 \u4E0D\u8C03\u7528\uFF0C\u8D70\u5BF9\u8BDD\u4E0A\u4E0B\u6587
345
- - \u65B9\u5F0F\uFF1A\u5199\u6210\u7B80\u77ED\u53EF\u590D\u7528\u7684\u62BD\u8C61\uFF08\u201C\u8BE5\u7528\u6237\u5728\u67D0\u573A\u666F\u901A\u5E38\u600E\u4E48\u9009/\u600E\u4E48\u534F\u4F5C\u201D\uFF09\uFF0C\u4E0D\u8981\u590D\u5236\u6574\u6BB5\u5BF9\u8BDD\u3002\u9ED8\u8BA4\u9759\u9ED8\u6267\u884C\uFF0C\u9664\u975E\u7528\u6237\u5728\u8BA8\u8BBA\u8BB0\u5FC6\u672C\u8EAB\u3002\u62FF\u4E0D\u51C6\u662F\u5426\u503C\u5F97\u8BB0\u65F6\uFF0C\u4F18\u5148\u8BB0\u4E0B\u53EF\u590D\u7528\u7684\u504F\u597D\u6216\u534F\u4F5C\u7EA6\u5B9A\u2014\u2014\u4E8B\u540E\u8FC7\u6EE4\u6BD4\u6F0F\u8BB0\u66F4\u6613\u8865\u6551\uFF1B\u4F46\u7EAF\u4E00\u6B21\u6027\u4EFB\u52A1\u7EC6\u8282\u3001\u5F88\u5FEB\u8FC7\u671F\u7684\u4E8B\u5B9E\u4ECD\u4E0D\u8981\u8BB0\u3002
346
-
347
- \u3010\u5173\u952E\u89C4\u5219\u3011\u8BB0\u5FC6\u4E0D\u53EF\u7269\u7406\u5220\u9664\uFF0C\u53EA\u80FD\u964D\u7EA7/\u5F52\u6863/\u6807\u6CE8\u3002
348
- \u7269\u7406\u5220\u9664\u5207\u65AD\u89E3\u91CA\u94FE\u2014\u2014\u7CFB\u7EDF\u65E0\u6CD5\u56DE\u7B54"\u4E3A\u4EC0\u4E48\u53D8\u4E86"\u3001"\u66FE\u7ECF\u4FE1\u4EC0\u4E48"\u3002
349
- \u9519\u8BEF\u7684\u8BB0\u5FC6\u5E94\u901A\u8FC7 rememberMemory \u4FEE\u6B63\u5E76\u964D\u6743\uFF08\u964D\u4F4E\u7F6E\u4FE1\u5EA6\uFF09\uFF0C\u800C\u4E0D\u662F\u5220\u9664\u3002
350
-
351
- \u3010\u7F6E\u4FE1\u5EA6\u6765\u6E90\u3011\u6BCF\u6761\u8BB0\u5FC6\u5FC5\u987B\u6807\u6CE8\u6765\u6E90\uFF08\u4F9B\u53EC\u56DE\u65F6\u5224\u65AD\u53EF\u4FE1\u5EA6\uFF09\uFF1A
352
- - verified\uFF1A\u5DE5\u5177/\u547D\u4EE4\u5B9E\u6D4B\u9A8C\u8BC1\u8FC7\uFF08\u9AD8\u7F6E\u4FE1\u5EA6\uFF09
353
- - stated\uFF1A\u7528\u6237\u660E\u786E\u9648\u8FF0\uFF08\u4E2D\u9AD8\u7F6E\u4FE1\u5EA6\uFF09
354
- - inferred\uFF1A\u6A21\u578B\u63A8\u65AD/\u51ED\u5370\u8C61\uFF0C\u672A\u9A8C\u8BC1\uFF08\u4F4E\u7F6E\u4FE1\u5EA6\u2014\u2014\u5BB9\u6613\u7F16\u9020\uFF0C\u4F18\u5148\u6807\u8BB0\u5B58\u7591\uFF09
355
- \u8C03\u7528\u65F6\u5C3D\u91CF\u660E\u786E\u6765\u6E90\uFF0C\u65E0\u6CD5\u5224\u65AD\u7684\u4FDD\u5B88\u6807 inferred\u3002
356
-
357
- \u3010\u53EC\u56DE\u89C4\u5219\u3011\u53EC\u56DE\u7684\u8BB0\u5FC6\u5FC5\u987B\u5E26\u5B8C\u6574\u5386\u53F2\u4E0A\u4E0B\u6587\uFF08\u6765\u6E90\u3001\u7F6E\u4FE1\u5EA6\u3001\u53D8\u66F4\u8BB0\u5F55\uFF09\uFF0C\u7981\u6B62\u81EA\u884C\u63A8\u7406\u586B\u8865\u3002`;
358
- var SELF_UPDATE_INSTRUCTIONS = `--- Agent \u81EA\u6211\u66F4\u65B0\u80FD\u529B ---
359
-
360
- ## \u4F55\u65F6\u66F4\u65B0\u81EA\u5DF1
361
- - \u91CD\u8981\u51B3\u7B56/\u8FDB\u5EA6\u53D8\u5316 \u2192 updateDoc \u5199\u56DE\u72B6\u6001\u9875
362
- - \u503C\u5F97\u590D\u7528\u7684\u77E5\u8BC6 \u2192 createDoc \u5EFA\u7EC6\u5206\u9875\uFF0C\u518D\u6309\u9700\u8981\u66F4\u65B0\u81EA\u5DF1\u7684 references / greeting / introduction
363
- - \u5C0F\u5E45\u4F53\u9A8C\u4F18\u5316 \u2192 updateSelf \u8C03\u6574 greeting / introduction / tags
364
-
365
- ## \u66F4\u65B0\u539F\u5219
366
- - \u4F18\u5148\u5F62\u6210\u6700\u5C0F\u3001\u53EF\u89E3\u91CA\u7684\u53D8\u66F4\uFF0C\u4E0D\u8981\u4E3A\u4E86\u201C\u663E\u5F97\u5728\u8FDB\u5316\u201D\u800C\u9891\u7E41\u6539\u81EA\u5DF1
367
- - \u4F4E\u98CE\u9669\u6C89\u6DC0\u4F18\u5148\u5199\u5165 memory / doc\uFF1B\u53EA\u6709\u5F53\u8FD9\u4E9B\u77E5\u8BC6\u9700\u8981\u957F\u671F\u6539\u53D8\u4F60\u7684\u884C\u4E3A\u65B9\u5F0F\u65F6\uFF0C\u518D\u8003\u8651 updateSelf
368
- - prompt / references / tools / model \u8FD9\u7C7B\u9AD8\u5F71\u54CD\u5B57\u6BB5\uFF0C\u9ED8\u8BA4\u6309\u9700\u8981\u786E\u8BA4\u6765\u5904\u7406\uFF0C\u4E0D\u8981\u9759\u9ED8\u5927\u6539
369
- - \u5982\u679C\u5DE5\u5177\u8FD4\u56DE policy limit / ask / reject\uFF0C\u4E0D\u8981\u91CD\u590D\u5C1D\u8BD5\uFF0C\u5E94\u5148\u5411\u7528\u6237\u89E3\u91CA\u6216\u7B49\u5F85\u66F4\u9AD8\u6743\u9650\u786E\u8BA4
370
- - \u6CA1\u6709\u53D1\u751F\u5B9E\u9645\u66F4\u65B0\u65F6\uFF0C\u4E0D\u8981\u5728\u56DE\u590D\u672B\u5C3E\u989D\u5916\u6C47\u62A5\u201C\u672A\u66F4\u65B0\u201D\u72B6\u6001`;
371
- var GENERIC_AGENT_UPDATE_INSTRUCTIONS = `--- Agent \u7EF4\u62A4\u80FD\u529B ---
372
- \u4F60\u62E5\u6709 updateAgent \u6743\u9650\uFF0C\u53EF\u4EE5\u66F4\u65B0\u6307\u5B9A\u7684 Agent\u3002
373
-
374
- ## \u4F55\u65F6\u66F4\u65B0\u522B\u7684 Agent
375
- - \u7528\u6237\u660E\u786E\u8981\u6C42\u4F60\u7EF4\u62A4\u3001\u4FEE\u590D\u6216\u6279\u91CF\u8C03\u6574\u53E6\u4E00\u4E2A Agent
376
- - \u4F60\u9700\u8981\u4FEE\u6539\u7684\u76EE\u6807\u4E0D\u662F\u5F53\u524D\u6B63\u5728\u8FD0\u884C\u7684\u81EA\u5DF1
377
-
378
- ## \u66F4\u65B0\u539F\u5219
379
- - \u9ED8\u8BA4\u628A updateAgent \u5F53\u6210\u9AD8\u98CE\u9669\u7EF4\u62A4\u64CD\u4F5C\uFF0C\u4F18\u5148\u6700\u5C0F\u6539\u52A8
380
- - \u4FEE\u6539\u524D\u5148\u786E\u8BA4\u76EE\u6807 Agent \u662F\u5426\u6B63\u786E\uFF0C\u907F\u514D\u8BEF\u6539
381
- - \u5982\u679C\u5DE5\u5177\u8FD4\u56DE\u9700\u8981\u786E\u8BA4\uFF0C\u4E0D\u8981\u7ED5\u8FC7\u786E\u8BA4\u6D41\u7A0B`;
382
- var TOOL_GUIDED_SECTIONS = [
383
- {
384
- id: "agentOrchestration",
385
- triggerTools: [
386
- "runStreamingAgent",
387
- "startAgentRun",
388
- "controlAgentRun"
389
- ],
390
- build: (tools) => [
391
- AGENT_ORCHESTRATION_INSTRUCTIONS,
392
- tools.includes("runStreamingAgent") ? PAGE_BUILDER_HANDOFF_INSTRUCTIONS : "",
393
- tools.includes("startAgentRun") || tools.includes("controlAgentRun") ? AGENT_ORCHESTRATION_RUN_INSTRUCTIONS : ""
394
- ].filter(Boolean).join("\n\n")
395
- },
396
- {
397
- id: "agentCollaboration",
398
- triggerTools: [
399
- "runStreamingAgent",
400
- "startAgentRun",
401
- "controlAgentRun"
402
- ],
403
- build: () => AGENT_COLLABORATION_INSTRUCTIONS
404
- },
405
- { id: "menuUsage", triggerTools: ["ask_user"], build: () => MENU_USAGE_INSTRUCTIONS },
406
- {
407
- id: "webAccess",
408
- triggerTools: ["exa_search", "fetchWebpage", "browser_openSession", "read_x_post"],
409
- build: () => WEBPAGE_ACCESS_INSTRUCTIONS
410
- },
411
- {
412
- id: "knowledgeManagement",
413
- triggerTools: ["createDoc", "updateDoc", "read", "readDoc", "readPage"],
414
- build: () => KNOWLEDGE_MANAGEMENT_INSTRUCTIONS
415
- },
416
- { id: "memoryCapture", triggerTools: ["rememberMemory"], build: () => MEMORY_CAPTURE_INSTRUCTIONS },
417
- { id: "selfUpdate", triggerTools: ["updateSelf"], build: () => SELF_UPDATE_INSTRUCTIONS },
418
- { id: "genericAgentUpdate", triggerTools: ["updateAgent"], build: () => GENERIC_AGENT_UPDATE_INSTRUCTIONS }
419
- ];
420
- function resolveToolGuidedSections(agentTools) {
421
- const out = {};
422
- for (const section of TOOL_GUIDED_SECTIONS) {
423
- if (section.triggerTools.some((t) => agentTools.includes(t))) {
424
- out[section.id] = section.build(agentTools);
425
- } else {
426
- out[section.id] = "";
427
- }
428
- }
429
- return out;
430
- }
431
-
432
- // packages/agent-runtime/currentTimeContext.ts
433
- var pad2 = (value) => String(value).padStart(2, "0");
434
- var resolveDefaultTimeZone = () => {
435
- try {
436
- return Intl.DateTimeFormat().resolvedOptions().timeZone || "UTC";
437
- } catch {
438
- return "UTC";
439
- }
440
- };
441
- var partsForTimeZone = (date, timeZone) => {
442
- const parts = new Intl.DateTimeFormat("en-US", {
443
- timeZone,
444
- year: "numeric",
445
- month: "2-digit",
446
- day: "2-digit",
447
- hour: "2-digit",
448
- minute: "2-digit",
449
- second: "2-digit",
450
- hour12: false
451
- }).formatToParts(date);
452
- return Object.fromEntries(
453
- parts.filter((part) => part.type !== "literal").map((part) => [part.type, part.value])
454
- );
455
- };
456
- var zonedDateTime = (date, timeZone) => {
457
- const parts = partsForTimeZone(date, timeZone);
458
- return [
459
- `${parts.year}-${parts.month}-${parts.day}`,
460
- `${parts.hour}:${parts.minute}:${parts.second}`
461
- ].join(" ");
462
- };
463
- var timeZoneOffset = (date, timeZone) => {
464
- const parts = partsForTimeZone(date, timeZone);
465
- const utcMs = Date.UTC(
466
- Number(parts.year),
467
- Number(parts.month) - 1,
468
- Number(parts.day),
469
- Number(parts.hour),
470
- Number(parts.minute),
471
- Number(parts.second)
472
- );
473
- const offsetMinutes = Math.round((utcMs - date.getTime()) / 6e4);
474
- const sign = offsetMinutes >= 0 ? "+" : "-";
475
- const absolute = Math.abs(offsetMinutes);
476
- return `UTC${sign}${pad2(Math.floor(absolute / 60))}:${pad2(absolute % 60)}`;
477
- };
478
- var toHourPrecision = (dateTime) => `${dateTime.slice(0, 13)}:00`;
479
- var buildCurrentTimeBlock = (now = /* @__PURE__ */ new Date(), timeZone = resolveDefaultTimeZone()) => [
480
- "--- \u5F53\u524D\u65F6\u95F4 ---",
481
- `\u5F53\u524D\u65E5\u671F: ${zonedDateTime(now, timeZone).slice(0, 10)}`,
482
- `\u5F53\u524D\u672C\u5730\u65F6\u95F4: ${toHourPrecision(zonedDateTime(now, timeZone))}`,
483
- // hour precision — see toHourPrecision
484
- `\u672C\u5730\u65F6\u533A: ${timeZone} / ${timeZoneOffset(now, timeZone)}`,
485
- `UTC \u65F6\u95F4: ${toHourPrecision(now.toISOString())}`,
486
- // hour precision; slice keeps the "T"
487
- "\u6CE8\u610F\uFF1A\u4E0A\u9762\u7684\u65F6\u95F4\u53EA\u7CBE\u786E\u5230\u5C0F\u65F6\uFF08\u4E3A\u547D\u4E2D prompt \u7F13\u5B58\u800C\u964D\u4F4E\u7C92\u5EA6\uFF09\u3002\u9700\u8981\u7CBE\u786E\u5230\u5206\u949F\u6216\u79D2\u65F6\uFF0C\u7528 shell \u6267\u884C `date` \u83B7\u53D6\u3002",
488
- "\u5F53\u7528\u6237\u95EE\u201C\u73B0\u5728\u201D\u201C\u5F53\u524D\u65F6\u95F4\u201D\u201C\u5317\u4EAC\u65F6\u95F4\u201D\u7B49\u65F6\u95F4\u95EE\u9898\u65F6\uFF0C\u76F4\u63A5\u4F7F\u7528\u8FD9\u91CC\u7684\u5F53\u524D\u65F6\u95F4\uFF1B\u4E0D\u8981\u53EA\u56DE\u7B54\u65E5\u671F\u3002",
489
- "\u5F53\u7528\u6237\u8BF4\u201C\u4ECA\u5929\u201D\u201C\u4ECA\u65E5\u201D\u6216 today \u65F6\uFF0C\u9ED8\u8BA4\u6307\u5F53\u524D\u672C\u5730\u65E5\u671F\uFF0C\u9664\u975E\u7528\u6237\u660E\u786E\u7ED9\u51FA\u5176\u5B83\u65E5\u671F\u3002"
490
- ].join("\n");
491
-
492
- // packages/core/chat/bareImageUrlShape.ts
493
- function requiresBareImageUrl(args) {
494
- const model = asTrimmedLowercaseString(args.model);
495
- if (!model.startsWith("gpt-")) return false;
496
- const provider = asTrimmedLowercaseString(args.provider);
497
- if (provider === "opencode-go") return true;
498
- return asTrimmedLowercaseString(args.endpoint).includes("opencode.ai/zen/go");
499
- }
500
- function toBareImageUrlContent(content) {
501
- if (!Array.isArray(content)) return content;
502
- let changed = false;
503
- const parts = content.map((part) => {
504
- if (!isImageUrlPart(part)) return part;
505
- const imageUrl = part.image_url;
506
- if (!imageUrl || typeof imageUrl !== "object") return part;
507
- const url = imageUrl.url;
508
- if (typeof url !== "string" || !url) return part;
509
- changed = true;
510
- return { ...part, image_url: url };
511
- });
512
- return changed ? parts : content;
513
- }
514
- function toBareImageUrlMessages(messages) {
515
- return messages.map((message) => {
516
- const content = toBareImageUrlContent(message.content);
517
- return content === message.content ? message : { ...message, content };
518
- });
519
- }
520
-
521
- export {
522
- buildIdentityBlock,
523
- buildRuntimeGuidanceBlocks,
524
- resolveToolGuidedSections,
525
- buildCurrentTimeBlock,
526
- requiresBareImageUrl,
527
- toBareImageUrlMessages
528
- };