完善了agent

This commit is contained in:
lik
2026-05-30 16:41:26 +08:00
parent 797e69a0c2
commit b92853a717
30 changed files with 1972 additions and 22 deletions

View File

@@ -0,0 +1,74 @@
import * as z from 'zod';
import { tool } from 'langchain';
import { spawn } from 'child_process';
export const winCmdTool = tool(
async ({ command, cwd, timeout = 30000 }) => {
const workingDir = cwd || process.cwd();
return new Promise((resolve) => {
let stdout = '';
let stderr = '';
let killed = false;
const proc = spawn('cmd.exe', ['/c', command], {
cwd: workingDir,
shell: false,
windowsHide: true
});
const timer = setTimeout(() => {
killed = true;
proc.kill('SIGKILL');
}, timeout);
proc.stdout.on('data', (data) => {
stdout += data.toString();
});
proc.stderr.on('data', (data) => {
stderr += data.toString();
});
proc.on('close', (code) => {
clearTimeout(timer);
if (killed) {
resolve(JSON.stringify({
success: false,
error: `Command timed out after ${timeout}ms`,
command,
cwd: workingDir
}));
return;
}
resolve(JSON.stringify({
success: code === 0,
exitCode: code,
stdout: stdout.trim(),
stderr: stderr.trim(),
command,
cwd: workingDir
}));
});
proc.on('error', (error) => {
clearTimeout(timer);
resolve(JSON.stringify({
success: false,
error: error.message,
command,
cwd: workingDir
}));
});
});
},
{
name: 'win_cmd',
description: '在 Windows 系统上执行 cmd.exe 命令行命令。适用于运行 Windows 批处理命令、文件系统操作命令(如 dir、copy、del、mkdir 等)。不支持 PowerShell 命令。',
schema: z.object({
command: z.string().describe('要执行的 cmd.exe 命令或命令组合,使用 && 连接多个命令,如 "dir /b" 或 "echo hello && dir"'),
cwd: z.string().optional().describe('执行命令的工作目录,默认为当前工作目录'),
timeout: z.number().optional().describe('命令执行超时时间(毫秒)默认30000')
})
}
);