关于 kitty
kitty 是一项通过远程控制命令行管理 kitty 终端窗口和标签页的技能。它帮助开发者在不阻塞主要工作流的情况下运行和检查后台进程、发送命令并管理终端会话。
主要功能
- 01启动窗口和标签页
- 02向终端窗口发送命令
- 03读取可见文本与滚屏内容
- 04聚焦或关闭窗口和标签页
- 05按标题、ID 或状态匹配窗口
适用场景
- 01在独立窗口运行开发服务器
- 02查看长期运行进程的日志
- 03向会话发送中断并关闭已完成会话
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ xyenon/ agents --skill kitty安装后在 Claude Code 中输入/kitty确认已加载。
详细介绍
Kitty 远程控制技能
此技能让你能够直接通过 Bash 工具,使用 kitty 的远程控制功能管理多个并发进程(例如服务器、监视器或长时间运行的构建任务)。
由于你运行在 kitty 终端中,因此可以新建窗口或标签页来处理这些任务,而不会阻塞主要通信渠道。
1. 验证环境并检查状态
首先,验证你是否运行在已启用远程控制的 kitty 中。可以尝试列出窗口:
kitten @ ls
如果失败,请检查是否设置了 $KITTY_LISTEN_ON。请注意,在某些配置中,即使已启用远程控制(使用默认套接字),该变量也可能为空。
echo $KITTY_LISTEN_ON
如果未启用远程控制,用户应在 kitty.conf 中添加 allow_remote_control yes,或使用 --allow-remote-control 启动 kitty。
2. 启动后台进程
若要运行某个命令(例如开发服务器),并使其持续运行且可供检查:
-
在与 Agent 相同的标签页中创建新窗口(推荐): 使用
$KITTY_WINDOW_ID确保新窗口留在当前标签页中。WID=$(kitten @ launch --match "id:$KITTY_WINDOW_ID" --title "server-log" --keep-focus) echo "Created window with ID: $WID" -
或者新建一个标签页:
kitten @ launch --type=tab --title "server-log" --keep-focus -
直接通过命令启动: (如果希望命令结束后窗口仍保持打开,请使用
--hold)kitten @ launch --title "server-log" --keep-focus --hold npm start
3. 向窗口发送文本/命令
向指定窗口发送按键。使用窗口 ID 可精确定位,或使用匹配方式以方便操作。
使用 ID(可靠):
kitten @ send-text --match "id:$WID" "npm start\n"
使用匹配方式(标题):
注意:使用 \n 表示回车。在某些 shell 中,可能需要使用 $'...' 或管道,确保正确解析换行符。
kitten @ send-text --match "title:server-log" "npm start
"
# OR
echo "npm start" | kitten @ send-text --match "title:server-log" --stdin
或者发送到所有窗口:
kitten @ send-text --all "echo hello\n"
4. 检查输出(获取窗口文本)
获取窗口当前可见的文本:
kitten @ get-text --match "id:$WID"
获取包含回滚缓冲区的文本:
kitten @ get-text --match "title:server-log" --extent=all
仅获取上一条命令的输出(需要 shell 集成):
kitten @ get-text --match "title:server-log" --extent=last_cmd_output
5. 聚焦窗口或将窗口置于前台
聚焦指定窗口:
kitten @ focus-window --match "id:$WID"
聚焦指定标签页:
kitten @ focus-tab --match "title:server-log"
6. 与进程交互
发送 Ctrl+C(中断):
kitten @ send-text --match "id:$WID" "\x03"
关闭窗口:
kitten @ close-window --match "id:$WID"
关闭标签页: (注意:可以通过匹配标签页标题或其中任意窗口 ID 来关闭标签页)
# By ID of a window inside the tab
kitten @ close-tab --match "id:$WID"
# By tab title
kitten @ close-tab --match "title:server-log"
7. 高级:窗口匹配
Kitty 支持功能强大的匹配表达式:
title:pattern- 按窗口标题匹配id:number- 按窗口 ID 匹配pid:number- 按进程 ID 匹配cwd:path- 按当前工作目录匹配cmdline:pattern- 按命令行匹配state:focused- 匹配当前聚焦的窗口state:active- 匹配当前活动的窗口
使用 and、or、not 进行组合:
kitten @ focus-window --match "title:server and state:active"
8. 获取窗口/标签页信息
以 JSON 格式列出所有 OS 窗口、标签页和窗口:
kitten @ ls
获取当前聚焦窗口的 ID:
kitten @ ls | jq -r '.[].tabs[] | select(.is_focused) | .windows[] | select(.is_focused) | .id'
解析特定信息:
kitten @ ls | jq '.[].tabs[].windows[] | {id, title, cmdline}'
模式总结
WID=$(kitten @ launch --title "NAME" --keep-focus [CMD])- 创建窗口并保存 IDkitten @ send-text --match "id:$WID" "CMD\n"- 可靠地发送命令kitten @ get-text --match "id:$WID"- 读取输出kitten @ close-window --match "id:$WID"- 清理
常用远程控制命令
| 命令 | 描述 |
|---|---|
kitten @ ls | 列出所有窗口/标签页 |
kitten @ launch | 创建新窗口/标签页 |
kitten @ send-text | 向窗口发送文本 |
kitten @ get-text | 获取窗口文本 |
kitten @ focus-window | 聚焦窗口 |
kitten @ focus-tab | 聚焦标签页 |
kitten @ close-window | 关闭窗口 |
kitten @ close-tab | 关闭标签页 |
kitten @ signal-child | 向进程发送信号 |
kitten @ set-tab-title | 更改标签页标题 |
kitten @ set-colors | 更改终端颜色 |