**把本机截图直接粘给 SSH 服务器上的 Claude Code、Codex 等编程 Agent。**
不用上传图床,不用改 SSH 配置,也不用在服务器上跑常驻进程。
[](LICENSE)
[](https://github.com/leazoot/clift/actions/workflows/ci.yml)
[](https://github.com/leazoot/clift/releases)
[English](README.md) · 简体中文
---
## Clift 是做什么的?
你在服务器上通过 SSH 使用 Claude Code、Codex、Gemini CLI 或其他命令行 Agent。
文本可以直接粘贴,但截图不行。
图片在你笔记本的剪贴板里,Agent 却运行在另一台机器上。通常只能先保存图片、上传到服务器,再把路径发给 Agent。
Clift 把这几步合成一个快捷键:
```text
截图
↓
Cmd+Shift+V
↓
通过 SSH / SFTP 发送
↓
终端里自动出现文件路径
↓
Agent 直接读取
```
例如:
```text
Please inspect this file: '/home/dev/.cache/clift/inbox/2026-09-05/2a07…/clipboard.png'
```
Fast Mode 下文件直接通过你现有的 SSH 连接发送。
服务器不需要安装 Clift,也不经过 Relay。
---
# 快速开始
推荐先用 **Fast Mode**。
如果你已经有能正常 `ssh` 登录的服务器,几分钟就能用起来。
## 1. 安装
笔记本端目前支持 macOS 和 Windows。
### macOS
```bash
curl -fsSL https://raw.githubusercontent.com/leazoot/clift/main/install.sh | sh
```
### Windows
在 PowerShell 中运行:
```powershell
irm https://raw.githubusercontent.com/leazoot/clift/main/install.ps1 | iex
```
安装包会和对应的 `SHA256SUMS` 一起下载,校验失败不会安装,也不需要 `sudo`,完成后自动进入 `clift setup`。
---
## 2. 配置 SSH 目标
假设你的 `~/.ssh/config` 里已经有:
```sshconfig
Host core
HostName 10.0.0.8
User dev
```
运行:
```bash
clift setup core
```
依次检查:
* SSH 是否能连接
* SFTP 是否可用
* 远端 inbox 是否能创建
* 测试文件能否上传和删除
全部通过后才会保存配置。
Clift 不修改你的 `~/.ssh/config`,也不会读取 SSH 私钥。连接、认证和 `known_hosts` 校验仍然由系统 OpenSSH 负责。
---
## 3. 注册快捷键
```bash
clift hotkey --install
```
默认快捷键:
| 平台 | 快捷键 |
| ------- | ------------- |
| macOS | `Cmd+Shift+V` |
| Windows | `Ctrl+Alt+V` |
快捷键助手会注册为登录时启动。
macOS 第一次使用时会请求「辅助功能」权限,因为 Clift 需要把生成的文本输入到当前窗口。
---
## 4. 粘贴截图
先截图,然后把焦点放回正在 SSH 的终端。
按:
```text
Cmd+Shift+V
```
Clift 会把图片传到服务器,然后在当前窗口输入:
```text
Please inspect this file: '/home/dev/.cache/clift/inbox/2026-09-05/2a07…/clipboard.png'
```
Agent 直接读取这个文件即可。
### 普通文本不会受影响
如果剪贴板里是纯文本,Clift 不会上传任何东西,快捷键也不会做任何事。文本照常用 `Cmd+V` 粘贴。
---
# Fast Mode 是怎么工作的?
Fast Mode 没有额外的服务。
```text
┌──────────────┐ SSH / SFTP ┌──────────────┐
│ Laptop │ ─────────────────────────▶ │ Server │
│ │ │ │
│ Clipboard │ │ inbox/image │
└──────────────┘ └──────────────┘
```
Clift 使用的就是你已经配置好的:
```text
ssh
~/.ssh/config
known_hosts
SSH Agent / 系统认证方式
```
服务器上不需要:
* 安装 Clift
* 安装插件
* 修改 SSH 配置
* 开端口
* 跑 daemon
* 部署 Relay
远端文件放在当前用户目录下的私有 inbox 中,目录权限为 `0700`,文件权限为 `0600`。
Clift 只在你主动粘贴时读取一次剪贴板,不监听剪贴板,也不保存剪贴板历史。
---
# Fast Mode 和 Universal Mode
Clift 有两种传输方式。
| | **Fast Mode** | **Universal Mode** |
| ----------- | ----------------------- | ------------------------- |
| 适合 | 已经配置好的 SSH 服务器 | 经常切换服务器、临时机器或大量远端环境 |
| 目标怎么确定 | Clift 使用已配置的 SSH target | Token 被粘到哪台服务器,就由哪台服务器取文件 |
| 传输 | SSH / SFTP 直连 | 本地加密 → Relay → 服务器取回 |
| Relay | 不需要 | 需要 |
| 服务器安装 Clift | 不需要 | 需要 |
| 修改 SSH 配置 | 不需要 | 不需要 |
| 服务器常驻进程 | 不需要 | 不需要 |
| 推荐场景 | 默认选择 | 需要“当前会话决定目标”时 |
如果你的服务器本来就在 `~/.ssh/config` 里,优先使用 Fast Mode。
Universal Mode 解决的是另一个问题:
> 我不想让本机 Clift 预先知道这次到底要发到哪台服务器。
---
# Universal Mode
Fast Mode 由本机选择目标。
Universal Mode 则由**当前终端会话**决定目标。
你按下快捷键后,本机会生成一条类似这样的内容:
```text
Attachment: clift fetch 'clift://v1/…'
```
把这行内容粘到哪台服务器,那台服务器就可以取走附件。
本机不需要预先登记这台服务器。
---
## 1. 准备 Relay
Universal Mode 需要一个 Relay。
Relay 只负责暂存加密后的附件。你可以自己运行 `clift-relayd`,也可以部署到自己的 Cloudflare 账户:
[](https://deploy.workers.cloudflare.com/?url=https://github.com/leazoot/clift/tree/main/relay/cloudflare)
得到地址后,例如:
```text
https://clift-relay.