@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.
- package/dist/_virtual/_rollupPluginBabelHelpers.js +164 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
- package/dist/agents/app.js +335 -0
- package/dist/agents/app.js.map +1 -0
- package/dist/agents/common.js +483 -0
- package/dist/agents/common.js.map +1 -0
- package/dist/agents/custom.js +16 -0
- package/dist/agents/custom.js.map +1 -0
- package/dist/agents/index.js +38 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/knowledges/knowledge-base.js +579 -0
- package/dist/agents/knowledges/knowledge-base.js.map +1 -0
- package/dist/agents/knowledges/knowledge-node.js +228 -0
- package/dist/agents/knowledges/knowledge-node.js.map +1 -0
- package/dist/agents/knowledges/types.js +105 -0
- package/dist/agents/knowledges/types.js.map +1 -0
- package/dist/agents/utils/config.js +229 -0
- package/dist/agents/utils/config.js.map +1 -0
- package/dist/agents/workspace/coding-manager.js +20 -0
- package/dist/agents/workspace/coding-manager.js.map +1 -0
- package/dist/agents/workspace/components-manager.js +113 -0
- package/dist/agents/workspace/components-manager.js.map +1 -0
- package/dist/agents/workspace/outline-focus.js +167 -0
- package/dist/agents/workspace/outline-focus.js.map +1 -0
- package/dist/agents/workspace/outline-info.js +430 -0
- package/dist/agents/workspace/outline-info.js.map +1 -0
- package/dist/agents/workspace/page-tree-generator.js +70 -0
- package/dist/agents/workspace/page-tree-generator.js.map +1 -0
- package/dist/agents/workspace/workspace.js +251 -0
- package/dist/agents/workspace/workspace.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/providers/component-docs-provider.js +100 -0
- package/dist/agents/workspace-by-knowledges/providers/component-docs-provider.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/providers/focus-info-provider.js +120 -0
- package/dist/agents/workspace-by-knowledges/providers/focus-info-provider.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/providers/project-info-provider.js +146 -0
- package/dist/agents/workspace-by-knowledges/providers/project-info-provider.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/test.js +242 -0
- package/dist/agents/workspace-by-knowledges/test.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/utils/components-manager.js +132 -0
- package/dist/agents/workspace-by-knowledges/utils/components-manager.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/utils/outline-focus.js +167 -0
- package/dist/agents/workspace-by-knowledges/utils/outline-focus.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/utils/outline-info.js +430 -0
- package/dist/agents/workspace-by-knowledges/utils/outline-info.js.map +1 -0
- package/dist/agents/workspace-by-knowledges/workspace.js +169 -0
- package/dist/agents/workspace-by-knowledges/workspace.js.map +1 -0
- package/dist/api/cloud-components.js +85 -0
- package/dist/api/cloud-components.js.map +1 -0
- package/dist/api-record-replay/manager.js +168 -0
- package/dist/api-record-replay/manager.js.map +1 -0
- package/dist/api-record-replay/recorder.js +107 -0
- package/dist/api-record-replay/recorder.js.map +1 -0
- package/dist/api-record-replay/replayer.js +136 -0
- package/dist/api-record-replay/replayer.js.map +1 -0
- package/dist/components/attachments/index.js +124 -0
- package/dist/components/attachments/index.js.map +1 -0
- package/dist/components/attachments/index.less.js +8 -0
- package/dist/components/attachments/index.less.js.map +1 -0
- package/dist/components/icons/index.js +112 -0
- package/dist/components/icons/index.js.map +1 -0
- package/dist/components/icons/index.less.js +8 -0
- package/dist/components/icons/index.less.js.map +1 -0
- package/dist/components/mention/index.js +19 -0
- package/dist/components/mention/index.js.map +1 -0
- package/dist/components/mention/index.less.js +8 -0
- package/dist/components/mention/index.less.js.map +1 -0
- package/dist/components/messages/index.js +429 -0
- package/dist/components/messages/index.js.map +1 -0
- package/dist/components/messages/index.less.js +8 -0
- package/dist/components/messages/index.less.js.map +1 -0
- package/dist/components/sender/index.js +244 -0
- package/dist/components/sender/index.js.map +1 -0
- package/dist/components/sender/index.less.js +8 -0
- package/dist/components/sender/index.less.js.map +1 -0
- package/dist/context/RequestStatusTracker.js +44 -0
- package/dist/context/RequestStatusTracker.js.map +1 -0
- package/dist/context/index.js +45 -0
- package/dist/context/index.js.map +1 -0
- package/dist/data.js +4 -0
- package/dist/data.js.map +1 -0
- package/dist/index.js +306 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin-ai/node_modules/style-inject/dist/style-inject.es.js +27 -0
- package/dist/plugin-ai/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
- package/dist/plugin-ai/package.json.js +8 -0
- package/dist/plugin-ai/package.json.js.map +1 -0
- package/dist/plugin-ai/test/index.js +206 -0
- package/dist/plugin-ai/test/index.js.map +1 -0
- package/dist/preset/createTemplates.js +29 -0
- package/dist/preset/createTemplates.js.map +1 -0
- package/dist/preset/index.js +13 -0
- package/dist/preset/index.js.map +1 -0
- package/dist/preset/prompts.js +34 -0
- package/dist/preset/prompts.js.map +1 -0
- package/dist/preset/user.js +7 -0
- package/dist/preset/user.js.map +1 -0
- package/dist/requestAsStream.js +269 -0
- package/dist/requestAsStream.js.map +1 -0
- package/dist/rxai/node_modules/idb/build/index.js +277 -0
- package/dist/rxai/node_modules/idb/build/index.js.map +1 -0
- package/dist/rxai/src/agent/base.js +16 -0
- package/dist/rxai/src/agent/base.js.map +1 -0
- package/dist/rxai/src/agent/planning.js +1076 -0
- package/dist/rxai/src/agent/planning.js.map +1 -0
- package/dist/rxai/src/agent/rxai.js +254 -0
- package/dist/rxai/src/agent/rxai.js.map +1 -0
- package/dist/rxai/src/error/base.js +39 -0
- package/dist/rxai/src/error/base.js.map +1 -0
- package/dist/rxai/src/prompt/base.js +11 -0
- package/dist/rxai/src/prompt/base.js.map +1 -0
- package/dist/rxai/src/prompt/planning.js +23 -0
- package/dist/rxai/src/prompt/planning.js.map +1 -0
- package/dist/rxai/src/prompt/tool.js +14 -0
- package/dist/rxai/src/prompt/tool.js.map +1 -0
- package/dist/rxai/src/request/request.js +123 -0
- package/dist/rxai/src/request/request.js.map +1 -0
- package/dist/rxai/src/tool/getHistoryRecords.js +65 -0
- package/dist/rxai/src/tool/getHistoryRecords.js.map +1 -0
- package/dist/rxai/src/tool/util.js +424 -0
- package/dist/rxai/src/tool/util.js.map +1 -0
- package/dist/rxai/src/utils/events.js +43 -0
- package/dist/rxai/src/utils/events.js.map +1 -0
- package/dist/rxai/src/utils/idb.js +240 -0
- package/dist/rxai/src/utils/idb.js.map +1 -0
- package/dist/rxai/src/utils/retry.js +32 -0
- package/dist/rxai/src/utils/retry.js.map +1 -0
- package/dist/rxai/src/utils/uuid.js +7 -0
- package/dist/rxai/src/utils/uuid.js.map +1 -0
- package/dist/startView/components/header/header.js +12 -0
- package/dist/startView/components/header/header.js.map +1 -0
- package/dist/startView/components/header/header.less.js +8 -0
- package/dist/startView/components/header/header.less.js.map +1 -0
- package/dist/startView/index.js +62 -0
- package/dist/startView/index.js.map +1 -0
- package/dist/startView/index.less.js +8 -0
- package/dist/startView/index.less.js.map +1 -0
- package/dist/tools/analyze-and-expand-prd.js +116 -0
- package/dist/tools/analyze-and-expand-prd.js.map +1 -0
- package/dist/tools/analyze-requirement-and-components.js +208 -0
- package/dist/tools/analyze-requirement-and-components.js.map +1 -0
- package/dist/tools/answer.js +33 -0
- package/dist/tools/answer.js.map +1 -0
- package/dist/tools/build-process.js +550 -0
- package/dist/tools/build-process.js.map +1 -0
- package/dist/tools/coding-subagent-as-tool.js +101 -0
- package/dist/tools/coding-subagent-as-tool.js.map +1 -0
- package/dist/tools/generate-ui-content.js +528 -0
- package/dist/tools/generate-ui-content.js.map +1 -0
- package/dist/tools/index.js +31 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/open-dsl.js +49 -0
- package/dist/tools/open-dsl.js.map +1 -0
- package/dist/tools/refactor-ui-content.js +292 -0
- package/dist/tools/refactor-ui-content.js.map +1 -0
- package/dist/tools/utils.js +832 -0
- package/dist/tools/utils.js.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/view/components/header/header.js +59 -0
- package/dist/view/components/header/header.js.map +1 -0
- package/dist/view/components/header/header.less.js +8 -0
- package/dist/view/components/header/header.less.js.map +1 -0
- package/dist/view/index.js +184 -0
- package/dist/view/index.js.map +1 -0
- package/dist/view/index.less.js +8 -0
- package/dist/view/index.less.js.map +1 -0
- package/package.json +33 -6
- package/src/agents/app.ts +0 -173
- package/src/agents/common.ts +0 -111
- package/src/agents/index.ts +0 -7
- package/src/components/icons/index.less +0 -8
- package/src/components/icons/index.tsx +0 -24
- package/src/components/messages/index.less +0 -806
- package/src/components/messages/index.tsx +0 -236
- package/src/context/index.ts +0 -21
- package/src/data.ts +0 -5
- package/src/index.tsx +0 -84
- package/src/mock.ts +0 -1267
- package/src/startView/index.less +0 -216
- package/src/startView/index.tsx +0 -229
- package/src/tools/analyze-and-expand-prd.ts +0 -166
- package/src/tools/answer-user.ts +0 -35
- package/src/tools/focus-element.ts +0 -47
- package/src/tools/generate-page.ts +0 -750
- package/src/tools/get-component-info-by-ids.ts +0 -166
- package/src/tools/get-component-info.ts +0 -53
- package/src/tools/get-components-doc-and-prd.ts +0 -137
- package/src/tools/get-focus-mybricks-dsl.ts +0 -26
- package/src/tools/get-mybricks-dsl.ts +0 -73
- package/src/tools/index.ts +0 -25
- package/src/tools/modify-component.ts +0 -385
- package/src/tools/type.d.ts +0 -12
- package/src/tools/utils.ts +0 -62
- package/src/types.d.ts +0 -65
- package/src/view/components/header/header.less +0 -17
- package/src/view/components/header/header.tsx +0 -15
- package/src/view/components/index.ts +0 -3
- package/src/view/components/messages/messages.less +0 -228
- package/src/view/components/messages/messages.tsx +0 -172
- package/src/view/components/sender/sender.less +0 -44
- package/src/view/components/sender/sender.tsx +0 -62
- package/src/view/index.less +0 -5
- package/src/view/index.tsx +0 -18
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-and-expand-prd.js","sources":["../../src/tools/analyze-and-expand-prd.ts"],"sourcesContent":["import { fileFormat, RxaiError } from '@mybricks/rxai'\nimport { getFiles } from './utils'\nimport { DeviceType } from './../types'\n\ninterface AnalyzeAndExpandPrdParams {\n onProjectCreate: (projectJson: any) => void,\n demo?: any,\n deviceType: DeviceType\n}\n\nconst NAME = 'analyze-and-expand-prd'\nanalyzeAndExpandPrd.toolName = NAME\n\nexport default function analyzeAndExpandPrd(config: AnalyzeAndExpandPrdParams): any {\n return {\n name: NAME,\n displayName: \"对原始产品需求文档分析并扩写\",\n description: `对用户提供的原始产品需求文档进行需求分析与扩写,最后拆分成不同的页面,输出结构化的结果。\n参数:原始需求文档(可能是一句话、一个图片、甚至各种类型附件)\n作用:将模糊、简略的需求转化为清晰、具体到每个页面、以及每个页面自上而下都有哪些具体的功能的详细描述,用于指导后续低代码搭建;\n返回值:扩写后的结构化文档;`,\n getPrompts: () => {\n return `<工具总览>\n你是MyBricks低代码平台(以下简称MyBricks平台或MyBricks)的资深搭建助手,经验丰富、实事求是、逻辑严谨。\n \n 你需要根据用户提出的问题或需求,切换不同的身份,完成以下任务\n\n 任务一:根据【用户需求】,作为产品经理,为用户合理整理或者拓展需求,返回整理好的需求;\n 任务二:根据【用户需求】,作为产品经理,为用户提供一个应用的标题,言简意赅,不多于10个字;\n 任务三:根据【用户需求】和【拓展需求】,作为设计师,为用户提供样式设计参考;\n</工具总览>\n\n<特别注意>\n - 对话可能由多轮构成,每轮对话中,用户会提出不同的问题或给与信息补充,你需要根据用户的问题、逐步分析处理。\n - 你所面向的用户是MyBricks平台上的用户,这些用户不是专业的开发人员,因此你需要以简洁、易懂的方式,回答用户的问题。\n - 如果附件中有图片,请在设计开发中作为重要参考,进行详细的需求及设计分析,当作用户的需求。\n - 你的回答面向的是非专业开发人员,请务必使用**简洁、易懂、口语化**的语言。\n</特别注意>\n\n<遵循原则>\n你要切换不同的角色来完成一个需求的设计和开发,同时特别注意,生成的页面数量不得超过3个。\n</遵循原则>\n\n<处理流程>\n 根据你的角色定义来完成以下任务,汇总给出一个Json\n <任务一>\n 角色:产品经理\n 工作任务:梳理需求,并且分析总共需要几个页面来承接这个系统\n 返回内容:每个页面的名称以及需求\n 对应字段:页面字段中的title以及prd\n 返回规则:\n - 如果是一句话需求,从上到下梳理并拓展需求,并整理成页面维度的需求\n - 如何定义一句话需求?例如 \"一个简历页面\" \"实现用户管理系统\" \"一个首页\"\n - 如何拓展?拓展是仅分析功能模块就行,不要具体到细节,同时补充一下“不止于这些模块”的描述性词汇,告知这只是简略的需求,可以补充更多内容\n - \"一个简历页面\" -> \"一个个人简历页面,包含个人介绍、技能特长、项目经历、联系我等模块的页面\"\n - \"实现用户管理系统\" -> \"\n 一个用户管理系统,包含以下页面:\n - 登录页面\n - 用户列表页面\n - 新增用户页面\n - 删除用户页面\"\n - 如果需求较为详实,比如附件中图片和文档可以提取出完整的需求,则整理之后,在满足用户需求的基础上,适当补充细节并整理成页面维度的需求\n - 如何定义需求较为详实?例如 \"一个包含导航、公司介绍、公司优势、页脚的公司官网\",这种对内容有定义的需求就无需拓展\n 注意:\n - 由于我们不能实现太复杂的需求,需要控制拓展需求的规模,拓展不要超过3个页面\n - 需求必须是模糊的功能点,仅允许说明有这个模块:\n 对的功能点:“包含商品展示模块、规格选择、评价和推荐等模块,其他模块可以自行拓展”,这里没有具体到UI的实现,是合理的。\n 错误的功能点:“展示一个搜索框和按钮,下方提供推荐商品列表,商品需要包含标题”,UI过于具体,不合理,并且没有告知用户可以补充更多内容。\n - 需求仅围绕UI的实现来拓展,不要涉及多语言、服务端、逻辑、SEO、打印、截图、动画,以及一些复杂交互的周边能力,我们仅关注UI部分\n </任务一>\n\n <任务二>\n 角色:产品经理\n 返回内容:总结的应用标题,言简意赅,不超过10个字\n 对应字段:title\n </任务二>\n\n <任务三>\n 角色:设计师\n 返回内容:给出设计规范的建议,范围局限于颜色和样式,和参考建议。不提供任何需求和布局方面的信息,风格化信息是给到下一轮大模型的提示词,提供建议即可。\n 对应字段:style\n 返回规则:\n - 颜色系统很重要,需要给出主色、背景色、文本颜色、二级颜色的建议,并给出具体的颜色值。禁止使用太鲜艳或者太浅的颜色值。不要把点缀色或者操作色用于大面积的元素,例如按钮、卡片背景等。\n - 样式系统很重要,需要给出圆角、间距的建议,并给出具体的数值\n - 参考建议很重要,可以给出一些风格化参考,借鉴市面上成熟项目的设计风格\n - 范围:目前限制在颜色、字体样式(不包含字体)、阴影和圆角这些基础UI细节,不要考虑视差滚动这类复杂样式\n - 不要提供针对组件维度的样式建议,要从需求维度去建议\n - 如果用户自己提了风格化主题相关需求,整理扩展即可\n </任务三>\n</处理流程>\n\n<回答、输出流程>\n**第一步:深度思考与需求分析(以Markdown格式呈现)**\n在给出正式方案前,你必须先输出一个详细的“**思考过程**”部分。这部分的目标是让用户完全理解你的设计思路。请按照以下结构组织:\n1. **需求解读**:用一两句话复述并理解用户的核心意图。\n2. **页面规划逻辑**:\n * 说明你计划设计哪几个页面(如首页、详情页、个人中心)。\n * **为每个页面解释“为什么”**:例如,“因为电商项目的核心流程是‘浏览->查看->购买’,所以我们需要首页(用于浏览发现)、商品详情页(用于决策)、个人中心页(用于管理订单和购物车)”,最好能与最终的json结构保持一致。\n * 可以制作一个简单的表格来对比各页面的核心目标和主要功能。\n3. **设计风格构思**:\n * 简要说明你为这个应用设定了怎样的视觉风格(如“现代简约的科技感”、“温暖亲和的社区感”)。\n * 解释颜色选择的原因(如“主色选用蓝色,传递信任与专业感”)。\n * 内容尽量丰富\n\n**第二步:输出结构化方案(以JSON格式呈现)**\n在“思考过程”之后,输出一个名为\\`“【应用标题】项目需求文档.json”\\`的JSON代码块。json格式参考<examples>提供的格式。\n\n**注意**:\n - “思考过程”直接输出即可,不要以一个标题的形式展现出来,否则对话比较割裂,不自然。\n</回答、输出流程>\n\n<examples>\n ${getExampleByDeviceType(config.deviceType)}\n</examples>`;\n },\n aiRole: 'architect',\n // aiRole: \"expert\",\n stream(params: any) {\n const { files, replaceContent } = params;\n const file = files[0];\n if (file) {\n return replaceContent.replace(file.fileName, \"正在编写需求文档...\");\n }\n return replaceContent;\n },\n execute(params: any) {\n const { files, content, replaceContent } = params;\n let errorContent;\n try {\n errorContent = JSON.parse(content)\n } catch (error) { }\n if (errorContent && errorContent?.message) {\n throw new RxaiError(`网络错误,${errorContent?.message}`, \"request\");\n }\n\n const projectFile: any = getFiles(files, { extName: 'json' });\n let projectJson: any = {}\n try {\n projectJson = JSON.parse(projectFile?.content)\n\n if (projectJson?.pages?.length) {\n projectJson.pages = projectJson.pages.map(page => {\n return {\n ...page,\n prd: page.prd + '\\n' + `注意:当前正在搭建一个${(config.deviceType === DeviceType.Desktop ? 'PC桌面端项目' : '移动端项目')},功能点仅为概述,分析和实现时请务必多补充内容和细节。`,\n }\n })\n }\n } catch (error) {\n\n }\n\n config.onProjectCreate(projectJson);\n\n if (!projectFile) {\n return content;\n } else if (!projectJson.title) {\n return replaceContent + `\\n未生成合法项目文件。`\n }\n return replaceContent.replace(projectFile.fileName, \"\");\n },\n };\n}\n\nfunction getExampleByDeviceType(deviceType: DeviceType) {\n if (deviceType === DeviceType.Mobile) {\n return `\n <example>\n <user_query>一个本地生活APP</user_query>\n <assistant_response>\n 好的,即将为你生成一个关于一个本地生活APP的项目需求文档。\n\n 这是我的思考结果:\n 由于当前信息较少,我们来分析下需求,一个本地生活APP,一般包含「首页」、「精选活动」、「商品详情」、「我的」等界面。\n\n 从需求来看,我觉得可以给应用起「本地生活APP」这个标题。\n\n 同时作为我也会给出设计规范。\n\n 最终我们应该返回这样的结构\n ${fileFormat({\n content: JSON.stringify({\n title: '本地生活APP',\n pages: [\n {\n title: '首页',\n prd: `目的:诱导用户进行点击,完成商品转化\n 功能点:包含搜索功能、导航入口、活动轮播和商品推荐等基础模块,其余内容可自行发散`,\n },\n {\n title: '精选活动',\n prd: `目的:展示平台的优惠活动,吸引用户进行购买\n 功能点:包含一级分类、优惠活动、限时秒杀和商品列表等核心内容,可以按照你的想法来丰富更多内容`,\n },\n {\n title: '商品详情',\n prd: `目的:展示的详细信息,诱导用户进行下单购买\n 功能点:包含商品展示模块、规格选择、评价和推荐等模块,其他模块可以自行拓展`,\n },\n {\n title: '我的',\n prd: `目的:提供对个人信息的查看以及修改界面\n 功能点:包含个人信息、会员信息、订单模块、导航入口等模块`,\n }\n ],\n style: `使用美团成熟的颜色系统是一个不错的选择\n - 颜色\n - 主颜色:美团黄 #FFD100\n - 背景色:浅灰色 #F7F7F7\n - 文本颜色:不全黑的黑色 #272727 可用于主要的文本(禁止使用 #000000,会导致无设计感)\n - 二级颜色:灰色 #A6A6A6 可用于边框或者浅色文本\n - 样式\n - 圆角:12px,增加柔和感\n - 间距:16px\n 同样的,你也可以参考一些常见的移动端APP,比如美团和饿了么的元素设计。注意颜色不要太浅,也不要太鲜艳,按钮等比较大块的元素禁止使用点缀色`\n }, null, 2),\n fileName: '本地生活APP项目需求文档.json'\n })}\n </assistant_response>\n </example>`\n } else if (deviceType === DeviceType.Desktop) {\n return `\n <example>\n <user_query>一个问答社区网站</user_query>\n <assistant_response>\n 好的,即将为你生成一个关于一个问答社区网站的项目需求文档。\n\n 这是我的思考结果:\n 由于当前信息较少,我们来分析下需求,一个问答社区网站,一般包含「首页」、「问答详情」、「我的主页」等界面。\n\n 从需求来看,我觉得可以给应用起「问答社区网站」这个标题。\n\n 同时作为我也会给出设计规范。\n\n 最终我们应该返回这样的结构\n ${fileFormat({\n content: JSON.stringify({\n title: '问答社区网站',\n pages: [\n {\n title: '首页',\n prd: `目的:引导用户进行问答内容的互动,推荐用户喜欢的问答内容\n 功能点:包含搜索、导航、热榜、推荐等基础内容,其余内容可自行发散`,\n },\n {\n title: '问答详情',\n prd: `目的:展示问答的详细信息,引导用户进行互动,并且对不同对回答进行点赞\n 功能点:包含问题、不同用户回答、是否赞同等核心模块,其余可以按照你的想法来丰富更多内容`,\n },\n {\n title: '我的主页',\n prd: `目的:提供对个人信息的查看以及互动界面\n 功能点:包含个人信息、会员信息、我的回答、点赞、创作数据等核心功能`,\n }\n ],\n style: `使用知乎成熟的颜色系统是一个不错的选择\n - 颜色\n - 主颜色:知乎蓝 #1772f6\n - 背景色:浅灰蓝色 #f4f6f9\n - 文本颜色:不全黑的黑色 #272727 可用于主要的文本(禁止使用 #000000,会导致无设计感)\n - 二级颜色:灰色 #A6A6A6 可用于边框或者浅色文本\n - 样式\n - 圆角:2px,严谨又不失柔弱\n - 间距:16px\n 同样的,你也可以参考一些其他常见的桌面端软件或者网站,比如知乎和思否的设计。注意取色和设计必须有设计感`\n }, null, 2),\n fileName: '问答社区网站需求文档.json'\n })}\n </assistant_response>\n </example>`\n }\n}"],"names":["NAME","analyzeAndExpandPrd","toolName","config","name","displayName","description","getPrompts","concat","getExampleByDeviceType","deviceType","aiRole","stream","params","files","replaceContent","file","replace","fileName","execute","_errorContent","content","errorContent","JSON","parse","error","message","_errorContent2","RxaiError","projectFile","getFiles","extName","projectJson","_projectJson","pages","length","map","page","_objectSpread","prd","DeviceType","Desktop","onProjectCreate","title","Mobile","fileFormat","stringify","style"],"mappings":"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"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { RxaiError } from '../rxai/src/error/base.js';
|
|
3
|
+
import '../rxai/node_modules/idb/build/index.js';
|
|
4
|
+
import 'node-forge';
|
|
5
|
+
import { fileFormat } from '../rxai/src/prompt/base.js';
|
|
6
|
+
import { getFiles, jsonSafeParse } from './utils.js';
|
|
7
|
+
import { DeviceType } from '../types/index.js';
|
|
8
|
+
|
|
9
|
+
var NAME = 'analyze-requirement-and-components';
|
|
10
|
+
analyzeRequirementAndComponents.toolName = NAME;
|
|
11
|
+
|
|
12
|
+
// 提取公共的提示词部分
|
|
13
|
+
function getCommonPrompts(config) {
|
|
14
|
+
return "<\u5DE5\u5177\u603B\u89C8>\n\u4F60\u662F\u4E00\u4E2A\u83B7\u53D6\u7EC4\u4EF6\u6587\u6863\u548C\u6DF1\u5EA6\u7406\u89E3\u7528\u6237\u9700\u6C42\u7684\u5DE5\u5177\uFF0C\u4F60\u4F5C\u4E3AMyBricks\u4F4E\u4EE3\u7801\u5E73\u53F0\uFF08\u4EE5\u4E0B\u7B80\u79F0MyBricks\u5E73\u53F0\u6216MyBricks\uFF09\u7684\u8D44\u6DF1UI\u642D\u5EFA\u52A9\u624B\uFF0C\u62E5\u6709\u4E13\u4E1A\u7684\u4EA7\u54C1\u7ECF\u7406\u80FD\u529B\u3002\n\u4F60\u7684\u4EFB\u52A1\u662F\u6839\u636E\u300C\u5141\u8BB8\u4F7F\u7528\u7684\u7EC4\u4EF6\u300D+ \u300C\u9879\u76EE\u73AF\u5883\u8BF4\u660E\u300D\uFF0C\u6574\u7406\u6216\u6269\u5199\u7528\u6237\u7684\u9700\u6C42\uFF0C\u5E76\u5C06\u9700\u6C42\u4E2D\u53EF\u80FD\u7528\u5230\u7684\u7EC4\u4EF6\u5217\u51FA\u6765\u6574\u7406\u6210\u300C\u9700\u6C42\u5206\u6790\u8BF4\u660E\u4E66\u300D\u548C\u300C\u7EC4\u4EF6\u4F7F\u7528\u6587\u6863\u300D\u3002\n</\u5DE5\u5177\u603B\u89C8>\n\n".concat(config.allowComponents, "\n\n<\u5BF9\u4E8E\u9879\u76EE\u73AF\u5883\u7684\u8BF4\u660E>\n").concat(config.appendPrompt ? "".concat(config.appendPrompt) : '', "\n</\u5BF9\u4E8E\u9879\u76EE\u73AF\u5883\u7684\u8BF4\u660E>\n");
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// generate 模式的工作流程
|
|
18
|
+
function getGenerateWorkflow(config) {
|
|
19
|
+
return "<\u4F60\u7684\u5DE5\u4F5C\u6D41\u7A0B>\n\u6839\u636E\u300C\u5141\u8BB8\u4F7F\u7528\u7684\u7EC4\u4EF6\u300D+ \u300C\u9879\u76EE\u73AF\u5883\u8BF4\u660E\u300D\uFF0C\u5B8C\u6210\u7528\u6237\u9700\u6C42\u7684\u5206\u6790\u548C\u751F\u6210\uFF0C\u6309\u7167\u4EE5\u4E0B\u6B65\u9AA4\u5B8C\u6210prd\u6587\u4EF6\u548C\u7EC4\u4EF6\u9009\u578B\uFF1A\n\n1. \u9700\u6C42\u6587\u6863\u751F\u6210\uFF0C\u8BE6\u7EC6\u5206\u6790\u7528\u6237\u9700\u6C42\uFF0C\u6309\u4EE5\u4E0B\u683C\u5F0F\u8FDB\u884C\u6574\u7406prd\u6587\u4EF6\n <\u9700\u6C42\u6587\u6863\u683C\u5F0F>\n *\u6982\u8FF0*\n [\u8FD9\u91CC\u662F\u5BF9\u6574\u4F53\u9700\u6C42\u7684\u6982\u62EC\u548C\u603B\u7ED3\uFF0C\u75281-3\u53E5\u8BDD\u6765\u603B\u7ED3\u4E0B\u5185\u5BB9]\n\n *\u8BBE\u8BA1\u89C4\u8303*\n [\u8FD9\u91CC\u5B9A\u4E49\u8BBE\u8BA1\u98CE\u683C\uFF0C\u6839\u636E\u8BBE\u8BA1\u98CE\u683C\u63D0\u4F9B\u7EDF\u4E00\u5E76\u4E14\u6709\u5C42\u6B21\u611F\u7684\u8BBE\u8BA1token\uFF0C\u6BD4\u5982\u989C\u8272\u8272\u503C\u3001\u5706\u89D2\u3001\u95F4\u8DDD\u3001\u5B57\u53F7\u3001\u8FB9\u6846\u3001\u9634\u5F71\u7B49\u4FE1\u606F\u3002\n \u6CE8\u610F\uFF1A\n - \u5BF9\u4E8E\u989C\u8272\u7684\u9009\u53D6\uFF0C\u9075\u5FAA\u73B0\u4EE3UI\u7684\u53D6\u8272\u65B9\u6848\uFF0C\u4F18\u5148\u91C7\u7528\u73B0\u4EE3\u611F\u5F3A\u7684\u914D\u8272\uFF0C\u53EF\u4EE5\u91C7\u7528\u4F60\u77E5\u8BC6\u5E93\u4E2D\u5E38\u7528\u7684\u989C\u8272\u96C6\uFF0C\u6BD4\u5982\u83AB\u5170\u8FEA\u8272\u7CFB\u3001\u4E2D\u56FD\u98CE\u8272\u7CFB\u3001\u65E5\u672C\u8272\u7CFB\uFF0C\u4EE5\u53CA\u5404\u7C7BColorSpace\u8FD9\u79CD\u53D6\u8272\u7F51\u7AD9\u7684\u53D6\u8272\u7B56\u7565\uFF1B\n - \u5BF9\u4E8E\u5B57\u53F7\u7684\u9009\u53D6\uFF0C\u9075\u5FAA\u73B0\u4EE3UI\u8BBE\u8BA1\u89C4\u8303\uFF0C\u5EFA\u7ACB\u6E05\u6670\u7684\u5B57\u4F53\u5C42\u7EA7\uFF0C\u5EFA\u8BAE\u572812-18px\u4E4B\u95F4\uFF0C\u9ED8\u8BA4\u5B57\u53F7\u4E3A14px\uFF1B\n - \u5BF9\u4E8E\u95F4\u8DDD\uFF0C\u9075\u5FAA\u73B0\u4EE3\u8BBE\u8BA1\u7684".concat(config.deviceType === DeviceType.Mobile ? '5px' : '8px', "\u7F51\u683C\u7CFB\u7EDF\uFF0C\u6301\u6574\u4F53\u98CE\u683C\u7684\u7EDF\u4E00\u534F\u8C03\uFF0C\u907F\u514D\u968F\u610F\u4F7F\u7528\u95F4\u8DDD\u503C\uFF1B\n ]\n \n *\u8BBE\u8BA1\u4EAE\u70B9*\n [\u8FD9\u91CC\u6839\u636E\u8BBE\u8BA1\u98CE\u683C\uFF0C\u4ECE\u6837\u5F0F\u548C\u5185\u5BB9\u4E30\u5BCC\u5EA6\u7B49\u89D2\u5EA6\u6765\u63D0\u4F9B\u4EAE\u70B9\u5EFA\u8BAE\uFF0C\u91CD\u70B9\u7A81\u51FA\u73B0\u4EE3\u7F51\u9875\u8BBE\u8BA1\u611F\u3002\n \u5BF9\u4E8E\u5185\u5BB9\u4E30\u5BCC\u5EA6\uFF1A\u5728\u73B0\u6709\u7684UI\u533A\u57DF\u5C55\u793A\u66F4\u591A\u7684\u5185\u5BB9\uFF0C\u4F53\u73B0\u4E30\u5BCC\u6027\u548C\u5C42\u6B21\u611F\u3002\n \u6BD4\u5982\u53EF\u4EE5\u8003\u8651\u5DE6\u53F3\u4E0D\u5BF9\u79F0\u7684\u4FE1\u606F\u5C55\u793A\uFF0C\u4EE5\u53CA\u4F7F\u7528\u7EDD\u5BF9\u5B9A\u4F4D\u6DFB\u52A0\u4E00\u4E9B\u6807\u7B7E\u3001\u5FBD\u7AE0\u6765\u5C55\u793A\u66F4\u591A\u4FE1\u606F\uFF1B\n \u6BD4\u5982\u53EF\u4EE5\u591A\u5C42\u7EA7\u6807\u9898\uFF08\u4E3B\u6807\u9898+\u526F\u6807\u9898\uFF09\uFF0C\u56FE\u6807\u548C\u6570\u5B57\uFF08\u6570\u636E\u53EF\u89C6\u5316\uFF09\u7ED3\u5408\u5C55\u793A\uFF0C\u63D0\u4F9B\u66F4\u4E30\u5BCC\u7684\u5185\u5BB9\u6765\u6E90\uFF1B\n \u5BF9\u4E8E\u6837\u5F0F\u4E30\u5BCC\u5EA6\uFF1A\u6839\u636E\u7ED9\u5B9A\u7684\u8BBE\u8BA1\u98CE\u683C\uFF0C\u63D0\u4F9B\u4E00\u4E9B\u6837\u5F0F\u4E0A\u7684\u4EAE\u70B9\u3002\n \u6BD4\u5982\u73B0\u4EE3\u98CE\uFF0C\u53EF\u4EE5\u91C7\u7528\u8FB9\u6846\u3001\u6BDB\u73BB\u7483\u3001\u6E10\u53D8\u8272\u80CC\u666F\u3001\u5E7D\u7075\u6309\u94AE\uFF1B\n \u6BD4\u5982\u79D1\u6280\u98CE\uFF0C\u53EF\u4EE5\u91C7\u7528\u6E10\u53D8\u8272\u80CC\u666F\u3001\u53D1\u5149\u6548\u679C\u3001\u4E0D\u540C\u989C\u8272\u6587\u5B57\uFF1B\n \u6BD4\u5982\u590D\u53E4\u98CE\u683C\uFF0C\u53EF\u4EE5\u91C7\u7528\u65E0\u5706\u89D2\u3001\u65E0\u8FB9\u6846\u4F53\u73B0\u539A\u91CD\u611F\uFF1B\n \u6BD4\u5982\u4E2D\u56FD\u98CE\uFF0C\u53EF\u4EE5\u91C7\u7528\u65E0\u8FB9\u6846\u65E0\u5706\u89D2\u63D0\u5347\u539A\u91CD\u611F\uFF0C\u91C7\u7528\u66F4\u7B26\u5408\u4E2D\u56FD\u98CE\u7684\u5B8B\u4F53\uFF1B\n \u901A\u7528\u73B0\u4EE3\u8BBE\u8BA1\u5143\u7D20\uFF08\u9002\u7528\u4E8E\u6240\u6709\u98CE\u683C\uFF09\uFF1A\n - \u6E10\u53D8\uFF1A\u4F7F\u7528\u67D4\u548C\u7684\u6E10\u53D8\u80CC\u666F\u6216\u6587\u5B57\u6E10\u53D8\u6548\u679C\uFF1B\n - \u9634\u5F71\u5C42\u6B21\uFF1A\u4F7F\u7528\u9634\u5F71\u521B\u5EFA\u6DF1\u5EA6\u611F\uFF0C\u4F46\u4FDD\u6301\u8F7B\u5FAE\u548C\u67D4\u548C\uFF1B\n - \u5706\u89D2\u7EDF\u4E00\uFF1A\u4FDD\u6301\u5706\u89D2\u503C\u7684\u7EDF\u4E00\u6027\uFF0C\u5EFA\u7ACB\u8BBE\u8BA1\u7CFB\u7EDF\u7684\u4E00\u81F4\u6027\uFF1B\n - \u56FE\u6807\u7CFB\u7EDF\uFF1A\u7EDF\u4E00\u4F7F\u7528\u56FE\u6807\u7EC4\u4EF6\uFF0C\u4FDD\u6301\u56FE\u6807\u98CE\u683C\u3001\u5927\u5C0F\u7684\u4E00\u81F4\u6027\uFF1B\n - \u95F4\u8DDD\u8282\u594F\uFF1A\u9075\u5FAA").concat(config.deviceType === DeviceType.Mobile ? '5px' : '8px', "\u7F51\u683C\u7CFB\u7EDF\uFF0C\u5EFA\u7ACB\u6E05\u6670\u7684\u95F4\u8DDD\u8282\u594F\uFF1B\n - \u8272\u5F69\u5BF9\u6BD4\uFF1A\u786E\u4FDD\u6587\u672C\u4E0E\u80CC\u666F\u7684\u5BF9\u6BD4\u5EA6\u7B26\u5408WCAG\u53EF\u8BBF\u95EE\u6027\u6807\u51C6\uFF1B\n ]\n\n *\u5185\u5BB9*\n [\u8FD9\u91CC\u5F00\u59CB\u4ECE\u4E0A\u81F3\u4E0B\uFF0C\u4ECE\u5DE6\u5230\u53F3\u6765\u9010\u4E2A\u533A\u57DF\u62C6\u89E3\u5E76\u5206\u6790\u5185\u5BB9\uFF0C\u6BCF\u4E00\u4E2A\u533A\u57DF\u7684\u5185\u5BB9\u7ED3\u6784\u5305\u542B\u300C\u529F\u80FD\u3001\u89C6\u89C9\u3001\u5185\u5BB9\u300D\u4E09\u4E2A\u90E8\u5206\u3002\n \u7279\u522B\u6CE8\u610F\uFF1A\u9009\u7528\u7EC4\u4EF6\u65F6\uFF0C\u6CE8\u610F\u5BF9\u53EF\u80FD\u9700\u8981\u52A8\u6001\u6570\u636E\u7684\u90E8\u5206\uFF08\u6BD4\u5982\u591A\u4E2A\u91CD\u590D\u7684\u533A\u57DF\u3001\u591A\u4E2A\u6570\u636E\u9879\u7684\u5217\u8868\u3001\u591A\u884C\u591A\u5217\u7684\u91CD\u590D\u5361\u7247\u7B49\uFF09\uFF0C\u4F7F\u7528\u652F\u6301\u52A8\u6001\u6570\u636E\u7684\u7EC4\u4EF6\u6E32\u67D3\uFF08\u6BD4\u5982\u5FAA\u73AF\u5217\u8868\u3001\u8868\u683C\u3001\u6807\u7B7E\u7B49\uFF09\uFF0C\u4EE5\u5907\u521D\u59CB\u5316\u6570\u636E\u3002]\n <\u5355\u4E2A\u533A\u57DF\u793A\u4F8B>\n *\u9876\u90E8\u5BFC\u822A\u680F* [\u6807\u9898]\n *\u529F\u80FD*\uFF1A\u63D0\u4F9B\u5168\u7AD9\u5BFC\u822A\u548C\u5FEB\u901F\u5165\u53E3\uFF0C\u5C55\u793A\u5B66\u6821\u6807\u8BC6\n *\u89C6\u89C9*\uFF1A\u56FA\u5B9A\u5B9A\u4F4D\uFF0C\u5DE6\u53F3\u901A\u680F\uFF0C\u4E0D\u9700\u8981\u95F4\u8DDD\n *\u5185\u5BB9*\uFF1A[\u52A1\u5FC5\u5199\u6E05\u695A\u6240\u6709\u7684\u533A\u5757\u5185\u5BB9\uFF0C\u4E0D\u53EF\u9057\u6F0F]\n - \u5DE6\u4FA7\uFF1A\u5B66\u6821logo\uFF0860*60px\uFF09+ \u5B66\u6821\u4E2D\u82F1\u6587\u540D\u79F0\uFF08\u4E2D\u658718px\u7C97\u4F53\u3001\u82F1\u658712px\u7EC6\u4F53\uFF09\n - \u4E2D\u95F4\uFF1A\u6A2A\u5411\u5BFC\u822A\u83DC\u5355\uFF0C\u5305\u542B\u9996\u9875\u3001\u5B66\u6821\u6982\u51B5\u3001\u9662\u7CFB\u4E13\u4E1A\u3001\u62DB\u751F\u5C31\u4E1A\u3001\u79D1\u5B66\u7814\u7A76\u3001\u6821\u56ED\u751F\u6D3B\u3001\u65B0\u95FB\u52A8\u6001\u7B49\u5165\u53E3\uFF08\u5B57\u53F714px\u3001\u95F4\u8DDD32px\uFF09\n - \u53F3\u4FA7\uFF1A\u641C\u7D22\u56FE\u6807\u6309\u94AE + \u8BED\u8A00\u5207\u6362\uFF08\u4E2D/EN\uFF09+ \u767B\u5F55\u5165\u53E3\u6309\u94AE\n </\u5355\u4E2A\u533A\u57DF\u793A\u4F8B>\n\n ").concat(eventPrompts, "\n\n *\u53C2\u8003\u98CE\u683C*\n [\u8FD9\u91CC\u63D0\u4F9B\u4E00\u5230\u4E24\u4E2A\u76F8\u4F3C\u4EA7\u54C1\u7684\u53EF\u53C2\u8003\u5EFA\u8BAE]\n </\u9700\u6C42\u6587\u6863\u683C\u5F0F>\n\n \u5728\u9700\u6C42\u5206\u6790\u7684\u65F6\u5019\uFF0C\u8981\u7279\u522B\u5173\u6CE8\u4EE5\u4E0B\u89C4\u5219\uFF1A\n <\u5206\u6790\u89C4\u5219>\n 1. \u7EC4\u4EF6\u9009\u7528\u65F6\uFF0C\u6CE8\u610F\u5BF9\u53EF\u80FD\u9700\u8981\u52A8\u6001\u6570\u636E\u7684\u90E8\u5206\uFF08\u6BD4\u5982\u591A\u4E2A\u91CD\u590D\u7684\u533A\u57DF\u3001\u591A\u4E2A\u6570\u636E\u9879\u7684\u5217\u8868\u3001\u591A\u884C\u591A\u5217\u7684\u91CD\u590D\u5361\u7247\u7B49\uFF09\uFF0C\u4F7F\u7528\u652F\u6301\u52A8\u6001\u6570\u636E\u7684\u7EC4\u4EF6\u6E32\u67D3\uFF08\u6BD4\u5982\u5FAA\u73AF\u5217\u8868\u3001\u8868\u683C\u3001\u6807\u7B7E\u7B49\uFF09\uFF0C\u4EE5\u5907\u521D\u59CB\u5316\u6570\u636E\uFF1B\n 2. \u5BF9\u4E8E\u6211\u4EEC\u65E0\u6CD5\u5B9E\u73B0\u7684\u7EC4\u4EF6\uFF0C\u6211\u4EEC\u4F7F\u7528\u4E00\u4E2A\u4E0E\u6574\u4F53\u98CE\u683C\u534F\u8C03\u7684\u300C\u5361\u7247+\u6587\u672C\u300D\u4F5C\u4E3A\u5360\u4F4D\u7EC4\u4EF6\u3002\u8FD9\u65E2\u4FDD\u8BC1\u4E86\u754C\u9762\u7684\u5B8C\u6574\u6027\uFF0C\u4E5F\u4E3A\u540E\u7EED\u5F00\u53D1\u7559\u4E0B\u4E86\u7EBF\u7D22\uFF1B\n </\u5206\u6790\u89C4\u5219>\n\n2\u3001\u6839\u636E\u9700\u6C42\u5206\u6790\uFF0C\u8BE6\u7EC6\u62C6\u89E3\u6240\u9700\u8981\u7684\u7EC4\u4EF6\uFF0C\u6CE8\u610F\uFF1A\n - \u6839\u636E\u4E1A\u52A1\u7C7B\u578B\u9009\u62E9\u5408\u7406\u7684\u6280\u672F\u65B9\u6848\uFF08\u7C7B\u5E93\u3001\u7EC4\u4EF6\u7B49\uFF09\uFF0C\u6CE8\u610F\u4E0D\u8981\u8D85\u51FA\u5141\u8BB8\u7684\u8303\u56F4\uFF1B\n - \u7981\u6B62\u4E3B\u89C2\u81C6\u9020\u4E0D\u5B58\u5728\u7684\u7EC4\u4EF6\u7B49\uFF0C\u53EA\u80FD\u57FA\u4E8E\u4E8B\u5B9E\u4E0A\u63D0\u4F9B\u7684\u7EC4\u4EF6\u8FDB\u884C\uFF1B\n - \u7EC4\u4EF6\u9009\u578B\u4E0D\u8981\u60F3\u5F53\u7136\u7684\u8BA4\u4E3A\u82F1\u6587\u7684namespace\u5C31\u662F\u8BED\u4E49\u5316\u7684\uFF0C\u66F4\u591A\u5173\u6CE8\u4E8E\u4E2D\u6587\u63CF\u8FF0\u548C\u300C\u4F55\u65F6\u4F7F\u7528\u300D\u300C\u6CE8\u610F\u4E8B\u9879\u300D\u6765\u5224\u65AD\u5E94\u8BE5\u4F7F\u7528\u4EC0\u4E48\u7EC4\u4EF6\u3002\n - \u521D\u59CB\u5316\u6570\u636E\u9700\u6C42\u9700\u8981\u4F7F\u7528\u5230type\u4E3Ajs\u6216js-autorun\u7684\u8BA1\u7B97\u7EC4\u4EF6\uFF0C\u540C\u6837\u9700\u8981\u5173\u6CE8\u4E8E\u4E2D\u6587\u63CF\u8FF0\u548C\u300C\u4F55\u65F6\u4F7F\u7528\u300D\u300C\u6CE8\u610F\u4E8B\u9879\u300D\u6765\u5224\u65AD\u5E94\u8BE5\u4F7F\u7528\u4EC0\u4E48\u7EC4\u4EF6\u3002\n\n\u63A5\u4E0B\u6765\uFF0C\u6839\u636E\u4E0A\u8FF0\u5206\u6790\uFF0C\u6309\u7167\u4EE5\u4E0B\u683C\u5F0F\u8FD4\u56DE\u5185\u5BB9\uFF1A\n ").concat(fileFormat({
|
|
20
|
+
content: '(需求分析规格说明书的内容,需求说明书仅允许使用列表和加粗,斜体语法)',
|
|
21
|
+
fileName: 'XX需求文档.md'
|
|
22
|
+
}), "\n \n ").concat(fileFormat({
|
|
23
|
+
content: "[\n{\n \"namespace\": \"mybricks.somelib.icon\"\n},\n{\n \"namespace\": \"mybricks.somelib.text\"\n},\n{\n \"namespace\": \"mybricks.somelib.button\"\n}\n]",
|
|
24
|
+
fileName: 'XX需求组件选型示例.json'
|
|
25
|
+
}), "\n \n \u6CE8\u610F\uFF1Arequire.json\u6587\u4EF6\u8981\u4E25\u683C\u6309\u7167JSON\u683C\u5F0F\u8FD4\u56DE\uFF0C\u6CE8\u610F\u4E0D\u8981\u51FA\u73B0\u8BED\u6CD5\u9519\u8BEF\uFF1B\n \n</\u4F60\u7684\u5DE5\u4F5C\u6D41\u7A0B>\n");
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// extract 模式的工作流程
|
|
29
|
+
function getExtractWorkflow() {
|
|
30
|
+
return "<\u4F60\u7684\u5DE5\u4F5C\u6D41\u7A0B>\n\u6839\u636E\u300C\u5141\u8BB8\u4F7F\u7528\u7684\u7EC4\u4EF6\u300D+ \u300C\u9879\u76EE\u73AF\u5883\u8BF4\u660E\u300D\uFF0C\u5B8C\u6210\u9644\u4EF6\u6587\u4EF6\u7684\u7684\u89E3\u6790\u548C\u9700\u6C42\u6587\u6863\u7684\u751F\u6210\uFF0C\u6309\u7167\u4EE5\u4E0B\u6B65\u9AA4\u5B8C\u6210prd\u6587\u4EF6\u548C\u7EC4\u4EF6\u9009\u578B\uFF1A\n\n1. \u9700\u6C42\u6587\u6863\u751F\u6210\uFF0C\u8BE6\u7EC6\u5206\u6790\u7528\u6237\u9700\u6C42\u548C\u9644\u4EF6\uFF0C\u6309\u4EE5\u4E0B\u683C\u5F0F\u8FDB\u884C\u6574\u7406prd\u6587\u4EF6\n <\u9700\u6C42\u6587\u6863\u683C\u5F0F>\n *\u5206\u6790*\n [\n \u4ECE\u9876\u7EA7\u5230\u53F6\u5B50\uFF0C\u5206\u5C42\u7EA7\u4ECE\u4E0A\u5F80\u4E0B\uFF0C\u4ECE\u5DE6\u5230\u53F3\uFF0C\u6309\u7167\u6811\u72B6\u7ED3\u6784\u63D0\u53D6\u62C6\u5206\u9700\u6C42\u548C\u9644\u4EF6\u4E2D\u7684\u4E8B\u5B9E\u4FE1\u606F\uFF0C\u540C\u65F6\u544A\u77E5\u8FD9\u53EA\u662F\u8F85\u52A9\u4FE1\u606F\n \u6CE8\u610F\uFF1A\n - \u6309\u7167\u884C\u5217\u903B\u8F91\u5408\u7406\u8FDB\u884C\u62C6\u5206\uFF0C\u62C6\u5206\u5185\u5BB9*\u5206\u70B9*\u5C55\u793A\uFF0C\u6587\u6863\u4E2D\u4E0D\u8981\u63D0\u53CA\u884C\u5217\u76F8\u5173\u5B57\u773C\uFF1B\n - \u62C6\u5206\u5185\u5BB9\u5206\u4E3A\u4E24\u90E8\u5206\uFF0C\u603B\u89C8\u7684\u300C\u6839\u7EC4\u4EF6\u7ED3\u6784\u300D+ \u8BE6\u7EC6\u7684\u300C\u5206\u533A\u57DF\u7ED3\u6784\u300D\uFF1B\n - \u5206\u70B9\u903B\u8F91\uFF1A1.1\u30011.1.1 \u7684\u683C\u5F0F\u4EE3\u88681.1 \u662F 1.1.1 \u7684\u7236\u7EA7\uFF0C\u4FDD\u6301\u6811\u72B6\u7ED3\u6784\u7684\u62C6\u5206\uFF0C\u9010\u5C42\u5C55\u5F00\u76F4\u5230\u6BCF\u4E00\u4E2A\u53F6\u5B50\u7ED3\u70B9\uFF0C\u4E0D\u80FD\u6241\u5E73\u5316\u4EFB\u4F55\u5185\u5BB9\uFF1B\n - \u5206\u70B9\u7684\u7236\u7EA7\u8282\u70B9\u5FC5\u987B\u63CF\u8FF0\u6E05\u695A\uFF0C\u5E95\u5C42\u662F\u5DE6\u53F3\u8FD8\u662F\u4E0A\u4E0B\u51E0\u4E2A\u90E8\u5206\u3002\n - \u57FA\u4E8E\u56FE\u7247\u4E8B\u5B9E\u5206\u6790\uFF0C\u4E00\u6BD4\u4E00\u63D0\u53D6\u4FE1\u606F\uFF0C\u4E0D\u5F97\u9057\u6F0F\u4EFB\u4F55\u5185\u5BB9\u3001\u4E0D\u5F97\u62C6\u5206\u9519\u8BEF\uFF1B\n - \u4E0D\u5F97\u63D0\u53CA\u989C\u8272\uFF0C\u989C\u8272\u53EA\u80FD\u5728\u300C\u4E3B\u9898\u989C\u8272\u300D\u4E00\u7AE0\u63D0\u53CA\u3002\n ]\n \n\n *\u4E3B\u9898\u989C\u8272*[\u63D0\u53D6UI\u4E2D\u7684\u4E8B\u5B9E\u989C\u8272\uFF0C\u63D0\u4F9B\u5305\u542B\u4E3B\u9898\u8272\u5728\u5185\u7684\u8272\u7CFB\uFF0C\u53EA\u80FD\u4ECE\u9644\u4EF6\u4E2D\u63D0\u53D6\u548C\u63A8\u65AD\uFF0C\u57FA\u4E8E\u4E8B\u5B9E\u83B7\u53D6\uFF0C\u4E0D\u53EF\u53C2\u8003\u6216\u8005\u731C\u6D4B]\n\n ".concat(eventPrompts, "\n\n *\u6CE8\u610F\u4E8B\u9879*[\u5173\u4E8E\u9700\u6C42\u4E2D\u7684\u4E00\u4E9B\u7EC6\u8282\u6CE8\u610F\u4E8B\u9879\uFF0C\u9632\u6B62\u540E\u7EED\u9057\u6F0F]\n\n \u6CE8\u610F\uFF1A\u9700\u6C42\u6587\u6863\u7981\u6B62\u63D0\u53CA\u5177\u4F53\u7EC4\u4EF6namespace\u3002\n </\u9700\u6C42\u6587\u6863\u683C\u5F0F>\n\n \u5728\u9700\u6C42\u5206\u6790\u7684\u65F6\u5019\uFF0C\u8981\u7279\u522B\u5173\u6CE8\u4EE5\u4E0B\u89C4\u5219\uFF1A\n <\u5206\u6790\u89C4\u5219>\n 1. \u7EC4\u4EF6\u9009\u7528\u65F6\uFF0C\u6CE8\u610F\u5BF9\u53EF\u80FD\u9700\u8981\u52A8\u6001\u6570\u636E\u7684\u90E8\u5206\uFF08\u6BD4\u5982\u591A\u4E2A\u91CD\u590D\u7684\u533A\u57DF\u3001\u591A\u4E2A\u6570\u636E\u9879\u7684\u5217\u8868\u3001\u591A\u884C\u591A\u5217\u7684\u91CD\u590D\u5361\u7247\u7B49\uFF09\uFF0C\u4F7F\u7528\u652F\u6301\u52A8\u6001\u6570\u636E\u7684\u7EC4\u4EF6\u6E32\u67D3\uFF08\u6BD4\u5982\u5FAA\u73AF\u5217\u8868\u3001\u8868\u683C\u3001\u6807\u7B7E\u7B49\uFF09\uFF0C\u4EE5\u5907\u521D\u59CB\u5316\u6570\u636E\uFF1B\n 2. \u5BF9\u4E8E\u6211\u4EEC\u65E0\u6CD5\u5B9E\u73B0\u7684\u7EC4\u4EF6\uFF0C\u6211\u4EEC\u4F7F\u7528\u4E00\u4E2A\u4E0E\u6574\u4F53\u98CE\u683C\u534F\u8C03\u7684\u300C\u5361\u7247+\u6587\u672C\u300D\u4F5C\u4E3A\u5360\u4F4D\u7EC4\u4EF6\u3002\u8FD9\u65E2\u4FDD\u8BC1\u4E86\u754C\u9762\u7684\u5B8C\u6574\u6027\uFF0C\u4E5F\u4E3A\u540E\u7EED\u5F00\u53D1\u7559\u4E0B\u4E86\u7EBF\u7D22\uFF1B\n </\u5206\u6790\u89C4\u5219>\n\n2\u3001\u6839\u636E\u9700\u6C42\u5206\u6790\uFF0C\u8BE6\u7EC6\u62C6\u89E3\u6240\u9700\u8981\u7684\u7EC4\u4EF6\uFF0C\u6CE8\u610F\uFF1A\n - \u6839\u636E\u4E1A\u52A1\u7C7B\u578B\u9009\u62E9\u5408\u7406\u7684\u6280\u672F\u65B9\u6848\uFF08\u7C7B\u5E93\u3001\u7EC4\u4EF6\u7B49\uFF09\uFF0C\u6CE8\u610F\u4E0D\u8981\u8D85\u51FA\u5141\u8BB8\u7684\u8303\u56F4\uFF1B\n - \u7981\u6B62\u4E3B\u89C2\u81C6\u9020\u4E0D\u5B58\u5728\u7684\u7EC4\u4EF6\u7B49\uFF0C\u53EA\u80FD\u57FA\u4E8E\u4E8B\u5B9E\u4E0A\u63D0\u4F9B\u7684\u7EC4\u4EF6\u8FDB\u884C\uFF1B\n - \u7EC4\u4EF6\u9009\u578B\u4E0D\u8981\u60F3\u5F53\u7136\u7684\u8BA4\u4E3A\u82F1\u6587\u7684namespace\u5C31\u662F\u8BED\u4E49\u5316\u7684\uFF0C\u66F4\u591A\u5173\u6CE8\u4E8E\u4E2D\u6587\u63CF\u8FF0\u548C\u300C\u4F55\u65F6\u4F7F\u7528\u300D\u300C\u6CE8\u610F\u4E8B\u9879\u300D\u6765\u5224\u65AD\u5E94\u8BE5\u4F7F\u7528\u4EC0\u4E48\u7EC4\u4EF6\u3002\n - \u521D\u59CB\u5316\u6570\u636E\u9700\u6C42\u9700\u8981\u4F7F\u7528\u5230type\u4E3Ajs\u6216js-autorun\u7684\u8BA1\u7B97\u7EC4\u4EF6\uFF0C\u540C\u6837\u9700\u8981\u5173\u6CE8\u4E8E\u4E2D\u6587\u63CF\u8FF0\u548C\u300C\u4F55\u65F6\u4F7F\u7528\u300D\u300C\u6CE8\u610F\u4E8B\u9879\u300D\u6765\u5224\u65AD\u5E94\u8BE5\u4F7F\u7528\u4EC0\u4E48\u7EC4\u4EF6\u3002\n\n\u63A5\u4E0B\u6765\uFF0C\u6839\u636E\u4E0A\u8FF0\u5206\u6790\uFF0C\u6309\u7167\u4EE5\u4E0B\u683C\u5F0F\u8FD4\u56DE\u5185\u5BB9\uFF1A\n ").concat(fileFormat({
|
|
31
|
+
content: '(需求分析规格说明书的内容,需求说明书仅允许使用列表和加粗,斜体语法)',
|
|
32
|
+
fileName: 'XX需求文档.md'
|
|
33
|
+
}), "\n \n ").concat(fileFormat({
|
|
34
|
+
content: "[\n{\n \"namespace\": \"mybricks.somelib.icon\"\n},\n{\n \"namespace\": \"mybricks.somelib.text\"\n},\n{\n \"namespace\": \"mybricks.somelib.button\"\n}\n]",
|
|
35
|
+
fileName: 'XX需求组件选型示例.json'
|
|
36
|
+
}), "\n \n\u6CE8\u610F\uFF1Arequire.json\u6587\u4EF6\u8981\u4E25\u683C\u6309\u7167JSON\u683C\u5F0F\u8FD4\u56DE\uFF0C\u6CE8\u610F\u4E0D\u8981\u51FA\u73B0\u8BED\u6CD5\u9519\u8BEF\uFF1B\n \n</\u4F60\u7684\u5DE5\u4F5C\u6D41\u7A0B>");
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// refactor 模式的工作流程
|
|
40
|
+
function getRefactorWorkflow() {
|
|
41
|
+
return "<\u4F60\u7684\u5DE5\u4F5C\u6D41\u7A0B>\n\u6839\u636E\u300C\u5141\u8BB8\u4F7F\u7528\u7684\u7EC4\u4EF6\u300D+ \u300C\u9879\u76EE\u73AF\u5883\u8BF4\u660E\u300D\uFF0C\u5B8C\u6210\u7528\u6237\u9700\u6C42\u7684\u5206\u6790\u548C\u751F\u6210\uFF0C\u6309\u7167\u4EE5\u4E0B\u6B65\u9AA4\u5B8C\u6210prd\u6587\u4EF6\u548C\u7EC4\u4EF6\u9009\u578B\uFF1A\n\n1. \u9700\u6C42\u6587\u6863\u751F\u6210\uFF0C\u8BE6\u7EC6\u5206\u6790\u7528\u6237\u9700\u6C42\uFF0C\u6309\u4EE5\u4E0B\u683C\u5F0F\u8FDB\u884C\u6574\u7406prd\u6587\u4EF6\n 1.1\uFF09\u9996\u5148\uFF0C\u786E\u5B9A\u603B\u4F53\u7684\u529F\u80FD\uFF0C\u63CF\u8FF0\u6574\u4F53\u7684\u6982\u8FF0\u4FE1\u606F\n \n \u5176\u6B21\uFF0C\u6211\u4EEC\u9700\u8981\u533A\u5206\u7528\u6237\u7684\u76EE\u7684\u3002\n 1.2 \uFF09\u786E\u5B9A\u73B0\u72B6\u4E0E\u5B9E\u73B0\u8DEF\u5F84\u7B49\u5185\u5BB9\uFF0C\u5176\u4E2D\uFF1A\n - \u73B0\u72B6\u4E0E\u5B9E\u73B0\u8DEF\u5F84(steps)\uFF1A\u5206\u6790\u5F53\u524D\u7EC4\u4EF6\u7684\u73B0\u72B6\u6216\u95EE\u9898\uFF0C\u4EE5\u53CA\u8FBE\u5230\u76EE\u7684\u7684\u5173\u952E\u5B9E\u73B0\u8DEF\u5F84\uFF1B\n\n \u7279\u522B\u6CE8\u610F\uFF1A\n - \u4F60\u53EA\u9700\u8981\u5BA2\u89C2\u4E8B\u5B9E\u5730\u63CF\u8FF0\u9700\u6C42\u7684\u5B9E\u73B0\u8FC7\u7A0B\u5373\u53EF\uFF0C\u4E0D\u5141\u8BB8\u51FA\u73B0\u76F4\u63A5\u7684\u7EC4\u4EF6\u4F7F\u7528\u5EFA\u8BAE\uFF1B\n - \u659F\u914C\u4F60\u7684\u7528\u8BCD\uFF0C\u4F7F\u7528\u901A\u7528\u7684\u540D\u8BCD\uFF08\u6BD4\u5982\u63A5\u53E3\u3001\u903B\u8F91\u8BA1\u7B97\uFF09\uFF1B\n \n2\u3001\u6839\u636E\u9700\u6C42\u5206\u6790\uFF0C\u8BE6\u7EC6\u62C6\u89E3\u6240\u9700\u8981\u7684\u7EC4\u4EF6\uFF0C\u6CE8\u610F\uFF1A\n - \u6839\u636E\u4E1A\u52A1\u7C7B\u578B\u9009\u62E9\u5408\u7406\u7684\u7EC4\u4EF6\uFF09\uFF0C\u6CE8\u610F\u4E0D\u8981\u8D85\u51FA\u5141\u8BB8\u7684\u8303\u56F4\uFF1B\n - \u7981\u6B62\u4E3B\u89C2\u81C6\u9020\u4E0D\u5B58\u5728\u7684\u7EC4\u4EF6\u7B49\uFF0C\u53EA\u80FD\u57FA\u4E8E\u4E8B\u5B9E\u4E0A\u63D0\u4F9B\u7684\u7EC4\u4EF6\u8FDB\u884C\uFF1B\n - \u7EC4\u4EF6\u9009\u578B\u4E0D\u8981\u60F3\u5F53\u7136\u7684\u8BA4\u4E3A\u82F1\u6587\u7684namespace\u5C31\u662F\u8BED\u4E49\u5316\u7684\uFF0C\u66F4\u591A\u5173\u6CE8\u4E8E\u4E2D\u6587\u63CF\u8FF0\u548C\u300C\u4F55\u65F6\u4F7F\u7528\u300D\u300C\u6CE8\u610F\u4E8B\u9879\u300D\u6765\u5224\u65AD\u5E94\u8BE5\u4F7F\u7528\u4EC0\u4E48\u7EC4\u4EF6\u3002\n - \u521D\u59CB\u5316\u6570\u636E\u9700\u6C42\u9700\u8981\u4F7F\u7528\u5230type\u4E3Ajs\u6216js-autorun\u7684\u8BA1\u7B97\u7EC4\u4EF6\uFF0C\u540C\u6837\u9700\u8981\u5173\u6CE8\u4E8E\u4E2D\u6587\u63CF\u8FF0\u548C\u300C\u4F55\u65F6\u4F7F\u7528\u300D\u300C\u6CE8\u610F\u4E8B\u9879\u300D\u6765\u5224\u65AD\u5E94\u8BE5\u4F7F\u7528\u4EC0\u4E48\u7EC4\u4EF6\u3002\n \n\u63A5\u4E0B\u6765\uFF0C\u6839\u636E\u4E0A\u8FF0\u5206\u6790\uFF0C\u6309\u7167\u4EE5\u4E0B\u683C\u5F0F\u8FD4\u56DE\u5185\u5BB9\uFF1A\n ".concat(fileFormat({
|
|
42
|
+
content: '(需求分析规格说明书的内容,需求说明书仅允许使用列表和加粗,斜体语法)',
|
|
43
|
+
fileName: 'XX需求文档.md'
|
|
44
|
+
}), "\n \n ").concat(fileFormat({
|
|
45
|
+
content: "[\n{\n \"namespace\": \"mybricks.somelib.icon\"\n},\n{\n \"namespace\": \"mybricks.somelib.text\"\n},\n{\n \"namespace\": \"mybricks.somelib.button\"\n}\n]",
|
|
46
|
+
fileName: 'XX需求组件选型示例.json'
|
|
47
|
+
}), "\n \n\u6CE8\u610F\uFF1Arequire.json\u6587\u4EF6\u8981\u4E25\u683C\u6309\u7167JSON\u683C\u5F0F\u8FD4\u56DE\uFF0C\u6CE8\u610F\u4E0D\u8981\u51FA\u73B0\u8BED\u6CD5\u9519\u8BEF\uFF1B\n \n</\u4F60\u7684\u5DE5\u4F5C\u6D41\u7A0B>");
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// refactor 模式的示例
|
|
51
|
+
function getRefactorExamples() {
|
|
52
|
+
return "<examples>\n <example>\n <user_query>\u4F18\u5316\u4E00\u4E0B\u8FD9\u4E2A\u540D\u7247\u7EC4\u4EF6</user_query>\n <assistant_response>\n \u597D\u7684\uFF0C\u6211\u4FE9\u6839\u636E\u5F53\u524D\u642D\u5EFA\u5185\u5BB9\u548C\u9700\u6C42\uFF0C\u4F18\u5316\u4E00\u4E0B\u8FD9\u4E2A\u540D\u7247\u7EC4\u4EF6\uFF0C\u4F18\u5316\u539F\u6709\u5185\u5BB9\uFF0C\u540C\u65F6\u63D0\u4F9B\u66F4\u4E13\u4E1A\u4E30\u5BCC\u7684\u540D\u7247\u4FE1\u606F\uFF0C\u4EE5\u4E0B\u662F\u9700\u6C42\u5206\u6790\u89C4\u683C\u8BF4\u660E\u4E66\u548C\u7EC4\u4EF6\u9009\u578B\u7684\u5185\u5BB9\uFF1A\n ".concat(fileFormat({
|
|
53
|
+
content: "*\u6982\u8FF0*\n \u672C\u9700\u6C42\u65E8\u5728\u4F18\u5316\u73B0\u6709\u7684\u540D\u7247\u7EC4\u4EF6\uFF0C\u4F7F\u5176\u5728\u89C6\u89C9\u6548\u679C\u548C\u4FE1\u606F\u5C55\u793A\u4E0A\u66F4\u52A0\u4E13\u4E1A\u548C\u4E30\u5BCC\u3002\u901A\u8FC7\u8C03\u6574\u5E03\u5C40\u3001\u989C\u8272\u548C\u5185\u5BB9\uFF0C\u63D0\u5347\u6574\u4F53\u7684\u7528\u6237\u4F53\u9A8C\u548C\u6548\u679C\u3002\n\n *\u73B0\u72B6\u4E0E\u5B9E\u73B0\u8DEF\u5F84*\n \u5F53\u524D\u540D\u7247\u7EC4\u4EF6\u57FA\u4E8E\u81EA\u7531\u5E03\u5C40\u5B9E\u73B0\uFF0C\u4F46\u662F\u6837\u5F0F\u548C\u5185\u5BB9\u8FC7\u4E8E\u7B80\u5355\uFF0C\u4FE1\u606F\u51E0\u4E4E\u6CA1\u6709\u914D\u7F6E\uFF0C\u7F3A\u5C11\u5FC5\u8981\u7684\u5185\u5BB9\u3002\u4F18\u5316\u76EE\u6807\u662F\u901A\u8FC7\u5408\u7406\u7684\u5E03\u5C40\u8C03\u6574\u548C\u5185\u5BB9\u4E30\u5BCC\uFF0C\u4F7F\u540D\u7247\u5728\u89C6\u89C9\u4E0A\u66F4\u5177\u5438\u5F15\u529B\uFF0C\u540C\u65F6\u786E\u4FDD\u4FE1\u606F\u4F20\u8FBE\u6E05\u6670\u6709\u6548\u3002\n \u6240\u4EE5\u4E3B\u8981\u5B9E\u73B0\u8DEF\u5F84\u6709\u4EE5\u4E0B\u51E0\u70B9\uFF1A\n 1. \u4FDD\u6301\u81EA\u7531\u5E03\u5C40\uFF0C\u8C03\u6574\u4F4D\u7F6E\u7ED3\u6784\uFF0C\u539F\u5148\u90E8\u5206\u7EC4\u4EF6\u7684\u4F4D\u7F6E\u6709\u91CD\u53E0\u4EA4\u53C9\uFF0C\u5C3A\u5BF8\u4E5F\u4E0D\u5408\u7406\uFF0C\u9700\u8981\u5148\u8C03\u6574\u4F4D\u7F6E\u548C\u5C3A\u5BF8\u4FE1\u606F\uFF1B\n 2. \u4E30\u5BCC\u540D\u7247\u5185\u5BB9\uFF0C\u589E\u52A0\u5FC5\u8981\u7684\u8054\u7CFB\u65B9\u5F0F\u548C\u793E\u4EA4\u5A92\u4F53\u94FE\u63A5\uFF1B\n 3. \u4F18\u5316\u89C6\u89C9\u8BBE\u8BA1\uFF0C\u63D0\u5347\u6574\u4F53\u7F8E\u89C2\u5EA6\u548C\u4E13\u4E1A\u611F\u3002\n\n *\u8BBE\u8BA1\u98CE\u683C*\n - \u91C7\u7528\u73B0\u4EE3\u7B80\u6D01\u98CE\u683C\uFF0C\u6CE8\u91CD\u4FE1\u606F\u7684\u5C42\u6B21\u611F\u548C\u89C6\u89C9\u5F15\u5BFC\u3002\n - \u989C\u8272\u9009\u62E9\u4E0A\uFF0C\u4F7F\u7528\u4E13\u4E1A\u4E14\u6613\u4E8E\u9605\u8BFB\u7684\u914D\u8272\u65B9\u6848\uFF0C\u786E\u4FDD\u6587\u5B57\u548C\u80CC\u666F\u7684\u5BF9\u6BD4\u5EA6\u9002\u5B9C\u3002\n - \u5B57\u4F53\u65B9\u9762\uFF0C\u9009\u62E9\u6E05\u6670\u6613\u8BFB\u7684\u5B57\u4F53\uFF0C\u5B57\u53F7\u9002\u4E2D\uFF0C\u786E\u4FDD\u4FE1\u606F\u4F20\u8FBE\u7684\u6709\u6548\u6027\u3002\n\n *\u5E03\u5C40\u548C\u5185\u5BB9*\n - \u540D\u7247\u6574\u4F53\u5E03\u5C40\u91C7\u7528\u5DE6\u53F3\u5206\u680F\u8BBE\u8BA1\uFF0C\u5DE6\u4FA7\u5C55\u793A\u4E2A\u4EBA\u5934\u50CF\u548C\u57FA\u672C\u4FE1\u606F\uFF0C\u53F3\u4FA7\u5C55\u793A\u8BE6\u7EC6\u8054\u7CFB\u65B9\u5F0F\u548C\u793E\u4EA4\u5A92\u4F53\u94FE\u63A5\u3002\n - \u5934\u50CF\u90E8\u5206\u91C7\u7528\u5706\u5F62\u8BBE\u8BA1\uFF0C\u589E\u52A0\u4EB2\u548C\u529B\u3002\n - \u8BE6\u7EC6\u4FE1\u606F\u90E8\u5206\u5305\u62EC\u59D3\u540D\u3001\u804C\u4F4D\u3001\u516C\u53F8\u540D\u79F0\u3001\u8054\u7CFB\u7535\u8BDD\u3001\u7535\u5B50\u90AE\u4EF6\u548C\u793E\u4EA4\u5A92\u4F53\u94FE\u63A5\u7B49\uFF0C\u4FE1\u606F\u6392\u5217\u4E3B\u6B21\u5206\u660E\uFF0C\u4FBF\u4E8E\u5FEB\u901F\u67E5\u627E\u3002\n\n *\u989C\u8272\u6837\u5F0F*\n - \u4E3B\u8272\u8C03\u9009\u7528\u6DF1\u84DD\u8272\uFF0C\u4F20\u8FBE\u4E13\u4E1A\u611F\u3002\n - \u8F85\u52A9\u8272\u8C03\u9009\u7528\u6D45\u7070\u8272\uFF0C\u63D0\u5347\u6574\u4F53\u7684\u5C42\u6B21\u611F\u3002\n - \u6587\u5B57\u989C\u8272\u91C7\u7528\u6DF1\u7070\u8272\uFF0C\u786E\u4FDD\u826F\u597D\u7684\u53EF\u8BFB\u6027\u3002\n\n *\u98CE\u9669\u63D0\u793A*\n - \u540D\u7247\u7684\u5C3A\u5BF8\u592A\u5927\u6216\u592A\u5C0F\u90FD\u4E0D\u5408\u7406\uFF0C\u5EFA\u8BAE\u9009\u7528\u5408\u9002\u7684\u5C3A\u5BF8\u3002\n - \u8FC7\u591A\u7684\u4FE1\u606F\u53EF\u80FD\u5BFC\u81F4\u540D\u7247\u663E\u5F97\u6742\u4E71\uFF0C\u9700\u5408\u7406\u53D6\u820D\u4FE1\u606F\u5185\u5BB9\u3002",
|
|
54
|
+
fileName: 'XX需求文档.md'
|
|
55
|
+
}), "\n\n \u63A8\u8350\u91C7\u7528\u4EE5\u4E0B\u7EC4\u4EF6\u8FDB\u884C\u642D\u5EFA\uFF1A\n ").concat(fileFormat({
|
|
56
|
+
content: "[\n {\n \"namespace\": \"mybricks.somelib.icon\"\n },\n {\n \"namespace\": \"mybricks.somelib.text\"\n },\n {\n \"namespace\": \"mybricks.somelib.button\"\n },\n {\n \"namespace\": \"mybricks.somelib.list\"\n },\n {\n \"namespace\": \"mybricks.somelib.image\"\n }\n ]",
|
|
57
|
+
fileName: 'XX所需要的组件信息.json'
|
|
58
|
+
}), "\n </assistant_response>\n </example>\n\n <example>\n <user_query>\u6309\u7167\u8FD9\u4E2A\u8BBE\u8BA1\u7A3F\u8FD8\u539F\u6548\u679C</user_query>\n <assistant_response>\n \u597D\u7684\uFF0C\u6211\u5C06\u6309\u7167\u8FD9\u4E2A\u8BBE\u8BA1\u7A3F\u8FD8\u539F\u6548\u679C\uFF0C\u5C06\u76EE\u524D\u7684\u6548\u679C\u8FD8\u539F\u6210\u548C\u8BBE\u8BA1\u7A3F\u4E00\u81F4\uFF0C\u4EE5\u4E0B\u662F\u9700\u6C42\u5206\u6790\u89C4\u683C\u8BF4\u660E\u4E66\u548C\u7EC4\u4EF6\u9009\u578B\u7684\u5185\u5BB9\uFF1A\n ").concat(fileFormat({
|
|
59
|
+
content: "*\u6982\u8FF0*\n\u7528\u6237\u9700\u8981\u6309\u7167\u8BBE\u8BA1\u7A3F\u8FD8\u539F\u6548\u679C\uFF0C\u5C06\u76EE\u524D\u7684\u6548\u679C\u8FD8\u539F\u6210\u548C\u8BBE\u8BA1\u7A3F\u4E00\u81F4\uFF0C\u8BA9\u6211\u770B\u770B\u73B0\u5728\u6709\u54EA\u91CC\u4E0D\u4E00\u81F4\uFF0C\u7136\u540E\u7ED9\u51FA\u8C03\u6574\u65B9\u6848\u3002\n\n*\u73B0\u72B6\u4E0E\u5B9E\u73B0\u8DEF\u5F84*\n \u76F8\u6BD4\u8BBE\u8BA1\u7A3F\uFF0C\u5F53\u524D\u6548\u679C\u6709\u4EE5\u4E0B\u4E0D\u4E00\u81F4\uFF1A\n - \u5546\u54C1\u5361\u7247\u90E8\u5206\uFF1A\n \u5F53\u524D\u662Fflex\u5E03\u5C40\uFF0C\u57FA\u4E8Eflex\u5E03\u5C40\u6765\u5206\u6790\u7684\u8BDD\n \u8BBE\u8BA1\u7A3F\u6548\u679C\uFF1A\u5E03\u5C40\u4E3A\u5DE6\u53F3\u4E24\u90E8\u5206\uFF0C\u5DE6\u8FB9\u662F\u5E26\u5706\u89D2\u7684\u56FE\u7247\uFF0C\u53F3\u4FA7\u662F\u4FE1\u606F\u533A\u57DF\uFF0C\u4FE1\u606F\u533A\u57DF\u4E3A\u4E0A\u4E0B\u7ED3\u6784\uFF0C\u4E0A\u65B9\u6362\u884C\u6807\u9898\uFF0C\u4E0B\u65B9\u5C45\u53F3\u7684\u4EF7\u683C\u548C\u5212\u7EBF\u4EF7\uFF0C\n \u73B0\u72B6\uFF1A\u5E03\u5C40\u662F\u4E0A\u4E0B\u5E03\u5C40\uFF0C\u4E0A\u9762\u4E00\u4E2A\u56FE\u7247\uFF0C\u4E0B\u9762\u4E00\u4E2A\u4EF7\u683C\n \u73B0\u72B6\u548C\u5B9E\u73B0\u8DEF\u5F84\uFF1A\n - \u4F18\u5316\u5E03\u5C40\u548C\u7ED3\u6784\uFF1A\u4FEE\u6539\u5E03\u5C40\u4E3A\u6A2A\u5411\u5E03\u5C40\uFF0C\u540C\u65F6\u4F18\u5316\u6574\u4F53\u7ED3\u6784\uFF0C\u6DFB\u52A0\u53F3\u4FA7\u7684\u4FE1\u606F\u533A\u57DF\u5BB9\u5668\u7528\u4E8E\u5782\u76F4\u5E03\u5C40\uFF0C\u5728\u4FE1\u606F\u533A\u57DF\u4E2D\u6DFB\u52A0\u6A2A\u5411\u5BB9\u5668\uFF0C\u7528\u4E8E\u6C34\u5E73\u5E03\u5C40\u4EF7\u683C\u548C\u5212\u7EBF\u4EF7\uFF1B\n - \u79FB\u52A8\u539F\u6709\u5185\u5BB9\uFF1A\u79FB\u52A8\u539F\u6765\u7684\u6807\u9898\u7EC4\u4EF6\u5230\u53F3\u4FA7\u4FE1\u606F\u533A\u57DF\u5BB9\u5668\u4E2D\uFF0C\u79FB\u52A8\u539F\u6765\u7684\u4EF7\u683C\u7EC4\u4EF6\u5230\u53F3\u4FA7\u4FE1\u606F\u533A\u57DF\u7684\u4EF7\u683C\u6A2A\u5411\u5BB9\u5668\uFF0C\u540C\u65F6\u6DFB\u52A0\u4E00\u4E2A\u5212\u7EBF\u4EF7\u5230\u4EF7\u683C\u5BB9\u5668\uFF1B\n - \u4F18\u5316\u6837\u5F0F\uFF1A\u56FE\u7247\u914D\u7F6E\u5706\u89D2\uFF0C\u6807\u9898\u914D\u7F6E\u6362\u884C\uFF0C\u4EF7\u683C\u914D\u7F6E\u5C45\u53F3\uFF0C\u4EF7\u683C\u914D\u7F6E\u5B57\u4F53\u7C97\u7EC6\u989C\u8272\uFF0C\u5212\u7EBF\u4EF7\u914D\u7F6E\u5B57\u4F53\u5927\u5C0F\u989C\u8272\uFF1B\n \u6536\u5C3E\u5DE5\u4F5C\uFF1A\n \u5E03\u5C40\u8C03\u6574\u4E3A\u5DE6\u53F3\u7ED3\u6784\u540E\uFF0C\u539F\u672C\u7684\u56FA\u5B9A\u5BBD\u5EA6\u9700\u8981\u914D\u7F6E\u4E3A\u81EA\u9002\u5E94\u5BBD\u5EA6\uFF0C\u907F\u514D\u5BBD\u5EA6\u6EA2\u51FA\u3002\n - \u6A21\u5757\u6574\u4F53\u90E8\u5206\uFF1A\n \u8BBE\u8BA1\u7A3F\u6548\u679C\uFF1A\u6C1B\u56F4\u6A21\u5757\u548C\u5185\u5BB9\u6A21\u5757\u662F\u4E00\u4E2A\u80CC\u666F\u6C1B\u56F4+\u5185\u5BB9\u6A21\u5757\u7684\u9519\u4F4D\u5E03\u5C40\uFF0C\u5185\u5BB9\u5F80\u4E0A\u906E\u76D6\u4F4F\u80CC\u666F\u3002\n \u73B0\u72B6\uFF1A\u662F\u4E00\u4E2A\u4E0A\u4E0B\u5E03\u5C40\uFF0C\u6C1B\u56F4\u6A21\u5757\u5728\u4E0A\u65B9\uFF0C\u5185\u5BB9\u6A21\u5757\u5728\u4E0B\u65B9\u3002\n \u73B0\u72B6\u548C\u5B9E\u73B0\u8DEF\u5F84\uFF1A\n - \u4F18\u5316\u5E03\u5C40\u548C\u7ED3\u6784\uFF1A\u7531\u4E8E\u662Fflex\u5E03\u5C40\uFF0C\u5185\u5BB9\u6A21\u5757\u901A\u8FC7\u8D1Fmargin\u5F80\u4E0A\u906E\u76D6\u4F4F\u80CC\u666F\u3002\n ",
|
|
60
|
+
fileName: '还原需求文档.md'
|
|
61
|
+
}), "\n ").concat(fileFormat({
|
|
62
|
+
content: "\n [\n {\n \"namespace\": \"mybricks.somelib.text\"\n },\n {\n \"namespace\": \"mybricks.somelib.container\"\n }\n ]",
|
|
63
|
+
fileName: '需要的组件信息.json'
|
|
64
|
+
}), "\n </assistant_response>\n </example>\n</examples>\n");
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// extract 模式的示例
|
|
68
|
+
function getExtractExamples() {
|
|
69
|
+
return "<examples>\n <user_query>\u8FD8\u539F\u56FE\u7247\u7684UI\u6548\u679C</user_query>\n <assistant_response>\n \u597D\u7684\uFF0C\u7ECF\u8FC7\u5BF9\u56FE\u7247\u7684\u5168\u9762\u5206\u6790\uFF0C\u6211\u63D0\u4F9B\u4EE5\u4E0B\u8F85\u52A9\u4FE1\u606F\uFF1A\n ".concat(fileFormat({
|
|
70
|
+
content: "\n ## \u5206\u6790\n \u4ECE\u56FE\u7247\u4E2D\u4ECE\u9876\u5C42\u5230\u5E95\u5C42\u5206\u6790\uFF0C\u53EF\u4EE5\u5206\u6790\u51FA\u4EE5\u4E0B\u5185\u5BB9\n\n \u6839\u7EC4\u4EF6\u7ED3\u6784\uFF1A\n - \u9876\u90E8\u56FA\u5B9A\u533A\u57DF\uFF1A\u56FA\u5B9A\u7684\u9876\u90E8\u5BFC\u822A\n - \u4E3B\u4F53\u5185\u5BB9\u533A\u57DF\uFF1A\u5DE6\u4E2D\u53F3\u4E09\u680F\u5E03\u5C40\n - \u5E95\u90E8\u533A\u57DF\uFF0C\u56FA\u5B9A\u7684\u5E95\u90E8\u5BFC\u822A\n \u5206\u533A\u57DF\u7ED3\u6784\uFF1A\n 1. \u9876\u90E8\u56FA\u5B9A\u533A\u57DF\uFF1A\u901A\u680F\u5BFC\u822A\uFF0C\u5206\u6210\u5DE6\u53F3\u4E24\u4E2A\u90E8\u5206\uFF0C\u5305\u542B\u5DE6\u4FA7logo + \u516C\u544A\uFF0C\u53F3\u4FA7\u4E2A\u4EBA\u4FE1\u606F\u533A\u57DF\n 1.2 \u5DE6\u4FA7logo + \u516C\u544A\u4FE1\u606F\uFF08\u5587\u53ED\u56FE\u6807 + \"\u8FD9\u662F\u4E00\u6761\u516C\u544A\"\uFF09\uFF1B\n 1.3 \u53F3\u4FA7\u4E2A\u4EBA\u4FE1\u606F\u533A\u57DF\uFF1A\u84DD\u8272\u8FB9\u6846\u7684\u5934\u50CF + \u6635\u79F0\uFF0C\u63D0\u4F9B\u9000\u51FA\u767B\u5F55\u6309\u94AE\uFF1B\n 2. \u5185\u5BB9\u533A\u57DF\uFF1A\u62C6\u5206\u6210\u5DE6\u4E2D\u53F3\u4E09\u680F\uFF0C\u5DE6\u8FB9\u4FA7\u8FB9\u680F\u56FA\u5B9A\u5BBD\u5EA6 + \u4E2D\u95F4\u81EA\u9002\u5E94\u7684\u5185\u5BB9\u533A\u57DF + \u53F3\u4FA7\u56FA\u5B9A\u5BBD\u5EA6\u7684\u4FE1\u606F\u680F\n 2.1 \u5DE6\u4FA7\u4FA7\u8FB9\u680F\u533A\u57DF\uFF1A\u4ECE\u4E0A\u5230\u4E0B\u5C55\u793A\u4E00\u4E2A\u5305\u542B\u56FE\u7247+\u6587\u6848\u7684\u83DC\u5355\u680F\uFF1B\n 2.2 \u4E2D\u95F4\u5185\u5BB9\u533A\u57DF\uFF1A\u4ECE\u4E0A\u5230\u4E0B\u5305\u542B\u7B5B\u9009\u533A\u57DF\u3001\u63A8\u8350\u5217\u8868\u533A\u57DF\n 2.2.1 \u7B5B\u9009\u533A\u57DF\uFF1A\u4ECE\u4E0A\u5230\u4E0B\u7684\u5206\u7C7B\u6807\u7B7E(\u5730\u533A\u5217\u8868\u3001\u7269\u6D41\u5217\u8868\u3001\u8BC4\u5206\u5217\u8868) + \u53F3\u4FA7\u641C\u7D22\u6309\u94AE\n 2.2.2 \u63A8\u8350\u5217\u8868\u533A\u57DF\uFF1A\u5782\u76F4\u4E00\u884C\u4E00\u5217\u7684\u5FAA\u73AF\u63A8\u8350\u5361\u7247\u5217\u8868\n 2.2.2.1 \u63A8\u8350\u5361\u7247\uFF1A\u5546\u54C1\u56FE\u7247 + \u4EF7\u683C\uFF08\u5212\u7EBF\u4EF7 + \u5230\u624B\u4EF7\uFF09+ \u8865\u8D34\u6807\u7B7E\uFF0C\u53F3\u4FA7\u63D0\u4F9B\u52A0\u8D2D\u6309\u94AE\n 2.3 \u53F3\u4FA7\u4FE1\u606F\u680F\u533A\u57DF\uFF1A\u4ECE\u4E0A\u5230\u4E0B\u5305\u542B\u63A8\u8350\u70ED\u699C\u3001\u4E2A\u4EBA\u4FE1\u606F\u533A\u57DF\n 2.3.1 \u63A8\u8350\u70ED\u699C\uFF1A\u9876\u90E8\u7684\"\u5927\u5BB6\u90FD\u5728\u641C\" + \"\u6362\u4E00\u6362\"\u6309\u94AE\uFF0C\u5185\u5BB9\u4E3A\u5404\u7C7B\u5546\u54C1\u7684\u699C\u5355\u5217\u8868\uFF0C\u5546\u54C1\u4EC5\u5305\u542B\u7F29\u7565\u56FE\u548C\u5230\u624B\u4EF7\u548C\u5B9E\u65F6\u70ED\u5EA6\u5C0F\u706B\u82D7\uFF1B\n 2.3.2 \u4E2A\u4EBA\u4FE1\u606F\uFF1A\u5305\u542B\u6D4F\u89C8\u3001\u6536\u85CF\u3001\u5173\u6CE8\u7B49\u6570\u636E\u7684\u6307\u6807\u5361\u7247\u7F51\u683C\u5217\u8868\u4EE5\u53CA\u4E00\u4E2A\u767B\u5F55\u5165\u53E3\uFF1B\n 2.3.2.1 \u6570\u636E\u5361\u7247\uFF1A\u4E24\u884C\u4E09\u5217\u7684\u5FAA\u73AF\u7F51\u683C\u5217\u8868\uFF0C\u6838\u5FC3\u6307\u6807 + \u540C\u6BD4\u73AF\u6BD4\uFF0C\u4EE5\u53CA\u4E0A\u5347\u4E0B\u964D\u7684\u7BAD\u5934\uFF1B\n 2.3.2.2 \u767B\u5F55\u5165\u53E3\uFF1A\u5305\u542Bgitub\u3001google\u7684\u5FAA\u73AF\u56FE\u6807\u5217\u8868 + \u767B\u5F55\u6309\u94AE\uFF1B\n 2.3.3 \u79EF\u5206\u8868\u683C\uFF1A\u5305\u542B\u6536\u5165\u3001\u652F\u51FA\u3001\u6765\u6E90\uFF0C\u64CD\u4F5C\u5217\n 2.3.3.1 \u6536\u5165\u3001\u6765\u6E90\u3001\u64CD\u4F5C\u5217\u7684\u6837\u5F0F\u90FD\u4E0D\u662F\u666E\u901A\u6587\u672C\uFF0C\u9700\u8981\u5728\u5355\u5143\u683C\u5D4C\u5165\u7EC4\u4EF6\uFF1B\n 3. \u5E95\u90E8\u533A\u57DF\uFF1A\u56FA\u5B9A\u7684\u5E95\u90E8\u5185\u5BB9\uFF0C\u5305\u542B\u5DE6\u4FA7\u7684\u4EF7\u683C\u8BA1\u7B97\u548C\u53F3\u4FA7\u7684\u652F\u4ED8\u6309\u94AE\uFF1B\n 3.1 \u4EF7\u683C\u8BA1\u7B97\u533A\u57DF\uFF1A\u5305\u542B\u4F18\u60E0\u4EF7\u3001\u5230\u624B\u4EF7\u3001\u4EE5\u53CA\u4F18\u60E0\u660E\u7EC6\u7684\u5165\u53E3\uFF1B\n 3.2 \u652F\u4ED8\u533A\u57DF\uFF1A\u652F\u4ED8\u6309\u94AE + \u603B\u8BA1\u6570\u91CF\uFF1B\n\n ## \u4E3B\u9898\u989C\u8272\n \u4ECE\u9644\u4EF6\u4E2D\u5206\u6790\u548C\u63D0\u53D6\u989C\u8272\uFF0C\u8272\u7CFB\u5982\u4E0B\n \u4E3B\u9898\u989C\u8272\uFF1A\u6D3B\u529B\u6A59 #ff6e30\uFF1B\n \u4E3B\u6587\u672C\u989C\u8272\uFF1A\u6DF1\u7070\u8272 #333333\uFF1B\n \u6B21\u6587\u672C\u989C\u8272\uFF1A\u6D45\u7070\u8272 #999999\uFF1B\n \u6CE8\u610F\u5173\u6CE8\u4E3B\u9898\u7684\u989C\u8272\uFF0C\u5BF9\u7EC4\u4EF6\u8FDB\u884C\u914D\u7F6E\u3002\n\n ## \u521D\u59CB\u5316\u6570\u636E\n - \u516C\u544A\u4FE1\u606F\u5217\u8868\n - \u7528\u6237\u4E2A\u4EBA\u4FE1\u606F\n - \u5BFC\u822A\u83DC\u5355\n - \u63A8\u8350\u5546\u54C1\u5217\u8868\n - \u63A8\u8350\u5546\u54C1\u5217\u8868\u4E0B\u5404\u5546\u54C1\u7684\u6570\u636E\n - \u70ED\u699C\u63A8\u8350\u5546\u54C1\u5217\u8868\n - \u70ED\u699C\u63A8\u8350\u5546\u54C1\u5217\u8868\u4E0B\u5404\u5546\u54C1\u7684\u6570\u636E\n - \u6570\u636E\u6307\u6807\u5361\u7247\u5FAA\u73AF\u5217\u8868\n - \u79EF\u5206\u8868\u683C\u6570\u636E\n - \u79EF\u5206\u8868\u683C\u4E0B\u6536\u5165\u3001\u6765\u6E90\u7684\u6570\u636E\n - \u4F18\u60E0\u660E\u7EC6\u6570\u636E\n \n ## \u6CE8\u610F\u4E8B\u9879\n \u6CE8\u610F\u4EE5\u4E0B\u7EC6\u8282\uFF1A\n - \u6CE8\u610F\u5404\u533A\u5757\u95F4\u8DDD\uFF0C\u9876\u90E8\u5982\u679C\u662F\u901A\u680F\u5C31\u4E0D\u8981\u4F7F\u7528\u5916\u95F4\u8DDD\u4E86\uFF1B\n - \u4E2A\u4EBA\u4FE1\u606F\u7684\u6570\u636E\u5361\u7247\u662F\u5F02\u5F62\u5E03\u5C40\uFF0C\u540C\u73AF\u6BD4\u548C\u7BAD\u5934\u8981\u5728\u4E00\u4E2A\u7EC4\u5408\u91CC\uFF1B\n - \u79EF\u5206\u8868\u683C\u9700\u8981\u5728\u5355\u5143\u683C\u5185\u5D4C\u5165\u7EC4\u4EF6\uFF1B\n - \u52A8\u6001\u6570\u636E\u8003\u8651\u4F7F\u7528\u52A8\u6001\u6570\u636E\u7EC4\u4EF6\uFF1A\u699C\u5355\u3001\u5217\u8868\u548C\u7F51\u683C\u4F7F\u7528\u5FAA\u73AF\u5217\u8868\uFF0C\u5176\u4ED6\u4F7F\u7528\u83DC\u5355\u3001\u8868\u683C\u7B49\u52A8\u6001\u7EC4\u4EF6\uFF0C\u540C\u65F6\u6CE8\u610F\u521D\u59CB\u5316\u6570\u636E\uFF1B\n - \u8868\u5355\u5FC5\u987B\u5206\u5F00\u4F7F\u7528\uFF0C\u4E0D\u5141\u8BB8\u4F7F\u7528\u4E00\u4E2A\u5927\u8868\u5355\uFF1B",
|
|
71
|
+
fileName: '还原需求文档.md'
|
|
72
|
+
}), ",\n \u63A8\u8350\u91C7\u7528\u4EE5\u4E0B\u7EC4\u4EF6\u8FDB\u884C\u642D\u5EFA\uFF1A\n ").concat(fileFormat({
|
|
73
|
+
content: "[\n {\n \"namespace\": \"mybricks.somelib.text\"\n },\n {\n \"namespace\": \"mybricks.somelib.icon\"\n },\n {\n \"namespace\": \"mybricks.somelib.image\"\n },\n {\n \"namespace\": \"mybricks.somelib.list\"\n },\n {\n \"namespace\": \"mybricks.somelib.button\"\n }\n ]",
|
|
74
|
+
fileName: '需要的组件信息.json'
|
|
75
|
+
}), "\n </assistant_response>\n </example>\n</examples>");
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// generate 模式的示例
|
|
79
|
+
function getGenerateExamples(config) {
|
|
80
|
+
if (!config.fewShots) return '';
|
|
81
|
+
return "<examples>\n".concat(config.fewShots, "\n<example>");
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// 根据 mode 获取对应的工作流程
|
|
85
|
+
function getWorkflowByMode(mode, config) {
|
|
86
|
+
switch (mode) {
|
|
87
|
+
case 'generate':
|
|
88
|
+
return getGenerateWorkflow(config);
|
|
89
|
+
case 'extract':
|
|
90
|
+
return getExtractWorkflow();
|
|
91
|
+
case 'refactor':
|
|
92
|
+
return getRefactorWorkflow();
|
|
93
|
+
default:
|
|
94
|
+
return getRefactorWorkflow();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// 根据 mode 获取对应的示例
|
|
99
|
+
function getExamplesByMode(mode, config) {
|
|
100
|
+
switch (mode) {
|
|
101
|
+
case 'generate':
|
|
102
|
+
return getGenerateExamples(config);
|
|
103
|
+
case 'extract':
|
|
104
|
+
return getExtractExamples();
|
|
105
|
+
case 'refactor':
|
|
106
|
+
return getRefactorExamples();
|
|
107
|
+
default:
|
|
108
|
+
return getRefactorExamples();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
function analyzeRequirementAndComponents(config) {
|
|
112
|
+
var displayContent = "";
|
|
113
|
+
return {
|
|
114
|
+
name: NAME,
|
|
115
|
+
displayName: "分析当前需求",
|
|
116
|
+
description: "\u5206\u6790/\u6269\u5199\u9700\u6C42 + \u7EC4\u4EF6\u9009\u578B\uFF0C\u9488\u5BF9\u7528\u6237\u7684\u642D\u5EFA\u9700\u6C42\uFF08\u53EF\u80FD\u662F\u6587\u672C\uFF0C\u4E00\u53E5\u8BDD\u3001\u56FE\u7247\u9644\u4EF6\u3001\u6587\u4EF6\u9644\u4EF6\u7B49\u9700\u6C42\uFF09\u751F\u6210\u9700\u6C42\u6587\u6863\uFF0C\u5E76\u4E14\u5206\u6790\u53EF\u80FD\u4F7F\u7528\u5230\u7684\u7EC4\u4EF6\u3002\n\u53C2\u6570(mode)\uFF1A\u6A21\u5F0F\uFF0C\u53EF\u9009\u62E9\u7684\u503C\u6709\u751F\u6210\u548C\u4FEE\u6539\u4E24\u5927\u7C7B\uFF0C\u5177\u4F53\u662F generate\u3001extract\u3001refactor \u4E09\u79CD\uFF1A\n \u5176\u4E2D\uFF1A\n - \u4ECE0\u5F00\u59CB\u751F\u6210\u4E00\u5F20\u65B0\u753B\u5E03\u65F6\uFF0C\u53EF\u4EE5\u9009\u62E9\u751F\u6210UI\u7684\u4E24\u79CD\u6A21\u5F0F\uFF1A\n - generate\u6A21\u5F0F\uFF1A\u5BF9\u9700\u6C42\u5185\u5BB9\u8FDB\u884C\u6269\u5199\u548C\u6574\u7406\uFF0C\u5E38\u7528\u4E8E\u4ECE\u65E0\u5230\u6709\u751F\u6210\u65B0\u7684\u9700\u6C42\uFF0C\u540E\u7EED\u5F80\u5F80\u4F7F\u7528\u300C\u751F\u6210UI\u300D\u5DE5\u5177\uFF1B\n - extract\u6A21\u5F0F\uFF1A\u4ECE\u56FE\u7247/\u8BBE\u8BA1\u7A3F/\u539F\u578B\u6587\u4EF6\u4E2D\u63D0\u53D6\u548C\u89E3\u6790\u9700\u6C42\uFF0C\u5E38\u7528\u4E8E\u751F\u6210\u65F6\u4E25\u683C\u8FD8\u539F\u8BBE\u8BA1\u7A3F\uFF0C\u540E\u9762\u5F80\u5F80\u4F7F\u7528\u300C\u751F\u6210UI\u300D\u5DE5\u5177\uFF1B\n - \u5728\u5DF2\u6709UI\u5185\u5BB9\u7684\u753B\u5E03\u4E0A\uFF0C\u53EF\u4EE5\u9009\u62E9\u4FEE\u6539UI\u7684\u4E00\u79CD\u6A21\u5F0F\uFF1A\n - refactor\u6A21\u5F0F\uFF1A\u5206\u6790\u9700\u6C42\u6216\u9644\u4EF6\u6765\u5BF9\u73B0\u6709\u642D\u5EFA\u7684\u5185\u5BB9\u8FDB\u884C\u4F18\u5316\u3001\u8C03\u6574\u3001\u91CD\u6784\u3001\u8FD8\u539F\u6548\u679C\uFF0C\u540E\u9762\u5F80\u5F80\u4F7F\u7528\u300C\u4FEE\u6539UI\u300D\u5DE5\u5177\uFF1B\n\u5DE5\u5177\u5206\u7C7B\uFF1A\u4FE1\u606F\u83B7\u53D6\u7C7B\n\u524D\u7F6E\u8981\u6C42\uFF1A\u7528\u6237\u63D0\u51FA\u8FC7\u642D\u5EFA\u9700\u6C42\uFF08\u53EF\u80FD\u662F\u6587\u672C\uFF0C\u4E00\u53E5\u8BDD\u3001\u56FE\u7247\u9644\u4EF6\u3001\u6587\u4EF6\u9644\u4EF6\u7B49\u9700\u6C42\uFF09\n\u8FD4\u56DE\u503C\uFF1A\u8BE6\u7EC6\u7406\u89E3\u7528\u6237\u9700\u6C42\u540E\u7684\u5206\u6790\u8BF4\u660E\u4E66\u6587\u4EF6 + \u7EC4\u4EF6\u9009\u578B\uFF1B",
|
|
117
|
+
// aiRole: 'expert',
|
|
118
|
+
// aiRole: 'architect',
|
|
119
|
+
aiRole: _ref => {
|
|
120
|
+
var _params$mode;
|
|
121
|
+
var {
|
|
122
|
+
params
|
|
123
|
+
} = _ref;
|
|
124
|
+
var mode = (_params$mode = params === null || params === void 0 ? void 0 : params.mode) !== null && _params$mode !== void 0 ? _params$mode : 'refactor';
|
|
125
|
+
return mode === 'generate' ? 'expert' : 'architect';
|
|
126
|
+
},
|
|
127
|
+
// lastAppendMessage: '需求已分析完成,请继续完成用户需求。',
|
|
128
|
+
getPrompts: _ref2 => {
|
|
129
|
+
var _params$mode2;
|
|
130
|
+
var {
|
|
131
|
+
params
|
|
132
|
+
} = _ref2;
|
|
133
|
+
var mode = (_params$mode2 = params === null || params === void 0 ? void 0 : params.mode) !== null && _params$mode2 !== void 0 ? _params$mode2 : 'refactor';
|
|
134
|
+
if (mode === 'generate-from-design') {
|
|
135
|
+
mode = 'extract';
|
|
136
|
+
}
|
|
137
|
+
var commonPrompts = getCommonPrompts(config);
|
|
138
|
+
var workflow = getWorkflowByMode(mode, config);
|
|
139
|
+
var examples = getExamplesByMode(mode, config);
|
|
140
|
+
return "".concat(commonPrompts).concat(workflow).concat(examples);
|
|
141
|
+
},
|
|
142
|
+
stream(_ref3) {
|
|
143
|
+
var {
|
|
144
|
+
files,
|
|
145
|
+
status,
|
|
146
|
+
replaceContent
|
|
147
|
+
} = _ref3;
|
|
148
|
+
return displayContent = files.reduce((replaceContent, file) => {
|
|
149
|
+
return replaceContent.replace(file.fileName, file.extension === "md" ? file.content : "");
|
|
150
|
+
}, replaceContent);
|
|
151
|
+
},
|
|
152
|
+
execute(_ref4) {
|
|
153
|
+
var _params$mode3, _errorContent, _prdFile$content, _prdFile$content$trim;
|
|
154
|
+
var {
|
|
155
|
+
files,
|
|
156
|
+
content,
|
|
157
|
+
params
|
|
158
|
+
} = _ref4;
|
|
159
|
+
var mode = (_params$mode3 = params === null || params === void 0 ? void 0 : params.mode) !== null && _params$mode3 !== void 0 ? _params$mode3 : 'refactor';
|
|
160
|
+
var errorContent;
|
|
161
|
+
try {
|
|
162
|
+
errorContent = JSON.parse(content);
|
|
163
|
+
} catch (error) {}
|
|
164
|
+
if (errorContent && (_errorContent = errorContent) !== null && _errorContent !== void 0 && _errorContent.message) {
|
|
165
|
+
var _errorContent2;
|
|
166
|
+
throw new RxaiError("\u7F51\u7EDC\u9519\u8BEF\uFF0C".concat((_errorContent2 = errorContent) === null || _errorContent2 === void 0 ? void 0 : _errorContent2.message), "request");
|
|
167
|
+
}
|
|
168
|
+
var prdFile = getFiles(files, {
|
|
169
|
+
extName: 'md'
|
|
170
|
+
});
|
|
171
|
+
if (!(prdFile !== null && prdFile !== void 0 && prdFile.content) || (prdFile === null || prdFile === void 0 || (_prdFile$content = prdFile.content) === null || _prdFile$content === void 0 || (_prdFile$content$trim = _prdFile$content.trim) === null || _prdFile$content$trim === void 0 || (_prdFile$content$trim = _prdFile$content$trim.call(_prdFile$content)) === null || _prdFile$content$trim === void 0 ? void 0 : _prdFile$content$trim.length) === 0) {
|
|
172
|
+
throw new RxaiError("未生成或者生成了错误的需求文档,请重试", "tool", "生成需求文档失败,请重试");
|
|
173
|
+
}
|
|
174
|
+
var requireComsFile = getFiles(files, {
|
|
175
|
+
extName: 'json'
|
|
176
|
+
});
|
|
177
|
+
var requireComponents = [];
|
|
178
|
+
try {
|
|
179
|
+
requireComponents = jsonSafeParse(requireComsFile === null || requireComsFile === void 0 ? void 0 : requireComsFile.content);
|
|
180
|
+
} catch (error) {
|
|
181
|
+
throw new RxaiError("\u89E3\u6790\u7EC4\u4EF6\u9009\u578B\u9519\u8BEF\uFF0C\u8BF7\u68C0\u67E5\u683C\u5F0F\uFF0C".concat(error === null || error === void 0 ? void 0 : error.message), "tool", "生成组件需求失败,请重试");
|
|
182
|
+
}
|
|
183
|
+
if (Array.isArray(requireComponents)) {
|
|
184
|
+
requireComponents.forEach(item => {
|
|
185
|
+
config.onComponentDocOpen(item.namespace);
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
llmContent: mode === 'extract' ? "\n!IMPORTANT: \u4ECE\u9644\u4EF6\u4E2D\u6211\u5206\u6790\u51FA\u8FD9\u4E9B\u4FE1\u606F\u8F85\u52A9\u4F60\uFF0C\u6CE8\u610F\u6839\u636E\u4E3B\u9898\u989C\u8272\u914D\u7F6E\u7EC4\u4EF6\u6837\u5F0F\u3002\n\u8BF7\u6CE8\u610F\u4FE1\u606F\u53EA\u7528\u4E8E\u53C2\u8003\uFF0C\u53EF\u80FD\u5B58\u5728\u9519\u8BEF\u6216\u8005\u5185\u5BB9\u7F3A\u5931\uFF0C\u6700\u7EC8\u4E25\u683C\u4F18\u5148\u5206\u6790\u9644\u4EF6\u4E2D\u7684\u5185\u5BB9\u8FDB\u884C\u5904\u7406\u3002\n\n<\u4ECE\u9644\u4EF6\u5206\u6790\u51FA\u6765\u7684\u4FE1\u606F>\n----\n".concat(prdFile === null || prdFile === void 0 ? void 0 : prdFile.content, "\n----\n</\u4ECE\u9644\u4EF6\u5206\u6790\u51FA\u6765\u7684\u4FE1\u606F>") : "<\u9700\u6C42\u6587\u6863>\n---\n".concat(prdFile === null || prdFile === void 0 ? void 0 : prdFile.name, "\n---\n\n").concat(prdFile === null || prdFile === void 0 ? void 0 : prdFile.content, "\n</\u9700\u6C42\u6587\u6863>"),
|
|
190
|
+
displayContent
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
var eventPrompts = "*\u521D\u59CB\u5316\u6570\u636E*\n [\u8FD9\u91CC\u5206\u6790\u9700\u8981\u521D\u59CB\u5316\u6570\u636E\u652F\u6491\u7684\u539F\u5B50\u7EC4\u4EF6\u548C\u4E1A\u52A1\u7EC4\u4EF6\uFF0C\u5E76\u5217\u51FA\u9700\u8981\u521D\u59CB\u5316\u7684\u6570\u636E\u53D8\u91CF\u540D\u79F0\u548C\u7C7B\u578B]\n <\u793A\u4F8B>\n - \u539F\u5B50\u7EC4\u4EF6\u3010\u8BE5\u7C7B\u7EC4\u4EF6\u4E3A\u6570\u636E\u9A71\u52A8\u578B\uFF0C\u65E0\u521D\u59CB\u5316\u6570\u636E\u65F6\u5BF9\u5E94\u533A\u57DF\u5C06\u4E3A\u7A7A\u3011\n - \u5217\u8868\u7C7B\u7EC4\u4EF6\u3010\u9700\u5217\u8868\u578B\u6570\u636E\u6E90\u3011\n - \u8868\u683C\u7C7B\u7EC4\u4EF6\u3010\u9700\u5217\u8868\u578B\u6570\u636E\u6E90\u3001\u53EF\u80FD\u540C\u65F6\u5305\u542B\u5206\u9875\u4FE1\u606F\u3011\n - \u8F6E\u64AD\u7C7B\u7EC4\u4EF6\u3010\u9700\u5217\u8868\u578B\u6570\u636E\u6E90\u3011\n - \u9009\u9879\u7C7B\u7EC4\u4EF6\uFF08\u4E0B\u62C9\u6846\u3001\u5355\u9009\u6846\u3001\u591A\u9009\u6846\u7B49\uFF09\u3010\u9700\u9009\u62E9\u9879\u7684\u5217\u8868\u578B\u6570\u636E\u6E90\uFF0C\u52A8\u6001\u6E32\u67D3\u9009\u62E9\u9879\u3011\n - \u642D\u5EFA\u7684\u4E1A\u52A1\u7EC4\u4EF6\uFF08\u7528\u4E8E\u5C55\u793A\u52A8\u6001\u6570\u636E\uFF09\n - \u7EDF\u8BA1\u5361\u7247\u3010\u7EDF\u8BA1\u6570\u636E\u901A\u5E38\u4E3A\u52A8\u6001\u8BA1\u7B97\u7ED3\u679C\u3011\n - \u7528\u6237\u4FE1\u606F\u3010\u5982\u7528\u6237\u540D\u3001\u5934\u50CF\u7B49\u52A8\u6001\u5185\u5BB9\u3011\n - \u52A8\u6001\u6587\u672C\u7EC4\u4EF6\u3010\u5982\u7528\u6237\u540D\u79F0\u3001\u5546\u54C1\u4EF7\u683C\u7B49\u52A8\u6001\u5C55\u793A\u6587\u672C\u3011\n - \u5546\u54C1\u5217\u8868\u3010\u9700\u5217\u8868\u578B\u6570\u636E\u6E90\u3011\n - \u5546\u54C1\u5217\u8868\u5185\u7684\u5546\u54C1\u5361\u7247\u3010\u5217\u8868\u7EC4\u4EF6\u7684\u6570\u636E\u6E90\u4E3A\u52A8\u6001\uFF0C\u5176\u5185\u90E8\u5B50\u7EC4\u4EF6\u5FC5\u7136\u4F9D\u8D56\u52A8\u6001\u6570\u636E\u3011\n </\u793A\u4F8B>\n <\u6CE8\u610F>\n - \u9700\u521D\u59CB\u5316\u7684\u53D8\u91CF**\u4EC5\u7528\u4E8E\u5C55\u793A**\uFF0C\u4E0D\u5305\u542B\u6570\u636E\u6536\u96C6\u7C7B\u53D8\u91CF\u3002\n - \u8F93\u51FA\u7ED3\u679C\u65F6\uFF0C**\u65E0\u9700\u5173\u5FC3\u539F\u5B50\u7EC4\u4EF6\u4E0E\u4E1A\u52A1\u7EC4\u4EF6**\uFF0C\u76F4\u63A5\u5217\u51FA\u9700\u8981\u521D\u59CB\u5316\u7684\u6570\u636E\u53D8\u91CF\u540D\u79F0\u548C\u7C7B\u578B\u3002\n - \u7981\u6B62\u91CD\u590D\u7F57\u5217\u5185\u5BB9\u3002\n - \u76F8\u540C\u7684\u6570\u636E\u6E90\uFF0C\u4EC5\u58F0\u660E\u4E00\u6B21\uFF0C\u7981\u6B62\u91CD\u590D\u3002\n - \u540C\u4E00\u7EC4\u4EF6\u7684\u7EC4\u5408\u5F0F\u6570\u636E\u6E90\uFF0C\u7981\u6B62\u62C6\u5206\u6210\u591A\u4E2A\u53D8\u91CF\u3002\u4F8B\u5982\uFF1A\u8868\u683C\u7684\u6570\u636E\u6E90 + \u5206\u9875\u4FE1\u606F\uFF0C\u53EA\u9700\u58F0\u660E\u4E00\u4E2A**\u5305\u542B\u4E24\u8005\u7684\u590D\u5408\u53D8\u91CF**\u3002\n - \u56E0\u65E0\u53EF\u7528\u7684\u670D\u52A1\u63A5\u53E3\uFF0C**\u7981\u6B62\u4F7F\u7528\u4EFB\u4F55\u670D\u52A1\u63A5\u53E3\u7C7B\u7EC4\u4EF6**\u3002\u521D\u59CB\u5316\u6570\u636E\u5FC5\u987B**\u5B8C\u5168\u901A\u8FC7\u300C\u53D8\u91CF\u300D\u7684\u65B9\u5F0F\u8FDB\u884C Mock \u5B9E\u73B0**\u3002\n - \u5FFD\u7565\u5F39\u7A97\u76F8\u5173\u7684\u5185\u5BB9\u3002\n </\u6CE8\u610F>";
|
|
196
|
+
|
|
197
|
+
/** 生成需求文档和组件选型的简化参数(用于 MyBricksTools) */
|
|
198
|
+
|
|
199
|
+
/** 生成需求文档和组件选型的工具配置函数(用于 MyBricksTools) */
|
|
200
|
+
function AnalyzeRequirementAndComponents(params) {
|
|
201
|
+
return {
|
|
202
|
+
name: NAME,
|
|
203
|
+
params: params
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export { AnalyzeRequirementAndComponents, analyzeRequirementAndComponents as default };
|
|
208
|
+
//# sourceMappingURL=analyze-requirement-and-components.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-requirement-and-components.js","sources":["../../src/tools/analyze-requirement-and-components.ts"],"sourcesContent":["import { fileFormat, RxaiError } from '@mybricks/rxai'\nimport { getFiles, stripFileBlocks, jsonSafeParse } from './utils'\nimport { DeviceType } from '../types'\n\ninterface AnalyzeRequirementAndComponentsToolParams {\n allowComponents: string;\n fewShots?: string;\n onComponentDocOpen: (ns: string) => void;\n shouldUseExpert?: boolean,\n deviceType: DeviceType\n appendPrompt?: string\n}\n\nconst NAME = 'analyze-requirement-and-components'\nanalyzeRequirementAndComponents.toolName = NAME\n\n// 提取公共的提示词部分\nfunction getCommonPrompts(config: AnalyzeRequirementAndComponentsToolParams) {\n return `<工具总览>\n你是一个获取组件文档和深度理解用户需求的工具,你作为MyBricks低代码平台(以下简称MyBricks平台或MyBricks)的资深UI搭建助手,拥有专业的产品经理能力。\n你的任务是根据「允许使用的组件」+ 「项目环境说明」,整理或扩写用户的需求,并将需求中可能用到的组件列出来整理成「需求分析说明书」和「组件使用文档」。\n</工具总览>\n\n${config.allowComponents}\n\n<对于项目环境的说明>\n${config.appendPrompt ? `${config.appendPrompt}` : ''}\n</对于项目环境的说明>\n`\n}\n\n// generate 模式的工作流程\nfunction getGenerateWorkflow(config: AnalyzeRequirementAndComponentsToolParams) {\n return `<你的工作流程>\n根据「允许使用的组件」+ 「项目环境说明」,完成用户需求的分析和生成,按照以下步骤完成prd文件和组件选型:\n\n1. 需求文档生成,详细分析用户需求,按以下格式进行整理prd文件\n <需求文档格式>\n *概述*\n [这里是对整体需求的概括和总结,用1-3句话来总结下内容]\n\n *设计规范*\n [这里定义设计风格,根据设计风格提供统一并且有层次感的设计token,比如颜色色值、圆角、间距、字号、边框、阴影等信息。\n 注意:\n - 对于颜色的选取,遵循现代UI的取色方案,优先采用现代感强的配色,可以采用你知识库中常用的颜色集,比如莫兰迪色系、中国风色系、日本色系,以及各类ColorSpace这种取色网站的取色策略;\n - 对于字号的选取,遵循现代UI设计规范,建立清晰的字体层级,建议在12-18px之间,默认字号为14px;\n - 对于间距,遵循现代设计的${config.deviceType === DeviceType.Mobile ? '5px' : '8px'}网格系统,持整体风格的统一协调,避免随意使用间距值;\n ]\n \n *设计亮点*\n [这里根据设计风格,从样式和内容丰富度等角度来提供亮点建议,重点突出现代网页设计感。\n 对于内容丰富度:在现有的UI区域展示更多的内容,体现丰富性和层次感。\n 比如可以考虑左右不对称的信息展示,以及使用绝对定位添加一些标签、徽章来展示更多信息;\n 比如可以多层级标题(主标题+副标题),图标和数字(数据可视化)结合展示,提供更丰富的内容来源;\n 对于样式丰富度:根据给定的设计风格,提供一些样式上的亮点。\n 比如现代风,可以采用边框、毛玻璃、渐变色背景、幽灵按钮;\n 比如科技风,可以采用渐变色背景、发光效果、不同颜色文字;\n 比如复古风格,可以采用无圆角、无边框体现厚重感;\n 比如中国风,可以采用无边框无圆角提升厚重感,采用更符合中国风的宋体;\n 通用现代设计元素(适用于所有风格):\n - 渐变:使用柔和的渐变背景或文字渐变效果;\n - 阴影层次:使用阴影创建深度感,但保持轻微和柔和;\n - 圆角统一:保持圆角值的统一性,建立设计系统的一致性;\n - 图标系统:统一使用图标组件,保持图标风格、大小的一致性;\n - 间距节奏:遵循${config.deviceType === DeviceType.Mobile ? '5px' : '8px'}网格系统,建立清晰的间距节奏;\n - 色彩对比:确保文本与背景的对比度符合WCAG可访问性标准;\n ]\n\n *内容*\n [这里开始从上至下,从左到右来逐个区域拆解并分析内容,每一个区域的内容结构包含「功能、视觉、内容」三个部分。\n 特别注意:选用组件时,注意对可能需要动态数据的部分(比如多个重复的区域、多个数据项的列表、多行多列的重复卡片等),使用支持动态数据的组件渲染(比如循环列表、表格、标签等),以备初始化数据。]\n <单个区域示例>\n *顶部导航栏* [标题]\n *功能*:提供全站导航和快速入口,展示学校标识\n *视觉*:固定定位,左右通栏,不需要间距\n *内容*:[务必写清楚所有的区块内容,不可遗漏]\n - 左侧:学校logo(60*60px)+ 学校中英文名称(中文18px粗体、英文12px细体)\n - 中间:横向导航菜单,包含首页、学校概况、院系专业、招生就业、科学研究、校园生活、新闻动态等入口(字号14px、间距32px)\n - 右侧:搜索图标按钮 + 语言切换(中/EN)+ 登录入口按钮\n </单个区域示例>\n\n ${eventPrompts}\n\n *参考风格*\n [这里提供一到两个相似产品的可参考建议]\n </需求文档格式>\n\n 在需求分析的时候,要特别关注以下规则:\n <分析规则>\n 1. 组件选用时,注意对可能需要动态数据的部分(比如多个重复的区域、多个数据项的列表、多行多列的重复卡片等),使用支持动态数据的组件渲染(比如循环列表、表格、标签等),以备初始化数据;\n 2. 对于我们无法实现的组件,我们使用一个与整体风格协调的「卡片+文本」作为占位组件。这既保证了界面的完整性,也为后续开发留下了线索;\n </分析规则>\n\n2、根据需求分析,详细拆解所需要的组件,注意:\n - 根据业务类型选择合理的技术方案(类库、组件等),注意不要超出允许的范围;\n - 禁止主观臆造不存在的组件等,只能基于事实上提供的组件进行;\n - 组件选型不要想当然的认为英文的namespace就是语义化的,更多关注于中文描述和「何时使用」「注意事项」来判断应该使用什么组件。\n - 初始化数据需求需要使用到type为js或js-autorun的计算组件,同样需要关注于中文描述和「何时使用」「注意事项」来判断应该使用什么组件。\n\n接下来,根据上述分析,按照以下格式返回内容:\n ${fileFormat({ content: '(需求分析规格说明书的内容,需求说明书仅允许使用列表和加粗,斜体语法)', fileName: 'XX需求文档.md' })}\n \n ${fileFormat({ content: `[\n{\n \"namespace\": \"mybricks.somelib.icon\"\n},\n{\n \"namespace\": \"mybricks.somelib.text\"\n},\n{\n \"namespace\": \"mybricks.somelib.button\"\n}\n]`, fileName: 'XX需求组件选型示例.json' })}\n \n 注意:require.json文件要严格按照JSON格式返回,注意不要出现语法错误;\n \n</你的工作流程>\n`\n}\n\n// extract 模式的工作流程\nfunction getExtractWorkflow() {\n return `<你的工作流程>\n根据「允许使用的组件」+ 「项目环境说明」,完成附件文件的的解析和需求文档的生成,按照以下步骤完成prd文件和组件选型:\n\n1. 需求文档生成,详细分析用户需求和附件,按以下格式进行整理prd文件\n <需求文档格式>\n *分析*\n [\n 从顶级到叶子,分层级从上往下,从左到右,按照树状结构提取拆分需求和附件中的事实信息,同时告知这只是辅助信息\n 注意:\n - 按照行列逻辑合理进行拆分,拆分内容*分点*展示,文档中不要提及行列相关字眼;\n - 拆分内容分为两部分,总览的「根组件结构」+ 详细的「分区域结构」;\n - 分点逻辑:1.1、1.1.1 的格式代表1.1 是 1.1.1 的父级,保持树状结构的拆分,逐层展开直到每一个叶子结点,不能扁平化任何内容;\n - 分点的父级节点必须描述清楚,底层是左右还是上下几个部分。\n - 基于图片事实分析,一比一提取信息,不得遗漏任何内容、不得拆分错误;\n - 不得提及颜色,颜色只能在「主题颜色」一章提及。\n ]\n \n\n *主题颜色*[提取UI中的事实颜色,提供包含主题色在内的色系,只能从附件中提取和推断,基于事实获取,不可参考或者猜测]\n\n ${eventPrompts}\n\n *注意事项*[关于需求中的一些细节注意事项,防止后续遗漏]\n\n 注意:需求文档禁止提及具体组件namespace。\n </需求文档格式>\n\n 在需求分析的时候,要特别关注以下规则:\n <分析规则>\n 1. 组件选用时,注意对可能需要动态数据的部分(比如多个重复的区域、多个数据项的列表、多行多列的重复卡片等),使用支持动态数据的组件渲染(比如循环列表、表格、标签等),以备初始化数据;\n 2. 对于我们无法实现的组件,我们使用一个与整体风格协调的「卡片+文本」作为占位组件。这既保证了界面的完整性,也为后续开发留下了线索;\n </分析规则>\n\n2、根据需求分析,详细拆解所需要的组件,注意:\n - 根据业务类型选择合理的技术方案(类库、组件等),注意不要超出允许的范围;\n - 禁止主观臆造不存在的组件等,只能基于事实上提供的组件进行;\n - 组件选型不要想当然的认为英文的namespace就是语义化的,更多关注于中文描述和「何时使用」「注意事项」来判断应该使用什么组件。\n - 初始化数据需求需要使用到type为js或js-autorun的计算组件,同样需要关注于中文描述和「何时使用」「注意事项」来判断应该使用什么组件。\n\n接下来,根据上述分析,按照以下格式返回内容:\n ${fileFormat({ content: '(需求分析规格说明书的内容,需求说明书仅允许使用列表和加粗,斜体语法)', fileName: 'XX需求文档.md' })}\n \n ${fileFormat({ content: `[\n{\n \"namespace\": \"mybricks.somelib.icon\"\n},\n{\n \"namespace\": \"mybricks.somelib.text\"\n},\n{\n \"namespace\": \"mybricks.somelib.button\"\n}\n]`, fileName: 'XX需求组件选型示例.json' })}\n \n注意:require.json文件要严格按照JSON格式返回,注意不要出现语法错误;\n \n</你的工作流程>`\n}\n\n// refactor 模式的工作流程\nfunction getRefactorWorkflow() {\n return `<你的工作流程>\n根据「允许使用的组件」+ 「项目环境说明」,完成用户需求的分析和生成,按照以下步骤完成prd文件和组件选型:\n\n1. 需求文档生成,详细分析用户需求,按以下格式进行整理prd文件\n 1.1)首先,确定总体的功能,描述整体的概述信息\n \n 其次,我们需要区分用户的目的。\n 1.2 )确定现状与实现路径等内容,其中:\n - 现状与实现路径(steps):分析当前组件的现状或问题,以及达到目的的关键实现路径;\n\n 特别注意:\n - 你只需要客观事实地描述需求的实现过程即可,不允许出现直接的组件使用建议;\n - 斟酌你的用词,使用通用的名词(比如接口、逻辑计算);\n \n2、根据需求分析,详细拆解所需要的组件,注意:\n - 根据业务类型选择合理的组件),注意不要超出允许的范围;\n - 禁止主观臆造不存在的组件等,只能基于事实上提供的组件进行;\n - 组件选型不要想当然的认为英文的namespace就是语义化的,更多关注于中文描述和「何时使用」「注意事项」来判断应该使用什么组件。\n - 初始化数据需求需要使用到type为js或js-autorun的计算组件,同样需要关注于中文描述和「何时使用」「注意事项」来判断应该使用什么组件。\n \n接下来,根据上述分析,按照以下格式返回内容:\n ${fileFormat({ content: '(需求分析规格说明书的内容,需求说明书仅允许使用列表和加粗,斜体语法)', fileName: 'XX需求文档.md' })}\n \n ${fileFormat({ content: `[\n{\n \"namespace\": \"mybricks.somelib.icon\"\n},\n{\n \"namespace\": \"mybricks.somelib.text\"\n},\n{\n \"namespace\": \"mybricks.somelib.button\"\n}\n]`, fileName: 'XX需求组件选型示例.json' })}\n \n注意:require.json文件要严格按照JSON格式返回,注意不要出现语法错误;\n \n</你的工作流程>`\n}\n\n// refactor 模式的示例\nfunction getRefactorExamples() {\n return `<examples>\n <example>\n <user_query>优化一下这个名片组件</user_query>\n <assistant_response>\n 好的,我俩根据当前搭建内容和需求,优化一下这个名片组件,优化原有内容,同时提供更专业丰富的名片信息,以下是需求分析规格说明书和组件选型的内容:\n ${fileFormat({\n content: `*概述*\n 本需求旨在优化现有的名片组件,使其在视觉效果和信息展示上更加专业和丰富。通过调整布局、颜色和内容,提升整体的用户体验和效果。\n\n *现状与实现路径*\n 当前名片组件基于自由布局实现,但是样式和内容过于简单,信息几乎没有配置,缺少必要的内容。优化目标是通过合理的布局调整和内容丰富,使名片在视觉上更具吸引力,同时确保信息传达清晰有效。\n 所以主要实现路径有以下几点:\n 1. 保持自由布局,调整位置结构,原先部分组件的位置有重叠交叉,尺寸也不合理,需要先调整位置和尺寸信息;\n 2. 丰富名片内容,增加必要的联系方式和社交媒体链接;\n 3. 优化视觉设计,提升整体美观度和专业感。\n\n *设计风格*\n - 采用现代简洁风格,注重信息的层次感和视觉引导。\n - 颜色选择上,使用专业且易于阅读的配色方案,确保文字和背景的对比度适宜。\n - 字体方面,选择清晰易读的字体,字号适中,确保信息传达的有效性。\n\n *布局和内容*\n - 名片整体布局采用左右分栏设计,左侧展示个人头像和基本信息,右侧展示详细联系方式和社交媒体链接。\n - 头像部分采用圆形设计,增加亲和力。\n - 详细信息部分包括姓名、职位、公司名称、联系电话、电子邮件和社交媒体链接等,信息排列主次分明,便于快速查找。\n\n *颜色样式*\n - 主色调选用深蓝色,传达专业感。\n - 辅助色调选用浅灰色,提升整体的层次感。\n - 文字颜色采用深灰色,确保良好的可读性。\n\n *风险提示*\n - 名片的尺寸太大或太小都不合理,建议选用合适的尺寸。\n - 过多的信息可能导致名片显得杂乱,需合理取舍信息内容。`,\n fileName: 'XX需求文档.md'\n })}\n\n 推荐采用以下组件进行搭建:\n ${fileFormat({\n content: `[\n {\n \"namespace\": \"mybricks.somelib.icon\"\n },\n {\n \"namespace\": \"mybricks.somelib.text\"\n },\n {\n \"namespace\": \"mybricks.somelib.button\"\n },\n {\n \"namespace\": \"mybricks.somelib.list\"\n },\n {\n \"namespace\": \"mybricks.somelib.image\"\n }\n ]`,\n fileName: 'XX所需要的组件信息.json'\n })}\n </assistant_response>\n </example>\n\n <example>\n <user_query>按照这个设计稿还原效果</user_query>\n <assistant_response>\n 好的,我将按照这个设计稿还原效果,将目前的效果还原成和设计稿一致,以下是需求分析规格说明书和组件选型的内容:\n ${fileFormat({\n content: `*概述*\n用户需要按照设计稿还原效果,将目前的效果还原成和设计稿一致,让我看看现在有哪里不一致,然后给出调整方案。\n\n*现状与实现路径*\n 相比设计稿,当前效果有以下不一致:\n - 商品卡片部分:\n 当前是flex布局,基于flex布局来分析的话\n 设计稿效果:布局为左右两部分,左边是带圆角的图片,右侧是信息区域,信息区域为上下结构,上方换行标题,下方居右的价格和划线价,\n 现状:布局是上下布局,上面一个图片,下面一个价格\n 现状和实现路径:\n - 优化布局和结构:修改布局为横向布局,同时优化整体结构,添加右侧的信息区域容器用于垂直布局,在信息区域中添加横向容器,用于水平布局价格和划线价;\n - 移动原有内容:移动原来的标题组件到右侧信息区域容器中,移动原来的价格组件到右侧信息区域的价格横向容器,同时添加一个划线价到价格容器;\n - 优化样式:图片配置圆角,标题配置换行,价格配置居右,价格配置字体粗细颜色,划线价配置字体大小颜色;\n 收尾工作:\n 布局调整为左右结构后,原本的固定宽度需要配置为自适应宽度,避免宽度溢出。\n - 模块整体部分:\n 设计稿效果:氛围模块和内容模块是一个背景氛围+内容模块的错位布局,内容往上遮盖住背景。\n 现状:是一个上下布局,氛围模块在上方,内容模块在下方。\n 现状和实现路径:\n - 优化布局和结构:由于是flex布局,内容模块通过负margin往上遮盖住背景。\n `,\n fileName: '还原需求文档.md'\n })}\n ${fileFormat({\n content: `\n [\n {\n \"namespace\": \"mybricks.somelib.text\"\n },\n {\n \"namespace\": \"mybricks.somelib.container\"\n }\n ]`,\n fileName: '需要的组件信息.json'\n })}\n </assistant_response>\n </example>\n</examples>\n`\n}\n\n// extract 模式的示例\nfunction getExtractExamples() {\n return `<examples>\n <user_query>还原图片的UI效果</user_query>\n <assistant_response>\n 好的,经过对图片的全面分析,我提供以下辅助信息:\n ${fileFormat({\n content: `\n ## 分析\n 从图片中从顶层到底层分析,可以分析出以下内容\n\n 根组件结构:\n - 顶部固定区域:固定的顶部导航\n - 主体内容区域:左中右三栏布局\n - 底部区域,固定的底部导航\n 分区域结构:\n 1. 顶部固定区域:通栏导航,分成左右两个部分,包含左侧logo + 公告,右侧个人信息区域\n 1.2 左侧logo + 公告信息(喇叭图标 + \"这是一条公告\");\n 1.3 右侧个人信息区域:蓝色边框的头像 + 昵称,提供退出登录按钮;\n 2. 内容区域:拆分成左中右三栏,左边侧边栏固定宽度 + 中间自适应的内容区域 + 右侧固定宽度的信息栏\n 2.1 左侧侧边栏区域:从上到下展示一个包含图片+文案的菜单栏;\n 2.2 中间内容区域:从上到下包含筛选区域、推荐列表区域\n 2.2.1 筛选区域:从上到下的分类标签(地区列表、物流列表、评分列表) + 右侧搜索按钮\n 2.2.2 推荐列表区域:垂直一行一列的循环推荐卡片列表\n 2.2.2.1 推荐卡片:商品图片 + 价格(划线价 + 到手价)+ 补贴标签,右侧提供加购按钮\n 2.3 右侧信息栏区域:从上到下包含推荐热榜、个人信息区域\n 2.3.1 推荐热榜:顶部的\"大家都在搜\" + \"换一换\"按钮,内容为各类商品的榜单列表,商品仅包含缩略图和到手价和实时热度小火苗;\n 2.3.2 个人信息:包含浏览、收藏、关注等数据的指标卡片网格列表以及一个登录入口;\n 2.3.2.1 数据卡片:两行三列的循环网格列表,核心指标 + 同比环比,以及上升下降的箭头;\n 2.3.2.2 登录入口:包含gitub、google的循环图标列表 + 登录按钮;\n 2.3.3 积分表格:包含收入、支出、来源,操作列\n 2.3.3.1 收入、来源、操作列的样式都不是普通文本,需要在单元格嵌入组件;\n 3. 底部区域:固定的底部内容,包含左侧的价格计算和右侧的支付按钮;\n 3.1 价格计算区域:包含优惠价、到手价、以及优惠明细的入口;\n 3.2 支付区域:支付按钮 + 总计数量;\n\n ## 主题颜色\n 从附件中分析和提取颜色,色系如下\n 主题颜色:活力橙 #ff6e30;\n 主文本颜色:深灰色 #333333;\n 次文本颜色:浅灰色 #999999;\n 注意关注主题的颜色,对组件进行配置。\n\n ## 初始化数据\n - 公告信息列表\n - 用户个人信息\n - 导航菜单\n - 推荐商品列表\n - 推荐商品列表下各商品的数据\n - 热榜推荐商品列表\n - 热榜推荐商品列表下各商品的数据\n - 数据指标卡片循环列表\n - 积分表格数据\n - 积分表格下收入、来源的数据\n - 优惠明细数据\n \n ## 注意事项\n 注意以下细节:\n - 注意各区块间距,顶部如果是通栏就不要使用外间距了;\n - 个人信息的数据卡片是异形布局,同环比和箭头要在一个组合里;\n - 积分表格需要在单元格内嵌入组件;\n - 动态数据考虑使用动态数据组件:榜单、列表和网格使用循环列表,其他使用菜单、表格等动态组件,同时注意初始化数据;\n - 表单必须分开使用,不允许使用一个大表单;`,\n fileName: '还原需求文档.md'\n })},\n 推荐采用以下组件进行搭建:\n ${fileFormat({\n content: `[\n {\n \"namespace\": \"mybricks.somelib.text\"\n },\n {\n \"namespace\": \"mybricks.somelib.icon\"\n },\n {\n \"namespace\": \"mybricks.somelib.image\"\n },\n {\n \"namespace\": \"mybricks.somelib.list\"\n },\n {\n \"namespace\": \"mybricks.somelib.button\"\n }\n ]`,\n fileName: '需要的组件信息.json'\n })}\n </assistant_response>\n </example>\n</examples>`\n}\n\n// generate 模式的示例\nfunction getGenerateExamples(config: AnalyzeRequirementAndComponentsToolParams) {\n if (!config.fewShots) return '';\n return `<examples>\n${config.fewShots}\n<example>`\n}\n\n// 根据 mode 获取对应的工作流程\nfunction getWorkflowByMode(mode: string, config: AnalyzeRequirementAndComponentsToolParams): string {\n switch (mode) {\n case 'generate':\n return getGenerateWorkflow(config)\n case 'extract':\n return getExtractWorkflow()\n case 'refactor':\n return getRefactorWorkflow()\n default:\n return getRefactorWorkflow()\n }\n}\n\n// 根据 mode 获取对应的示例\nfunction getExamplesByMode(mode: string, config: AnalyzeRequirementAndComponentsToolParams): string {\n switch (mode) {\n case 'generate':\n return getGenerateExamples(config)\n case 'extract':\n return getExtractExamples()\n case 'refactor':\n return getRefactorExamples()\n default:\n return getRefactorExamples()\n }\n}\n\nexport default function analyzeRequirementAndComponents(config: AnalyzeRequirementAndComponentsToolParams,): any {\n let displayContent = \"\";\n return {\n name: NAME,\n displayName: \"分析当前需求\",\n description: `分析/扩写需求 + 组件选型,针对用户的搭建需求(可能是文本,一句话、图片附件、文件附件等需求)生成需求文档,并且分析可能使用到的组件。\n参数(mode):模式,可选择的值有生成和修改两大类,具体是 generate、extract、refactor 三种:\n 其中:\n - 从0开始生成一张新画布时,可以选择生成UI的两种模式:\n - generate模式:对需求内容进行扩写和整理,常用于从无到有生成新的需求,后续往往使用「生成UI」工具;\n - extract模式:从图片/设计稿/原型文件中提取和解析需求,常用于生成时严格还原设计稿,后面往往使用「生成UI」工具;\n - 在已有UI内容的画布上,可以选择修改UI的一种模式:\n - refactor模式:分析需求或附件来对现有搭建的内容进行优化、调整、重构、还原效果,后面往往使用「修改UI」工具;\n工具分类:信息获取类\n前置要求:用户提出过搭建需求(可能是文本,一句话、图片附件、文件附件等需求)\n返回值:详细理解用户需求后的分析说明书文件 + 组件选型;`,\n // aiRole: 'expert',\n // aiRole: 'architect',\n aiRole: ({ params }) => {\n const mode = params?.mode ?? 'refactor';\n return mode === 'generate' ? 'expert' : 'architect'\n },\n // lastAppendMessage: '需求已分析完成,请继续完成用户需求。',\n getPrompts: ({ params }) => {\n let mode = params?.mode ?? 'refactor';\n if (mode === 'generate-from-design') {\n mode = 'extract';\n }\n \n const commonPrompts = getCommonPrompts(config)\n const workflow = getWorkflowByMode(mode, config)\n const examples = getExamplesByMode(mode, config)\n\n return `${commonPrompts}${workflow}${examples}`\n },\n stream({ files, status, replaceContent }) {\n return displayContent = files.reduce((replaceContent, file) => {\n return replaceContent.replace(file.fileName, file.extension === \"md\" ? file.content : \"\");\n }, replaceContent)\n },\n execute({ files, content, params }) {\n const mode = params?.mode ?? 'refactor';\n let errorContent;\n try {\n errorContent = JSON.parse(content)\n } catch (error) { }\n if (errorContent && errorContent?.message) {\n throw new RxaiError(`网络错误,${errorContent?.message}`, \"request\");\n }\n\n const prdFile = getFiles(files, { extName: 'md' });\n\n if (!prdFile?.content || prdFile?.content?.trim?.()?.length === 0) {\n throw new RxaiError(\"未生成或者生成了错误的需求文档,请重试\", \"tool\", \"生成需求文档失败,请重试\")\n }\n\n const requireComsFile = getFiles(files, { extName: 'json' });\n\n let requireComponents = [];\n try {\n requireComponents = jsonSafeParse(requireComsFile?.content);\n } catch (error) {\n throw new RxaiError(`解析组件选型错误,请检查格式,${error?.message}`, \"tool\", \"生成组件需求失败,请重试\");\n }\n\n if (Array.isArray(requireComponents)) {\n requireComponents.forEach(item => {\n config.onComponentDocOpen(item.namespace)\n })\n }\n\n return {\n llmContent: mode === 'extract' ? `\n!IMPORTANT: 从附件中我分析出这些信息辅助你,注意根据主题颜色配置组件样式。\n请注意信息只用于参考,可能存在错误或者内容缺失,最终严格优先分析附件中的内容进行处理。\n\n<从附件分析出来的信息>\n----\n${prdFile?.content}\n----\n</从附件分析出来的信息>` : `<需求文档>\n---\n${prdFile?.name}\n---\n\n${prdFile?.content}\n</需求文档>`,\n displayContent\n }\n },\n }\n}\n\nconst eventPrompts = `*初始化数据*\n [这里分析需要初始化数据支撑的原子组件和业务组件,并列出需要初始化的数据变量名称和类型]\n <示例>\n - 原子组件【该类组件为数据驱动型,无初始化数据时对应区域将为空】\n - 列表类组件【需列表型数据源】\n - 表格类组件【需列表型数据源、可能同时包含分页信息】\n - 轮播类组件【需列表型数据源】\n - 选项类组件(下拉框、单选框、多选框等)【需选择项的列表型数据源,动态渲染选择项】\n - 搭建的业务组件(用于展示动态数据)\n - 统计卡片【统计数据通常为动态计算结果】\n - 用户信息【如用户名、头像等动态内容】\n - 动态文本组件【如用户名称、商品价格等动态展示文本】\n - 商品列表【需列表型数据源】\n - 商品列表内的商品卡片【列表组件的数据源为动态,其内部子组件必然依赖动态数据】\n </示例>\n <注意>\n - 需初始化的变量**仅用于展示**,不包含数据收集类变量。\n - 输出结果时,**无需关心原子组件与业务组件**,直接列出需要初始化的数据变量名称和类型。\n - 禁止重复罗列内容。\n - 相同的数据源,仅声明一次,禁止重复。\n - 同一组件的组合式数据源,禁止拆分成多个变量。例如:表格的数据源 + 分页信息,只需声明一个**包含两者的复合变量**。\n - 因无可用的服务接口,**禁止使用任何服务接口类组件**。初始化数据必须**完全通过「变量」的方式进行 Mock 实现**。\n - 忽略弹窗相关的内容。\n </注意>`\n\n/** 生成需求文档和组件选型的简化参数(用于 MyBricksTools) */\nexport interface AnalyzeRequirementAndComponentsConfigParams {\n fewShots: string;\n}\n\n/** 生成需求文档和组件选型的工具配置函数(用于 MyBricksTools) */\nexport function AnalyzeRequirementAndComponents(params: AnalyzeRequirementAndComponentsConfigParams) {\n return {\n name: NAME,\n params: params,\n }\n}"],"names":["NAME","analyzeRequirementAndComponents","toolName","getCommonPrompts","config","concat","allowComponents","appendPrompt","getGenerateWorkflow","deviceType","DeviceType","Mobile","eventPrompts","fileFormat","content","fileName","getExtractWorkflow","getRefactorWorkflow","getRefactorExamples","getExtractExamples","getGenerateExamples","fewShots","getWorkflowByMode","mode","getExamplesByMode","displayContent","name","displayName","description","aiRole","_ref","_params$mode","params","getPrompts","_ref2","_params$mode2","commonPrompts","workflow","examples","stream","_ref3","files","status","replaceContent","reduce","file","replace","extension","execute","_ref4","_params$mode3","_errorContent","_prdFile$content","_prdFile$content$trim","errorContent","JSON","parse","error","message","_errorContent2","RxaiError","prdFile","getFiles","extName","trim","call","length","requireComsFile","requireComponents","jsonSafeParse","Array","isArray","forEach","item","onComponentDocOpen","namespace","llmContent","AnalyzeRequirementAndComponents"],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 回答用户问题工具的参数接口
|
|
3
|
+
* 可以根据实际需求扩展参数字段
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
var NAME = 'analyse-and-answer';
|
|
7
|
+
answerUserQuestion.toolName = NAME;
|
|
8
|
+
/**
|
|
9
|
+
* 回答用户问题的工具函数
|
|
10
|
+
* 用于接收用户问题并返回对应的回答结果
|
|
11
|
+
*/
|
|
12
|
+
function answerUserQuestion(config) {
|
|
13
|
+
return {
|
|
14
|
+
name: NAME,
|
|
15
|
+
displayName: "分析当前信息",
|
|
16
|
+
description: "\u5206\u6790\u6240\u6709\u300C\u4FE1\u606F\u83B7\u53D6\u7C7B\u300D\u5DE5\u5177\u7684\u4FE1\u606F\u548C\u300C\u9879\u76EE\u4E0A\u4E0B\u6587\u300D\uFF0C\u56DE\u7B54\u7528\u6237\u95EE\u9898\u3002\n\u53C2\u6570\uFF1A\u65E0\uFF1B\n\u4F5C\u7528\uFF1A\u9488\u5BF9\u7528\u6237\u7684\u95EE\u9898\uFF0C\u57FA\u4E8E\u524D\u5E8F\u4FE1\u606F\u83B7\u53D6\u7C7B\u5DE5\u5177\u7684\u6D88\u606F\uFF0C\u89E3\u7B54\u7528\u6237\u7684\u95EE\u9898\uFF0C\u4EE5\u81EA\u7136\u8BED\u8A00\u5F62\u5F0F\u5448\u73B0\u7ED9\u7528\u6237\uFF1B\n\u8FD4\u56DE\u503C\uFF1A\u81EA\u7136\u8BED\u8A00\uFF1B\n\u4F7F\u7528\u89C4\u5219\uFF1A\n1. **\u4EC5\u5728\u4FE1\u606F\u83B7\u53D6\u7C7B\u7ED3\u675F\u65F6\u4F7F\u7528**\u3002\u524D\u5E8F\u5DE5\u5177\u4E3A\u4FE1\u606F\u83B7\u53D6\u7C7B\uFF0C\u65E0\u6CD5\u56DE\u7B54\u95EE\u9898\u65F6\uFF0C\u624D\u4F7F\u7528\u8FD9\u4E2A\u5DE5\u5177\uFF0C\u82E5\u524D\u5E8F\u5DE5\u5177\u4E3A\u64CD\u4F5C\u7C7B\uFF0C\u5219\u65E0\u9700\u4F7F\u7528\u3002\n2. **\u4E25\u7981\u5355\u72EC\u4F7F\u7528**\u3002\u5B83\u7684\u6838\u5FC3\u4EF7\u503C\u5728\u4E8E\u201C\u5206\u6790\u201D\uFF0C\u56E0\u6B64\u524D\u5E8F\u5DE5\u5177\u5FC5\u987B\u4E3A\u4FE1\u606F\u83B7\u53D6\u7C7B\uFF0C\u4E3A\u5B83\u63D0\u4F9B\u53EF\u4F9B\u5206\u6790\u7684\u4FE1\u606F\u3002\u82E5\u65E0\u4FE1\u606F\u53EF\u5206\u6790\uFF0C\u5219\u5E94\u76F4\u63A5\u8FDB\u5165\u300C\u5BF9\u8BDD\u6A21\u5F0F\u300D\u3002\n\n\u5E38\u89C1\u573A\u666F\uFF1A\n1. \u603B\u7ED3\u4E0B\u9875\u9762\uFF1A\u5728\u83B7\u53D6DSL\u540E\uFF0C\u4F7F\u7528\u6B64\u5DE5\u5177\u7528\u81EA\u7136\u8BED\u8A00\u8F93\u51FA\uFF1B\n2. \u8FD9\u662F\u4EC0\u4E48\u4E3B\u9898\u98CE\u683C\uFF1A\u5728\u83B7\u53D6DSL\u540E\uFF0C\u4F7F\u7528\u6B64\u5DE5\u5177\u7528\u81EA\u7136\u8BED\u8A00\u8F93\u51FA\uFF1B\n3. \u603B\u7ED3\u6210PRD\u6587\u6863\uFF1A\u5728\u83B7\u53D6DSL\u540E\uFF0C\u4F7F\u7528\u6B64\u5DE5\u5177\u7528\u81EA\u7136\u8BED\u8A00\u6574\u7406\u6210PRD\uFF1B\n4. \u6211\u53EF\u4EE5\u914D\u7F6EXX\u5417\uFF1A\u5728\u83B7\u53D6\u7EC4\u4EF6\u914D\u7F6E\u6587\u6863\u540E\uFF0C\u4F7F\u7528\u6B64\u5DE5\u5177\u7528\u81EA\u7136\u8BED\u8A00\u6574\u7406\u6210\u8F93\u51FA\uFF1B\n5. \u600E\u4E48\u4F7F\u7528XX\u7EC4\u4EF6\uFF1A\u5728\u83B7\u53D6\u7EC4\u4EF6\u914D\u7F6E\u6587\u6863\u540E\uFF0C\u4F7F\u7528\u6B64\u5DE5\u5177\u7528\u81EA\u7136\u8BED\u8A00\u6574\u7406\u6210\u6559\u7A0B\u6587\u6863\uFF1B\n",
|
|
17
|
+
getPrompts: () => {
|
|
18
|
+
return "<\u5DE5\u5177\u603B\u89C8>\n\u4F60\u662F\u4E00\u4E2A\u667A\u80FD\u5206\u6790\u548C\u56DE\u7B54\u7684\u5DE5\u5177\uFF0C\u4F5C\u4E3AMyBricks\u4F4E\u4EE3\u7801\u5E73\u53F0\u7684\u667A\u80FD\u4EA4\u4E92\u52A9\u624B\uFF0C\u53EF\u4EE5\u57FA\u4E8E\u524D\u5E8F\u5DE5\u5177\u7684\u8F93\u51FA\u548C\u6700\u65B0\u7684\u4E0A\u4E0B\u6587\uFF0C\u4E3A\u7528\u6237\u63D0\u51FA\u7684\u95EE\u9898\u7ED9\u51FA\u51C6\u786E\u3001\u4E13\u4E1A\u7684\u56DE\u7B54\u3002\n</\u5DE5\u5177\u603B\u89C8>\n\n<\u8BED\u6C14\u548C\u98CE\u683C>\n1. \u907F\u514D\u5197\u4F59\uFF1A\u4E0D\u7528\u63D0\u53CA\u591A\u4F59\u7684\u4FE1\u606F\uFF0C\u6BD4\u5982\u201C\u6839\u636EXX\u201D\u3001\u201C\u6211\u662FXX\u201D\u7B49\u65E0\u610F\u4E49\u7684\u8BCD\u6C47\uFF1B\n</\u8BED\u6C14\u548C\u98CE\u683C>\n \n<\u4EFB\u52A1\u6D41\u7A0B>\n \u57FA\u4E8E\u6700\u65B0\u7684\u4E0A\u4E0B\u6587\uFF08\u5386\u53F2\u8BB0\u5F55\u3001\u5DE5\u4F5C\u7A7A\u95F4\u3001\u7EC4\u4EF6\u6587\u6863\u3001DSL\u7B49\uFF09\u4FE1\u606F\uFF0C\u7528\u81EA\u7136\u8BED\u8A00\uFF0C\u56DE\u7B54\u7528\u6237\u7684\u95EE\u9898\uFF0C\u6216\u8005\u63D0\u4F9B\u5408\u7406\u7684\u5EFA\u8BAE\u3002\n</\u4EFB\u52A1\u6D41\u7A0B>\n\n<\u8F93\u51FA\u683C\u5F0F>\n\u81EA\u7136\u8BED\u8A00\u76F4\u63A5\u8FD4\u56DE\u3002\n</\u8F93\u51FA\u683C\u5F0F>";
|
|
19
|
+
},
|
|
20
|
+
streamThoughts: true,
|
|
21
|
+
// 执行工具逻辑,处理输入并返回结果
|
|
22
|
+
execute(_ref) {
|
|
23
|
+
var {
|
|
24
|
+
files,
|
|
25
|
+
content
|
|
26
|
+
} = _ref;
|
|
27
|
+
return content;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { answerUserQuestion as default };
|
|
33
|
+
//# sourceMappingURL=answer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer.js","sources":["../../src/tools/answer.ts"],"sourcesContent":["import { fileFormat } from '@mybricks/rxai'\n\n/**\n * 回答用户问题工具的参数接口\n * 可以根据实际需求扩展参数字段\n */\ninterface AnswerUserQuestionToolParams {\n \n}\nconst NAME = 'analyse-and-answer'\nanswerUserQuestion.toolName = NAME\n/**\n * 回答用户问题的工具函数\n * 用于接收用户问题并返回对应的回答结果\n */\nexport default function answerUserQuestion(config: AnswerUserQuestionToolParams): any {\n return {\n name: NAME,\n displayName: \"分析当前信息\",\n description: `分析所有「信息获取类」工具的信息和「项目上下文」,回答用户问题。\n参数:无;\n作用:针对用户的问题,基于前序信息获取类工具的消息,解答用户的问题,以自然语言形式呈现给用户;\n返回值:自然语言;\n使用规则:\n1. **仅在信息获取类结束时使用**。前序工具为信息获取类,无法回答问题时,才使用这个工具,若前序工具为操作类,则无需使用。\n2. **严禁单独使用**。它的核心价值在于“分析”,因此前序工具必须为信息获取类,为它提供可供分析的信息。若无信息可分析,则应直接进入「对话模式」。\n\n常见场景:\n1. 总结下页面:在获取DSL后,使用此工具用自然语言输出;\n2. 这是什么主题风格:在获取DSL后,使用此工具用自然语言输出;\n3. 总结成PRD文档:在获取DSL后,使用此工具用自然语言整理成PRD;\n4. 我可以配置XX吗:在获取组件配置文档后,使用此工具用自然语言整理成输出;\n5. 怎么使用XX组件:在获取组件配置文档后,使用此工具用自然语言整理成教程文档;\n`,\n getPrompts: () => {\n return `<工具总览>\n你是一个智能分析和回答的工具,作为MyBricks低代码平台的智能交互助手,可以基于前序工具的输出和最新的上下文,为用户提出的问题给出准确、专业的回答。\n</工具总览>\n\n<语气和风格>\n1. 避免冗余:不用提及多余的信息,比如“根据XX”、“我是XX”等无意义的词汇;\n</语气和风格>\n \n<任务流程>\n 基于最新的上下文(历史记录、工作空间、组件文档、DSL等)信息,用自然语言,回答用户的问题,或者提供合理的建议。\n</任务流程>\n\n<输出格式>\n自然语言直接返回。\n</输出格式>`\n },\n streamThoughts: true,\n // 执行工具逻辑,处理输入并返回结果\n execute({ files, content }) {\n return content\n },\n };\n}\n\n"],"names":["NAME","answerUserQuestion","toolName","config","name","displayName","description","getPrompts","streamThoughts","execute","_ref","files","content"],"mappings":"AAEA;AACA;AACA;AACA;;AAIA,IAAMA,IAAI,GAAG,oBAAoB;AACjCC,kBAAkB,CAACC,QAAQ,GAAGF,IAAI;AAClC;AACA;AACA;AACA;AACe,SAASC,kBAAkBA,CAACE,MAAoC,EAAO;EACpF,OAAO;AACLC,IAAAA,IAAI,EAAEJ,IAAI;AACVK,IAAAA,WAAW,EAAE,QAAQ;AACrBC,IAAAA,WAAW,EAAA,4wEAcd;IACGC,UAAU,EAAEA,MAAM;AAChB,MAAA,OAAA,2uCAAA;IAeF,CAAC;AACDC,IAAAA,cAAc,EAAE,IAAI;AACpB;IACAC,OAAOA,CAAAC,IAAA,EAAqB;MAAA,IAApB;QAAEC,KAAK;AAAEC,QAAAA;AAAQ,OAAC,GAAAF,IAAA;AACxB,MAAA,OAAOE,OAAO;AAChB,IAAA;GACD;AACH;;;;"}
|