Claude代码重启工具

一个用于在macOS的Terminal.app中自动重启Claude Code的实用工具,适用于配置更改后需要重新启动的场景。

  • by ntguion
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ntguion/restart-claude-skill

使用说明

重新启动Claude代码技能

一个小型macOS实用程序,可在同一Terminal.app选项卡中重新启动Claude Code。在更改MCP服务器配置或启动时加载的其他设置后非常有用。

该脚本自动执行用户手动执行的相同序列:中断Claude代码,返回shell,运行 claude --continue,等待启动,然后提交继续消息。

支持的环境

  • macOS
  • 打开终端
  • 交互式终端会话中的Claude Code
  • Python 3.9或更高版本
  • 航站楼无障碍通道 系统设置>隐私和安全>辅助功能

目前不支持其他终端应用程序。该脚本发送键盘输入,因此在重要会话中使用它之前,请检查行为并运行模拟运行。

安装

克隆存储库并将技能目录复制到您的Claude Code技能目录中:

git clone https://github.com/ntguion/restart-claude-skill.git
cp -R restart-claude-skill/restart-claude ~/.claude/skills/

不需要第三方Python包。

用法

从克劳德代码中调用:

/restart-claude

要检查默认行为而不发送击键,请执行以下操作:

python3 ~/.claude/skills/restart-claude/restart.py --dry-run

要直接运行脚本,请执行以下操作:

python3 ~/.claude/skills/restart-claude/restart.py

默认情况下,重新启动的进程使用 claude --continue,它通过正常的权限检查继续当前工作目录的最新对话。

精确会话

当当前目录有多个会话并且您需要显式选择一个会话时,传递UUID:

python3 ~/.claude/skills/restart-claude/restart.py \
  --session-id 123e4567-e89b-12d3-a456-426614174000

定时和延续消息

MCP启动缓慢可能需要更长的延迟:

python3 ~/.claude/skills/restart-claude/restart.py --startup-delay 20

可以更改或禁用继续消息:

python3 ~/.claude/skills/restart-claude/restart.py --message "Continue the previous task."
python3 ~/.claude/skills/restart-claude/restart.py --no-message

跑 python3 restart.py --help 对于所有选项。

安全默认值

默认情况下,权限检查仍处于启用状态。该脚本支持Claude Code的 --dangerously-skip-permissions 仅标记为明确的选择加入:

python3 ~/.claude/skills/restart-claude/restart.py \
  --dangerously-skip-permissions

该模式绕过了Claude Code权限检查,应仅限于适当隔离的环境。此实用程序不需要工作。

剧本还:

  • 将动态值作为参数传递给AppleScript,而不是将其插值到可执行的AppleScript源代码中;
  • 在发送键盘输入之前,通过控制TTY选择发起终端选项卡;
  • 将确切的会话ID验证为UUID;和
  • 在安排重新启动之前,检查支持的平台、所需的可执行文件和辅助功能访问。

运作原理

  1. Python为调用该技能的进程标识控制TTY。
  2. 它启动一个分离的AppleScript进程,以便自动化在当前退出的Claude Code进程中幸存下来。
  3. AppleScript查找并聚焦具有匹配TTY的Terminal.app选项卡。
  4. 系统事件发送 Ctrl+C 两次,等待shell,然后键入resume命令。
  5. 在配置的启动延迟之后,它可以选择提交一条继续消息。

默认延迟为shell返回4秒,Claude Code启动12秒。两者都是可配置的。

局限性

  • 键盘自动化取决于Terminal.app焦点和macOS辅助功能API。模拟运行验证配置,但不能保证真正重启的时间。
  • --continue 为当前工作目录选择最近的对话。使用 --session-id 当这不够具体时。
  • 启动是基于延迟的;脚本不会检查Claude Code的UI以确定准备就绪。
  • 该实用程序不会杀死过时的MCP服务器进程或解决端口冲突。
  • 在以下情况下,未保存的交互式输入可能会丢失 Ctrl+C 已发送。

如果键入了重启命令但未被接受,请增加 --shell-delay。如果继续消息到达得太早,请增加 --startup-delay 或使用 --no-message.

发展

运行标准库测试套件:

python3 -m unittest discover -s tests -v

这些测试在不发送按键的情况下验证命令构造、输入验证、干运行行为和分离的AppleScript调用。

许可证

MIT许可证。看 许可证.