Skip to content

Commit a06c62b

Browse files
committed
feat: 限制修复次数 && 保存对话过程
1 parent cb18121 commit a06c62b

File tree

3 files changed

+33
-8
lines changed

3 files changed

+33
-8
lines changed

src/deepseekApi.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ function getDeepSeekModelConfig(): { modelName: string, apiBaseURL: string, apiK
4141

4242
let lastMessageBody : OpenAI.ChatCompletionMessageParam[];
4343

44+
export function GetLastMessageBody() : OpenAI.ChatCompletionMessageParam[] {
45+
return lastMessageBody;
46+
}
47+
4448
/**
4549
* 调用 DeepSeek API
4650
* @param userContent 用户输入内容
@@ -307,9 +311,9 @@ export async function queryCodeReDesign(
307311
列出每个关键修改点所在的文件路径
308312
修改方案:
309313
文件路径1:
310-
修改的关键代码,注意只输出关键修改,不要太长, 不要加载无用的上下文。不要输出没有改动部分的代码
314+
描述修改点,避免用大块代码,注意只输出关键修改,不要太长, 不要加载无用的上下文。不要输出没有改动部分的代码
311315
文件路径2:
312-
修改的关键代码,同上
316+
描述修改点,同上
313317
314318
最后检查:
315319
对以上输出的方案大纲进行反思,重新阅读输入代码,结合以上方案大纲,逐条检查有没有和原文对不上的地方。检查方案是否完备、文件路径是否正确,设计思路是否无误,如有问题请提出修正意见

src/extension.ts

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as path from 'path';
33
import * as fs from 'fs';
44
import { selectFiles } from './fileSelector';
55
import { 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';
77
import { setupCvbAsMarkdown } from './cvbMarkdownHandler';
88
import { 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
}

src/siderBar.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,10 @@ class CvbViewProvider implements vscode.TreeDataProvider<CvbFile> {
9797
if (fs.existsSync(targetFolder)) {
9898
const files = fs.readdirSync(targetFolder);
9999
files.forEach(file => {
100-
if (file.endsWith('.cvb')) {
101-
const filePath = path.join(targetFolder, file);
102-
cvbFiles.push(new CvbFile(file, vscode.Uri.file(filePath)));
103-
}
100+
if (file.endsWith('.cvb') || file.endsWith('.md')) {
101+
const filePath = path.join(targetFolder, file);
102+
cvbFiles.push(new CvbFile(file, vscode.Uri.file(filePath)));
103+
}
104104
});
105105
}
106106

0 commit comments

Comments
 (0)