export function buildStudioPreToolCommentary(input: { toolName: string toolInput: Record }): string { const path = readPathLabel(input.toolInput) switch (input.toolName) { case 'ls': return path ? `我先看一下 ${path} 的目录结构。` : '我先看一下当前目录结构。' case 'read': return path ? `我先读取 ${path} 看看当前内容。` : '我先读取相关文件看看当前内容。' case 'glob': return '我先按模式查找相关文件。' case 'grep': return '我先搜索相关代码和上下文。' case 'write': return path ? `我准备写入 ${path}。` : '我准备写入目标文件。' case 'edit': case 'apply_patch': return path ? `我先修改 ${path}。` : '我先修改相关文件。' case 'static-check': return '我先做一次静态检查确认当前状态。' case 'task': return '我准备启动一个子任务处理这部分工作。' case 'skill': return '我先加载相关 skill 看看约束和用法。' case 'render': return '我准备提交渲染任务。' case 'question': return '我先确认一个关键信息。' default: return `我先执行 ${input.toolName}。` } } function readPathLabel(input: Record): string | null { const candidates = [input.path, input.file, input.directory] for (const candidate of candidates) { if (typeof candidate === 'string' && candidate.trim()) { return candidate.trim() } } return null }