news 2026/10/16 2:53:53

让 Linux 上的 Claude Code/codex 拿到 Windows 截图的小工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
让 Linux 上的 Claude Code/codex 拿到 Windows 截图的小工具

让 Linux 上的 Claude Code/codex 拿到 Windows 截图的小工具

picopaste 把 Windows 截图送到 Linux 的步骤压缩为一次热键:截图进入剪贴板后按alt+shift+v,工具通过已有 SSH 通道上传图片,将远端绝对路径写入剪贴板并注入当前焦点窗口。Linux 端不安装新服务、不开放额外端口,也不需要工具接触 SSH 凭据。

使用方式与问题边界

典型场景:编辑器、终端、构建流程和 Claude Code 运行在 Linux 主机,而操作界面和截图工具运行在 Windows。手工执行scp、使用共享目录或借助中转工具,都需要重新输入路径或切换注意力。单日重复十余次,累积的时间与注意力开销相当可观。

获取 release 中的picopaste.exe,或自行构建,在其同级目录放置picopaste.ini:

[picopaste] host = user@your-linux-host hotkey = alt+shift+v

运行后托盘图标会出现,连接建立期间最多短暂显示黄色,成功后变为绿色。截取图片并按热键即可上传。仓库地址是 https://github.com/DeguiLiu/picopaste,许可为 MIT。

单进程链路与远端依赖

远端使用 stocksshd自带的sftp-server子系统,绝大多数 Linux 开发机默认已经开启。Windows 侧只有一个进程,不实现 SSH 协议,而是驱动系统已有的ssh:

ssh-oClearAllForwardings=yes-s<host>sftp

-s请求 SFTP 子系统,stdin/stdout 随之成为 SFTP 字节流,全程不经过远端 shell。认证、密钥、ssh-agent、known_hosts 和~/.ssh/config交由系统 OpenSSH 处理;工具不读取凭据,也默认不修改~/.ssh/config。

ClearAllForwardings=yes用于屏蔽 SSH 配置中可能存在的端口转发,因为当前通道只需要 SFTP 子系统,不需要建立隧道。

Linux 远端 · 零代码

Windows 客户端 · 单进程 picopaste.exe

全局热键 · RegisterHotKey MOD_NOREPEAT

主线程消息循环 · GetMessageW(阻塞,无定时器)

托盘 · Shell_NotifyIconW + TaskbarCreated 重挂

剪贴板采集 · PNG 快路径 / DIB → WIC

上传 worker · SFTP 状态机

焦点守卫 + SendInput · 核对注入事件数

Job Object · KILL_ON_JOB_CLOSE + MEMORY_LIMIT

sshd · sftp-server 子系统

/tmp/picopaste(默认,客户端经 SFTP 创建)

Claude Code · 按路径读取图片

用户侧始终只有一个进程,Linux 远端没有引入新组件。

SFTP 上传的原子性

scp并不是这里的重点。OpenSSH 9.0 及以上版本的scp默认使用 SFTP,远端路径不再经过 shell 展开,~与引号的行为容易与预期不同。使用ssh 'cat > path'又依赖远端的sh、mkdir、cat和wc,还需要自行处理引号;传输期间目标文件名已经存在半成品。

picopaste 选择在同一条连接内使用 SFTP v3。自行实现 SFTP v3 只需要10 个报文,每一步都能获得明确的成功或失败码,并可在同一条连接内比对字节数:

SFTP 通道剪贴板上传 worker主线程SFTP 通道剪贴板上传 worker主线程连接失败则进入退避重连,由等待超时驱动,无需轮询PNG 直写临时文件;否则 DIBV5/DIB → WIC 编码(不复制像素)启动即建连(EnsureChannel),成功即 Ready(托盘变绿)热键触发,投递上传任务(不阻塞消息循环)OpenClipboard → 取图 → CloseClipboardREALPATH "." → MKDIR uploads → OPEN .tmp-<ts>-<rand>WRITECLOSE → STAT(远端字节数与本地比对,不符即中止)RENAME → clip-<ts>-<rand>.png(此前中断不留半成品)写入路径文本(CF_UNICODETEXT + OleFlush)SendInput Ctrl+Shift+V(核对事件数)

只有STAT确认字节数一致后才执行RENAME,因此 Claude Code 不会读到尚未传输完成的文件。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/16 2:53:33

免费解锁 WeMod Pro:Wand-Enhancer 完整指南

免费解锁 WeMod Pro&#xff1a;Wand-Enhancer 完整指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 不想交订阅费&#xff0c;也想用上 WeMod …

作者头像 李华
网站建设 2026/10/16 2:53:12

HashMap源码深度解析:从数据结构到扩容机制与性能调优

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/16 2:52:56

Apple Watch录音+AI总结:BYOK模式打造随身语音笔记工作流

最近我刷到 Nomily 这个开源项目时&#xff0c;第一反应是“这不就是我一直想要的东西吗”。它把 Apple Watch 的录音能力和 AI 总结捏在了一条链路上&#xff0c;而且用了 BYOK&#xff08;Bring Your Own Key&#xff09;模式&#xff1a;你带上自己的大模型 API Key&#xf…

作者头像 李华