chore(ui): show real tool names and speed long inputs
This commit is contained in:
parent
4617e00693
commit
3729cae4d2
@ -1288,11 +1288,7 @@ export class MonitorDirector implements MonitorDriver {
|
|||||||
}
|
}
|
||||||
this.commandCurrentText = '';
|
this.commandCurrentText = '';
|
||||||
}
|
}
|
||||||
const chars = Array.from(text);
|
await this.typeSmartText(target, text);
|
||||||
for (const ch of chars) {
|
|
||||||
target.textContent = (target.textContent || '') + ch;
|
|
||||||
await sleep(28);
|
|
||||||
}
|
|
||||||
this.commandCurrentText = text;
|
this.commandCurrentText = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1364,10 +1360,35 @@ export class MonitorDirector implements MonitorDriver {
|
|||||||
target.textContent = code;
|
target.textContent = code;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const chars = Array.from(code);
|
await this.typeSmartText(target, code);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据长度自动选择“逐字符”或“逐行”动画的输入方式。
|
||||||
|
* 过长内容按行填充,避免动画过慢。
|
||||||
|
*/
|
||||||
|
private async typeSmartText(target: HTMLElement, text: string) {
|
||||||
|
const lines = text.split('\n');
|
||||||
|
const long = lines.length > 8 || text.length > 400;
|
||||||
|
const lineDelay = 55;
|
||||||
|
if (long) {
|
||||||
|
target.textContent = '';
|
||||||
|
lines.forEach((line, idx) => {
|
||||||
|
target.textContent += (idx > 0 ? '\n' : '') + line;
|
||||||
|
});
|
||||||
|
// 行级动画:逐行显现
|
||||||
|
const chunks = target.textContent.split('\n');
|
||||||
|
target.textContent = '';
|
||||||
|
for (let i = 0; i < chunks.length; i += 1) {
|
||||||
|
target.textContent += (i > 0 ? '\n' : '') + chunks[i];
|
||||||
|
await sleep(lineDelay);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const chars = Array.from(text);
|
||||||
for (const ch of chars) {
|
for (const ch of chars) {
|
||||||
target.textContent = (target.textContent || '') + ch;
|
target.textContent = (target.textContent || '') + ch;
|
||||||
await sleep(24);
|
await sleep(26);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2575,7 +2596,8 @@ export class MonitorDirector implements MonitorDriver {
|
|||||||
this.sceneHandlers.modifyFile = this.sceneHandlers.appendFile;
|
this.sceneHandlers.modifyFile = this.sceneHandlers.appendFile;
|
||||||
|
|
||||||
this.sceneHandlers.runCommand = async (payload, runtime) => {
|
this.sceneHandlers.runCommand = async (payload, runtime) => {
|
||||||
this.applySceneStatus(runtime, 'runCommand', '正在执行命令');
|
const toolLabel = payload?.name || payload?.tool || 'run_command';
|
||||||
|
this.applySceneStatus(runtime, 'runCommand', `调用 ${toolLabel}`);
|
||||||
const command = payload?.arguments?.command || payload?.result?.command || 'echo \"Hello\"';
|
const command = payload?.arguments?.command || payload?.result?.command || 'echo \"Hello\"';
|
||||||
const reuse = this.isWindowVisible(this.elements.commandWindow);
|
const reuse = this.isWindowVisible(this.elements.commandWindow);
|
||||||
if (reuse) {
|
if (reuse) {
|
||||||
@ -2602,7 +2624,8 @@ export class MonitorDirector implements MonitorDriver {
|
|||||||
};
|
};
|
||||||
|
|
||||||
this.sceneHandlers.runPython = async (payload, runtime) => {
|
this.sceneHandlers.runPython = async (payload, runtime) => {
|
||||||
this.applySceneStatus(runtime, 'runPython', '正在执行 Python');
|
const toolLabel = payload?.name || payload?.tool || 'run_python';
|
||||||
|
this.applySceneStatus(runtime, 'runPython', `调用 ${toolLabel}`);
|
||||||
const runId =
|
const runId =
|
||||||
payload?.executionId ||
|
payload?.executionId ||
|
||||||
payload?.execution_id ||
|
payload?.execution_id ||
|
||||||
@ -3058,8 +3081,9 @@ export class MonitorDirector implements MonitorDriver {
|
|||||||
await sleep(600);
|
await sleep(600);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.sceneHandlers.genericTool = async (_payload, runtime) => {
|
this.sceneHandlers.genericTool = async (payload, runtime) => {
|
||||||
this.applySceneStatus(runtime, 'genericTool', '正在执行工具');
|
const toolLabel = payload?.name || payload?.tool || 'tool';
|
||||||
|
this.applySceneStatus(runtime, 'genericTool', `调用 ${toolLabel}`);
|
||||||
await sleep(600);
|
await sleep(600);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,10 +10,11 @@ export const SCENE_PROGRESS_LABELS: Record<string, string> = {
|
|||||||
reader: '正在读取',
|
reader: '正在读取',
|
||||||
focus: '正在聚焦',
|
focus: '正在聚焦',
|
||||||
unfocus: '正在处理',
|
unfocus: '正在处理',
|
||||||
runCommand: '正在执行',
|
// 运行类工具显示具体工具名,由运行时传入
|
||||||
runPython: '正在执行',
|
runCommand: '',
|
||||||
|
runPython: '',
|
||||||
terminalSession: '正在连接终端',
|
terminalSession: '正在连接终端',
|
||||||
terminalInput: '正在发送命令',
|
terminalInput: '',
|
||||||
terminalSnapshot: '正在获取终端',
|
terminalSnapshot: '正在获取终端',
|
||||||
memoryUpdate: '正在同步记忆',
|
memoryUpdate: '正在同步记忆',
|
||||||
todoCreate: '正在更新待办',
|
todoCreate: '正在更新待办',
|
||||||
@ -27,11 +28,11 @@ export const SCENE_PROGRESS_LABELS: Record<string, string> = {
|
|||||||
renameFile: '正在重命名',
|
renameFile: '正在重命名',
|
||||||
terminalReset: '正在重置终端',
|
terminalReset: '正在重置终端',
|
||||||
terminalSleep: '准备等待',
|
terminalSleep: '准备等待',
|
||||||
terminalRun: '正在执行',
|
terminalRun: '',
|
||||||
ocr: '正在提取',
|
ocr: '正在提取',
|
||||||
memory: '正在同步记忆',
|
memory: '正在同步记忆',
|
||||||
todo: '正在管理待办',
|
todo: '正在管理待办',
|
||||||
genericTool: '正在执行'
|
genericTool: ''
|
||||||
};
|
};
|
||||||
|
|
||||||
export function getSceneProgressLabel(name: string): string | null {
|
export function getSceneProgressLabel(name: string): string | null {
|
||||||
|
|||||||
@ -44,11 +44,11 @@ const RUNNING_STATUS_TEXTS: Record<string, string> = {
|
|||||||
web_search: '正在搜索网络...',
|
web_search: '正在搜索网络...',
|
||||||
extract_webpage: '正在提取网页...',
|
extract_webpage: '正在提取网页...',
|
||||||
save_webpage: '正在保存网页...',
|
save_webpage: '正在保存网页...',
|
||||||
run_python: '正在执行Python代码...',
|
run_python: '',
|
||||||
run_command: '正在执行命令...',
|
run_command: '',
|
||||||
update_memory: '正在更新记忆...',
|
update_memory: '正在更新记忆...',
|
||||||
terminal_session: '正在管理终端会话...',
|
terminal_session: '正在管理终端会话...',
|
||||||
terminal_input: '正在发送终端输入...',
|
terminal_input: '',
|
||||||
terminal_snapshot: '正在获取终端快照...',
|
terminal_snapshot: '正在获取终端快照...',
|
||||||
terminal_reset: '正在重置终端...'
|
terminal_reset: '正在重置终端...'
|
||||||
};
|
};
|
||||||
@ -173,7 +173,12 @@ export function getToolStatusText(tool: any): string {
|
|||||||
};
|
};
|
||||||
return runningMap[readType] || '正在读取文件...';
|
return runningMap[readType] || '正在读取文件...';
|
||||||
}
|
}
|
||||||
return RUNNING_STATUS_TEXTS[tool.name] || '正在执行...';
|
const label =
|
||||||
|
RUNNING_STATUS_TEXTS[tool.name] ||
|
||||||
|
tool.display_name ||
|
||||||
|
tool.name ||
|
||||||
|
'';
|
||||||
|
return label ? `调用 ${label}` : '调用工具中';
|
||||||
}
|
}
|
||||||
if (tool.status === 'completed') {
|
if (tool.status === 'completed') {
|
||||||
if (tool.name === 'read_file') {
|
if (tool.name === 'read_file') {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user