<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Vibe Coding on 飘逝的风</title><link>https://gameapp.club/tags/vibe-coding/</link><description>Recent content in Vibe Coding on 飘逝的风</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><lastBuildDate>Sat, 18 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://gameapp.club/tags/vibe-coding/index.xml" rel="self" type="application/rss+xml"/><item><title>Vibe Coding 远程开发时，如何优雅地贴图？</title><link>https://gameapp.club/post/2026-04-18-coding-with-image/</link><pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate><guid>https://gameapp.club/post/2026-04-18-coding-with-image/</guid><description>&lt;img src="https://gameapp.club/" alt="Featured image of post Vibe Coding 远程开发时，如何优雅地贴图？" /&gt;
 &lt;blockquote&gt;
 &lt;p&gt;在直接使用 Code Agent（如 Codex、Claude Code、OpenCode）这些终端工具进行远程开发时，或许你会遇到一个尴尬场景：本地剪贴板里明明有一张截图，远程终端里的 Agent 却看不见。然后你得多走好几步，才能让 Agent 看到这张图片。本文提供一个更快捷的解决方案。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="背景"&gt;背景
&lt;/h2&gt;&lt;p&gt;现在用 Code Agent 写代码，虽然咱们有 Playwright / Agent Browser 等工具，但还是难免让它看 UI、看报错截图、看网页风格等。如果是在本机环境，这事还算简单：图片在本机，终端也在本机，Agent 能读到文件就行。但我日常又很依赖远程开发，代码、服务、依赖都在远程机器上，终端通过 SSH 连过去。于是问题来了：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;图片在 Mac 的剪贴板里；&lt;/li&gt;
&lt;li&gt;Code Agent 跑在远程服务器上；&lt;/li&gt;
&lt;li&gt;SSH 终端只能传字符，不能天然传一张剪贴板里的图片；&lt;/li&gt;
&lt;li&gt;我又不想每次手动保存图片、scp 上传、再复制远程路径。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;看起来只是一个很小的工作流问题，但次数多了挺烦人。看着 IDE 中一些临时的截图文件，似乎在提示我，这肯定不是优雅的解决方案。&lt;/p&gt;
&lt;h2 id="我想要什么效果"&gt;我想要什么效果？
&lt;/h2&gt;&lt;p&gt;理想状态很简单：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;截图或者复制图片到本地剪贴板；&lt;/li&gt;
&lt;li&gt;在远程终端里按一个快捷键；&lt;/li&gt;
&lt;li&gt;图片自动上传到远程机器；&lt;/li&gt;
&lt;li&gt;终端里自动粘贴一个远程文件路径；&lt;/li&gt;
&lt;li&gt;我直接对 Agent 说：看这张图，然后继续干活。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;简言之：在远程开发中使用支持读取图片路径的 Code Agent 时，获得接近本地开发的贴图体验。&lt;/p&gt;
&lt;h2 id="方案探索"&gt;方案探索
&lt;/h2&gt;&lt;h3 id="方案一古老的手工活"&gt;方案一：古老的手工活
&lt;/h3&gt;&lt;p&gt;一开始我们都很朴素：先把截图保存成文件，然后再想办法把这个文件弄到远程机器上。如果正在用 VSCode/Cursor Remote-SSH，就直接把图片拖到远程项目目录里。这个动作不复杂，也足够直观。&lt;/p&gt;
&lt;p&gt;在 macOS 下，如果终端使用 iTerm2，而你又在 iTerm2 开启了 &lt;a class="link" href="https://iterm2.com/documentation-shell-integration.html#load-automatically" target="_blank" rel="noopener"
 &gt;shell integration&lt;/a&gt;，它支持按住 &lt;code&gt;Option&lt;/code&gt; 把本地文件从 Finder 里拖到终端窗口，再上传到远程服务器。这个方案也能用，只是远程环境通常也要把 shell integration 配起来，才能让这条链路顺一点。&lt;/p&gt;
&lt;p&gt;虽然现在优化为只要拖拽不用敲命令了，但这个过程还有点繁琐， 更糟糕的是，它很容易污染项目目录。比如为了给 Agent 看一张 UI 截图，随手拖进去一个 &lt;code&gt;image.png&lt;/code&gt;、&lt;code&gt;screenshot 2026-04-18.png&lt;/code&gt;，修完问题之后又忘了删。时间久了，项目里就多了一堆一次性的临时图片。你说它影响程序运行吧，也不一定；但每次 &lt;code&gt;git status&lt;/code&gt; 看到它们，心情就不太美丽。&lt;/p&gt;
&lt;p&gt;所以这个初始方案只适合低频场景。偶尔传一次没问题，天天这么干你最好确保自己没有洁癖，我很难忍受。说是手工活，就是因为每一步都得自己来——保存、拖拽、上传，偶尔还得清理战场。&lt;/p&gt;
&lt;p&gt;手工活干多了，自然会惦记着有没有更省事的办法。&lt;/p&gt;
&lt;h3 id="方案二优雅的-ide-派"&gt;方案二：优雅的 IDE 派
&lt;/h3&gt;&lt;p&gt;后来我找到了 &lt;a class="link" href="https://github.com/dkodr/claudeboard" target="_blank" rel="noopener"
 &gt;Claudeboard&lt;/a&gt; 这个插件，它的定位非常明确：在 VSCode Remote-SSH 场景下，把剪贴板图片上传到远程服务器，并生成 Claude Code 能访问的文件路径。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Claudeboard 插件截图" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://img.gameapp.club/images/2026/04/claudeboard.webp"&gt;&lt;/p&gt;
&lt;p&gt;它的使用方式很直接：剪贴板里有图片后，在 VSCode/Cursor 中按 &lt;code&gt;Ctrl + Alt + V&lt;/code&gt;，插件就会上传图片并插入路径。对于 Claude Code 这种跑在远程机器上的 Agent 来说，这就把“本地剪贴板图片”变成了“远程可读文件路径”。&lt;/p&gt;
&lt;p&gt;这个方案其实相当不错，基本达到了我们理想状态，并且不需要额外配置。不过要注意，如果你在 Cursor 插件市场里搜不到，也可以从上面 GitHub 官方的 Release 页面下载 VSIX 插件再安装，亲测可用。&lt;/p&gt;
&lt;p&gt;如果你的主力开发环境就是 VSCode 或 Cursor，选它没毛病。并且如果你是在 Windows 上开发，那就只推荐这个方案。因为我下一套解决方案更 hack 一些，也仅在 macOS 下验证过。&lt;/p&gt;
&lt;h3 id="方案三极客的终端流"&gt;方案三：极客的终端流
&lt;/h3&gt;&lt;p&gt;方案二算是优雅了，但如果你像我时不时直接开终端就干活的流派，Claudeboard 这时就帮不上忙了。为了贴一张图切回 VSCode，感觉有点为了吃口醋包顿饺子。&lt;/p&gt;
&lt;p&gt;所以继续寻觅方案，然后找到这个脚本： &lt;a class="link" href="https://gist.githubusercontent.com/canghai118/0230a50ac2afa49897634b70febe805a/raw/4bf4266dc04b5a8df0aa7ba88f02bc908c6011f3/iterm_smart_paste.sh" target="_blank" rel="noopener"
 &gt;iterm_smart_paste.sh&lt;/a&gt;，它可以实现一个快捷键，一键将剪贴板里的图片上传到远程机器，并粘贴一个远程文件路径。&lt;/p&gt;
&lt;p&gt;这个方案的核心流程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用 &lt;code&gt;pngpaste&lt;/code&gt; 从 macOS 剪贴板里取出图片；&lt;/li&gt;
&lt;li&gt;保存成本地临时文件；&lt;/li&gt;
&lt;li&gt;通过当前 SSH 会话的信息，把图片传到远程机器；&lt;/li&gt;
&lt;li&gt;在终端里粘贴远程图片路径；&lt;/li&gt;
&lt;li&gt;Code Agent 读取这个路径下的图片。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这听起来有点绕，但所幸这些事情它都包了，配置好之后，体感就是：复制图片，按快捷键，路径出来了。还是简单介绍一下安装过程：&lt;/p&gt;
&lt;h4 id="安装依赖"&gt;安装依赖
&lt;/h4&gt;&lt;p&gt;首先安装 &lt;code&gt;pngpaste&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install pngpaste
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它的作用很单纯，就是从 macOS 剪贴板里把图片导出来。没有它的话，我们还得自己手动把截图存成文件，体验立刻回到解放前。&lt;/p&gt;
&lt;h4 id="准备脚本"&gt;准备脚本
&lt;/h4&gt;&lt;p&gt;我把脚本放在了 &lt;code&gt;~/bin/iterm_smart_paste.sh&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vim ~/bin/iterm_smart_paste.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;脚本参考&lt;a class="link" href="https://gist.githubusercontent.com/canghai118/0230a50ac2afa49897634b70febe805a/raw/4bf4266dc04b5a8df0aa7ba88f02bc908c6011f3/iterm_smart_paste.sh" target="_blank" rel="noopener"
 &gt;这里&lt;/a&gt;。不过原版 SSH 会话识别、上传稳定性这几块兼容性不太好，我顺手更新了个版本，可以从 &lt;a class="link" href="https://gist.github.com/kevin1sMe/c2b368b7803f6cdb768bc5507219a2f7" target="_blank" rel="noopener"
 &gt;这里&lt;/a&gt; 取到。&lt;/p&gt;
&lt;p&gt;保存后给它执行权限：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x ~/bin/iterm_smart_paste.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="绑定快捷键"&gt;绑定快捷键
&lt;/h4&gt;&lt;p&gt;接下来就是把这个脚本绑定到 iTerm2 的快捷键上。只要这几步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开 &lt;code&gt;Settings/Preferences &amp;gt; Profiles &amp;gt; Keys&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;新增一个快捷键；&lt;/li&gt;
&lt;li&gt;Shortcut 选择你习惯的组合，比如 &lt;code&gt;Cmd + Shift + V&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;Action 选择 &lt;code&gt;Run Coprocess&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;参数填脚本路径：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/Users/你的用户名/bin/iterm_smart_paste.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你本来就在用 Alfred、Raycast 这类工具，也可以让它们来触发脚本。macOS 层面的热键工具会更灵活一些，但这里咱聊 iTerm2 的方案，就不给你引入其它工具了，内置的 &lt;code&gt;Run Coprocess&lt;/code&gt; 也已够用。&lt;/p&gt;
&lt;h4 id="使用效果"&gt;使用效果
&lt;/h4&gt;&lt;p&gt;简单录屏了一下，可以看一眼效果，我还是满意的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="iTerm2 脚本使用效果" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://img.gameapp.club/images/2026/04/image-paste.gif"&gt;&lt;/p&gt;
&lt;p&gt;这个方案的话，如果长期使用，记得清理一下远程机器上的临时文件。这不用我提醒你吧：）&lt;/p&gt;
&lt;h2 id="总结"&gt;总结
&lt;/h2&gt;&lt;p&gt;需要跨平台、多设备使用，并且习惯 VSCode/Cursor 的开发者，借助 Claudeboard 插件的方案二是你的最优解。
如果你是纯 macOS 用户，习惯 iTerm2 终端开发，不妨试试方案三，一个脚本搞定。我用了一段时间感觉挺好。&lt;/p&gt;
&lt;h2 id="后记"&gt;后记
&lt;/h2&gt;&lt;p&gt;作为一个有点追求完美的人，我不能接受原始的截图搬运工身份。你要说搞这些能有多少效率提升嘛，那倒未必。但是这种小阻碍解决之后，每次按上快捷键，你了解背后发生了些什么，并且是你让美好在发生，感觉内心安定。或许这也是程序员所追求的一种掌控感？&lt;/p&gt;
&lt;p&gt;欢迎大家一起交流一下，你们在远程使用 Codex、Claude Code、OpenCode 时，是怎么处理图片输入的？&lt;/p&gt;
&lt;p&gt;最近不打算写太系统性的东西，补几篇文章把工具用得更顺起来。欢迎点赞和关注。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;我是个爱折腾技术的工程师，也乐于分享。欢迎点赞、关注、分享，更欢迎一起探讨技术问题，共同学习，共同进步。为了获得更及时的文章推送，欢迎关注我的公众号：爱折腾的风&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;img alt="扫码关注公众号" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://img.gameapp.club/images/qrcode_weixin.jpg"&gt;&lt;/p&gt;</description></item></channel></rss>