feat:代码变更diff可视化功能实现

This commit is contained in:
Roe-xin
2026-03-02 10:00:04 +08:00
parent 3e18299099
commit 4c7ec65577
13 changed files with 1195 additions and 1 deletions

View File

@ -8,6 +8,8 @@ import * as os from 'os';
import * as fs from 'fs';
import { readFileContent, readDirectory } from '../utils/readFiles';
import { createOrOverwriteFile } from '../utils/createFiles';
import { resolveWorkspaceFilePath, showFileDiff } from '../utils/fileDiff';
import { changeTracker } from './changeTracker';
import { generateVCD, checkIverilogAvailable, generateMultiVCD, DumpModule } from '../utils/iverilogRunner';
import { analyzeVcdFile } from '../utils/vcdParser';
import { executeWaveformTrace, WaveformTraceArgs } from '../utils/waveformTracer';
@ -125,8 +127,19 @@ async function executeFileRead(args: FileReadArgs): Promise<string> {
* 执行 file_write 工具
*/
async function executeFileWrite(args: FileWriteArgs): Promise<string> {
const absolutePath = resolveWorkspaceFilePath(args.path);
const existedBeforeWrite = fs.existsSync(absolutePath);
const oldContent = existedBeforeWrite ? await readFileContent(args.path) : '';
await createOrOverwriteFile(args.path, args.content);
// 记录文件变更
try {
changeTracker.trackChange(args.path, oldContent, args.content);
} catch (error) {
console.warn('[ToolExecutor] 记录文件变更失败:', error);
}
// Verilog 文件添加知识图谱提示
const isVerilogFile = args.path.endsWith('.v') || args.path.endsWith('.sv');
if (isVerilogFile) {