-
Notifications
You must be signed in to change notification settings - Fork 25
Open
Description
问题描述
在 macOS 上使用 Coding-Tool Web UI 点击会话,选择 iTerm2 作为终端工具时,iTerm2 打开后窗口空白卡住,不执行任何命令。
复现步骤
npm install -g coding-toolct start启动服务- 打开 Web UI (http://localhost:10099)
- 设置 → 终端工具 → 选择 iTerm2
- 点击任意会话
- iTerm2 打开,但窗口空白,不执行
claude -r {sessionId}命令
环境信息
- 操作系统: macOS Sequoia 15.x
- coding-tool 版本: 2.2.7
- iTerm2 版本: Build 3.5.x
- Node.js 版本: v22.21.1
原因分析
问题出在 src/server/services/terminal-detector.js 第 110 行的 AppleScript 语法:
// 当前代码(有问题)
command: 'osascript -e \'tell application "iTerm" to create window with default profile command "cd {cwd} && claude -r {sessionId}"\''create window with default profile command "..." 这个一步到位的语法在新版 iTerm2 中不稳定,经常导致窗口创建后不执行命令。
修复方案
将 AppleScript 拆分为三步执行:
- 激活 iTerm2:
tell application "iTerm" to activate - 创建窗口:
tell application "iTerm" to create window with default profile - 写入命令:
tell application "iTerm" to tell current session of current window to write text "..."
建议修改
// 修复后的代码
command: 'osascript -e \'tell application "iTerm" to activate\' -e \'tell application "iTerm" to create window with default profile\' -e \'tell application "iTerm" to tell current session of current window to write text "cd \\\'{cwd}\\\' && claude -r {sessionId}"\''完整 diff
diff --git a/src/server/services/terminal-detector.js b/src/server/services/terminal-detector.js
--- a/src/server/services/terminal-detector.js
+++ b/src/server/services/terminal-detector.js
@@ -107,7 +107,7 @@ function detectMacTerminals() {
id: 'iterm2',
name: 'iTerm2',
available: true,
isDefault: false,
- command: 'osascript -e \'tell application "iTerm" to create window with default profile command "cd {cwd} && claude -r {sessionId}"\''
+ command: 'osascript -e \'tell application "iTerm" to activate\' -e \'tell application "iTerm" to create window with default profile\' -e \'tell application "iTerm" to tell current session of current window to write text "cd \\\'{cwd}\\\' && claude -r {sessionId}"\''
});
}验证
修改后测试命令:
osascript -e 'tell application "iTerm" to activate' \
-e 'tell application "iTerm" to create window with default profile' \
-e 'tell application "iTerm" to tell current session of current window to write text "echo Hello from fixed iTerm2"'执行后 iTerm2 正常打开并执行命令。
临时解决方案
在官方修复前,用户可以:
- 在 Web UI 设置中切换为 Terminal.app(系统终端)
- 手动修改
$(npm root -g)/coding-tool/src/server/services/terminal-detector.js文件
感谢您开发这个优秀的工具!🎉
Metadata
Metadata
Assignees
Labels
No labels