@mybricks/plugin-ai 0.0.1 → 0.0.3

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 (203) hide show
  1. package/dist/_virtual/_rollupPluginBabelHelpers.js +164 -0
  2. package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  3. package/dist/agents/app.js +335 -0
  4. package/dist/agents/app.js.map +1 -0
  5. package/dist/agents/common.js +483 -0
  6. package/dist/agents/common.js.map +1 -0
  7. package/dist/agents/custom.js +16 -0
  8. package/dist/agents/custom.js.map +1 -0
  9. package/dist/agents/index.js +38 -0
  10. package/dist/agents/index.js.map +1 -0
  11. package/dist/agents/knowledges/knowledge-base.js +579 -0
  12. package/dist/agents/knowledges/knowledge-base.js.map +1 -0
  13. package/dist/agents/knowledges/knowledge-node.js +228 -0
  14. package/dist/agents/knowledges/knowledge-node.js.map +1 -0
  15. package/dist/agents/knowledges/types.js +105 -0
  16. package/dist/agents/knowledges/types.js.map +1 -0
  17. package/dist/agents/utils/config.js +229 -0
  18. package/dist/agents/utils/config.js.map +1 -0
  19. package/dist/agents/workspace/coding-manager.js +20 -0
  20. package/dist/agents/workspace/coding-manager.js.map +1 -0
  21. package/dist/agents/workspace/components-manager.js +113 -0
  22. package/dist/agents/workspace/components-manager.js.map +1 -0
  23. package/dist/agents/workspace/outline-focus.js +167 -0
  24. package/dist/agents/workspace/outline-focus.js.map +1 -0
  25. package/dist/agents/workspace/outline-info.js +430 -0
  26. package/dist/agents/workspace/outline-info.js.map +1 -0
  27. package/dist/agents/workspace/page-tree-generator.js +70 -0
  28. package/dist/agents/workspace/page-tree-generator.js.map +1 -0
  29. package/dist/agents/workspace/workspace.js +251 -0
  30. package/dist/agents/workspace/workspace.js.map +1 -0
  31. package/dist/agents/workspace-by-knowledges/providers/component-docs-provider.js +100 -0
  32. package/dist/agents/workspace-by-knowledges/providers/component-docs-provider.js.map +1 -0
  33. package/dist/agents/workspace-by-knowledges/providers/focus-info-provider.js +120 -0
  34. package/dist/agents/workspace-by-knowledges/providers/focus-info-provider.js.map +1 -0
  35. package/dist/agents/workspace-by-knowledges/providers/project-info-provider.js +146 -0
  36. package/dist/agents/workspace-by-knowledges/providers/project-info-provider.js.map +1 -0
  37. package/dist/agents/workspace-by-knowledges/test.js +242 -0
  38. package/dist/agents/workspace-by-knowledges/test.js.map +1 -0
  39. package/dist/agents/workspace-by-knowledges/utils/components-manager.js +132 -0
  40. package/dist/agents/workspace-by-knowledges/utils/components-manager.js.map +1 -0
  41. package/dist/agents/workspace-by-knowledges/utils/outline-focus.js +167 -0
  42. package/dist/agents/workspace-by-knowledges/utils/outline-focus.js.map +1 -0
  43. package/dist/agents/workspace-by-knowledges/utils/outline-info.js +430 -0
  44. package/dist/agents/workspace-by-knowledges/utils/outline-info.js.map +1 -0
  45. package/dist/agents/workspace-by-knowledges/workspace.js +169 -0
  46. package/dist/agents/workspace-by-knowledges/workspace.js.map +1 -0
  47. package/dist/api/cloud-components.js +85 -0
  48. package/dist/api/cloud-components.js.map +1 -0
  49. package/dist/api-record-replay/manager.js +168 -0
  50. package/dist/api-record-replay/manager.js.map +1 -0
  51. package/dist/api-record-replay/recorder.js +107 -0
  52. package/dist/api-record-replay/recorder.js.map +1 -0
  53. package/dist/api-record-replay/replayer.js +136 -0
  54. package/dist/api-record-replay/replayer.js.map +1 -0
  55. package/dist/components/attachments/index.js +124 -0
  56. package/dist/components/attachments/index.js.map +1 -0
  57. package/dist/components/attachments/index.less.js +8 -0
  58. package/dist/components/attachments/index.less.js.map +1 -0
  59. package/dist/components/icons/index.js +112 -0
  60. package/dist/components/icons/index.js.map +1 -0
  61. package/dist/components/icons/index.less.js +8 -0
  62. package/dist/components/icons/index.less.js.map +1 -0
  63. package/dist/components/mention/index.js +19 -0
  64. package/dist/components/mention/index.js.map +1 -0
  65. package/dist/components/mention/index.less.js +8 -0
  66. package/dist/components/mention/index.less.js.map +1 -0
  67. package/dist/components/messages/index.js +429 -0
  68. package/dist/components/messages/index.js.map +1 -0
  69. package/dist/components/messages/index.less.js +8 -0
  70. package/dist/components/messages/index.less.js.map +1 -0
  71. package/dist/components/sender/index.js +244 -0
  72. package/dist/components/sender/index.js.map +1 -0
  73. package/dist/components/sender/index.less.js +8 -0
  74. package/dist/components/sender/index.less.js.map +1 -0
  75. package/dist/context/RequestStatusTracker.js +44 -0
  76. package/dist/context/RequestStatusTracker.js.map +1 -0
  77. package/dist/context/index.js +45 -0
  78. package/dist/context/index.js.map +1 -0
  79. package/dist/data.js +4 -0
  80. package/dist/data.js.map +1 -0
  81. package/dist/index.js +306 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/plugin-ai/node_modules/style-inject/dist/style-inject.es.js +27 -0
  84. package/dist/plugin-ai/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
  85. package/dist/plugin-ai/package.json.js +8 -0
  86. package/dist/plugin-ai/package.json.js.map +1 -0
  87. package/dist/plugin-ai/test/index.js +206 -0
  88. package/dist/plugin-ai/test/index.js.map +1 -0
  89. package/dist/preset/createTemplates.js +29 -0
  90. package/dist/preset/createTemplates.js.map +1 -0
  91. package/dist/preset/index.js +13 -0
  92. package/dist/preset/index.js.map +1 -0
  93. package/dist/preset/prompts.js +34 -0
  94. package/dist/preset/prompts.js.map +1 -0
  95. package/dist/preset/user.js +7 -0
  96. package/dist/preset/user.js.map +1 -0
  97. package/dist/requestAsStream.js +269 -0
  98. package/dist/requestAsStream.js.map +1 -0
  99. package/dist/rxai/node_modules/idb/build/index.js +277 -0
  100. package/dist/rxai/node_modules/idb/build/index.js.map +1 -0
  101. package/dist/rxai/src/agent/base.js +16 -0
  102. package/dist/rxai/src/agent/base.js.map +1 -0
  103. package/dist/rxai/src/agent/planning.js +1076 -0
  104. package/dist/rxai/src/agent/planning.js.map +1 -0
  105. package/dist/rxai/src/agent/rxai.js +254 -0
  106. package/dist/rxai/src/agent/rxai.js.map +1 -0
  107. package/dist/rxai/src/error/base.js +39 -0
  108. package/dist/rxai/src/error/base.js.map +1 -0
  109. package/dist/rxai/src/prompt/base.js +11 -0
  110. package/dist/rxai/src/prompt/base.js.map +1 -0
  111. package/dist/rxai/src/prompt/planning.js +23 -0
  112. package/dist/rxai/src/prompt/planning.js.map +1 -0
  113. package/dist/rxai/src/prompt/tool.js +14 -0
  114. package/dist/rxai/src/prompt/tool.js.map +1 -0
  115. package/dist/rxai/src/request/request.js +123 -0
  116. package/dist/rxai/src/request/request.js.map +1 -0
  117. package/dist/rxai/src/tool/getHistoryRecords.js +65 -0
  118. package/dist/rxai/src/tool/getHistoryRecords.js.map +1 -0
  119. package/dist/rxai/src/tool/util.js +424 -0
  120. package/dist/rxai/src/tool/util.js.map +1 -0
  121. package/dist/rxai/src/utils/events.js +43 -0
  122. package/dist/rxai/src/utils/events.js.map +1 -0
  123. package/dist/rxai/src/utils/idb.js +240 -0
  124. package/dist/rxai/src/utils/idb.js.map +1 -0
  125. package/dist/rxai/src/utils/retry.js +32 -0
  126. package/dist/rxai/src/utils/retry.js.map +1 -0
  127. package/dist/rxai/src/utils/uuid.js +7 -0
  128. package/dist/rxai/src/utils/uuid.js.map +1 -0
  129. package/dist/startView/components/header/header.js +12 -0
  130. package/dist/startView/components/header/header.js.map +1 -0
  131. package/dist/startView/components/header/header.less.js +8 -0
  132. package/dist/startView/components/header/header.less.js.map +1 -0
  133. package/dist/startView/index.js +62 -0
  134. package/dist/startView/index.js.map +1 -0
  135. package/dist/startView/index.less.js +8 -0
  136. package/dist/startView/index.less.js.map +1 -0
  137. package/dist/tools/analyze-and-expand-prd.js +116 -0
  138. package/dist/tools/analyze-and-expand-prd.js.map +1 -0
  139. package/dist/tools/analyze-requirement-and-components.js +208 -0
  140. package/dist/tools/analyze-requirement-and-components.js.map +1 -0
  141. package/dist/tools/answer.js +33 -0
  142. package/dist/tools/answer.js.map +1 -0
  143. package/dist/tools/build-process.js +550 -0
  144. package/dist/tools/build-process.js.map +1 -0
  145. package/dist/tools/coding-subagent-as-tool.js +101 -0
  146. package/dist/tools/coding-subagent-as-tool.js.map +1 -0
  147. package/dist/tools/generate-ui-content.js +528 -0
  148. package/dist/tools/generate-ui-content.js.map +1 -0
  149. package/dist/tools/index.js +31 -0
  150. package/dist/tools/index.js.map +1 -0
  151. package/dist/tools/open-dsl.js +49 -0
  152. package/dist/tools/open-dsl.js.map +1 -0
  153. package/dist/tools/refactor-ui-content.js +292 -0
  154. package/dist/tools/refactor-ui-content.js.map +1 -0
  155. package/dist/tools/utils.js +832 -0
  156. package/dist/tools/utils.js.map +1 -0
  157. package/dist/types/index.js +8 -0
  158. package/dist/types/index.js.map +1 -0
  159. package/dist/view/components/header/header.js +59 -0
  160. package/dist/view/components/header/header.js.map +1 -0
  161. package/dist/view/components/header/header.less.js +8 -0
  162. package/dist/view/components/header/header.less.js.map +1 -0
  163. package/dist/view/index.js +184 -0
  164. package/dist/view/index.js.map +1 -0
  165. package/dist/view/index.less.js +8 -0
  166. package/dist/view/index.less.js.map +1 -0
  167. package/package.json +33 -6
  168. package/src/agents/app.ts +0 -173
  169. package/src/agents/common.ts +0 -111
  170. package/src/agents/index.ts +0 -7
  171. package/src/components/icons/index.less +0 -8
  172. package/src/components/icons/index.tsx +0 -24
  173. package/src/components/messages/index.less +0 -806
  174. package/src/components/messages/index.tsx +0 -236
  175. package/src/context/index.ts +0 -21
  176. package/src/data.ts +0 -5
  177. package/src/index.tsx +0 -84
  178. package/src/mock.ts +0 -1267
  179. package/src/startView/index.less +0 -216
  180. package/src/startView/index.tsx +0 -229
  181. package/src/tools/analyze-and-expand-prd.ts +0 -166
  182. package/src/tools/answer-user.ts +0 -35
  183. package/src/tools/focus-element.ts +0 -47
  184. package/src/tools/generate-page.ts +0 -750
  185. package/src/tools/get-component-info-by-ids.ts +0 -166
  186. package/src/tools/get-component-info.ts +0 -53
  187. package/src/tools/get-components-doc-and-prd.ts +0 -137
  188. package/src/tools/get-focus-mybricks-dsl.ts +0 -26
  189. package/src/tools/get-mybricks-dsl.ts +0 -73
  190. package/src/tools/index.ts +0 -25
  191. package/src/tools/modify-component.ts +0 -385
  192. package/src/tools/type.d.ts +0 -12
  193. package/src/tools/utils.ts +0 -62
  194. package/src/types.d.ts +0 -65
  195. package/src/view/components/header/header.less +0 -17
  196. package/src/view/components/header/header.tsx +0 -15
  197. package/src/view/components/index.ts +0 -3
  198. package/src/view/components/messages/messages.less +0 -228
  199. package/src/view/components/messages/messages.tsx +0 -172
  200. package/src/view/components/sender/sender.less +0 -44
  201. package/src/view/components/sender/sender.tsx +0 -62
  202. package/src/view/index.less +0 -5
  203. package/src/view/index.tsx +0 -18
@@ -0,0 +1,23 @@
1
+ var getSystemPrompt = params => {
2
+ var {
3
+ title,
4
+ tools,
5
+ prompt,
6
+ guidePromptSection = ""
7
+ } = params;
8
+ var toolsContent = "空";
9
+ if (tools.length) {
10
+ toolsContent = "";
11
+ tools.forEach(tool => {
12
+ var {
13
+ name,
14
+ description
15
+ } = tool;
16
+ toolsContent += "## ".concat(name) + "\n" + "**\u529F\u80FD\u63CF\u8FF0**\uFF1A".concat(description, "\n\n");
17
+ });
18
+ }
19
+ return "\u4F60\u662F".concat(title, "\uFF0C\u662F\u4E00\u4E2AReAct\uFF08\u63A8\u7406\u4E0E\u884C\u52A8\uFF09\u667A\u80FD\u4F53\uFF0C\u4F60\u7684\u6838\u5FC3\u4EFB\u52A1\u662F\u7406\u89E3\u7528\u6237\u76EE\u7684\u548C\u610F\u56FE\uFF0C\u5E76\u51B3\u7B56\u91C7\u53D6\u4F55\u79CD\u5DE5\u4F5C\u6A21\u5F0F\u6765\u6700\u9AD8\u6548\u5730\u5E2E\u52A9\u7528\u6237\u3002\n\n# \u51B3\u7B56\u6D41\u7A0B\u4E0E\u5DE5\u4F5C\u6A21\u5F0F\n\u4F60\u7684\u6240\u6709\u884C\u4E3A\u90FD\u5FC5\u987B\u9075\u5FAA\u4EE5\u4E0B\u7684 **\u89C4\u5212\u4F18\u5148\u539F\u5219 (Planning-First Principle)**\u3002\n**\u6838\u5FC3\u539F\u5219**\uFF1A\u4F60\u7684\u9996\u8981\u4EFB\u52A1\u6C38\u8FDC\u662F\u5C1D\u8BD5\u901A\u8FC7\u300C\u89C4\u5212\u6A21\u5F0F\u300D\u6765\u89E3\u51B3\u7528\u6237\u95EE\u9898\u3002\u53EA\u6709\u5F53\u5236\u5B9A\u4EFB\u4F55\u6709\u610F\u4E49\u7684\u8BA1\u5212\u90FD**\u5F7B\u5E95\u4E0D\u53EF\u80FD**\u65F6\uFF0C\u4F60\u624D\u80FD\u4F5C\u4E3A**\u6700\u7EC8\u624B\u6BB5**\uFF0C\u5207\u6362\u5230\u300C\u5BF9\u8BDD\u6A21\u5F0F\u300D\u3002\n\n## \u4E3B\u8981\u8DEF\u5F84\uFF1A\u89C4\u5212\u6A21\u5F0F (Planning Mode)\n[\u4F55\u65F6\u8FDB\u5165] \u8FD9\u662F\u4F60\u7684\u9ED8\u8BA4\u548C\u9996\u9009\u6A21\u5F0F\u3002\u53EA\u8981\u6EE1\u8DB3\u4EE5\u4E0B\u4EFB\u4E00\u6761\u4EF6\uFF0C\u4F60**\u5FC5\u987B**\u8FDB\u5165\u6B64\u6A21\u5F0F\uFF1A\n 1.\u7528\u6237\u7684\u9700\u6C42\u53EF\u4EE5\u901A\u8FC7\u4E00\u4E2A\u5B8C\u6574\u7684\u5DE5\u5177\u94FE\u76F4\u63A5\u89E3\u51B3\u3002\n 2.\u7528\u6237\u7684\u9700\u6C42\u770B\u4F3C\u6A21\u7CCA\u6216\u4E0D\u660E\u786E\uFF0C\u53EF\u4EE5\u901A\u8FC7\u8C03\u7528\u90E8\u5206\u5DE5\u5177\uFF08\u5982\u4FE1\u606F\u83B7\u53D6\u7C7B\u5DE5\u5177\uFF09\u6765\u6536\u96C6\u4E0A\u4E0B\u6587\uFF0C\u5411\u6700\u7EC8\u89E3\u51B3\u8FC8\u51FA\u4E00\u6B65\u3002\n 3.\u7528\u6237\u7684\u9700\u6C42\u770B\u4F3C\u65E0\u5173\uFF0C\u4F46\u5148\u901A\u8FC7\u8C03\u7528\u90E8\u5206\u5DE5\u5177\uFF08\u5982\u4FE1\u606F\u83B7\u53D6\u7C7B\u5DE5\u5177\uFF09\u6765\u6536\u96C6\u4E0A\u4E0B\u6587\uFF0C\u6709\u53EF\u80FD\u53D1\u73B0\u771F\u6B63\u7684\u529E\u6CD5\u3002\n 4.\u5F53\u4E0A\u4E00\u6B65\u7684\u64CD\u4F5C\u88AB\u7528\u6237\u5426\u5B9A\uFF08\u4F8B\u5982\u201C\u641E\u9519\u4E86\u201D\u3001\u201C\u4E0D\u5BF9\u201D\uFF09\uFF0C\u4F60\u5E94\u8BE5\u4F18\u5148\u5C1D\u8BD5\u901A\u8FC7\u8C03\u7528\u4FE1\u606F\u83B7\u53D6\u7C7B\u5DE5\u5177\u6765\u91CD\u65B0\u5206\u6790\u95EE\u9898\u6839\u6E90\uFF0C\u800C\u4E0D\u662F\u76F4\u63A5\u8FDB\u5165\u5BF9\u8BDD\u6A21\u5F0F\u3002\n[\u4F60\u7684\u4EFB\u52A1] \u5206\u6790\u5E76\u5236\u5B9A\u4E00\u4E2A**\u4E00\u6B21\u6027\u5B8C\u6574**\u7684\u5DE5\u5177\u8C03\u7528\u8BA1\u5212\uFF0C\u5E76\u4EE5bash\u547D\u4EE4\u7684\u5F62\u5F0F\u8F93\u51FA\u3002\n[\u8F93\u51FA\u683C\u5F0F] \u4F60\u53EA\u80FD\u8FD4\u56DE\u4EE5\u4E0B\u4E09\u90E8\u5206\u5185\u5BB9\uFF0C\u6309\u987A\u5E8F\uFF1A\n 1. **\u884C\u52A8\u8BA1\u5212\u8BF4\u660E**\uFF1A\u7528\u4E00\u53E5\u8BDD\u8BF4\u660E\u4F60\u5C06\u8C03\u7528\u54EA\u4E9B\u5DE5\u5177\u3001\u505A\u4EC0\u4E48\u3001\u4E3A\u4EC0\u4E48\u8FD9\u6837\u5B89\u6392\n 2. **bash\u4EE3\u7801\u5757**\uFF1A\u5305\u542B\u5B8C\u6574\u7684\u5DE5\u5177\u8C03\u7528\u94FE\n 3. **\u5B8C\u6574\u6027\u68C0\u67E5**\uFF1A\u8BF4\u660E\u4E3A\u4EC0\u4E48\u8FD9\u4E2A\u89C4\u5212\u662F\u5B8C\u6574\u7684\uFF0C\u53EF\u4EE5\u8FBE\u6210\u7528\u6237\u76EE\u7684\n\n## \u9000\u8DEF/\u4F8B\u5916\uFF1A\u5BF9\u8BDD\u6A21\u5F0F (Dialogue Mode)\n[\u4F55\u65F6\u8FDB\u5165] \u8FD9\u662F\u4F60\u7684\u4F8B\u5916\u548C\u5907\u7528\u6A21\u5F0F\uFF0C\u53EA\u6709\u786E\u8BA4\u5373\u4F7F\u662F\u8C03\u7528\u4FE1\u606F\u83B7\u53D6\u7C7B\u5DE5\u5177\uFF0C\u4E5F\u6CA1\u6709\u4EFB\u4F55\u610F\u4E49\uFF0C\u4F60\u624D\u80FD\u8FDB\u5165\u6B64\u6A21\u5F0F\u3002\n[\u4F60\u7684\u4EFB\u52A1] \u76F4\u63A5\u7528\u81EA\u7136\u8BED\u8A00\u4E0E\u7528\u6237\u4EA4\u6D41\uFF0C\u8FDB\u884C\u63D0\u95EE\u3001\u6F84\u6E05\u6216\u63D0\u4F9B\u5EFA\u8BAE\u3002\n[\u8F93\u51FA\u683C\u5F0F] \u4F60\u53EA\u80FD\u8FD4\u56DE\u7EAF\u6587\u672C\u7684\u81EA\u7136\u8BED\u8A00\u56DE\u7B54\u3002\n\nIMPORTANT: \u59CB\u7EC8\u63D0\u4F9B\u4E00\u4E2A\u5B8C\u6574\u7684\u89C4\u5212\uFF0C\u63D0\u4F9B\u5BF9\u5E94\u7684\u5B8C\u6574\u6027\u81EA\u68C0\u8BF4\u660E\uFF0C\u4E0D\u80FD\u51FA\u73B0\u201C\u7EE7\u7EED\u201D\u201C\u4E4B\u540E\u201D\u201C\u7136\u540E\u201D\u201C\u540E\u7EED\u201D\u8FD9\u6837\u7684\u5B57\u773C\u548C\u610F\u56FE\u3002\nIMPORTANT: \u6211\u4F1A\u5728\u4E0B\u9762\u63D0\u4F9B\u300C\u95EE\u9898\u9886\u57DF\u300D\u300C\u53EF\u7528\u7684\u5DE5\u5177\u300D\uFF0C\u4F60\u53EA\u80FD\u56DE\u7B54\u4E0E\u4E4B\u76F8\u5173\u7684\u95EE\u9898\uFF0C\u5BF9\u4E8E\u4E0D\u61C2\u7684\u95EE\u9898\uFF0C\u4F60\u5FC5\u987B\u63D0\u95EE\u54A8\u8BE2\u7528\u6237\u662F\u5426\u9700\u8981\u548C\u5F53\u524D\u300C\u95EE\u9898\u9886\u57DF\u300D\u76F8\u5173\u7684\u95EE\u9898\u3002\nIMPORTANT: \u5386\u53F2\u6D88\u606F\u4E2D\u7684<\u5BF9\u8BDD\u65E5\u5FD7/>\u4EC5\u4F5C\u5B58\u6863\uFF0C\u5176\u5305\u542B\u7684\u5185\u5BB9\u53EF\u80FD\u5DF2\u8FC7\u65F6\uFF0C\u4F5C\u4E3A\u5F53\u524D\u89C4\u5212\u7684\u6570\u636E\u6765\u6E90\u65F6\u9700\u8981\u4ED4\u7EC6\u7504\u522B\u3002\nIMPORTANT: \u6240\u6709\u56DE\u7B54\u9700\u8981\u57FA\u4E8E\u63D0\u4F9B\u7684\u77E5\u8BC6\uFF0C\u4E0D\u8981\u4F7F\u7528\u865A\u6784\u3001\u5047\u8BBE\u548C\u731C\u6D4B\u7684\u77E5\u8BC6\u8FDB\u884C\u56DE\u7B54\u3002\nIMPORTANT: \u5386\u53F2\u5BF9\u8BDD\u8BB0\u5F55\u91CC\u5305\u542B\u4E86\u5DE5\u5177\u8C03\u7528\u8BB0\u5F55\uFF0C\u9700\u8981\u5206\u6790\u5728\u63A5\u4E0B\u6765\u7684\u89C4\u5212\u4E2D\u662F\u5426\u8FD8\u9700\u8981\u91CD\u590D\u8C03\u7528\u76F8\u540C\u7684\u5DE5\u5177\uFF0C\u5982\u679C\u5BF9\u8BDD\u8BB0\u5F55\u4E2D\u7684\u5185\u5BB9\u5DF2\u7ECF\u5305\u542B\u4E86\u7528\u6237\u76EE\u7684\uFF0C\u5219\u4E0D\u9700\u8981\u91CD\u590D\u8C03\u7528\u5DE5\u5177\u3002\n\n# \u4F60\u7684\u5DE5\u4F5C\u6D41\u7A0B\n\u7406\u89E3\u5E76\u5206\u6790\u7528\u6237\u610F\u56FE\uFF0C\u4F7F\u7528\u5DE5\u5177\u89C4\u5212\u534F\u52A9\u7528\u6237\u8FBE\u6210\u76EE\u7684 \u6216\u8005 \u56DE\u7B54\u7528\u6237\u7684\u95EE\u9898\u3002\n\n1. \u51B3\u7B56\u5DE5\u4F5C\u6A21\u5F0F\uFF1A\u7406\u89E3\u548C\u5206\u6790\u7528\u6237\u610F\u56FE\uFF0C\u5224\u65AD\u5E94\u8BE5\u8FDB\u5165\u300C\u89C4\u5212\u6A21\u5F0F\u300D\u8FD8\u662F\u300C\u5BF9\u8BDD\u6A21\u5F0F\u300D\uFF1B\n - \u51B3\u7B56\u8F85\u52A9\u4FE1\u606F\uFF1A\u5728\u4E0D\u7406\u89E3\u4F46\u53C8\u786E\u5B9E\u662F\u5F53\u524D\u9886\u57DF\u95EE\u9898\u65F6\uFF0C\u5EFA\u8BAE\u4ECE\u4E0A\u4E0B\u6587\u83B7\u53D6\u66F4\u591A\u4FE1\u606F\u6216\u8005\u662F\u53C2\u8003\u5386\u53F2\u5BF9\u8BDD\u4E2D\u7684\u7528\u6237\u63D0\u95EE\u4E0E\u53CD\u9988\uFF0C\u4EE5\u66F4\u597D\u5730\u7406\u89E3\u7528\u6237\u610F\u56FE\u7684\u6F14\u53D8\uFF1B\n - \u51B3\u7B56\u68C0\u67E5\u70B9\uFF1A\u5728\u51B3\u5B9A\u8FDB\u5165\u300C\u5BF9\u8BDD\u6A21\u5F0F\u300D\u524D\uFF0C\u8BF7\u518D\u6B21\u81EA\u68C0\uFF1A\u201C\u6211\u771F\u7684\u65E0\u6CD5\u901A\u8FC7\u4EFB\u4F55\u5DE5\u5177\uFF08\u54EA\u6015\u53EA\u662F\u4E00\u4E2A\u4FE1\u606F\u83B7\u53D6\u5DE5\u5177\uFF09\u6765\u66F4\u597D\u5730\u5E2E\u52A9\u7528\u6237\u5417\uFF1F\u201D \u5982\u679C\u7B54\u6848\u662F\u201C\u771F\u7684\u4E0D\u884C\u201D\uFF0C\u624D\u53EF\u8FDB\u5165\u300C\u5BF9\u8BDD\u6A21\u5F0F\u300D\u3002\n2. \u89C4\u5212\u6216\u56DE\u7B54\uFF1A\n 2.1 \u89C4\u5212\uFF1A\u6307\u5B9A\u4E00\u4E2A\u8FDE\u8D2F\u4E14\u5408\u7406\u7684\u8BA1\u5212\uFF0C\u8BF4\u660E\u60A8\u6253\u7B97\u5982\u4F55\u89E3\u51B3\u7528\u6237\u7684\u4EFB\u52A1\u3002\n \u89C4\u5212\u5F00\u59CB\u524D\uFF0C\u4E00\u53E5\u8BDD\u8BF4\u660E\u5C06\u8981\u8C03\u7528\u54EA\u4E9B\u5DE5\u5177\u3001\u505A\u4EC0\u4E48\u4E8B\u3001\u4E3A\u4EC0\u4E48\u8FD9\u6837\u5B89\u6392\n \u4F5C\u4E3A\u89C4\u5212\u7684\u5F00\u59CB\uFF0C\u60A8\u9700\u8981\u901A\u8FC7\u5DE5\u5177\u83B7\u53D6\u5404\u7C7B\u6587\u6863\u6765\u4FDD\u8BC1\u76EE\u7684\u7684\u8FBE\u6210\u3002\n \u4F5C\u4E3A\u89C4\u5212\u7684\u7ED3\u675F\uFF0C\u60A8\u5E94\u8BE5\u786E\u4FDD\u89C4\u5212\u8DB3\u591F\u5B8C\u6574\uFF0C\u5BF9\u89C4\u5212\u8FDB\u884C\u5B8C\u6574\u6027\u68C0\u67E5\u3002\n 2.2 \u5BF9\u8BDD\uFF1A\u901A\u8FC7\u81EA\u7136\u8BED\u8A00\u8FFD\u95EE\u3001\u5EFA\u8BAE\u6216\u56DE\u7B54\u7528\u6237\u7684\u95EE\u9898\uFF0C\u4E0D\u8981\u5305\u542B\u300C\u5BF9\u8BDD\u6A21\u5F0F\u300D\u8FD9\u79CD\u4E13\u4E1A\u6027\u5B57\u773C\u3002\n\nWARNING: \u4EFB\u4F55\u65F6\u5019\uFF0C\u4FDD\u6301\u4E13\u4E1A\uFF0C\u4E0D\u8981\u6709\u5197\u4F59\u7684\u63D0\u95EE\u3002\n - \u7981\u6B62\u63D0\u95EE\u7528\u6237\u662F\u5426\u8981\u6267\u884C\u4FE1\u606F\u83B7\u53D6\u7C7B\u5DE5\u5177\uFF0C\u5148\u83B7\u53D6\u4FE1\u606F\u518D\u8BF4\uFF1B\n - \u7981\u6B62\u91CD\u590D\u5BF9\u7528\u6237\u7684\u95EE\u9898\u8FDB\u884C\u63D0\u95EE\uFF0C\u8FD9\u975E\u5E38\u611A\u8822\uFF1B\n - \u5373\u4F7F\u7528\u6237\u591A\u6B21\u63D0\u51FA\u76F8\u540C\u7684\u95EE\u9898\uFF0C\u4F60\u4E5F\u5E94\u8BE5\u61C2\u5F97\u53D8\u901A\uFF0C\u6301\u7EED\u5730\u8F6C\u6362\u601D\u8DEF\u53BB\u89E3\u51B3\u7528\u6237\u95EE\u9898\uFF0C\u7981\u6B62\u91CD\u590D\uFF1B\n\n> \u8BED\u6C14\u548C\u8BED\u8A00\u98CE\u683C\uFF1A\n - \u901A\u4FD7\u6613\u61C2\uFF1A\u7528\u6237\u90FD\u662F\u5C0F\u767D\uFF0C\u9664\u975E\u4ED6\u58F0\u660E\u4ED6\u662F\u4E00\u4E2A\u4E13\u4E1A\u7528\u6237\uFF0C\u5426\u5219\u5C3D\u91CF\u7528\u5C0F\u767D\u53CB\u597D\u7684\u8BCD\u6C47\u6765\u8FDB\u884C\u56DE\u7B54\uFF1B\n - \u884C\u52A8\u5BFC\u5411\uFF1A\u4F7F\u7528\"\u6211\u5C06\u505A...\"\uFF0C\"\u6211\u5C06\u4E3A...\u505A...\"\uFF0C\"\u7531\u4E8E...\u9700\u8981...\",\"\u901A\u8FC7...\u4E3A\u60A8...\"\u8FD9\u6837\u7684\u8868\u8FBE\u65B9\u5F0F\uFF1B\n - \u907F\u514D\u95F2\u804A\uFF1A\u907F\u514D\u56DE\u7B54\u5197\u4F59\u5185\u5BB9\uFF0C\u6BD4\u5982\u201C\u597D\u7684\uFF0C\u6211\u73B0\u5728...\u201D\u3001\u201C\u4E00\u4E2AXX\u4E13\u5BB6\u201D\u3001\u201C\u6839\u636E\u5386\u53F2\u5BF9\u8BDD\u8BB0\u5F55\u201D\uFF1B\n - \u4FDD\u6301\u795E\u79D8\uFF1A\u5BF9\u4E8E\u7528\u6237\u54A8\u8BE2\u4F60\u7684\u8EAB\u4EFD\u7B49\u4FE1\u606F\u65F6\uFF0C\u8BB0\u5F97\u505A\u597D\u4FDD\u5BC6\uFF0C\u5C31\u8BF4\u4F60\u662F\u300C\u5F53\u524D\u95EE\u9898\u9886\u57DF\u300D\u7684\u52A9\u624B\uFF0C\uFF08\u603B\u7ED3\u5DE5\u5177\u7684\u80FD\u529B\uFF09\u80FD\u591F\u5E2E\u52A9\u4ED6\u5373\u53EF\uFF0C\u4E0D\u8981\u63D0\u53CA\u201C\u5DE5\u5177\u201D\u7B49\u4E13\u4E1A\u8BCD\u6C47\uFF1B\n\n> \u5B57\u6570\u9650\u5236\uFF08\u5F3A\u5236\uFF09\uFF1A\u9664\u4E86\u89C4\u5212\u90E8\u5206\uFF0C\u5176\u5B83\u5B57\u6570\u4E0D\u8981\u8D85\u8FC750\u5B57\u3002\n\n").concat(guidePromptSection, "\n\n<\u5F53\u89C4\u5212\u6A21\u5F0F\u65F6>\n- \u884C\u52A8\u8BA1\u5212\u8BF4\u660E\uFF0C\u7528\u4E00\u53E5\u8BDD\u8BF4\u660E\u4F60\u5C06\u8C03\u7528\u54EA\u4E9B\u5DE5\u5177\u3001\u505A\u4EC0\u4E48\u3001\u4E3A\u4EC0\u4E48\u8FD9\u6837\u5B89\u6392\u3002\n \u6CE8\u610F\uFF1A\n - \u7981\u6B62\u51FA\u73B0\u201C\u7528\u6237\u9700\u6C42\u201D\u3001\u201C\u7528\u6237\u201D\u7B49\u76F8\u5173\u3001\u7C7B\u4F3C\u7684\u5B57\u773C\uFF0C\u4F60\u662F\u76F4\u63A5\u9762\u5BF9\u7528\u6237\uFF0C\u7528\u201C\u4F60\u201D\u3001\u201C\u60A8\u201D\u76F4\u63A5\u6C9F\u901A\u3002\n - \u7981\u6B62\u51FA\u73B0\u201C\u884C\u52A8\u8BA1\u5212\u8BF4\u660E\u201D\u7B49\u76F8\u5173\u3001\u7C7B\u4F3C\u7684\u5B57\u773C\u3002\n- \u751F\u6210\u8C03\u7528\u5DE5\u5177\u7684node\u547D\u4EE4\uFF0C\u5FC5\u987B\u4E00\u6B21\u5C06\u6240\u6709\u6B65\u9AA4\u5217\u51FA\u5E76\u6267\u884C\uFF1B\n \u4F8B\u5982\uFF1A\n ```bash\n node script1 && node script2 -key value\n ```\n \u6CE8\u610F\uFF1A\n - node\u547D\u4EE4\u5FC5\u987B\u5305\u542B\u5728bash\u4EE3\u7801\u5757\u4E2D\uFF08markdown\u8BED\u6CD5\uFF09\n - \u5FC5\u987B\u4E14\u53EA\u80FD\u8FD4\u56DE\u4E00\u884Cnode\u547D\u4EE4\n - \u5982\u679C\u9700\u8981\u53C2\u6570\uFF0C\u8BF7\u4F7F\u7528yargs\u7684\u77ED\u6A2A\u7EBF\u5199\u6CD5\n - node\u547D\u4EE4\u4E2D\u7981\u6B62\u51FA\u73B0`&&`\u4EE5\u5916\u7684\u4EFB\u4F55\u5B57\u7B26\n - \u6700\u540E\u4E00\u4E2A\u547D\u4EE4\u53EA\u80FD\u4EE5\u300C\u64CD\u4F5C\u7C7B\u300D\u6216\u8005\u300C\u56DE\u7B54\u7C7B\u300D\u7ED3\u675F\uFF0C\u4E0D\u80FD\u4EE5\u300C\u4FE1\u606F\u83B7\u53D6\u7C7B\u300D\u7ED3\u675F\n- \u5B8C\u6574\u6027\u68C0\u67E5\u8BF4\u660E\uFF0C\u786E\u4FDD\u8FD9\u4E9B\u5DE5\u5177\u5DF2\u7ECF\u53EF\u4EE5\u8FBE\u6210\u7528\u6237\u76EE\u7684\uFF0C\u5E76\u4E14\u4E0D\u9700\u8981\u540E\u7EED\u3001\u4E4B\u540E\u6B65\u9AA4\u7684\u5B8C\u6574\u6027\u89C4\u5212\u3002\n\n\u8FD4\u56DE\u5185\u5BB9\u5FC5\u987B\u6709\u4E14\u53EA\u80FD\u6709\u300C\u884C\u52A8\u8BA1\u5212\u8BF4\u660E\u300D+\u300Cbash\u4EE3\u7801\u5757\u300D+\u300C\u5B8C\u6574\u6027\u68C0\u67E5\u300D\u3002\n\n<examples>\n <example>\n <user>\n \u5E2E\u6211\u8BA1\u7B97\u4E0B1+1=\u51E0\n </user>\n <assistant>\n \u6211\u5C06\u8C03\u7528math\u5DE5\u5177\u76F4\u63A5\u8BA1\u7B971+1\u7684\u7ED3\u679C\u3002\n ```bash\n node math\n ```\n \u5B8C\u6574\u6027\u68C0\u67E5\uFF1Amath\u5DE5\u5177\u53EF\u4EE5\u901A\u8FC7\u7ED9\u5B9A\u516C\u5F0F\u76F4\u63A5\u8BA1\u7B97\u51FA\u7ED3\u679C\u3002\n </assistant>\n </example>\n\n <example>\n <user>\n \u5E2E\u6211\u67E5\u8BE2\u4E0B\u4ECA\u5929\u7684\u5929\u6C14\u6E29\u5EA6\n </user>\n <assistant>\n \u6211\u5C06\u786E\u5B9A\u60A8\u7684\u4F4D\u7F6E\u4FE1\u606F\uFF0C\u6839\u636E\u4F4D\u7F6E\u4FE1\u606F\u83B7\u53D6\u5929\u6C14\u6570\u636E\uFF0C\u6574\u7406\u6210\u6E29\u5EA6\u62A5\u544A\u3002\n ```bash\n node search-geo && node get-weather && node analyse-and-answer\n ```\n \u5B8C\u6574\u6027\u68C0\u67E5\uFF1A\u5148\u8C03\u7528search-geo\u6765\u83B7\u53D6\u5730\u7406\u4F4D\u7F6E\u4FE1\u606F\uFF0C\u518D\u8C03\u7528get-weather\u6765\u83B7\u53D6\u5929\u6C14\u4FE1\u606F\uFF0C\u518D\u7528analyse-and-answer\u603B\u7ED3\u56DE\u7B54\uFF0C\u53EF\u4EE5\u67E5\u8BE2\u51FA\u5F53\u524D\u5730\u7406\u4F4D\u7F6E\u7684\u5929\u6C14\u6E29\u5EA6\uFF0C\u4E0D\u9700\u8981\u540E\u7EED\u6B65\u9AA4\u3002\u8FD9\u4E2A\u8BA1\u5212\u5B8C\u6574\u8986\u76D6\u4E86\u4ECE\u4F4D\u7F6E\u786E\u5B9A\u5230\u5929\u6C14\u67E5\u8BE2\u518D\u5230\u62A5\u544A\u751F\u6210\u7684\u5168\u8FC7\u7A0B\u3002\n </assistant>\n </example>\n\n <example>\n <user>\n \u5982\u4F55\u505A\u756A\u8304\u7092\u86CB\uFF1F\n </user>\n <assistant>\n \u6211\u5C06\u5E2E\u60A8\u641C\u7D22\u756A\u8304\u7092\u86CB\u7684\u83DC\u8C31\uFF0C\u6574\u7406\u6210\u70F9\u996A\u6307\u5357\u3002\n ```bash\n node search-menu && node analyse-and-answer\n ```\n \u5B8C\u6574\u6027\u68C0\u67E5\uFF1A\u7528\u6237\u60F3\u4E86\u89E3\u5982\u4F55\u505A\u756A\u8304\u7092\u86CB\uFF0C\u901A\u8FC7search-menu\u5DE5\u5177\u641C\u7D22\u5BA2\u89C2\u51C6\u786E\u7684\u77E5\u8BC6\u5E76\u4E14\u901A\u8FC7analyse-and-answer\u56DE\u7B54\u7528\u6237\u7684\u95EE\u9898\u3002\n </assistant>\n </example>\n\n <example>\n <user>\u6309\u7167\u4E4B\u524D\u7684\u65B9\u6848\u6267\u884C</user>\n <assistant>\n \u7531\u4E8E\u9700\u8981\u4E86\u89E3\u4E4B\u524D\u7684\u5177\u4F53\u65B9\u6848\u5185\u5BB9\uFF0C\u6211\u9700\u8981\u5148\u67E5\u770B\u5386\u53F2\u5BF9\u8BDD\u8BB0\u5F55\u4E86\u89E3\u5177\u4F53\u65B9\u6848\u5E76\u6267\u884C\u8BE5\u65B9\u6848\u3002\n ```bash\n node get-history-records -filenames filename && node execute-plan\n ``` \n \u5B8C\u6574\u6027\u68C0\u67E5\uFF1A\u9700\u8981\u83B7\u53D6\u5386\u53F2\u5BF9\u8BDD\u8BB0\u5F55\uFF0C\u4E86\u89E3\u4E4B\u524D\u7684\u65B9\u6848\u662F\u4EC0\u4E48\uFF0C\u4E4B\u524D\u7684\u65B9\u6848\u662F\u6765\u81EA\u65B9\u6848\u89C4\u5212\u5DE5\u5177\uFF0C\u4E0D\u518D\u91CD\u590D\u8C03\u7528\u65B9\u6848\u89C4\u5212\u5DE5\u5177\uFF0C\u518D\u8C03\u7528execute-plan\u5DE5\u5177\u53EF\u4EE5\u6267\u884C\u5177\u4F53\u7684\u65B9\u6848\u3002\u5148\u83B7\u53D6\u65B9\u6848\u8BE6\u60C5\u518D\u6267\u884C\u65B9\u6848\uFF0C\u53EF\u4EE5\u5B8C\u6574\u5B8C\u6210\u7528\u6237\u7684\u8981\u6C42\u3002\n </assistant>\n </example>\n \n <example>\n <user>\u4F18\u5316\u8FD9\u4E2A\u6587\u6863</user>\n <assistant>\n \u6211\u5148\u67E5\u770B\u5386\u53F2\u5BF9\u8BDD\u8BB0\u5F55\u4E86\u89E3\u8FD9\u4E2A\u6587\u6863\u5185\u5BB9\uFF0C\u518D\u5E2E\u60A8\u8FDB\u884C\u6587\u6863\u4F18\u5316\u3002\n ```bash\n node get-history-records -filenames filename && node optimize-doc\n ```\n \n \u5B8C\u6574\u6027\u68C0\u67E5\uFF1A\u9700\u8981\u83B7\u53D6\u5386\u53F2\u5BF9\u8BDD\u8BB0\u5F55\uFF0C\u4E86\u89E3\u8FD9\u4E2A\u6587\u6863\u7684\u5185\u5BB9\uFF0C\u518D\u8C03\u7528optimize-doc\u5DE5\u5177\u4F18\u5316\u6587\u6863\u5185\u5BB9\u3002\u67E5\u770B\u6587\u6863\u5185\u5BB9\u5E76\u8FDB\u884C\u4F18\u5316\uFF0C\u53EF\u4EE5\u5B8C\u6574\u5B8C\u6210\u6587\u6863\u4F18\u5316\u4EFB\u52A1\u3002\n </assistant>\n </example>\n</examples>\n</\u5F53\u89C4\u5212\u6A21\u5F0F\u65F6>\n\n<\u5F53\u5BF9\u8BDD\u6A21\u5F0F\u65F6>\n\u8FD9\u662F\u4F60\u6700\u540E\u7684\u9009\u62E9\u3002\u5F53\u4F60\u5C1D\u8BD5\u4E86\u201C\u91CD\u65B0\u89C4\u5212\u6765\u83B7\u53D6\u4FE1\u606F\u201D\u4F46\u4F9D\u7136\u65E0\u6CD5\u89E3\u51B3\u95EE\u9898\uFF0C\u6216\u8005\u4F60\u786E\u4FE1\u6CA1\u6709\u4EFB\u4F55\u4FE1\u606F\u80FD\u5E2E\u52A9\u4F60\u65F6\uFF0C\u4F60\u53EF\u4EE5\u8FDB\u5165\u5BF9\u8BDD\u6A21\u5F0F\uFF0C\u4E3B\u8981\u6709\u4EE5\u4E0B\u51C6\u5219\uFF1A\n\n1. \u5BF9\u4E8E\u4E3B\u89C2\u6216\u62BD\u8C61\u7684\u54A8\u8BE2\u63D0\u95EE\uFF1A\u4F60\u7684\u4EFB\u52A1\u662F**\u5C06\u62BD\u8C61\u9700\u6C42\u5177\u4F53\u5316**\u3002\u901A\u8FC7\u63D0\u4F9B\u9009\u9879\u3001\u4E3E\u4F8B\u7B49\u65B9\u5F0F\uFF0C\u5F15\u5BFC\u7528\u6237\u5C06\u4E3B\u89C2\u611F\u53D7\u8F6C\u5316\u4E3A\u53EF\u4EE5\u6267\u884C\u7684\u5177\u4F53\u64CD\u4F5C\uFF1B\n2. \u5BF9\u4E8E\u89C4\u5212\u5931\u8D25\u540E\u7684\u8FFD\u95EE\uFF1A\u5F53\u4F60\u5C1D\u8BD5\u4E86\u201C\u91CD\u65B0\u89C4\u5212\u6765\u83B7\u53D6\u4FE1\u606F\u201D\u4F46\u4F9D\u7136\u65E0\u6CD5\u89E3\u51B3\u95EE\u9898\uFF0C\u6B64\u65F6\uFF0C\u4F60\u8981\u7B80\u8981\u8BF4\u660E\u4F60\u4E0A\u4E00\u6B65\u7684\u5C1D\u8BD5\u548C\u7406\u89E3\uFF0C\u57FA\u4E8E\u4F60\u7684\u601D\u8003\uFF0C\u63D0\u51FA\u6709\u5EFA\u8BBE\u6027\u7684\u9009\u9879\uFF1B\n3. \u7981\u6B62\u884C\u4E3A\uFF1A\n - \u4E0D\u8981\u63D0\u53CA\u201C\u5DE5\u5177\u201D\u3001\u201C\u89C4\u5212\u6A21\u5F0F\u201D\u3001\u201C\u5BF9\u8BDD\u6A21\u5F0F\u201D\u7B49\u5185\u90E8\u672F\u8BED\u3002\n - \u4E0D\u8981\u66B4\u9732\u4F60\u65E0\u6CD5\u8C03\u7528\u5DE5\u5177\u7684\u5C40\u9650\u6027\u3002\n - \u4E0D\u8981\u63D0\u4F9B\u94FE\u63A5\u3001\u56FE\u7247\u7B49\u4E0D\u53EF\u9760\u7684\u4FE1\u606F\u6765\u6E90\uFF1B\n\n<examples>\n <example>\n <user>\n \u5E2E\u6211\u8BA1\u7B97\u4E0B1+N=\u51E0\n </user>\n <assistant>\n \u6211\u9700\u8981\u77E5\u9053N\u7684\u5177\u4F53\u6570\u503C\u624D\u53EF\u4EE5\u505A\u51FA\u8BA1\u7B97\uFF0C\u4F60\u53EF\u4EE5\u63D0\u4F9B\u5177\u4F53\u7684\u6570\u5B57\u5417\uFF1F\n </assistant>\n <reason>\n \u6211\u601D\u8003\u4E86\u4E00\u4E0B\uFF0C\u786E\u8BA4\u65E0\u6CD5\u901A\u8FC7\u4EFB\u4F55\u4FE1\u606F\u83B7\u53D6\u7C7B\u5DE5\u5177\u83B7\u53D6N\u7684\u6570\u503C\uFF0C\u53EA\u6709\u7528\u6237\u53EF\u4EE5\u63D0\u4F9B\uFF0C\u6240\u4EE5\u8FDB\u5165\u300C\u5BF9\u8BDD\u6A21\u5F0F\u300D\u5411\u7528\u6237\u54A8\u8BE2\u3002\n </reason>\n </example>\n</examples>\n</\u5F53\u5BF9\u8BDD\u6A21\u5F0F\u65F6>\n\n<\u9519\u8BEF\u7684\u8FD4\u56DE\u793A\u4F8B>\n \u8FD9\u91CC\u9762\u662F*\u7EDD\u5BF9\u7981\u6B62*\u7684\u8FD4\u56DE\u793A\u4F8B\uFF0C\u8FD4\u56DE\u8FD9\u79CD\u793A\u4F8B\u5BB9\u6613\u9020\u6210\u4E0D\u53EF\u633D\u56DE\u7684\u540E\u679C\u3002\n <example>\n <user>\n \u5E2E\u6211\u67E5\u8BE2\u4E0B\u5929\u6C14\n </user>\n <assistant>\n ```bash\n node search-geo\n ```\n \u5B8C\u6574\u6027\u68C0\u67E5\uFF1A\u67E5\u8BE2\u5929\u6C14\u9700\u8981\u5148\u4E86\u89E3\u5F53\u524D\u7528\u6237\u6240\u5728\u7684\u5730\u533A\uFF0C\u540E\u7EED\u4F1A\u7EE7\u7EED\u8FDB\u884C\u67E5\u8BE2\u3002\n </assistant>\n <reason>\n \u91CD\u8981\u4FE1\u606F\u5DF2\u7ECF\u63D0\u53CA\uFF0C\u7EDD\u5BF9\u4E0D\u5141\u8BB8\u51FA\u73B0\u201C\u4E4B\u540E\u201D\u201C\u540E\u7EED\u201D\u7684\u5B57\u773C\uFF0C\u8FD9\u662F\u4E00\u4E2A\u4E0D\u5B8C\u6574\u7684\u89C4\u5212\uFF0C\u662F\u975E\u5E38\u5371\u9669\u7684\u64CD\u4F5C\uFF01\n </reason>\n </example>\n\n <example>\n <user>\n \u5E2E\u6211\u67E5\u8BE2\u4E0B\u5929\u6C14\n </user>\n <assistant>\n \u53EF\u4EE5\u8BF4\u660E\u4E0B\u5177\u4F53\u662F\u54EA\u91CC\u7684\u5929\u6C14\u5417\uFF1F\n </assistant>\n <reason>\n \u5728\u6240\u6709\u8FFD\u95EE\u4E4B\u524D\uFF0C\u8BF7\u5148\u901A\u8FC7\u5DE5\u5177\u548C\u5386\u53F2\u8BB0\u5F55\u83B7\u53D6\u4E0A\u4E0B\u6587\uFF0C\u660E\u660E\u5DE5\u5177\u4E2D\u53EF\u4EE5\u67E5\u8BE2 search-geo\uFF0C\u8FD8\u8981\u54A8\u8BE2\u7528\u6237\uFF0C\u8FD9\u662F\u4E00\u4E2A\u53CA\u5176\u4E0D\u4E13\u4E1A\u7684\u884C\u4E3A\uFF01\n </reason>\n </example>\n\n <example>\n <user>\u7EE7\u7EED\u4F18\u5316\u8FD9\u4E2A\u65B9\u6848</user>\n <assistant>\n ```bash\n node optimize-plan\n ```\n \u5B8C\u6574\u6027\u68C0\u67E5\uFF1Aoptimize-plan\u5DE5\u5177\u53EF\u4EE5\u4F18\u5316\u65B9\u6848\u3002\n </assistant>\n <reason>\n \u7528\u6237\u4F7F\u7528\u4E86\"\u7EE7\u7EED\"\u548C\"\u8FD9\u4E2A\"\u6307\u4EE3\u8BCD\uFF0C\u5FC5\u987B\u5148\u8BFB\u53D6\u5386\u53F2\u8BB0\u5F55\u4E86\u89E3\u5177\u4F53\u662F\u4EC0\u4E48\u65B9\u6848\uFF0C\u5426\u5219\u65E0\u6CD5\u8FDB\u884C\u6709\u6548\u4F18\u5316\u3002\n </reason>\n </example>\n \n <example>\n <user>\u4F18\u5316\u8FD9\u4E2A\u6587\u6863</user>\n <assistant>\n ```bash\n node optimize-doc\n ```\n \u5B8C\u6574\u6027\u68C0\u67E5\uFF1Aoptimize-doc\u5DE5\u5177\u53EF\u4EE5\u4F18\u5316\u6587\u6863\u5185\u5BB9\u3002\n </assistant>\n <reason>\n \u7528\u6237\u4E0D\u77E5\u9053\"\u8FD9\u4E2A\u6587\u6863\"\u5177\u4F53\u6307\u4EC0\u4E48\uFF0C\u5FC5\u987B\u5148\u8BFB\u53D6\u5386\u53F2\u8BB0\u5F55\u4E86\u89E3\u5177\u4F53\u662F\u4EC0\u4E48\u6587\u6863\uFF0C\u5426\u5219\u65E0\u6CD5\u8FDB\u884C\u6709\u6548\u4F18\u5316\u3002\n </reason>\n </example>\n</\u9519\u8BEF\u7684\u8FD4\u56DE\u793A\u4F8B>\n\n<\u53EF\u7528\u7684\u5DE5\u5177\u8BF4\u660E>\n> \u6807\u9898\u4E3A\u5DE5\u5177\u540D\u79F0\uFF0C\u5373javascript\u811A\u672C\u6587\u4EF6\u540D\u3002\n \n").concat(toolsContent, "\n</\u53EF\u7528\u7684\u5DE5\u5177\u8BF4\u660E>\n\n").concat(prompt, "\n");
20
+ };
21
+
22
+ export { getSystemPrompt };
23
+ //# sourceMappingURL=planning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning.js","sources":["../../../../../rxai/src/prompt/planning.ts"],"sourcesContent":["interface GetSystemPromptParams {\n title: string;\n tools: { name: string; description: string }[];\n prompt: string;\n guidePromptSection?: string;\n}\n\nconst getSystemPrompt = (params: GetSystemPromptParams) => {\n const { title, tools, prompt, guidePromptSection = \"\" } = params;\n let toolsContent = \"空\";\n\n if (tools.length) {\n toolsContent = \"\";\n tools.forEach((tool) => {\n const { name, description } = tool;\n toolsContent += `## ${name}` + \"\\n\" + `**功能描述**:${description}\\n\\n`;\n });\n }\n\n return `你是${title},是一个ReAct(推理与行动)智能体,你的核心任务是理解用户目的和意图,并决策采取何种工作模式来最高效地帮助用户。\n\n# 决策流程与工作模式\n你的所有行为都必须遵循以下的 **规划优先原则 (Planning-First Principle)**。\n**核心原则**:你的首要任务永远是尝试通过「规划模式」来解决用户问题。只有当制定任何有意义的计划都**彻底不可能**时,你才能作为**最终手段**,切换到「对话模式」。\n\n## 主要路径:规划模式 (Planning Mode)\n[何时进入] 这是你的默认和首选模式。只要满足以下任一条件,你**必须**进入此模式:\n 1.用户的需求可以通过一个完整的工具链直接解决。\n 2.用户的需求看似模糊或不明确,可以通过调用部分工具(如信息获取类工具)来收集上下文,向最终解决迈出一步。\n 3.用户的需求看似无关,但先通过调用部分工具(如信息获取类工具)来收集上下文,有可能发现真正的办法。\n 4.当上一步的操作被用户否定(例如“搞错了”、“不对”),你应该优先尝试通过调用信息获取类工具来重新分析问题根源,而不是直接进入对话模式。\n[你的任务] 分析并制定一个**一次性完整**的工具调用计划,并以bash命令的形式输出。\n[输出格式] 你只能返回以下三部分内容,按顺序:\n 1. **行动计划说明**:用一句话说明你将调用哪些工具、做什么、为什么这样安排\n 2. **bash代码块**:包含完整的工具调用链\n 3. **完整性检查**:说明为什么这个规划是完整的,可以达成用户目的\n\n## 退路/例外:对话模式 (Dialogue Mode)\n[何时进入] 这是你的例外和备用模式,只有确认即使是调用信息获取类工具,也没有任何意义,你才能进入此模式。\n[你的任务] 直接用自然语言与用户交流,进行提问、澄清或提供建议。\n[输出格式] 你只能返回纯文本的自然语言回答。\n\nIMPORTANT: 始终提供一个完整的规划,提供对应的完整性自检说明,不能出现“继续”“之后”“然后”“后续”这样的字眼和意图。\nIMPORTANT: 我会在下面提供「问题领域」「可用的工具」,你只能回答与之相关的问题,对于不懂的问题,你必须提问咨询用户是否需要和当前「问题领域」相关的问题。\nIMPORTANT: 历史消息中的<对话日志/>仅作存档,其包含的内容可能已过时,作为当前规划的数据来源时需要仔细甄别。\nIMPORTANT: 所有回答需要基于提供的知识,不要使用虚构、假设和猜测的知识进行回答。\nIMPORTANT: 历史对话记录里包含了工具调用记录,需要分析在接下来的规划中是否还需要重复调用相同的工具,如果对话记录中的内容已经包含了用户目的,则不需要重复调用工具。\n\n# 你的工作流程\n理解并分析用户意图,使用工具规划协助用户达成目的 或者 回答用户的问题。\n\n1. 决策工作模式:理解和分析用户意图,判断应该进入「规划模式」还是「对话模式」;\n - 决策辅助信息:在不理解但又确实是当前领域问题时,建议从上下文获取更多信息或者是参考历史对话中的用户提问与反馈,以更好地理解用户意图的演变;\n - 决策检查点:在决定进入「对话模式」前,请再次自检:“我真的无法通过任何工具(哪怕只是一个信息获取工具)来更好地帮助用户吗?” 如果答案是“真的不行”,才可进入「对话模式」。\n2. 规划或回答:\n 2.1 规划:指定一个连贯且合理的计划,说明您打算如何解决用户的任务。\n 规划开始前,一句话说明将要调用哪些工具、做什么事、为什么这样安排\n 作为规划的开始,您需要通过工具获取各类文档来保证目的的达成。\n 作为规划的结束,您应该确保规划足够完整,对规划进行完整性检查。\n 2.2 对话:通过自然语言追问、建议或回答用户的问题,不要包含「对话模式」这种专业性字眼。\n\nWARNING: 任何时候,保持专业,不要有冗余的提问。\n - 禁止提问用户是否要执行信息获取类工具,先获取信息再说;\n - 禁止重复对用户的问题进行提问,这非常愚蠢;\n - 即使用户多次提出相同的问题,你也应该懂得变通,持续地转换思路去解决用户问题,禁止重复;\n\n> 语气和语言风格:\n - 通俗易懂:用户都是小白,除非他声明他是一个专业用户,否则尽量用小白友好的词汇来进行回答;\n - 行动导向:使用\"我将做...\",\"我将为...做...\",\"由于...需要...\",\"通过...为您...\"这样的表达方式;\n - 避免闲聊:避免回答冗余内容,比如“好的,我现在...”、“一个XX专家”、“根据历史对话记录”;\n - 保持神秘:对于用户咨询你的身份等信息时,记得做好保密,就说你是「当前问题领域」的助手,(总结工具的能力)能够帮助他即可,不要提及“工具”等专业词汇;\n\n> 字数限制(强制):除了规划部分,其它字数不要超过50字。\n\n${guidePromptSection}\n\n<当规划模式时>\n- 行动计划说明,用一句话说明你将调用哪些工具、做什么、为什么这样安排。\n 注意:\n - 禁止出现“用户需求”、“用户”等相关、类似的字眼,你是直接面对用户,用“你”、“您”直接沟通。\n - 禁止出现“行动计划说明”等相关、类似的字眼。\n- 生成调用工具的node命令,必须一次将所有步骤列出并执行;\n 例如:\n \\`\\`\\`bash\n node script1 && node script2 -key value\n \\`\\`\\`\n 注意:\n - node命令必须包含在bash代码块中(markdown语法)\n - 必须且只能返回一行node命令\n - 如果需要参数,请使用yargs的短横线写法\n - node命令中禁止出现\\`&&\\`以外的任何字符\n - 最后一个命令只能以「操作类」或者「回答类」结束,不能以「信息获取类」结束\n- 完整性检查说明,确保这些工具已经可以达成用户目的,并且不需要后续、之后步骤的完整性规划。\n\n返回内容必须有且只能有「行动计划说明」+「bash代码块」+「完整性检查」。\n\n<examples>\n <example>\n <user>\n 帮我计算下1+1=几\n </user>\n <assistant>\n 我将调用math工具直接计算1+1的结果。\n \\`\\`\\`bash\n node math\n \\`\\`\\`\n 完整性检查:math工具可以通过给定公式直接计算出结果。\n </assistant>\n </example>\n\n <example>\n <user>\n 帮我查询下今天的天气温度\n </user>\n <assistant>\n 我将确定您的位置信息,根据位置信息获取天气数据,整理成温度报告。\n \\`\\`\\`bash\n node search-geo && node get-weather && node analyse-and-answer\n \\`\\`\\`\n 完整性检查:先调用search-geo来获取地理位置信息,再调用get-weather来获取天气信息,再用analyse-and-answer总结回答,可以查询出当前地理位置的天气温度,不需要后续步骤。这个计划完整覆盖了从位置确定到天气查询再到报告生成的全过程。\n </assistant>\n </example>\n\n <example>\n <user>\n 如何做番茄炒蛋?\n </user>\n <assistant>\n 我将帮您搜索番茄炒蛋的菜谱,整理成烹饪指南。\n \\`\\`\\`bash\n node search-menu && node analyse-and-answer\n \\`\\`\\`\n 完整性检查:用户想了解如何做番茄炒蛋,通过search-menu工具搜索客观准确的知识并且通过analyse-and-answer回答用户的问题。\n </assistant>\n </example>\n\n <example>\n <user>按照之前的方案执行</user>\n <assistant>\n 由于需要了解之前的具体方案内容,我需要先查看历史对话记录了解具体方案并执行该方案。\n \\`\\`\\`bash\n node get-history-records -filenames filename && node execute-plan\n \\`\\`\\` \n 完整性检查:需要获取历史对话记录,了解之前的方案是什么,之前的方案是来自方案规划工具,不再重复调用方案规划工具,再调用execute-plan工具可以执行具体的方案。先获取方案详情再执行方案,可以完整完成用户的要求。\n </assistant>\n </example>\n \n <example>\n <user>优化这个文档</user>\n <assistant>\n 我先查看历史对话记录了解这个文档内容,再帮您进行文档优化。\n \\`\\`\\`bash\n node get-history-records -filenames filename && node optimize-doc\n \\`\\`\\`\n \n 完整性检查:需要获取历史对话记录,了解这个文档的内容,再调用optimize-doc工具优化文档内容。查看文档内容并进行优化,可以完整完成文档优化任务。\n </assistant>\n </example>\n</examples>\n</当规划模式时>\n\n<当对话模式时>\n这是你最后的选择。当你尝试了“重新规划来获取信息”但依然无法解决问题,或者你确信没有任何信息能帮助你时,你可以进入对话模式,主要有以下准则:\n\n1. 对于主观或抽象的咨询提问:你的任务是**将抽象需求具体化**。通过提供选项、举例等方式,引导用户将主观感受转化为可以执行的具体操作;\n2. 对于规划失败后的追问:当你尝试了“重新规划来获取信息”但依然无法解决问题,此时,你要简要说明你上一步的尝试和理解,基于你的思考,提出有建设性的选项;\n3. 禁止行为:\n - 不要提及“工具”、“规划模式”、“对话模式”等内部术语。\n - 不要暴露你无法调用工具的局限性。\n - 不要提供链接、图片等不可靠的信息来源;\n\n<examples>\n <example>\n <user>\n 帮我计算下1+N=几\n </user>\n <assistant>\n 我需要知道N的具体数值才可以做出计算,你可以提供具体的数字吗?\n </assistant>\n <reason>\n 我思考了一下,确认无法通过任何信息获取类工具获取N的数值,只有用户可以提供,所以进入「对话模式」向用户咨询。\n </reason>\n </example>\n</examples>\n</当对话模式时>\n\n<错误的返回示例>\n 这里面是*绝对禁止*的返回示例,返回这种示例容易造成不可挽回的后果。\n <example>\n <user>\n 帮我查询下天气\n </user>\n <assistant>\n \\`\\`\\`bash\n node search-geo\n \\`\\`\\`\n 完整性检查:查询天气需要先了解当前用户所在的地区,后续会继续进行查询。\n </assistant>\n <reason>\n 重要信息已经提及,绝对不允许出现“之后”“后续”的字眼,这是一个不完整的规划,是非常危险的操作!\n </reason>\n </example>\n\n <example>\n <user>\n 帮我查询下天气\n </user>\n <assistant>\n 可以说明下具体是哪里的天气吗?\n </assistant>\n <reason>\n 在所有追问之前,请先通过工具和历史记录获取上下文,明明工具中可以查询 search-geo,还要咨询用户,这是一个及其不专业的行为!\n </reason>\n </example>\n\n <example>\n <user>继续优化这个方案</user>\n <assistant>\n \\`\\`\\`bash\n node optimize-plan\n \\`\\`\\`\n 完整性检查:optimize-plan工具可以优化方案。\n </assistant>\n <reason>\n 用户使用了\"继续\"和\"这个\"指代词,必须先读取历史记录了解具体是什么方案,否则无法进行有效优化。\n </reason>\n </example>\n \n <example>\n <user>优化这个文档</user>\n <assistant>\n \\`\\`\\`bash\n node optimize-doc\n \\`\\`\\`\n 完整性检查:optimize-doc工具可以优化文档内容。\n </assistant>\n <reason>\n 用户不知道\"这个文档\"具体指什么,必须先读取历史记录了解具体是什么文档,否则无法进行有效优化。\n </reason>\n </example>\n</错误的返回示例>\n\n<可用的工具说明>\n> 标题为工具名称,即javascript脚本文件名。\n \n${toolsContent}\n</可用的工具说明>\n\n${prompt}\n`;\n};\n\nexport { getSystemPrompt };\n"],"names":["getSystemPrompt","params","title","tools","prompt","guidePromptSection","toolsContent","length","forEach","tool","name","description","concat"],"mappings":"AAOA,IAAMA,eAAe,GAAIC,MAA6B,IAAK;EACzD,IAAM;IAAEC,KAAK;IAAEC,KAAK;IAAEC,MAAM;AAAEC,IAAAA,kBAAkB,GAAG;AAAG,GAAC,GAAGJ,MAAM;EAChE,IAAIK,YAAY,GAAG,GAAG;EAEtB,IAAIH,KAAK,CAACI,MAAM,EAAE;AAChBD,IAAAA,YAAY,GAAG,EAAE;AACjBH,IAAAA,KAAK,CAACK,OAAO,CAAEC,IAAI,IAAK;MACtB,IAAM;QAAEC,IAAI;AAAEC,QAAAA;AAAY,OAAC,GAAGF,IAAI;MAClCH,YAAY,IAAI,KAAA,CAAAM,MAAA,CAAMF,IAAI,CAAA,GAAK,IAAI,GAAA,oCAAA,CAAAE,MAAA,CAAeD,WAAW,EAAA,MAAA,CAAM;AACrE,IAAA,CAAC,CAAC;AACJ,EAAA;AAEA,EAAA,OAAA,cAAA,CAAAC,MAAA,CAAYV,KAAK,EAAA,4mUAAA,CAAA,CAAAU,MAAA,CAuDjBP,kBAAkB,EAAA,q5WAAA,CAAA,CAAAO,MAAA,CA2KlBN,YAAY,EAAA,qDAAA,CAAA,CAAAM,MAAA,CAGZR,MAAM,EAAA,IAAA,CAAA;AAER;;;;"}
@@ -0,0 +1,14 @@
1
+ var getToolPrompt = (tool, params) => {
2
+ var _tool$getPrompts;
3
+ var prompt = (_tool$getPrompts = tool.getPrompts) === null || _tool$getPrompts === void 0 ? void 0 : _tool$getPrompts.call(tool, params);
4
+ if (!prompt) {
5
+ return null;
6
+ }
7
+ var {
8
+ guidePromptSection = ""
9
+ } = params;
10
+ return "\n\u4F60\u662F\u4E00\u4E2A\u53EF\u88AB\u8C03\u7528\u7684\u5DE5\u5177\uFF08".concat(tool.name, "\uFF09\u3002\n\u8BF7\u6309\u7167\u4E0B\u8FF0\u5DE5\u5177\u8BE6\u7EC6\u63CF\u8FF0\uFF0C\u540C\u65F6\u53C2\u8003<\u9879\u76EE\u4E0A\u4E0B\u6587/>").concat(guidePromptSection !== null && guidePromptSection !== void 0 && guidePromptSection.trim() ? "以及<用户偏好/>" : "", "\uFF0C\u5B8C\u6210\u5DE5\u5177\u8C03\u7528\uFF0C\u6839\u636E<\u8F93\u51FA\u7EA6\u675F\u6761\u4EF6>\u63D0\u4F9B\u8F93\u51FA\u3002\n\nIMPORTANT: \u5386\u53F2\u5BF9\u8BDD\u4E2D\u4F1A\u51FA\u73B0<\u5BF9\u8BDD\u65E5\u5FD7 />\uFF0C \u662F\u5BF9\u5386\u53F2\u5DE5\u5177\u89C4\u5212\u548C\u8C03\u7528\u7684\u603B\u7ED3\uFF0C\u5DF2\u7ECF\u6CA1\u6709\u4EFB\u4F55\u8F93\u51FA\u7684\u53C2\u8003\u610F\u4E49\uFF0C\u8BF7\u52FF\u53C2\u8003\u8FD9\u4E9B\u4FE1\u606F\u8FDB\u884C\u8F93\u51FA\u3002\n\nIMPORTANT: \u8BED\u6C14\u548C\u8BED\u8A00\u98CE\u683C\uFF1A\n- \u901A\u4FD7\u6613\u61C2\uFF1A\u7528\u6237\u90FD\u662F\u5C0F\u767D\uFF0C\u9664\u975E\u4ED6\u58F0\u660E\u4ED6\u662F\u4E00\u4E2A\u4E13\u4E1A\u7528\u6237\uFF0C\u5426\u5219\u5C3D\u91CF\u7528\u5C0F\u767D\u53CB\u597D\u7684\u8BCD\u6C47\u6765\u8FDB\u884C\u56DE\u7B54\uFF1B\n- \u907F\u514D\u95F2\u804A\uFF1A\u907F\u514D\u5BF9\u8BDD\u5F0F\u7684\u5197\u4F59\u586B\u5145\uFF0C\u6BD4\u5982\"\u597D\u7684\uFF0C\u6211\u73B0\u5728...\"\uFF1B\n- \u4FDD\u6301\u795E\u79D8\uFF1A\u5BF9\u4E8E\u7528\u6237\u54A8\u8BE2\u4F60\u7684\u8EAB\u4EFD\u7B49\u4FE1\u606F\u65F6\uFF0C\u8BB0\u5F97\u505A\u597D\u4FDD\u5BC6\uFF0C\u5C31\u8BF4\u4F60\u662F\u300C\u5F53\u524D\u95EE\u9898\u9886\u57DF\u300D\u7684\u4E13\u5BB6\uFF0C\uFF08\u603B\u7ED3\u5DE5\u5177\u7684\u80FD\u529B\uFF09\u80FD\u591F\u5E2E\u52A9\u4ED6\u5373\u53EF\uFF0C\u4E0D\u8981\u63D0\u53CA\"\u5DE5\u5177\"\u7B49\u4E13\u4E1A\u8BCD\u6C47\uFF1B\n\nWARNING: \u4EFB\u4F55\u65F6\u5019\uFF0C\u4FDD\u6301\u4E13\u4E1A\uFF0C\u4E0D\u8981\u6709\u5197\u4F59\u7684\u63D0\u95EE\u3002\n - \u7981\u6B62\u63D0\u95EE\u7528\u6237\u662F\u5426\u8981\u6267\u884C\u4FE1\u606F\u83B7\u53D6\u7C7B\u5DE5\u5177\uFF0C\u5148\u83B7\u53D6\u4FE1\u606F\u518D\u8BF4\uFF1B\n - \u7981\u6B62\u91CD\u590D\u5BF9\u7528\u6237\u7684\u95EE\u9898\u8FDB\u884C\u63D0\u95EE\uFF0C\u8FD9\u975E\u5E38\u611A\u8822\uFF1B\n\n<\u8F93\u51FA\u7EA6\u675F\u6761\u4EF6>\n <\u8F93\u51FA\u5185\u5BB9>\n \u4F5C\u4E3A\u4E00\u4E2A\u5DE5\u5177\uFF0C\u4F60\u53EA\u80FD\u6309\u7167<\u8F93\u51FA\u683C\u5F0F/>\u8FDB\u884C\u8F93\u51FA\n \u4F46\u662F\uFF0C\u5982\u679C\u4F60\u53D1\u73B0\u4EE5\u4E0B\u60C5\u51B5\uFF0C\u53EF\u4EE5\u76F4\u63A5\u8F93\u51FA<\u81EA\u7136\u8BED\u8A00/>\u683C\u5F0F\u7684\u5185\u5BB9\n 1. \u5F53\u524D\u9700\u6C42\u6839\u636E\u5DE5\u5177\u548C\u77E5\u8BC6\u5185\u5BB9\uFF0C\u5C5E\u4E8E\u65E0\u6CD5\u5B8C\u6210\u7684\u9879\u76EE\uFF0C\u59D4\u5A49\u544A\u77E5\u7528\u6237\u65E0\u6CD5\u5B8C\u6210\uFF1B\n 2. \u5F53\u524D\u9700\u6C42\u6240\u9700\u7684\u77E5\u8BC6\u5185\u5BB9\u4E0D\u8DB3\uFF0C\u6216\u8005\u9700\u6C42\u4E0D\u660E\u786E\uFF0C\u53EF\u4EE5\u8FFD\u95EE\u7528\u6237\u83B7\u53D6\u66F4\u591A\u4FE1\u606F\uFF1B\n </\u8F93\u51FA\u5185\u5BB9>\n <\u8F93\u51FA\u683C\u5F0F>\n \u5DE5\u5177\u90FD\u53EF\u80FD\u4F1A\u8981\u6C42\u4F60\u4EE5\u7279\u5B9A\u7684\u683C\u5F0F\u8F93\u51FA\u7ED3\u679C\uFF0C\u8BF7\u52A1\u5FC5\u4ED4\u7EC6\u9605\u8BFB\u5DE5\u5177\u63CF\u8FF0\u4E2D\u7684\u8981\u6C42\u5E76\u4E25\u683C\u9075\u5B88\u3002\n \u76EE\u524D\u901A\u7528\u7684\u6587\u4EF6\u8FD4\u56DE\u683C\u5F0F\u53C2\u8003 github \u7684 info string \u683C\u5F0F\uFF0C\u5FC5\u987B\u58F0\u660Etitle\u5C5E\u6027\uFF0C\u4E5F\u5C31\u662F\u6587\u4EF6\u540D\u3002\n \u5F62\u5982\uFF1A\n ```\u6587\u4EF6\u7C7B\u578B title=\"\u6587\u4EF6\u540D.\u6587\u4EF6\u7C7B\u578B\"\n \u6587\u4EF6\u5185\u5BB9\n ```\n </\u8F93\u51FA\u683C\u5F0F>\n</\u8F93\u51FA\u7EA6\u675F\u6761\u4EF6>\n\n<\u5F53\u524D\u8C03\u7528\u5DE5\u5177\u8BE6\u7EC6\u63CF\u8FF0>\n").concat(prompt, "\n</\u5F53\u524D\u8C03\u7528\u5DE5\u5177\u8BE6\u7EC6\u63CF\u8FF0>\n\n").concat(guidePromptSection);
11
+ };
12
+
13
+ export { getToolPrompt };
14
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sources":["../../../../../rxai/src/prompt/tool.ts"],"sourcesContent":["const getToolPrompt = (tool: Tool, params: any) => {\n const prompt = tool.getPrompts?.(params);\n if (!prompt) {\n return null;\n }\n const { guidePromptSection = \"\" } = params;\n\n return `\n你是一个可被调用的工具(${tool.name})。\n请按照下述工具详细描述,同时参考<项目上下文/>${guidePromptSection?.trim() ? \"以及<用户偏好/>\" : \"\"},完成工具调用,根据<输出约束条件>提供输出。\n\nIMPORTANT: 历史对话中会出现<对话日志 />, 是对历史工具规划和调用的总结,已经没有任何输出的参考意义,请勿参考这些信息进行输出。\n\nIMPORTANT: 语气和语言风格:\n- 通俗易懂:用户都是小白,除非他声明他是一个专业用户,否则尽量用小白友好的词汇来进行回答;\n- 避免闲聊:避免对话式的冗余填充,比如\"好的,我现在...\";\n- 保持神秘:对于用户咨询你的身份等信息时,记得做好保密,就说你是「当前问题领域」的专家,(总结工具的能力)能够帮助他即可,不要提及\"工具\"等专业词汇;\n\nWARNING: 任何时候,保持专业,不要有冗余的提问。\n - 禁止提问用户是否要执行信息获取类工具,先获取信息再说;\n - 禁止重复对用户的问题进行提问,这非常愚蠢;\n\n<输出约束条件>\n <输出内容>\n 作为一个工具,你只能按照<输出格式/>进行输出\n 但是,如果你发现以下情况,可以直接输出<自然语言/>格式的内容\n 1. 当前需求根据工具和知识内容,属于无法完成的项目,委婉告知用户无法完成;\n 2. 当前需求所需的知识内容不足,或者需求不明确,可以追问用户获取更多信息;\n </输出内容>\n <输出格式>\n 工具都可能会要求你以特定的格式输出结果,请务必仔细阅读工具描述中的要求并严格遵守。\n 目前通用的文件返回格式参考 github 的 info string 格式,必须声明title属性,也就是文件名。\n 形如:\n \\`\\`\\`文件类型 title=\"文件名.文件类型\"\n 文件内容\n \\`\\`\\`\n </输出格式>\n</输出约束条件>\n\n<当前调用工具详细描述>\n${prompt}\n</当前调用工具详细描述>\n\n${guidePromptSection}`;\n};\n\nexport { getToolPrompt };\n"],"names":["getToolPrompt","tool","params","_tool$getPrompts","prompt","getPrompts","call","guidePromptSection","concat","name","trim"],"mappings":"AAAA,IAAMA,aAAa,GAAGA,CAACC,IAAU,EAAEC,MAAW,KAAK;AAAA,EAAA,IAAAC,gBAAA;AACjD,EAAA,IAAMC,MAAM,GAAA,CAAAD,gBAAA,GAAGF,IAAI,CAACI,UAAU,MAAA,IAAA,IAAAF,gBAAA,KAAA,MAAA,GAAA,MAAA,GAAfA,gBAAA,CAAAG,IAAA,CAAAL,IAAI,EAAcC,MAAM,CAAC;EACxC,IAAI,CAACE,MAAM,EAAE;AACX,IAAA,OAAO,IAAI;AACb,EAAA;EACA,IAAM;AAAEG,IAAAA,kBAAkB,GAAG;AAAG,GAAC,GAAGL,MAAM;AAE1C,EAAA,OAAA,4EAAA,CAAAM,MAAA,CACYP,IAAI,CAACQ,IAAI,EAAA,iJAAA,CAAA,CAAAD,MAAA,CACGD,kBAAkB,KAAA,IAAA,IAAlBA,kBAAkB,KAAA,MAAA,IAAlBA,kBAAkB,CAAEG,IAAI,EAAE,GAAG,WAAW,GAAG,EAAE,EAAA,o5GAAA,CAAA,CAAAF,MAAA,CA+BrEJ,MAAM,EAAA,uEAAA,CAAA,CAAAI,MAAA,CAGND,kBAAkB,CAAA;AACpB;;;;"}
@@ -0,0 +1,123 @@
1
+ import { objectSpread2 as _objectSpread2, asyncToGenerator as _asyncToGenerator } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { RxaiError } from '../error/base.js';
3
+ import { retry } from '../utils/retry.js';
4
+
5
+ class Request {
6
+ constructor(options) {
7
+ this.options = _objectSpread2({
8
+ maxRetries: 0
9
+ }, options);
10
+ }
11
+ requestAsStream(params) {
12
+ var _this = this;
13
+ return _asyncToGenerator(function* () {
14
+ var requestAsStream = () => {
15
+ return new Promise((resolve, reject) => {
16
+ var {
17
+ messages,
18
+ emits,
19
+ aiRole,
20
+ enableLog
21
+ } = params;
22
+ var content = "";
23
+ var emitsProxy = {
24
+ write(chunk) {
25
+ emits.write(chunk.replace(/^M:/, ""));
26
+ content += chunk;
27
+ },
28
+ complete() {
29
+ if (enableLog) {
30
+ console.log("[Request - requestAsStream - complete]", content);
31
+ }
32
+ emits.complete(content.replace(/^M:/, ""));
33
+ console.log("接口返回结果", content.replace(/^M:/, ""));
34
+ resolve({
35
+ type: "complete",
36
+ content: content.replace(/^M:/, "")
37
+ });
38
+ },
39
+ error(error) {
40
+ if (enableLog) {
41
+ console.log("[Request - requestAsStream - error]", error);
42
+ }
43
+ reject({
44
+ type: "error",
45
+ content: new RxaiError(error, "request")
46
+ });
47
+ },
48
+ cancel(cancel) {
49
+ emits.cancel(() => {
50
+ cancel();
51
+ });
52
+ }
53
+ };
54
+
55
+ // if ((aiRole === "expert" || aiRole === 'architect') && "production" === "development") {
56
+ // import("./preset/cdzd").then((module) => {
57
+ // (async () => {
58
+ // try {
59
+ // await module.requestAsStream({
60
+ // messages,
61
+ // emits: emitsProxy,
62
+ // aiRole,
63
+ // });
64
+ // } catch (error) {
65
+ // reject({
66
+ // type: "error",
67
+ // content: normalizeToolError(error, "接口调用错误"),
68
+ // });
69
+ // }
70
+ // })();
71
+ // });
72
+
73
+ // return;
74
+ // }
75
+
76
+ _asyncToGenerator(function* () {
77
+ try {
78
+ yield _this.options.requestAsStream({
79
+ messages,
80
+ emits: emitsProxy,
81
+ aiRole
82
+ });
83
+ } catch (error) {
84
+ reject({
85
+ type: "error",
86
+ content: new RxaiError(error, "request")
87
+ });
88
+ }
89
+ })();
90
+
91
+ // import("./preset/cdzd").then((module) => {
92
+ // (async () => {
93
+ // try {
94
+ // await module.requestAsStream({
95
+ // messages,
96
+ // emits: emitsProxy,
97
+ // aiRole,
98
+ // });
99
+ // } catch (error) {
100
+ // reject({
101
+ // type: "error",
102
+ // content: normalizeToolError(error, "接口调用错误"),
103
+ // });
104
+ // }
105
+ // })();
106
+ // });
107
+ });
108
+ };
109
+ return new Promise(resolve => {
110
+ retry(requestAsStream, _this.options.maxRetries).then(resolve).catch(error => {
111
+ params.emits.error(error);
112
+ resolve(error);
113
+ });
114
+ });
115
+ })();
116
+ }
117
+ get maxRetries() {
118
+ return this.options.maxRetries;
119
+ }
120
+ }
121
+
122
+ export { Request };
123
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sources":["../../../../../rxai/src/request/request.ts"],"sourcesContent":["import { RxaiError } from \"../error/base\";\nimport { retry } from \"../utils/retry\";\n\ninterface RequestAsStreamParams {\n messages: ChatMessages;\n aiRole?: AiRole;\n emits: Emits;\n enableLog?: boolean;\n}\n\ninterface RequestOptions {\n requestAsStream: (params: RequestAsStreamParams) => void | Promise<unknown>;\n /** 重试次数 */\n maxRetries?: number;\n}\n\nclass Request {\n private options: Required<RequestOptions>;\n constructor(options: RequestOptions) {\n this.options = {\n maxRetries: 0,\n ...options,\n };\n }\n\n async requestAsStream(\n params: RequestAsStreamParams,\n ): Promise<\n | { type: \"complete\"; content: string }\n | { type: \"error\"; content: RxaiError }\n | { type: \"cancel\"; content: string }\n > {\n const requestAsStream: () => ReturnType<\n Request[\"requestAsStream\"]\n > = () => {\n return new Promise((resolve, reject) => {\n const { messages, emits, aiRole, enableLog } = params;\n let content = \"\";\n const emitsProxy: Emits = {\n write(chunk) {\n emits.write(chunk.replace(/^M:/, \"\"));\n content += chunk;\n },\n complete() {\n if (enableLog) {\n console.log(\"[Request - requestAsStream - complete]\", content);\n }\n emits.complete(content.replace(/^M:/, \"\"));\n console.log(\"接口返回结果\", content.replace(/^M:/, \"\"));\n resolve({\n type: \"complete\",\n content: content.replace(/^M:/, \"\"),\n });\n },\n error(error) {\n if (enableLog) {\n console.log(\"[Request - requestAsStream - error]\", error);\n }\n reject({\n type: \"error\",\n content: new RxaiError(error, \"request\"),\n });\n },\n cancel(cancel) {\n emits.cancel(() => {\n cancel();\n });\n },\n };\n\n // if ((aiRole === \"expert\" || aiRole === 'architect') && APP_ENV === \"development\") {\n // import(\"./preset/cdzd\").then((module) => {\n // (async () => {\n // try {\n // await module.requestAsStream({\n // messages,\n // emits: emitsProxy,\n // aiRole,\n // });\n // } catch (error) {\n // reject({\n // type: \"error\",\n // content: normalizeToolError(error, \"接口调用错误\"),\n // });\n // }\n // })();\n // });\n\n // return;\n // }\n\n (async () => {\n try {\n await this.options.requestAsStream({\n messages,\n emits: emitsProxy,\n aiRole,\n });\n } catch (error) {\n reject({\n type: \"error\",\n content: new RxaiError(error, \"request\"),\n });\n }\n })();\n\n // import(\"./preset/cdzd\").then((module) => {\n // (async () => {\n // try {\n // await module.requestAsStream({\n // messages,\n // emits: emitsProxy,\n // aiRole,\n // });\n // } catch (error) {\n // reject({\n // type: \"error\",\n // content: normalizeToolError(error, \"接口调用错误\"),\n // });\n // }\n // })();\n // });\n });\n };\n\n return new Promise((resolve) => {\n retry<ReturnType<Request[\"requestAsStream\"]>>(\n requestAsStream,\n this.options.maxRetries,\n )\n .then(resolve)\n .catch((error) => {\n params.emits.error(error);\n resolve(error);\n });\n });\n }\n\n get maxRetries() {\n return this.options.maxRetries;\n }\n}\n\nexport { Request, RequestOptions };\n"],"names":["Request","constructor","options","_objectSpread","maxRetries","requestAsStream","params","_this","_asyncToGenerator","Promise","resolve","reject","messages","emits","aiRole","enableLog","content","emitsProxy","write","chunk","replace","complete","console","log","type","error","RxaiError","cancel","retry","then","catch"],"mappings":";;;;AAgBA,MAAMA,OAAO,CAAC;EAEZC,WAAWA,CAACC,OAAuB,EAAE;IACnC,IAAI,CAACA,OAAO,GAAAC,cAAA,CAAA;AACVC,MAAAA,UAAU,EAAE;AAAC,KAAA,EACVF,OAAO,CACX;AACH,EAAA;EAEMG,eAAeA,CACnBC,MAA6B,EAK7B;AAAA,IAAA,IAAAC,KAAA,GAAA,IAAA;AAAA,IAAA,OAAAC,iBAAA,CAAA,aAAA;MACA,IAAMH,eAEL,GAAGA,MAAM;AACR,QAAA,OAAO,IAAII,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;UACtC,IAAM;YAAEC,QAAQ;YAAEC,KAAK;YAAEC,MAAM;AAAEC,YAAAA;AAAU,WAAC,GAAGT,MAAM;UACrD,IAAIU,OAAO,GAAG,EAAE;AAChB,UAAA,IAAMC,UAAiB,GAAG;YACxBC,KAAKA,CAACC,KAAK,EAAE;cACXN,KAAK,CAACK,KAAK,CAACC,KAAK,CAACC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACrCJ,cAAAA,OAAO,IAAIG,KAAK;YAClB,CAAC;AACDE,YAAAA,QAAQA,GAAG;AACT,cAAA,IAAIN,SAAS,EAAE;AACbO,gBAAAA,OAAO,CAACC,GAAG,CAAC,wCAAwC,EAAEP,OAAO,CAAC;AAChE,cAAA;cACAH,KAAK,CAACQ,QAAQ,CAACL,OAAO,CAACI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC1CE,cAAAA,OAAO,CAACC,GAAG,CAAC,QAAQ,EAAEP,OAAO,CAACI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACjDV,cAAAA,OAAO,CAAC;AACNc,gBAAAA,IAAI,EAAE,UAAU;AAChBR,gBAAAA,OAAO,EAAEA,OAAO,CAACI,OAAO,CAAC,KAAK,EAAE,EAAE;AACpC,eAAC,CAAC;YACJ,CAAC;YACDK,KAAKA,CAACA,KAAK,EAAE;AACX,cAAA,IAAIV,SAAS,EAAE;AACbO,gBAAAA,OAAO,CAACC,GAAG,CAAC,qCAAqC,EAAEE,KAAK,CAAC;AAC3D,cAAA;AACAd,cAAAA,MAAM,CAAC;AACLa,gBAAAA,IAAI,EAAE,OAAO;AACbR,gBAAAA,OAAO,EAAE,IAAIU,SAAS,CAACD,KAAK,EAAE,SAAS;AACzC,eAAC,CAAC;YACJ,CAAC;YACDE,MAAMA,CAACA,MAAM,EAAE;cACbd,KAAK,CAACc,MAAM,CAAC,MAAM;AACjBA,gBAAAA,MAAM,EAAE;AACV,cAAA,CAAC,CAAC;AACJ,YAAA;WACD;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEAnB,UAAAA,iBAAA,CAAC,aAAY;YACX,IAAI;AACF,cAAA,MAAMD,KAAI,CAACL,OAAO,CAACG,eAAe,CAAC;gBACjCO,QAAQ;AACRC,gBAAAA,KAAK,EAAEI,UAAU;AACjBH,gBAAAA;AACF,eAAC,CAAC;YACJ,CAAC,CAAC,OAAOW,KAAK,EAAE;AACdd,cAAAA,MAAM,CAAC;AACLa,gBAAAA,IAAI,EAAE,OAAO;AACbR,gBAAAA,OAAO,EAAE,IAAIU,SAAS,CAACD,KAAK,EAAE,SAAS;AACzC,eAAC,CAAC;AACJ,YAAA;AACF,UAAA,CAAC,GAAG;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,QAAA,CAAC,CAAC;MACJ,CAAC;AAED,MAAA,OAAO,IAAIhB,OAAO,CAAEC,OAAO,IAAK;AAC9BkB,QAAAA,KAAK,CACHvB,eAAe,EACfE,KAAI,CAACL,OAAO,CAACE,UACf,CAAA,CACGyB,IAAI,CAACnB,OAAO,CAAA,CACZoB,KAAK,CAAEL,KAAK,IAAK;AAChBnB,UAAAA,MAAM,CAACO,KAAK,CAACY,KAAK,CAACA,KAAK,CAAC;UACzBf,OAAO,CAACe,KAAK,CAAC;AAChB,QAAA,CAAC,CAAC;AACN,MAAA,CAAC,CAAC;AAAA,IAAA,CAAA,CAAA,EAAA;AACJ,EAAA;EAEA,IAAIrB,UAAUA,GAAG;AACf,IAAA,OAAO,IAAI,CAACF,OAAO,CAACE,UAAU;AAChC,EAAA;AACF;;;;"}
@@ -0,0 +1,65 @@
1
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
2
+
3
+ var getHistoryRecords = () => {
4
+ return {
5
+ name: "get-history-records",
6
+ displayName: "读取历史对话记录",
7
+ description: "\u8BFB\u53D6\u5386\u53F2\u5BF9\u8BDD\u8BB0\u5F55\uFF0C\u7528\u4E8E\u540E\u7EED\u5B8C\u6210\u9700\u6C42\u4F7F\u7528\uFF0C\u4F5C\u4E3A\u540E\u7EED\u5DE5\u5177\u8C03\u7528\u7684\u4E0A\u4E0B\u6587\u4FE1\u606F\u3002\n\u53C2\u6570(filenames)\uFF1A\u5386\u53F2\u5BF9\u8BDD\u8BB0\u5F55\u6587\u4EF6\u540D\u5217\u8868\uFF0C\u652F\u6301\u6279\u91CF\uFF0C\u6279\u91CF\u6587\u4EF6\u540D\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\uFF1B\n\n**\u5386\u53F2\u8BB0\u5F55\u8BFB\u53D6\u51B3\u7B56\u6D41\u7A0B**\n1. \u9996\u5148\u68C0\u67E5\uFF1A\u7528\u6237\u662F\u5426\u4F7F\u7528\u4E86\u6307\u4EE3\u8BCD\uFF1F\uFF08\u90A3\u4E2A\u3001\u5B83\u3001\u4E4B\u524D\u7684\u3001\u521A\u624D\u7684\u7B49\uFF09\n - \u662F \u2192 \u5FC5\u987B\u8BFB\u53D6\u5386\u53F2\u8BB0\u5F55\n - \u5426 \u2192 \u7EE7\u7EED\u4E0B\u4E00\u6B65\n\n2. \u5176\u6B21\u68C0\u67E5\uFF1A\u7528\u6237\u662F\u5426\u8868\u8FBE\u4E86\u5BF9\u4E4B\u524D\u7ED3\u679C\u7684\u4E0D\u6EE1\uFF1F\uFF08\u9519\u4E86\u3001\u4E0D\u5BF9\u3001\u91CD\u505A\u7B49\uFF09\n - \u662F \u2192 \u5FC5\u987B\u8BFB\u53D6\u5386\u53F2\u8BB0\u5F55\u4E86\u89E3\u95EE\u9898\u6839\u6E90\n - \u5426 \u2192 \u7EE7\u7EED\u4E0B\u4E00\u6B65\n\n3. \u6700\u540E\u68C0\u67E5\uFF1A\u5F53\u524D\u4EFB\u52A1\u662F\u5426\u9700\u8981\u4E0A\u4E0B\u6587\u4FE1\u606F\u624D\u80FD\u7406\u89E3\uFF1F\n - \u662F \u2192 \u8BFB\u53D6\u76F8\u5173\u5386\u53F2\u8BB0\u5F55\n - \u5426 \u2192 \u53EF\u76F4\u63A5\u5904\u7406\n\n**\u5F3A\u5236\u8BFB\u53D6\u5386\u53F2\u8BB0\u5F55\u7684\u89E6\u53D1\u8BCD\u6C47**\n- \u660E\u786E\u5F15\u7528\u7C7B\uFF1A\u91CD\u8BD5\u3001\u7EE7\u7EED\u3001\u6309\u7167\u4E4B\u524D\u3001\u6839\u636E\u521A\u624D\u3001\u57FA\u4E8E\u4E0A\u6B21\n- \u6307\u4EE3\u7C7B\uFF1A\u90A3\u4E2A\u3001\u5B83\u4EEC\u3001\u8BE5\u6587\u6863\u3001\u6B64\u65B9\u6848\n- \u5426\u5B9A\u91CD\u505A\u7C7B\uFF1A\u641E\u9519\u4E86\u3001\u4E0D\u5BF9\u3001\u5168\u9519\u4E86\u3001\u91CD\u65B0\u6765\u3001\u6CA1\u5B9E\u73B0\n- \u72B6\u6001\u67E5\u8BE2\u7C7B\uFF1A\u8FDB\u5C55\u5982\u4F55\u3001\u7ED3\u679C\u600E\u6837\u3001\u5B8C\u6210\u4E86\u5417\n\n**\u5386\u53F2\u6587\u4EF6\u8BFB\u53D6\u4F18\u5148\u7EA7**\n1. \u9AD8\u4F18\u5148\u7EA7\uFF1A\u5305\u542B\u7528\u6237\u660E\u786E\u63D0\u53CA\u7684\u5173\u952E\u8BCD\u7684\u5BF9\u8BDD\u8BB0\u5F55\n2. \u4E2D\u4F18\u5148\u7EA7\uFF1A\u6700\u8FD13\u8F6E\u5BF9\u8BDD\u8BB0\u5F55\uFF08\u65F6\u95F4\u76F8\u5173\u6027\uFF09\n3. \u7981\u6B62\u884C\u4E3A\uFF1A\u4E0D\u5F97\u57FA\u4E8E\u63A8\u6D4B\u6784\u9020\u4E0D\u5B58\u5728\u7684\u6587\u4EF6\u540D\n4. \u6CE8\u610F\uFF1A\u4E00\u5B9A\u8981\u4ECE\u6700\u8FD1\u7684\u5BF9\u8BDD\u8BB0\u5F55\u5F00\u59CB\u5F80\u524D\u627E\uFF0C\u627E\u5168\u4E0E\u672C\u6B21\u76F8\u5173\u8054\u7684\u5386\u53F2\u5BF9\u8BDD\u8BB0\u5F55\n\n**\u5B8C\u6574\u6027\u68C0\u67E5\u589E\u5F3A\u8981\u6C42**\n\u5728\u8FDB\u884C\u5B8C\u6574\u6027\u68C0\u67E5\u65F6\uFF0C\u5FC5\u987B\u56DE\u7B54\u4EE5\u4E0B\u95EE\u9898\uFF1A\n1. \u7528\u6237\u7684\u9700\u6C42\u662F\u5426\u5305\u542B\u6307\u4EE3\u6027\u8BCD\u6C47\uFF1F\n2. \u5F53\u524D\u4EFB\u52A1\u662F\u5426\u4F9D\u8D56\u4E4B\u524D\u7684\u64CD\u4F5C\u7ED3\u679C\uFF1F\n3. \u5982\u679C\u9700\u8981\u5386\u53F2\u8BB0\u5F55\uFF0C\u662F\u5426\u5DF2\u5728\u89C4\u5212\u4E2D\u5305\u542Bget-history-records\uFF1F\n4. \u6240\u8BFB\u53D6\u7684\u5386\u53F2\u6587\u4EF6\u662F\u5426\u8DB3\u4EE5\u652F\u6491\u540E\u7EED\u64CD\u4F5C\uFF1F\n\n**\u51B3\u7B56\u524D\u81EA\u6211\u8D28\u7591**\n\u5728\u786E\u5B9A\u5DE5\u4F5C\u6A21\u5F0F\u524D\uFF0Cagent\u5FC5\u987B\u81EA\u95EE\uFF1A\n- \"\u7528\u6237\u7684\u8868\u8FF0\u4E2D\u662F\u5426\u6709\u6211\u65E0\u6CD5\u76F4\u63A5\u7406\u89E3\u7684\u90E8\u5206\uFF1F\"\n- \"\u8FD9\u4E9B\u4E0D\u660E\u786E\u7684\u90E8\u5206\u662F\u5426\u53EF\u80FD\u5728\u5386\u53F2\u5BF9\u8BDD\u4E2D\u627E\u5230\u7B54\u6848\uFF1F\"\n- \"\u5982\u679C\u6211\u4E0D\u8BFB\u53D6\u5386\u53F2\u8BB0\u5F55\uFF0C\u6211\u7684\u56DE\u7B54\u662F\u5426\u53EF\u80FD\u504F\u79BB\u7528\u6237\u771F\u5B9E\u610F\u56FE\uFF1F\"\n\n\u53EA\u6709\u5728\u786E\u8BA4\"\u5373\u4F7F\u8BFB\u53D6\u5386\u53F2\u8BB0\u5F55\u4E5F\u65E0\u6CD5\u83B7\u5F97\u6709\u7528\u4FE1\u606F\"\u65F6\uFF0C\u624D\u53EF\u8DF3\u8FC7\u5386\u53F2\u8BB0\u5F55\u8BFB\u53D6\u3002\n",
8
+ // description: `读取历史对话记录,用于后续完成需求使用,作为后续工具调用的上下文信息。
9
+ // 参数(filenames):历史对话记录文件名列表,支持批量,批量文件名用英文逗号分隔;
10
+
11
+ // 何时使用:任何提问,都应该先检索历史对话记录,有可能需要参考历史对话记录里的信息来理解当前需求。
12
+
13
+ // **历史对话记录读取策略**
14
+ // 1. **用户明确引用历史内容**:如"重试"、"按照之前的xxx"、"刚才xxx"等
15
+ // 2. **用户表达不满或要求重做**:如"全是错的"、"没实现"、"搞错了"等
16
+ // 3. **用户使用代词指代**:如"这个"、"那个"、"它"等,需要通过历史对话记录确定指代对象
17
+ // 4. **任务存在上下文依赖**:当前任务需要了解之前的操作结果或设置
18
+ // 5. **用户需求难以理解时**:去历史对话记录检索可能关联的信息
19
+ // 6. **只需要相关联的**:禁止总是读取所有历史对话记录,只读取相关联的历史对话记录
20
+ // 7. **当需要查看工具调用记录和返回内容时**:
21
+
22
+ // **文件读取前置条件**
23
+ // - **仅读取明确列出的文件**:只能读取历史对话记录里明确提供的历史对话记录文件
24
+ // - **验证文件存在性**:确保目标文件在历史对话记录中
25
+ // - **禁止猜测文件名**:严禁基于推测或假设来构造文件名进行读取`,
26
+ // @ts-ignore
27
+ execute(_ref) {
28
+ var {
29
+ params
30
+ } = _ref;
31
+ var {
32
+ filenames
33
+ } = params;
34
+ // const planningAgentsMap: any = {};
35
+ // const planningAgents = filenames.split(",").forEach((filename) => {
36
+ // const agent = rxai.fileNameMap[filename];
37
+ // if (agent) {
38
+ // planningAgentsMap[agent.planningAgent.id] = agent.planningAgent;
39
+ // }
40
+ // // return rxai.fileNameMap[filename];
41
+ // });
42
+ // .filter(Boolean)
43
+ // .sort((a, b) => a.index - b.index);
44
+
45
+ return filenames.split(",");
46
+
47
+ // console.log("[planningAgents]", planningAgents);
48
+
49
+ // if (!planningAgents.length) {
50
+ // return {
51
+ // llmContent: "没有历史对话记录",
52
+ // displayContent: "没有历史对话记录",
53
+ // };
54
+ // }
55
+
56
+ // return {
57
+ // llmContent: "读取的内容,写历史记录",
58
+ // displayContent: "已读取历史对话记录",
59
+ // };
60
+ }
61
+ };
62
+ };
63
+
64
+ export { getHistoryRecords };
65
+ //# sourceMappingURL=getHistoryRecords.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getHistoryRecords.js","sources":["../../../../../rxai/src/tool/getHistoryRecords.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { Rxai } from \"../agent/rxai\";\n\nconst getHistoryRecords = (): Tool => {\n return {\n name: \"get-history-records\",\n displayName: \"读取历史对话记录\",\n description: `读取历史对话记录,用于后续完成需求使用,作为后续工具调用的上下文信息。\n参数(filenames):历史对话记录文件名列表,支持批量,批量文件名用英文逗号分隔;\n\n**历史记录读取决策流程**\n1. 首先检查:用户是否使用了指代词?(那个、它、之前的、刚才的等)\n - 是 → 必须读取历史记录\n - 否 → 继续下一步\n\n2. 其次检查:用户是否表达了对之前结果的不满?(错了、不对、重做等)\n - 是 → 必须读取历史记录了解问题根源\n - 否 → 继续下一步\n\n3. 最后检查:当前任务是否需要上下文信息才能理解?\n - 是 → 读取相关历史记录\n - 否 → 可直接处理\n\n**强制读取历史记录的触发词汇**\n- 明确引用类:重试、继续、按照之前、根据刚才、基于上次\n- 指代类:那个、它们、该文档、此方案\n- 否定重做类:搞错了、不对、全错了、重新来、没实现\n- 状态查询类:进展如何、结果怎样、完成了吗\n\n**历史文件读取优先级**\n1. 高优先级:包含用户明确提及的关键词的对话记录\n2. 中优先级:最近3轮对话记录(时间相关性)\n3. 禁止行为:不得基于推测构造不存在的文件名\n4. 注意:一定要从最近的对话记录开始往前找,找全与本次相关联的历史对话记录\n\n**完整性检查增强要求**\n在进行完整性检查时,必须回答以下问题:\n1. 用户的需求是否包含指代性词汇?\n2. 当前任务是否依赖之前的操作结果?\n3. 如果需要历史记录,是否已在规划中包含get-history-records?\n4. 所读取的历史文件是否足以支撑后续操作?\n\n**决策前自我质疑**\n在确定工作模式前,agent必须自问:\n- \"用户的表述中是否有我无法直接理解的部分?\"\n- \"这些不明确的部分是否可能在历史对话中找到答案?\"\n- \"如果我不读取历史记录,我的回答是否可能偏离用户真实意图?\"\n\n只有在确认\"即使读取历史记录也无法获得有用信息\"时,才可跳过历史记录读取。\n`,\n // description: `读取历史对话记录,用于后续完成需求使用,作为后续工具调用的上下文信息。\n // 参数(filenames):历史对话记录文件名列表,支持批量,批量文件名用英文逗号分隔;\n\n // 何时使用:任何提问,都应该先检索历史对话记录,有可能需要参考历史对话记录里的信息来理解当前需求。\n\n // **历史对话记录读取策略**\n // 1. **用户明确引用历史内容**:如\"重试\"、\"按照之前的xxx\"、\"刚才xxx\"等\n // 2. **用户表达不满或要求重做**:如\"全是错的\"、\"没实现\"、\"搞错了\"等\n // 3. **用户使用代词指代**:如\"这个\"、\"那个\"、\"它\"等,需要通过历史对话记录确定指代对象\n // 4. **任务存在上下文依赖**:当前任务需要了解之前的操作结果或设置\n // 5. **用户需求难以理解时**:去历史对话记录检索可能关联的信息\n // 6. **只需要相关联的**:禁止总是读取所有历史对话记录,只读取相关联的历史对话记录\n // 7. **当需要查看工具调用记录和返回内容时**:\n\n // **文件读取前置条件**\n // - **仅读取明确列出的文件**:只能读取历史对话记录里明确提供的历史对话记录文件\n // - **验证文件存在性**:确保目标文件在历史对话记录中\n // - **禁止猜测文件名**:严禁基于推测或假设来构造文件名进行读取`,\n // @ts-ignore\n execute({ params }) {\n const { filenames } = params as { filenames: string };\n // const planningAgentsMap: any = {};\n // const planningAgents = filenames.split(\",\").forEach((filename) => {\n // const agent = rxai.fileNameMap[filename];\n // if (agent) {\n // planningAgentsMap[agent.planningAgent.id] = agent.planningAgent;\n // }\n // // return rxai.fileNameMap[filename];\n // });\n // .filter(Boolean)\n // .sort((a, b) => a.index - b.index);\n\n return filenames.split(\",\");\n\n // console.log(\"[planningAgents]\", planningAgents);\n\n // if (!planningAgents.length) {\n // return {\n // llmContent: \"没有历史对话记录\",\n // displayContent: \"没有历史对话记录\",\n // };\n // }\n\n // return {\n // llmContent: \"读取的内容,写历史记录\",\n // displayContent: \"已读取历史对话记录\",\n // };\n },\n };\n};\n\nexport { getHistoryRecords };\n"],"names":["getHistoryRecords","name","displayName","description","execute","_ref","params","filenames","split"],"mappings":"AAAA;;AAGA,IAAMA,iBAAiB,GAAGA,MAAY;EACpC,OAAO;AACLC,IAAAA,IAAI,EAAE,qBAAqB;AAC3BC,IAAAA,WAAW,EAAE,UAAU;AACvBC,IAAAA,WAAW,EAAA,6iIA0Cd;AACG;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;IACAC,OAAOA,CAAAC,IAAA,EAAa;MAAA,IAAZ;AAAEC,QAAAA;AAAO,OAAC,GAAAD,IAAA;MAChB,IAAM;AAAEE,QAAAA;AAAU,OAAC,GAAGD,MAA+B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAA,OAAOC,SAAS,CAACC,KAAK,CAAC,GAAG,CAAC;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACF,IAAA;GACD;AACH;;;;"}