@@ -3,7 +3,7 @@ import * as path from 'path';
33import * as fs from 'fs' ;
44import { selectFiles } from './fileSelector' ;
55import { generateCvb , applyCvbToWorkspace , generateTimestamp , Cvb , TCVB , mergeCvb } from './cvbManager' ;
6- import { queryCodeReDesign , generateFilenameFromRequest , analyzeCode , callDeepSeekFixApi } from './deepseekApi' ;
6+ import { queryCodeReDesign , generateFilenameFromRequest , analyzeCode , callDeepSeekFixApi , GetLastMessageBody } from './deepseekApi' ;
77import { setupCvbAsMarkdown } from './cvbMarkdownHandler' ;
88import { registerCvbContextMenu } from './siderBar' ;
99
@@ -57,6 +57,7 @@ export async function doUploadCommand(cvbFilePath: string, userPrompt: string, o
5757
5858 let apiResponse = await queryCodeReDesign ( cvbContent , userPrompt , outputChannel , getCurrentOperationController ( ) . signal ) ;
5959 let processSuccess = true ;
60+ let attemptCount = 0 ;
6061 do {
6162 try {
6263 if ( apiResponse ) {
@@ -75,8 +76,28 @@ export async function doUploadCommand(cvbFilePath: string, userPrompt: string, o
7576 vscode . window . showInformationMessage ( `API response have error ${ err . message } , try fix ...` ) ;
7677 apiResponse = await callDeepSeekFixApi ( err . message , outputChannel , true , getCurrentOperationController ( ) . signal ) ;
7778 processSuccess = false ;
79+ attemptCount ++ ;
7880 }
79- } while ( ! processSuccess ) ;
81+ } while ( ! processSuccess && attemptCount < 3 ) ;
82+
83+ const lastMessageBody = GetLastMessageBody ( ) ;
84+
85+ if ( lastMessageBody && lastMessageBody . length > 2 ) {
86+ const timestamp = generateTimestamp ( ) ;
87+ const summary = await generateFilenameFromRequest ( userPrompt ) ;
88+ const mdFileName = `${ timestamp } _${ summary } .md` ;
89+ const mdFilePath = path . join ( tmpDir , mdFileName ) ;
90+
91+ // 创建新数组,第一条消息替换为 { "role": "user", "content": userPrompt }
92+ const modifiedMessages = [ { role : "user" , content : userPrompt } , ...lastMessageBody . slice ( 2 ) ] ;
93+
94+ const mdContent = modifiedMessages . map ( msg => {
95+ return `**${ msg . role } **:\n\n${ msg . content } \n\n` ;
96+ } ) . join ( '\n' ) ;
97+
98+ fs . writeFileSync ( mdFilePath , mdContent , 'utf-8' ) ;
99+ vscode . window . showInformationMessage ( `Conversation log saved as: ${ mdFilePath } ` ) ;
100+ }
80101
81102 clearCurrentOperationController ( ) ;
82103}
0 commit comments