Corv: 为AI代理(及人类)打造的SSH客户端
Corv 是一款专为AI代理设计的SSH客户端,支持结构化JSON输出、连接复用和安全凭据管理,同时为人类用户提供交互式终端。
Corv 是一款专为AI代理和人类设计的SSH客户端,旨在解决传统SSH在代理驱动基础设施中的不足。传统SSH会向调用方暴露凭据,返回需要代理解析的终端文本,每次命令都需要重新认证,并依赖tmux、nohup或自定义脚本管理长时间运行的任务。Corv 通过允许代理按名称连接、执行命令并接收结构化JSON输出、复用已认证的连接、以及分离和恢复长时间运行的作业,彻底改变了这一模式。同时,人类用户也可以通过交互式终端UI使用完全相同的连接。
安装Corv非常简单。Linux/macOS用户只需运行一行curl命令,Windows用户可以使用PowerShell,同时也支持通过Go安装。Corv还提供了更新和卸载功能,并且只在用户主动运行时才进行更新,不会在后台自动更新。
在用法方面,Corv支持交互式连接管理和命令行操作。用户可以通过corv add添加主机,指定用户、地址、密钥甚至跳板机。添加时,密码会被安全地存储在本地加密保险库中,绝不会作为命令行参数传递。连接后,可以执行交互式会话或非交互式命令(代理路径)。非交互式命令支持--json标志以输出结构化数据,便于工具处理。对于长时间运行的命令,Corv会自动分离任务,并允许用户通过重复相同命令来继续监控,而不会启动第二个副本。通过CORV_WAIT环境变量可以控制等待时间。
连接复用是Corv的核心特性之一。一个本地代理进程为每台机器保持一个已认证的SSH连接,每个corv --命令作为新通道在该连接上运行,从而只需支付一次连接和认证成本。代理进程在首次使用时自动启动,空闲15分钟后退出,不会在服务器上安装任何内容。需要注意的是,这是连接复用而非远程会话持久化,每个命令运行在自己的shell中,工作目录等状态不会在命令间保持。
输出处理方面,Corv针对程序化消费者对命令输出进行了规范化:进度条等回车重绘被压缩为最终状态,ANSI控制序列被移除,stdout和stderr按写入顺序交错捕获并返回在stdout中。已完成命令返回完整输出,仅对真正的大输出进行截断,而仍在运行的命令则返回简短预览。传输失败会被分类,远程退出码作为进程退出码传播。
安全模型上,Corv完全在客户端运行,通过Go SSH库实现SSH。目标服务器上不安装任何东西。连接配置文件使用操作系统保护的保险库密钥进行加密存储,密码和密钥密码存储在本地加密保险库中。认证按顺序尝试:配置的身份文件、ssh-agent、默认~/.ssh密钥,最后是密码。跳板机(ProxyJump)跳转的每个主机都单独验证主机密钥。主机密钥根据~/.ssh/known_hosts进行验证,未知主机需交互式批准,更改的主机密钥始终被拒绝。代理进程使用操作系统权限的本地IPC(Unix套接字或Windows命名管道)加上端点令牌进行深度防御。
架构方面,Corv由多个独立的小模块组成,包括连接配置文件、加密保险库、SSH传输、代理进程、输出处理器、审计日志、交互式TUI、命令行路由和文件路径等。这样设计使得SSH后端或输出处理器可以在不影响其他部分的情况下进行替换。
Corv还提供了与AI编码代理(如Claude、Codex)的集成,可直接复制集成文件夹中的指令文件供代理使用。开发方面,Corv使用Go语言,支持Linux、macOS和Windows平台。
总的来说,Corv为AI代理和人类提供了一种更安全、高效且结构化的SSH连接方式,特别适合需要频繁执行远程命令的自动化场景。