intention-coding 0.4.7 → 0.4.9

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/index.cjs CHANGED
@@ -3938,12 +3938,13 @@ var __webpack_exports__ = {};
3938
3938
  }).describe("\u8F6C\u6362\u9009\u9879")
3939
3939
  });
3940
3940
  const word2mdTool = {
3941
- name: "word\u6587\u6863\u5904\u7406\u667A\u80FD\u4F53",
3941
+ name: "read_word",
3942
3942
  description: "word\u6587\u6863\u5904\u7406\u667A\u80FD\u4F53 - \u5C06Word\u6587\u6863(.docx)\u8F6C\u6362\u4E3AMarkdown\u683C\u5F0F",
3943
3943
  inputSchema: {
3944
3944
  filePath: stringType().describe("\u9700\u8981\u89E3\u6790\u7684Word\u6587\u6863\u7684\u7EDD\u5BF9\u8DEF\u5F84")
3945
3945
  },
3946
3946
  handler: async (args)=>{
3947
+ initializeProjectRoot();
3947
3948
  const { filePath } = args;
3948
3949
  if (!filePath) throw new Error("\u6587\u4EF6\u8DEF\u5F84\u53C2\u6570\u7F3A\u5931\uFF0C\u8BF7\u63D0\u4F9B filePath \u53C2\u6570");
3949
3950
  try {
@@ -4054,7 +4055,7 @@ var __webpack_exports__ = {};
4054
4055
  }).describe("\u8F6C\u6362\u9009\u9879")
4055
4056
  });
4056
4057
  const pdf2mdTool = {
4057
- name: "pdf\u5904\u7406\u667A\u80FD\u4F53",
4058
+ name: "read_pdf",
4058
4059
  description: "pdf\u5904\u7406\u667A\u80FD\u4F53 - \u5C06PDF\u6587\u6863\u8F6C\u6362\u4E3AMarkdown\u683C\u5F0F\uFF0C\u652F\u6301\u6587\u672C\u63D0\u53D6\u548C\u683C\u5F0F\u4FDD\u7559",
4059
4060
  inputSchema: {
4060
4061
  file_path: stringType().describe("\u9700\u8981\u89E3\u6790\u7684PDF\u6587\u6863\u7684\u7EDD\u5BF9\u8DEF\u5F84"),
@@ -4072,6 +4073,7 @@ var __webpack_exports__ = {};
4072
4073
  const { file_path, options = {} } = args;
4073
4074
  const { preserve_formatting = true, extract_metadata = true } = options;
4074
4075
  try {
4076
+ initializeProjectRoot();
4075
4077
  const resolvedPath = await common_validateAndResolvePath(file_path);
4076
4078
  if (!file_path.toLowerCase().endsWith('.pdf')) throw new Error("\u6587\u4EF6\u5FC5\u987B\u662FPDF\u683C\u5F0F\uFF08.pdf\u6269\u5C55\u540D\uFF09");
4077
4079
  logger_logger.info("\u5F00\u59CB\u8BFB\u53D6PDF\u6587\u4EF6", {
@@ -4300,7 +4302,7 @@ var __webpack_exports__ = {};
4300
4302
  });
4301
4303
  const initProjectStandard = {
4302
4304
  name: "\u9879\u76EE\u5F00\u53D1\u89C4\u8303\u751F\u6210\u667A\u80FD\u4F53",
4303
- description: "\u5206\u6790\u9879\u76EE\u67B6\u6784\u5E76\u751F\u6210\u5F00\u53D1\u89C4\u8303",
4305
+ description: "\u9879\u76EE\u5F00\u53D1\u89C4\u8303\u751F\u6210\u667A\u80FD\u4F53-\u5206\u6790\u9879\u76EE\u67B6\u6784\u5E76\u751F\u6210\u5F00\u53D1\u89C4\u8303",
4304
4306
  inputSchema: {
4305
4307
  project_name: stringType().optional().describe("\u9879\u76EE\u540D\u79F0\uFF0C\u7528\u4E8E\u751F\u6210\u6587\u4EF6\u540D"),
4306
4308
  project_path: stringType().optional().describe("\u9879\u76EE\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u7528\u4E8E\u6307\u5B9A\u8981\u5206\u6790\u7684\u9879\u76EE\u76EE\u5F55"),
@@ -4723,7 +4725,7 @@ ${customRules}` : '';
4723
4725
  message: "\u5F53input_type\u4E3Atext\u65F6content\u5FC5\u586B\uFF0C\u5F53input_type\u4E3Amd_file\u65F6md_file_path\u5FC5\u586B"
4724
4726
  });
4725
4727
  const requirementAnalyzerTool = {
4726
- name: "\u9700\u6C42\u5206\u6790\u667A\u80FD\u4F53",
4728
+ name: "\u9700\u6C42\u62A5\u544A\u751F\u6210\u667A\u80FD\u4F53",
4727
4729
  description: "\u667A\u80FD\u5206\u6790\u9700\u6C42\u5E76\u751F\u6210\u7EDF\u4E00\u7684\u6280\u672F\u6587\u6863\uFF0C\u652F\u6301\u9879\u76EE\u60C5\u51B5\u611F\u77E5\u548C\u7CBE\u786E\u6A21\u677F\u5339\u914D",
4728
4730
  inputSchema: {
4729
4731
  input_type: enumType([
@@ -5005,7 +5007,7 @@ ${requirementSection}
5005
5007
  'webp'
5006
5008
  ];
5007
5009
  class ImageAnalyzer {
5008
- async analyzeImage(imagePath) {
5010
+ async analyzeImage(imagePath, context) {
5009
5011
  const startTime = Date.now();
5010
5012
  try {
5011
5013
  logger_logger.info("\u5F00\u59CB\u56FE\u7247\u5185\u5BB9\u5206\u6790", {
@@ -5013,7 +5015,7 @@ ${requirementSection}
5013
5015
  });
5014
5016
  await this.validateParams(imagePath);
5015
5017
  const basicInfo = await this.getImageBasicInfo(imagePath);
5016
- const analysisContent = await this.performAIAnalysis(imagePath, basicInfo);
5018
+ const analysisContent = await this.performAIAnalysis(imagePath, basicInfo, context);
5017
5019
  const processingTime = Date.now() - startTime;
5018
5020
  if (!analysisContent) throw new ImageAnalysisError("AI\u5206\u6790\u8FD4\u56DE\u7A7A\u7ED3\u679C", types_AnalysisErrorCodes.ANALYSIS_FAILED, {
5019
5021
  params: {
@@ -5044,10 +5046,10 @@ ${requirementSection}
5044
5046
  throw error;
5045
5047
  }
5046
5048
  }
5047
- async performAIAnalysis(imagePath, basicInfo) {
5049
+ async performAIAnalysis(imagePath, basicInfo, context) {
5048
5050
  try {
5049
5051
  const imageBase64 = await this.imageToBase64(imagePath);
5050
- const prompt = this.buildAnalysisPrompt(imagePath, basicInfo);
5052
+ const prompt = this.buildAnalysisPrompt(imagePath, basicInfo, context);
5051
5053
  const aiResponse = await openai_openAIService.analyzeImage({
5052
5054
  image_base64: imageBase64,
5053
5055
  prompt: prompt,
@@ -5067,39 +5069,38 @@ ${requirementSection}
5067
5069
  });
5068
5070
  }
5069
5071
  }
5070
- buildAnalysisPrompt(imagePath, basicInfo) {
5071
- const isLongImage = basicInfo.dimensions.height > 2 * basicInfo.dimensions.width;
5072
- const isUIDesign = this.detectUIDesign(imagePath, basicInfo);
5073
- const basePrompt = `\u{8BF7}\u{5BF9}\u{8FD9}\u{5F20}\u{56FE}\u{7247}\u{8FDB}\u{884C}\u{4E13}\u{4E1A}\u{7684}\u{5185}\u{5BB9}\u{5206}\u{6790}\u{3002}
5072
+ buildAnalysisPrompt(imagePath, basicInfo, context) {
5073
+ const basePrompt = `\u{8BF7}\u{5BF9}\u{8FD9}\u{5F20}\u{56FE}\u{7247}\u{8FDB}\u{884C}\u{4E25}\u{683C}\u{7684}\u{5185}\u{5BB9}\u{5206}\u{6790}\u{3002}
5074
5074
 
5075
5075
  \u{56FE}\u{7247}\u{4FE1}\u{606F}\u{FF1A}
5076
5076
  - \u{6587}\u{4EF6}\u{540D}\u{FF1A}${external_path_namespaceObject.basename(imagePath)}
5077
5077
  - \u{683C}\u{5F0F}\u{FF1A}${basicInfo.format.toUpperCase()}
5078
5078
  - \u{5C3A}\u{5BF8}\u{FF1A}${basicInfo.dimensions.width} \xd7 ${basicInfo.dimensions.height} \u{50CF}\u{7D20}
5079
- - \u{6587}\u{4EF6}\u{5927}\u{5C0F}\u{FF1A}${this.formatFileSize(basicInfo.file_size)}
5080
- - \u{56FE}\u{7247}\u{7C7B}\u{578B}\u{FF1A}${isLongImage ? "\u957F\u56FE" : "\u666E\u901A\u56FE\u7247"}${isUIDesign ? "\uFF0C\u7591\u4F3CUI\u8BBE\u8BA1\u7A3F" : ''}`;
5079
+ - \u{6587}\u{4EF6}\u{5927}\u{5C0F}\u{FF1A}${this.formatFileSize(basicInfo.file_size)}`;
5081
5080
  const analysisRequirements = `
5082
- \u{8BF7}\u{4ECE}\u{4EE5}\u{4E0B}\u{7EF4}\u{5EA6}\u{8FDB}\u{884C}\u{5206}\u{6790}\u{FF1A}
5083
-
5084
- 1. **\u{5185}\u{5BB9}\u{6982}\u{8FF0}**\u{FF1A}\u{7B80}\u{8981}\u{63CF}\u{8FF0}\u{56FE}\u{7247}\u{7684}\u{4E3B}\u{8981}\u{5185}\u{5BB9}\u{548C}\u{4E3B}\u{9898}
5085
- 2. **\u{89C6}\u{89C9}\u{5143}\u{7D20}**\u{FF1A}\u{8BC6}\u{522B}\u{56FE}\u{7247}\u{4E2D}\u{7684}\u{4E3B}\u{8981}\u{7269}\u{4F53}\u{3001}\u{4EBA}\u{7269}\u{3001}\u{573A}\u{666F}\u{7B49}
5086
- 3. **\u{6587}\u{5B57}\u{5185}\u{5BB9}**\u{FF1A}\u{5982}\u{679C}\u{6709}\u{6587}\u{5B57}\u{FF0C}\u{8BF7}\u{51C6}\u{786E}\u{8BC6}\u{522B}\u{5E76}\u{63D0}\u{53D6}
5087
- 4. **\u{8272}\u{5F69}\u{5206}\u{6790}**\u{FF1A}\u{63CF}\u{8FF0}\u{4E3B}\u{8981}\u{8272}\u{8C03}\u{3001}\u{914D}\u{8272}\u{65B9}\u{6848}
5088
- 5. **\u{6784}\u{56FE}\u{5206}\u{6790}**\u{FF1A}\u{5206}\u{6790}\u{5E03}\u{5C40}\u{3001}\u{6784}\u{56FE}\u{7279}\u{70B9}
5089
- 6. **\u{6280}\u{672F}\u{8D28}\u{91CF}**\u{FF1A}\u{8BC4}\u{4F30}\u{56FE}\u{7247}\u{7684}\u{6E05}\u{6670}\u{5EA6}\u{3001}\u{5149}\u{7167}\u{3001}\u{66DD}\u{5149}\u{7B49}
5090
- ${isUIDesign ? `7. **UI\u{8BBE}\u{8BA1}\u{5206}\u{6790}**\u{FF1A}\u{5206}\u{6790}\u{754C}\u{9762}\u{5E03}\u{5C40}\u{3001}\u{7EC4}\u{4EF6}\u{3001}\u{4EA4}\u{4E92}\u{5143}\u{7D20}\u{3001}\u{8BBE}\u{8BA1}\u{98CE}\u{683C}\u{7B49}` : ''}
5091
- ${isLongImage ? `8. **\u{957F}\u{56FE}\u{7279}\u{5F81}**\u{FF1A}\u{5206}\u{6790}\u{957F}\u{56FE}\u{7684}\u{5185}\u{5BB9}\u{7ED3}\u{6784}\u{3001}\u{4FE1}\u{606F}\u{5C42}\u{6B21}\u{7B49}` : ''}
5092
-
5093
- \u{8BF7}\u{63D0}\u{4F9B}\u{8BE6}\u{7EC6}\u{3001}\u{51C6}\u{786E}\u{3001}\u{4E13}\u{4E1A}\u{7684}\u{5206}\u{6790}\u{7ED3}\u{679C}\u{3002}`;
5081
+ ## \u{1F3AF} \u{6838}\u{5FC3}\u{5206}\u{6790}\u{6307}\u{4EE4}
5082
+ \u{4F60}\u{662F}\u{4E00}\u{4E2A}\u{4E13}\u{4E1A}\u{7684}\u{56FE}\u{7247}\u{5206}\u{6790}\u{4E13}\u{5BB6}\u{FF0C}\u{8BF7}\u{4E25}\u{683C}\u{6309}\u{7167}\u{4EE5}\u{4E0B}\u{539F}\u{5219}\u{8FDB}\u{884C}\u{5206}\u{6790}\u{FF1A}
5083
+
5084
+ 1. **\u{4E25}\u{683C}\u{9075}\u{5FAA}\u{4EFB}\u{52A1}\u{8981}\u{6C42}**\u{FF1A}\u{4EC5}\u{6839}\u{636E}\u{7528}\u{6237}\u{6307}\u{4EE4}\u{5206}\u{6790}\u{56FE}\u{7247}\u{5185}\u{5BB9}\u{FF0C}\u{4E0D}\u{504F}\u{79BB}\u{4EFB}\u{52A1}\u{8303}\u{56F4}
5085
+ 2. **\u{7CBE}\u{51C6}\u{805A}\u{7126}**\u{FF1A}\u{4EC5}\u{5728}\u{7528}\u{6237}\u{6307}\u{5B9A}\u{7684}\u{8303}\u{56F4}\u{5185}\u{89E3}\u{6790}\u{56FE}\u{7247}\u{5185}\u{5BB9}\u{FF0C}\u{4E0D}\u{6DFB}\u{52A0}\u{65E0}\u{5173}\u{4FE1}\u{606F}
5086
+ 3. **\u{5BA2}\u{89C2}\u{51C6}\u{786E}**\u{FF1A}\u{63D0}\u{4F9B}\u{6E05}\u{6670}\u{3001}\u{51C6}\u{786E}\u{7684}\u{5206}\u{6790}\u{7ED3}\u{679C}\u{FF0C}\u{4E0D}\u{8FDB}\u{884C}\u{4E3B}\u{89C2}\u{63A8}\u{6D4B}
5087
+ 4. **\u{7B80}\u{6D01}\u{660E}\u{4E86}**\u{FF1A}\u{8F93}\u{51FA}\u{5185}\u{5BB9}\u{8981}\u{5E72}\u{51C0}\u{3001}\u{7B80}\u{6D01}\u{3001}\u{4E13}\u{4E1A}\u{FF0C}\u{907F}\u{514D}\u{5197}\u{4F59}\u{4FE1}\u{606F}
5088
+
5089
+ \u{8BF7}\u{786E}\u{4FDD}\u{4F60}\u{7684}\u{5206}\u{6790}\u{7ED3}\u{679C}\u{5B8C}\u{5168}\u{7B26}\u{5408}\u{7528}\u{6237}\u{6307}\u{4EE4}\u{8981}\u{6C42}\u{FF0C}\u{4E0D}\u{6DFB}\u{52A0}\u{4EFB}\u{4F55}\u{989D}\u{5916}\u{7684}\u{5206}\u{7C7B}\u{6216}\u{5904}\u{7406}\u{3002}`;
5094
5090
  const outputFormat = `
5095
- \u{8F93}\u{51FA}\u{8981}\u{6C42}\u{FF1A}
5091
+ ## \u{1F4CB} \u{8F93}\u{51FA}\u{8981}\u{6C42}
5096
5092
  - \u{4F7F}\u{7528}\u{4E2D}\u{6587}\u{56DE}\u{7B54}
5097
- - \u{5185}\u{5BB9}\u{8981}\u{51C6}\u{786E}\u{3001}\u{5BA2}\u{89C2}\u{3001}\u{4E13}\u{4E1A}
5098
- - \u{91CD}\u{70B9}\u{7A81}\u{51FA}\u{56FE}\u{7247}\u{7684}\u{6838}\u{5FC3}\u{4FE1}\u{606F}
5099
- - \u{5982}\u{679C}\u{662F}UI\u{8BBE}\u{8BA1}\u{7A3F}\u{FF0C}\u{91CD}\u{70B9}\u{5206}\u{6790}\u{754C}\u{9762}\u{7ED3}\u{6784}\u{548C}\u{529F}\u{80FD}
5100
- - \u{5982}\u{679C}\u{5305}\u{542B}\u{6587}\u{5B57}\u{FF0C}\u{8BF7}\u{51C6}\u{786E}\u{63D0}\u{53D6}\u{6240}\u{6709}\u{53EF}\u{89C1}\u{6587}\u{5B57}
5101
- - \u{63D0}\u{4F9B}\u{6709}\u{4EF7}\u{503C}\u{7684}\u{6D1E}\u{5BDF}\u{548C}\u{5206}\u{6790}`;
5102
- return `${basePrompt}\n${analysisRequirements}\n${outputFormat}`.trim();
5093
+ - \u{5185}\u{5BB9}\u{51C6}\u{786E}\u{3001}\u{5BA2}\u{89C2}\u{3001}\u{4E13}\u{4E1A}
5094
+ - \u{4E25}\u{683C}\u{6839}\u{636E}\u{4E0A}\u{4E0B}\u{6587}\u{6307}\u{4EE4}\u{8FDB}\u{884C}\u{5206}\u{6790}
5095
+ - \u{53EA}\u{63D0}\u{4F9B}\u{76F4}\u{63A5}\u{7684}\u{5206}\u{6790}\u{7ED3}\u{679C}\u{FF0C}\u{4E0D}\u{8FDB}\u{884C}\u{5206}\u{7C7B}\u{5904}\u{7406}
5096
+ - \u{4FDD}\u{6301}\u{8F93}\u{51FA}\u{5185}\u{5BB9}\u{5E72}\u{51C0}\u{660E}\u{4E86}\u{FF0C}\u{907F}\u{514D}\u{65E0}\u{5173}\u{4FE1}\u{606F}`;
5097
+ const contextPrompt = context ? `
5098
+
5099
+ ## \u{1F4CB} \u{4E0A}\u{4E0B}\u{6587}\u{6307}\u{4EE4}
5100
+ ${context}
5101
+
5102
+ \u{8BF7}\u{4E25}\u{683C}\u{6839}\u{636E}\u{4EE5}\u{4E0A}\u{4E0A}\u{4E0B}\u{6587}\u{6307}\u{4EE4}\u{8FDB}\u{884C}\u{56FE}\u{7247}\u{5206}\u{6790}\u{FF0C}\u{4E0D}\u{8981}\u{504F}\u{79BB}\u{4EFB}\u{52A1}\u{8981}\u{6C42}\u{FF0C}\u{4E0D}\u{8981}\u{6DFB}\u{52A0}\u{4EFB}\u{4F55}\u{989D}\u{5916}\u{7684}\u{5185}\u{5BB9}\u{6216}\u{63A8}\u{6D4B}\u{3002}` : '';
5103
+ return `${basePrompt}\n${analysisRequirements}\n${outputFormat}${contextPrompt}`.trim();
5103
5104
  }
5104
5105
  detectUIDesign(imagePath, basicInfo) {
5105
5106
  const fileName = external_path_namespaceObject.basename(imagePath).toLowerCase();
@@ -5153,43 +5154,31 @@ ${isLongImage ? `8. **\u{957F}\u{56FE}\u{7279}\u{5F81}**\u{FF1A}\u{5206}\u{6790}
5153
5154
  responseLength: aiResponse.length,
5154
5155
  responsePreview: aiResponse.substring(0, 200) + (aiResponse.length > 200 ? '...' : '')
5155
5156
  });
5157
+ const cleanedResponse = this.cleanAIResponse(aiResponse);
5156
5158
  const content = {
5157
- summary: this.extractSummary(aiResponse),
5158
- details: this.extractDetails(aiResponse),
5159
- tags: this.extractTags(aiResponse)
5159
+ summary: cleanedResponse,
5160
+ details: {
5161
+ raw_response: aiResponse
5162
+ },
5163
+ tags: []
5160
5164
  };
5161
- content.objects = this.extractObjects(aiResponse);
5162
- content.text_content = this.extractTextContent(aiResponse);
5163
- content.scene_info = this.extractSceneInfo(aiResponse);
5164
- content.people_info = this.extractPeopleInfo(aiResponse);
5165
- content.technical_info = this.extractTechnicalInfo(aiResponse);
5166
- content.ui_design_info = this.extractUIDesignInfo(aiResponse);
5167
- content.requirement_info = this.extractRequirementInfo(aiResponse);
5168
5165
  logger_logger.debug("\u5185\u5BB9\u89E3\u6790\u7ED3\u679C", {
5169
- summaryLength: content.summary.length,
5170
- tagsCount: content.tags?.length || 0,
5171
- objectsCount: content.objects?.length || 0,
5172
- textContentCount: content.text_content?.length || 0,
5173
- hasSceneInfo: !!content.scene_info,
5174
- hasTechnicalInfo: !!content.technical_info,
5175
- hasUIDesignInfo: !!content.ui_design_info
5166
+ summaryLength: content.summary.length
5176
5167
  });
5177
5168
  return content;
5178
5169
  }
5179
- extractSummary(response) {
5180
- const summaryPatterns = [
5181
- /(?:内容概述|概述|主要内容|图片描述)[::]\s*(.*?)(?=\n\n|\n[0-9]|\n[一二三四五六七八九十]|\n[*-]|$)/s,
5182
- /^(.*?)(?=\n\n|\n[0-9]|\n[一二三四五六七八九十]|\n[*-])/s
5170
+ cleanAIResponse(response) {
5171
+ let cleaned = response.trim();
5172
+ const patternsToRemove = [
5173
+ /^(?:好的|明白了|根据您的要求|根据分析|根据图片内容)[,,::]\s*/i,
5174
+ /(?:以下是|下面是对|分析结果如下|内容如下)[::]\s*/i,
5175
+ /\n(?:总结|结论|综上所述)[::]\s*/i
5183
5176
  ];
5184
- for (const pattern of summaryPatterns){
5185
- const match = response.match(pattern);
5186
- if (match && match[1]) {
5187
- const summary = match[1].trim();
5188
- if (summary.length > 20) return summary;
5189
- }
5190
- }
5191
- const firstParagraph = response.split('\n\n')[0] || response.split('\n')[0] || response;
5192
- return firstParagraph.substring(0, 200).trim() + (firstParagraph.length > 200 ? '...' : '');
5177
+ patternsToRemove.forEach((pattern)=>{
5178
+ cleaned = cleaned.replace(pattern, '');
5179
+ });
5180
+ cleaned = cleaned.replace(/\n{3,}/g, '\n\n').trim();
5181
+ return cleaned;
5193
5182
  }
5194
5183
  extractDetails(response) {
5195
5184
  const details = {};
@@ -5557,13 +5546,17 @@ ${isLongImage ? `8. **\u{957F}\u{56FE}\u{7279}\u{5F81}**\u{FF1A}\u{5206}\u{6790}
5557
5546
  }
5558
5547
  }
5559
5548
  const ImageAnalysisParamsSchema = objectType({
5560
- image_path: stringType().min(1).describe("\u56FE\u7247\u6587\u4EF6\u8DEF\u5F84")
5549
+ image_path: stringType().min(1).describe("\u56FE\u7247\u6587\u4EF6\u8DEF\u5F84"),
5550
+ output_path: stringType().optional().describe("\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84\uFF0C\u4E0D\u6307\u5B9A\u5219\u8F93\u51FA\u5230\u3010\u5F53\u524D\u5DE5\u7A0B\u3011/.aico/image-recognition\u76EE\u5F55"),
5551
+ context: stringType().optional().describe("\u4E0A\u4E0B\u6587\u5185\u5BB9\uFF0C\u7528\u4E8E\u6307\u5BFC\u56FE\u7247\u5206\u6790\u7684\u65B9\u5411\u548C\u8303\u56F4")
5561
5552
  });
5562
5553
  const read_imageTool = {
5563
5554
  name: "read_image",
5564
- description: "\u4E13\u4E1A\u56FE\u7247\u5185\u5BB9\u5206\u6790\u5DE5\u5177\uFF0C\u652F\u6301\u901A\u7528\u5206\u6790\u3001\u7269\u4F53\u8BC6\u522B\u3001\u6587\u5B57\u8BC6\u522B\u3001\u573A\u666F\u5206\u6790\u3001\u4EBA\u7269\u5206\u6790\u3001\u6280\u672F\u5206\u6790\u3001UI\u8BBE\u8BA1\u7A3F\u5206\u6790\u3001\u9700\u6C42\u8BC6\u522B\u7B49\u591A\u79CD\u6A21\u5F0F\uFF0C\u7279\u522B\u64C5\u957FUI\u8BBE\u8BA1\u7A3F\u7684\u7ED3\u6784\u5206\u6790\u548C\u9875\u9762\u9700\u6C42\u63D0\u53D6\u3002\u5206\u6790\u7ED3\u679C\u5C06\u4FDD\u5B58\u5230image-recognition\u76EE\u5F55\u3002",
5555
+ description: "\u4E13\u4E1A\u56FE\u7247\u5185\u5BB9\u5206\u6790\u5DE5\u5177\uFF0C\u63D0\u4F9B\u4E25\u683C\u57FA\u4E8E\u4EFB\u52A1\u6307\u4EE4\u7684\u56FE\u7247\u5185\u5BB9\u5206\u6790\u3002\u5206\u6790\u903B\u8F91\u9075\u5FAA\uFF1A\u6839\u636E\u4EFB\u52A1\u8981\u6C42\u4E25\u683C\u5206\u6790\u56FE\u7247\u5185\u5BB9\u3001\u4EC5\u5728\u7528\u6237\u6307\u4EE4\u8303\u56F4\u5185\u89E3\u6790\u3001\u4E0D\u504F\u79BB\u4EFB\u52A1\u8981\u6C42\u3001\u63D0\u4F9B\u6E05\u6670\u51C6\u786E\u7684\u5206\u6790\u7ED3\u679C\u3002\u652F\u6301\u901A\u7528\u5206\u6790\u3001\u7269\u4F53\u8BC6\u522B\u3001\u6587\u5B57\u8BC6\u522B\u3001\u573A\u666F\u5206\u6790\u3001\u4EBA\u7269\u5206\u6790\u3001\u6280\u672F\u5206\u6790\u3001UI\u8BBE\u8BA1\u7A3F\u5206\u6790\u3001\u9700\u6C42\u8BC6\u522B\u7B49\u591A\u79CD\u6A21\u5F0F\uFF0C\u8F93\u51FA\u5185\u5BB9\u5E72\u51C0\u660E\u4E86\u3002\u5206\u6790\u7ED3\u679C\u5C06\u4FDD\u5B58\u5230\u5F53\u524D\u5DE5\u7A0B\u7684.aico/image-recognition\u76EE\u5F55\u3002",
5565
5556
  inputSchema: {
5566
- image_path: stringType().min(1).describe("\u56FE\u7247\u6587\u4EF6\u8DEF\u5F84")
5557
+ image_path: stringType().min(1).describe("\u56FE\u7247\u6587\u4EF6\u8DEF\u5F84"),
5558
+ output_path: stringType().optional().describe("\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84\uFF0C\u4E0D\u6307\u5B9A\u5219\u8F93\u51FA\u5230\u3010\u5F53\u524D\u5DE5\u7A0B\u3011/.aico/image-recognition\u76EE\u5F55"),
5559
+ context: stringType().optional().describe("\u4E0A\u4E0B\u6587\u5185\u5BB9\uFF0C\u7528\u4E8E\u6307\u5BFC\u56FE\u7247\u5206\u6790\u7684\u65B9\u5411\u548C\u8303\u56F4")
5567
5560
  },
5568
5561
  handler: async (args)=>{
5569
5562
  initializeProjectRoot();
@@ -5573,8 +5566,8 @@ ${isLongImage ? `8. **\u{957F}\u{56FE}\u{7279}\u{5F81}**\u{FF1A}\u{5206}\u{6790}
5573
5566
  imagePath: args.image_path
5574
5567
  });
5575
5568
  const validatedArgs = ImageAnalysisParamsSchema.parse(args);
5576
- const result = await analyzer.analyzeImage(validatedArgs.image_path);
5577
- const outputPath = await generateOutputFile(result, validatedArgs.image_path);
5569
+ const result = await analyzer.analyzeImage(validatedArgs.image_path, validatedArgs.context);
5570
+ const outputPath = await generateOutputFile(result, validatedArgs.image_path, validatedArgs.output_path);
5578
5571
  formatAnalysisResult(result, validatedArgs);
5579
5572
  logger_logger.info("\u56FE\u7247\u5185\u5BB9\u7406\u89E3\u667A\u80FD\u4F53\u6267\u884C\u5B8C\u6210", {
5580
5573
  imagePath: validatedArgs.image_path,
@@ -5654,32 +5647,43 @@ ${result.content.tags.map((tag)=>`\`${tag}\``).join(' ')}
5654
5647
  }
5655
5648
  }
5656
5649
  };
5657
- async function generateOutputFile(result, imagePath) {
5650
+ async function generateOutputFile(result, imagePath, outputPath) {
5658
5651
  try {
5659
- const baseDir = config_getStorageDir();
5660
- const dateDir = new Date().toISOString().split('T')[0];
5661
- const outputDirectory = external_path_namespaceObject.join(baseDir, 'image-recognition', dateDir);
5662
- await promises_namespaceObject.mkdir(outputDirectory, {
5663
- recursive: true
5664
- });
5665
- const timestamp = new Date().toTimeString().slice(0, 8).replace(/:/g, '');
5666
- const imageBaseName = external_path_namespaceObject.basename(imagePath, external_path_namespaceObject.extname(imagePath));
5667
- const fileName = `${imageBaseName}_analysis_${timestamp}.md`;
5668
- const outputPath = external_path_namespaceObject.join(outputDirectory, fileName);
5652
+ let finalOutputPath;
5653
+ if (outputPath) {
5654
+ finalOutputPath = outputPath;
5655
+ const outputDir = external_path_namespaceObject.dirname(finalOutputPath);
5656
+ await promises_namespaceObject.mkdir(outputDir, {
5657
+ recursive: true
5658
+ });
5659
+ } else {
5660
+ const baseDir = config_getStorageDir();
5661
+ const dateDir = new Date().toISOString().split('T')[0];
5662
+ const outputDirectory = external_path_namespaceObject.join(baseDir, 'image-recognition', dateDir);
5663
+ await promises_namespaceObject.mkdir(outputDirectory, {
5664
+ recursive: true
5665
+ });
5666
+ const timestamp = new Date().toTimeString().slice(0, 8).replace(/:/g, '');
5667
+ const imageBaseName = external_path_namespaceObject.basename(imagePath, external_path_namespaceObject.extname(imagePath));
5668
+ const fileName = `${imageBaseName}_analysis_${timestamp}.md`;
5669
+ finalOutputPath = external_path_namespaceObject.join(outputDirectory, fileName);
5670
+ }
5669
5671
  const reportContent = generateAnalysisReport(result, imagePath);
5670
- await promises_namespaceObject.writeFile(outputPath, reportContent, 'utf8');
5672
+ await promises_namespaceObject.writeFile(finalOutputPath, reportContent, 'utf8');
5671
5673
  logger_logger.info("\u5206\u6790\u62A5\u544A\u5DF2\u751F\u6210", {
5672
- outputPath,
5673
- fileSize: await getFileSize(outputPath)
5674
+ outputPath: finalOutputPath,
5675
+ fileSize: await getFileSize(finalOutputPath)
5674
5676
  });
5675
- return outputPath;
5677
+ return finalOutputPath;
5676
5678
  } catch (error) {
5677
5679
  logger_logger.error("\u751F\u6210\u8F93\u51FA\u6587\u4EF6\u5931\u8D25", {
5678
5680
  error,
5679
- imagePath
5681
+ imagePath,
5682
+ outputPath
5680
5683
  });
5681
5684
  throw new ImageAnalysisError(`\u{751F}\u{6210}\u{8F93}\u{51FA}\u{6587}\u{4EF6}\u{5931}\u{8D25}: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`, types_AnalysisErrorCodes.ANALYSIS_FAILED, {
5682
5685
  imagePath,
5686
+ outputPath,
5683
5687
  error
5684
5688
  });
5685
5689
  }
@@ -5716,124 +5720,19 @@ ${content.tags && content.tags.length > 0 ? `
5716
5720
  ${content.tags.map((tag)=>`\`${tag}\``).join(" ")}
5717
5721
  ` : ""}
5718
5722
 
5719
- ${content.objects && content.objects.length > 0 ? `
5720
- ### \u{1F3AF} \u{8BC6}\u{522B}\u{7269}\u{4F53}
5721
- ${content.objects.map((obj, index)=>`
5722
- ${index + 1}. **${obj.name}** (\u{7F6E}\u{4FE1}\u{5EA6}: ${(100 * obj.confidence).toFixed(1)}%)
5723
- ${obj.attributes ? Object.entries(obj.attributes).map(([key, value])=>`- ${key}: ${value}`).join("\n ") : ""}
5724
- `).join("")}
5725
- ` : ""}
5726
-
5727
- ${content.text_content && content.text_content.length > 0 ? `
5728
- ### \u{1F4C4} \u{6587}\u{5B57}\u{5185}\u{5BB9}
5729
- ${content.text_content.map((text, index)=>`
5730
- ${index + 1}. "${text.text}" (\u{7F6E}\u{4FE1}\u{5EA6}: ${(100 * text.confidence).toFixed(1)}%)
5731
- ${text.language ? `- \u{8BED}\u{8A00}: ${text.language}` : ""}
5732
- `).join("")}
5733
- ` : ""}
5734
-
5735
- ${content.scene_info ? `
5736
- ### \u{1F30D} \u{573A}\u{666F}\u{4FE1}\u{606F}
5737
- - **\u{5730}\u{70B9}\u{7C7B}\u{578B}**: ${content.scene_info.location_type || "\u672A\u8BC6\u522B"}
5738
- - **\u{73AF}\u{5883}**: ${content.scene_info.environment || "\u672A\u8BC6\u522B"}
5739
- - **\u{5149}\u{7167}**: ${content.scene_info.lighting || "\u672A\u8BC6\u522B"}
5740
- ${content.scene_info.weather ? `- **\u{5929}\u{6C14}**: ${content.scene_info.weather}` : ""}
5741
- ${content.scene_info.time_of_day ? `- **\u{65F6}\u{95F4}**: ${content.scene_info.time_of_day}` : ""}
5742
- ${content.scene_info.mood ? `- **\u{6C1B}\u{56F4}**: ${content.scene_info.mood}` : ""}
5743
- ` : ""}
5744
-
5745
- ${content.people_info && content.people_info.length > 0 ? `
5746
- ### \u{1F465} \u{4EBA}\u{7269}\u{4FE1}\u{606F}
5747
- ${content.people_info.map((person, index)=>`
5748
- ${index + 1}. **\u{4EBA}\u{7269}${index + 1}**
5749
- - \u{6570}\u{91CF}: ${person.count}
5750
- ${person.age_range ? `- \u{5E74}\u{9F84}: ${person.age_range}` : ""}
5751
- ${person.gender ? `- \u{6027}\u{522B}: ${person.gender}` : ""}
5752
- ${person.emotions ? `- \u{60C5}\u{7EEA}: ${person.emotions.join(", ")}` : ""}
5753
- ${person.activities ? `- \u{6D3B}\u{52A8}: ${person.activities.join(", ")}` : ""}
5754
- ${person.clothing ? `- \u{670D}\u{88C5}: ${person.clothing.join(", ")}` : ""}
5755
- `).join("")}
5756
- ` : ""}
5757
-
5758
- ${content.technical_info ? `
5759
- ### \u{1F527} \u{6280}\u{672F}\u{5206}\u{6790}
5760
- #### \u{8272}\u{5F69}\u{5206}\u{6790}
5761
- - **\u{4E3B}\u{8272}\u{8C03}**: ${content.technical_info.color_analysis?.dominant_colors?.join(", ") || "\u672A\u5206\u6790"}
5762
- - **\u{8272}\u{5F69}\u{642D}\u{914D}**: ${content.technical_info.color_analysis?.color_palette?.join(", ") || "\u672A\u5206\u6790"}
5763
- - **\u{4EAE}\u{5EA6}**: ${content.technical_info.color_analysis?.brightness || "\u672A\u5206\u6790"}
5764
- - **\u{5BF9}\u{6BD4}\u{5EA6}**: ${content.technical_info.color_analysis?.contrast || "\u672A\u5206\u6790"}
5765
-
5766
- #### \u{6784}\u{56FE}\u{5206}\u{6790}
5767
- - **\u{4E09}\u{5206}\u{6CD5}\u{5219}**: ${content.technical_info.composition?.rule_of_thirds ? "\u7B26\u5408" : "\u4E0D\u7B26\u5408"}
5768
- - **\u{5BF9}\u{79F0}\u{6027}**: ${content.technical_info.composition?.symmetry ? "\u5BF9\u79F0" : "\u975E\u5BF9\u79F0"}
5769
- - **\u{5F15}\u{5BFC}\u{7EBF}**: ${content.technical_info.composition?.leading_lines ? "\u5B58\u5728" : "\u4E0D\u5B58\u5728"}
5770
-
5771
- #### \u{8D28}\u{91CF}\u{8BC4}\u{4F30}
5772
- - **\u{6E05}\u{6670}\u{5EA6}**: ${content.technical_info.quality_metrics?.sharpness || "\u672A\u8BC4\u4F30"}
5773
- - **\u{566A}\u{70B9}\u{6C34}\u{5E73}**: ${content.technical_info.quality_metrics?.noise_level || "\u672A\u8BC4\u4F30"}
5774
- - **\u{66DD}\u{5149}**: ${content.technical_info.quality_metrics?.exposure || "\u672A\u8BC4\u4F30"}
5775
- ` : ""}
5776
-
5777
- ${content.ui_design_info ? `
5778
- ### \u{1F3A8} UI\u{8BBE}\u{8BA1}\u{5206}\u{6790}
5779
- #### \u{5E03}\u{5C40}\u{7ED3}\u{6784}
5780
- - **\u{5E03}\u{5C40}\u{7C7B}\u{578B}**: ${content.ui_design_info.layout_type}
5781
- - **\u{54CD}\u{5E94}\u{5F0F}\u{8BBE}\u{8BA1}**: ${content.ui_design_info.responsive_design ? "\u652F\u6301" : "\u4E0D\u652F\u6301"}
5782
-
5783
- #### \u{7EC4}\u{4EF6}\u{5206}\u{6790}
5784
- ${content.ui_design_info.components && content.ui_design_info.components.length > 0 ? content.ui_design_info.components.map((comp, index)=>`${index + 1}. **${comp.type}**: ${comp.name}`).join("\n") : "\u672A\u8BC6\u522B\u5230\u5177\u4F53\u7EC4\u4EF6"}
5785
-
5786
- #### \u{8272}\u{5F69}\u{65B9}\u{6848}
5787
- - **\u{4E3B}\u{8272}\u{8C03}**: ${content.ui_design_info.color_scheme?.primary_colors?.join(", ") || "\u672A\u8BC6\u522B"}
5788
- - **\u{8F85}\u{52A9}\u{8272}**: ${content.ui_design_info.color_scheme?.secondary_colors?.join(", ") || "\u672A\u8BC6\u522B"}
5789
- - **\u{80CC}\u{666F}\u{8272}**: ${content.ui_design_info.color_scheme?.background_colors?.join(", ") || "\u672A\u8BC6\u522B"}
5790
-
5791
- #### \u{5BFC}\u{822A}\u{8BBE}\u{8BA1}
5792
- - **\u{5BFC}\u{822A}\u{7C7B}\u{578B}**: ${content.ui_design_info.navigation?.type || "\u672A\u8BC6\u522B"}
5793
- - **\u{5BFC}\u{822A}\u{5143}\u{7D20}**: ${content.ui_design_info.navigation?.elements?.join(", ") || "\u672A\u8BC6\u522B"}
5794
-
5795
- #### \u{8BBE}\u{8BA1}\u{6A21}\u{5F0F}
5796
- ${content.ui_design_info.design_patterns && content.ui_design_info.design_patterns.length > 0 ? content.ui_design_info.design_patterns.map((pattern)=>`- ${pattern}`).join("\n") : "- \u672A\u8BC6\u522B\u5230\u7279\u5B9A\u8BBE\u8BA1\u6A21\u5F0F"}
5797
- ` : ""}
5798
-
5799
- ${content.requirement_info ? `
5800
- ### \u{1F4CB} \u{9700}\u{6C42}\u{5206}\u{6790}
5801
- #### \u{529F}\u{80FD}\u{9700}\u{6C42}
5802
- ${content.requirement_info.functional_requirements && content.requirement_info.functional_requirements.length > 0 ? content.requirement_info.functional_requirements.map((req, index)=>`
5803
- ${index + 1}. **${req.title}** (\u{4F18}\u{5148}\u{7EA7}: ${req.priority})
5804
- - \u{63CF}\u{8FF0}: ${req.description}
5805
- - \u{7C7B}\u{522B}: ${req.category}`).join("") : "\u672A\u8BC6\u522B\u5230\u5177\u4F53\u529F\u80FD\u9700\u6C42"}
5806
-
5807
- #### \u{975E}\u{529F}\u{80FD}\u{9700}\u{6C42}
5808
- ${content.requirement_info.non_functional_requirements && content.requirement_info.non_functional_requirements.length > 0 ? content.requirement_info.non_functional_requirements.map((req, index)=>`
5809
- ${index + 1}. **${req.type}**: ${req.description}`).join("") : "\u672A\u8BC6\u522B\u5230\u975E\u529F\u80FD\u9700\u6C42"}
5723
+ ---
5810
5724
 
5811
- #### \u{7528}\u{6237}\u{6545}\u{4E8B}
5812
- ${content.requirement_info.user_stories && content.requirement_info.user_stories.length > 0 ? content.requirement_info.user_stories.map((story, index)=>`
5813
- ${index + 1}. \u{4F5C}\u{4E3A} **${story.as_a}**\u{FF0C}\u{6211}\u{5E0C}\u{671B} **${story.i_want}**\u{FF0C}\u{4EE5}\u{4FBF} **${story.so_that}** (\u{4F18}\u{5148}\u{7EA7}: ${story.priority})`).join("") : "\u672A\u8BC6\u522B\u5230\u7528\u6237\u6545\u4E8B"}
5725
+ > **\u{5206}\u{6790}\u{539F}\u{5219}**\u{FF1A}\u{4EC5}\u{6839}\u{636E}\u{7528}\u{6237}\u{4EFB}\u{52A1}\u{6307}\u{4EE4}\u{8303}\u{56F4}\u{FF0C}\u{4E25}\u{683C}\u{5206}\u{6790}\u{56FE}\u{7247}\u{5185}\u{5BB9}\u{FF0C}\u{4E0D}\u{504F}\u{79BB}\u{4EFB}\u{52A1}\u{8981}\u{6C42}\u{FF0C}\u{8F93}\u{51FA}\u{5E72}\u{51C0}\u{660E}\u{4E86}\u{3001}\u{6E05}\u{6670}\u{51C6}\u{786E}\u{3001}\u{65E0}\u{5197}\u{4F59}\u{548C}\u{4E3B}\u{89C2}\u{63A8}\u{6D4B}\u{3002}
5814
5726
 
5815
- #### \u{4E1A}\u{52A1}\u{89C4}\u{5219}
5816
- ${content.requirement_info.business_rules && content.requirement_info.business_rules.length > 0 ? content.requirement_info.business_rules.map((rule)=>`- ${rule}`).join("\n") : "- \u672A\u8BC6\u522B\u5230\u4E1A\u52A1\u89C4\u5219"}
5817
- ` : ""}
5818
5727
 
5819
- ${Object.keys(content.details).length > 0 ? `
5820
- ### \u{1F4CB} \u{8BE6}\u{7EC6}\u{4FE1}\u{606F}
5821
- ${Object.entries(content.details).map(([key, value])=>`
5822
- **${key}**: ${"object" == typeof value ? JSON.stringify(value, null, 2) : value}
5823
- `).join("")}
5824
- ` : ""}
5825
5728
 
5826
5729
  ## \u{1F4A1} \u{5206}\u{6790}\u{603B}\u{7ED3}
5827
5730
 
5828
- \u{57FA}\u{4E8E}${getAnalysisTypeLabel(analysis_type)}\u{FF0C}\u{56FE}\u{7247}\u{5185}\u{5BB9}\u{7406}\u{89E3}\u{5B8C}\u{6210}\u{3002}
5829
- ${confidence_score && confidence_score > 0.8 ? "\u5206\u6790\u7ED3\u679C\u7F6E\u4FE1\u5EA6\u8F83\u9AD8\uFF0C\u53EF\u4FE1\u5EA6\u826F\u597D\u3002" : ""}
5731
+ \u{56FE}\u{7247}\u{5185}\u{5BB9}\u{5206}\u{6790}\u{5B8C}\u{6210}\u{FF0C}\u{5206}\u{6790}\u{8FC7}\u{7A0B}\u{4E25}\u{683C}\u{9075}\u{5FAA}\u{4EFB}\u{52A1}\u{6307}\u{4EE4}\u{8981}\u{6C42}\u{FF0C}\u{8F93}\u{51FA}\u{5185}\u{5BB9}\u{5E72}\u{51C0}\u{660E}\u{4E86}\u{3002}
5830
5732
 
5831
5733
  **\u{5206}\u{6790}\u{5B8C}\u{6210}\u{65F6}\u{95F4}**: ${new Date().toLocaleString('zh-CN')}
5832
5734
  **\u{62A5}\u{544A}\u{751F}\u{6210}\u{65F6}\u{95F4}**: ${new Date().toLocaleString('zh-CN')}
5833
5735
 
5834
- ---
5835
-
5836
- *\u{62A5}\u{544A}\u{7531}\u{56FE}\u{7247}\u{5185}\u{5BB9}\u{7406}\u{89E3}\u{667A}\u{80FD}\u{4F53}\u{81EA}\u{52A8}\u{751F}\u{6210}*
5837
5736
  `.trim();
5838
5737
  }
5839
5738
  async function getFileSize(filePath) {
@@ -5875,15 +5774,12 @@ ${confidence_score && confidence_score > 0.8 ? "\u5206\u6790\u7ED3\u679C\u7F6E\u
5875
5774
  - **\u{900F}\u{660E}\u{901A}\u{9053}**: ${basic_info.has_alpha ? "\u662F" : "\u5426"}
5876
5775
 
5877
5776
  ## \u{1F3AF} \u{5206}\u{6790}\u{914D}\u{7F6E}
5878
- - **\u{5206}\u{6790}\u{7C7B}\u{578B}**: \u{901A}\u{7528}\u{5206}\u{6790}
5879
- - **\u{8BE6}\u{7EC6}\u{7A0B}\u{5EA6}**: \u{8BE6}\u{7EC6}
5777
+ - **\u{5206}\u{6790}\u{7C7B}\u{578B}**: \u{4E25}\u{683C}\u{4EFB}\u{52A1}\u{6307}\u{4EE4}\u{5206}\u{6790}
5880
5778
  - **\u{5206}\u{6790}\u{8BED}\u{8A00}**: \u{4E2D}\u{6587}
5881
5779
  - **\u{5904}\u{7406}\u{65F6}\u{95F4}**: ${processing_time_ms}ms
5882
- - **\u{7F6E}\u{4FE1}\u{5EA6}**: ${confidence_score ? (100 * confidence_score).toFixed(1) + "%" : "\u672A\u77E5"}
5883
5780
 
5884
5781
  ## \u{1F4DD} \u{5206}\u{6790}\u{7ED3}\u{679C}
5885
5782
 
5886
- ### \u{5185}\u{5BB9}\u{6982}\u{8FF0}
5887
5783
  ${content.summary}
5888
5784
 
5889
5785
  ${content.tags && content.tags.length > 0 ? `
@@ -6393,6 +6289,7 @@ ${getErrorSuggestion(error.code)}
6393
6289
  output_directory: stringType().optional().describe("\u8F93\u51FA\u76EE\u5F55\uFF0C\u4E0D\u6307\u5B9A\u5219\u5728\u539F\u6587\u4EF6\u76EE\u5F55\u751F\u6210")
6394
6290
  },
6395
6291
  handler: async (args)=>{
6292
+ initializeProjectRoot();
6396
6293
  const converter = new ImageConverter();
6397
6294
  try {
6398
6295
  logger_logger.info("\u56FE\u7247\u683C\u5F0F\u8F6C\u6362\u667A\u80FD\u4F53\u5F00\u59CB\u6267\u884C", {
@@ -7894,12 +7791,13 @@ ${allTextContent || "\u672A\u8BC6\u522B\u5230\u6587\u5B57\u5185\u5BB9"}
7894
7791
  }
7895
7792
  }
7896
7793
  const imageRecognitionAgentTool = {
7897
- name: "\u957F\u56FE\u5185\u5BB9\u8BC6\u522B\u667A\u80FD\u4F53",
7794
+ name: "analyzeLongImage",
7898
7795
  description: "\u4E13\u95E8\u5904\u7406\u957F\u56FE\u7684\u5185\u5BB9\u8BC6\u522B\u667A\u80FD\u4F53\uFF0C\u652F\u6301\u5206\u6BB5\u5904\u7406\u548C\u7EFC\u5408\u5185\u5BB9\u8BC6\u522B\uFF08\u6587\u5B57+\u56FE\u50CF\u63CF\u8FF0\uFF09\uFF0C\u4EE5\u4E2D\u6587Markdown\u683C\u5F0F\u8F93\u51FA\u3002\u53EA\u9700\u63D0\u4F9B\u56FE\u7247\u8DEF\u5F84\u5373\u53EF\uFF0C\u5176\u4ED6\u53C2\u6570\u81EA\u52A8\u4F18\u5316\u3002",
7899
7796
  inputSchema: {
7900
7797
  imagePath: stringType().min(1).describe("\u56FE\u7247\u6587\u4EF6\u8DEF\u5F84")
7901
7798
  },
7902
7799
  handler: async (args)=>{
7800
+ initializeProjectRoot();
7903
7801
  logger_logger.info("\u56FE\u7247\u5185\u5BB9\u8BC6\u522B\u667A\u80FD\u4F53: \u5F00\u59CB\u5904\u7406", {
7904
7802
  args
7905
7803
  });
@@ -7,7 +7,7 @@ export declare class ImageAnalyzer {
7
7
  /**
8
8
  * 分析图片内容
9
9
  */
10
- analyzeImage(imagePath: string): Promise<AnalysisResult>;
10
+ analyzeImage(imagePath: string, context?: string): Promise<AnalysisResult>;
11
11
  /**
12
12
  * 执行AI分析
13
13
  */
@@ -29,9 +29,9 @@ export declare class ImageAnalyzer {
29
29
  */
30
30
  private parseAIResponse;
31
31
  /**
32
- * 提取内容概述
32
+ * 清理AI响应内容
33
33
  */
34
- private extractSummary;
34
+ private cleanAIResponse;
35
35
  /**
36
36
  * 提取详细信息
37
37
  */
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../../src/services/image-analysis/analyzer.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,cAAc,EAQf,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAmD9D;;OAEG;YACW,iBAAiB;IAiC/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuC3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;OAEG;IACH,OAAO,CAAC,eAAe;IA4CvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAsBtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAqBtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;OAEG;YACW,iBAAiB;IAyB/B;;OAEG;YACW,aAAa;IAsC3B;;OAEG;YACW,cAAc;IA0B5B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,WAAW;IAuDnB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,kBAAkB;IAiC1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,6BAA6B;IA2BrC,OAAO,CAAC,gCAAgC;IAqBxC,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,cAAc;CASvB"}
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../../src/services/image-analysis/analyzer.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,cAAc,EAQf,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAmDhF;;OAEG;YACW,iBAAiB;IAkC/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsC3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAgCvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAqBvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAqBtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;OAEG;YACW,iBAAiB;IAyB/B;;OAEG;YACW,aAAa;IAsC3B;;OAEG;YACW,cAAc;IA0B5B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,WAAW;IAuDnB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,kBAAkB;IAiC1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,6BAA6B;IA2BrC,OAAO,CAAC,gCAAgC;IAqBxC,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,cAAc;CASvB"}
@@ -1,10 +1,16 @@
1
1
  import { z } from "zod";
2
2
  declare const ImageAnalysisParamsSchema: z.ZodObject<{
3
3
  image_path: z.ZodString;
4
+ output_path: z.ZodOptional<z.ZodString>;
5
+ context: z.ZodOptional<z.ZodString>;
4
6
  }, "strip", z.ZodTypeAny, {
5
7
  image_path: string;
8
+ output_path?: string | undefined;
9
+ context?: string | undefined;
6
10
  }, {
7
11
  image_path: string;
12
+ output_path?: string | undefined;
13
+ context?: string | undefined;
8
14
  }>;
9
15
  export type ImageAnalysisToolParams = z.infer<typeof ImageAnalysisParamsSchema>;
10
16
  /**
@@ -16,9 +22,13 @@ export declare const read_imageTool: {
16
22
  description: string;
17
23
  inputSchema: {
18
24
  image_path: z.ZodString;
25
+ output_path: z.ZodOptional<z.ZodString>;
26
+ context: z.ZodOptional<z.ZodString>;
19
27
  };
20
28
  handler: (args: {
21
29
  image_path: string;
30
+ output_path?: string;
31
+ context?: string;
22
32
  }) => Promise<{
23
33
  content: {
24
34
  type: string;
@@ -46,9 +56,13 @@ export declare const imageAnalysisTool: {
46
56
  description: string;
47
57
  inputSchema: {
48
58
  image_path: z.ZodString;
59
+ output_path: z.ZodOptional<z.ZodString>;
60
+ context: z.ZodOptional<z.ZodString>;
49
61
  };
50
62
  handler: (args: {
51
63
  image_path: string;
64
+ output_path?: string;
65
+ context?: string;
52
66
  }) => Promise<{
53
67
  content: {
54
68
  type: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/image-analysis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,QAAA,MAAM,yBAAyB;;;;;;EAG3B,CAAC;AAEL,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEhF;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;oBAQH;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;CA6F7C,CAAC;AAGF,eAAO,MAAM,iBAAiB;;;;;;oBAhGN;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;CAgGC,CAAC;AA4lBhD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/image-analysis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,QAAA,MAAM,yBAAyB;;;;;;;;;;;;EAK3B,CAAC;AAEL,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEhF;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;oBAUH;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;CA6FrF,CAAC;AAGF,eAAO,MAAM,iBAAiB;;;;;;;;oBAhGN;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;CAgGvC,CAAC;AAiehD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAC"}
@@ -3,6 +3,8 @@
3
3
  */
4
4
  export interface ImageAnalysisParams {
5
5
  image_path: string;
6
+ output_path?: string;
7
+ context?: string;
6
8
  }
7
9
  export declare enum AnalysisType {
8
10
  GENERAL = "general",// 通用分析
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/image-analysis/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/image-analysis/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/image-converter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;EAuB/B,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,2BAA2B,CACnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;oBA6BP,GAAG;;;;;;;;;;;;;CAqD1B,CAAC;AAsMF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/image-converter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;EAuB/B,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,2BAA2B,CACnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;oBA6BP,GAAG;;;;;;;;;;;;;CAwD1B,CAAC;AAoMF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/image-recognition-agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;;GAGG;AACH,eAAO,MAAM,yBAAyB;;;;;;oBAMd,GAAG;;;;;;;;;;;;;CAwD1B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/image-recognition-agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;;GAGG;AACH,eAAO,MAAM,yBAAyB;;;;;;oBAMd,GAAG;;;;;;;;;;;;;CA2D1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/pdf2md/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;oBAWG,GAAG;;;;;;;;;;;;;CAmJ5B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/pdf2md/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;oBAWG,GAAG;;;;;;;;;;;;;CAsJ5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/world2md/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO9B,CAAC;AAEH,MAAM,WAAW,aAAa;IAC1B,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW;;;;;;oBAME,GAAG;;;;;;;;;;;;;CA2H5B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/world2md/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO9B,CAAC;AAEH,MAAM,WAAW,aAAa;IAC1B,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW;;;;;;oBAME,GAAG;;;;;;;;;;;;;CA8H5B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "intention-coding",
3
- "version": "0.4.7",
3
+ "version": "0.4.9",
4
4
  "description": "软件工程化的需求分析,功能设计,代码编写,测试运行和发布部署",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@10.11.0",