别用剪贴板给AI Agent传代码,有更好办法
讨论在AI Agent编程中如何高效传递代码上下文,而非依赖剪贴板。这是AI辅助编程工作流的优化建议,能帮助程序员更好利用AI工具。
讨论在AI Agent编程中如何高效传递代码上下文,而非依赖剪贴板。这是AI辅助编程工作流的优化建议,能帮助程序员更好利用AI工具。
我们都在学习如何与 agent 一起编程。如果你"身处圈子里",可能会觉得人人都在追求 token 极限。自动化一切。启动通宵运行的 agent 在睡眠中编写完整应用。但我看到的很多开发者的现实要普通得多:
他们在 VS Code 和 ChatGPT 之间来回复制粘贴代码。
我发现 IDE 内置聊天界面(如 Copilot、Cursor 和 Antigravity)的采用速度相对缓慢。CLI agent 在下一代开发者中仍然显得相对小众。我知道这可能不是你在 Twitter 上看到或听到的观点。
无论如何,我已经批评过很多在 IDE 和网页聊天界面之间复制代码的开发者。本周,我意识到我一直在做同样的事情,只是用更多的终端窗格罢了。一个测试在一个终端窗格中失败了。一个 agent 在另一个窗格中工作。我复制错误,粘贴到 agent 中,等待,运行另一个命令,复制下一个错误,再粘贴一次。
我那看起来很酷的黑客风 CLI 工作流突然感觉……不那么酷了。
显而易见的解决方案是:让 agent 读取终端。不那么显而易见的问题是:我不希望 agent 随意读取我打开的每个终端窗格。
我使用 Zellij 作为我的终端多路复用器。如果你用过 Tmux,原理是一样的:窗格、标签、会话,以及大量终端状态存在于一个地方。我真的很喜欢 Zellij。我曾经在 Tmux 上遇到过困扰,从此再没回头。不过我似乎在这方面是少数。
我使用多种 CLI 编码 agent:OpenCode、Gemini CLI、Claude Code、Codex,以及那周我尝试的其他工具。
一个正常的标签看起来像左边是 OpenCode,右边是一个或两个窗格用于运行命令、观察测试或监看开发服务器。
但窗格是独立的。Agent 不会自动知道测试窗格中发生了什么。我的测试窗格不知道 agent 在尝试调试什么。所以我成为了桥梁,手动往返传输错误和日志。复制和粘贴。
集成的 agent shell 有时会有帮助,但它们不是完整的答案。长时间运行的命令会占用 agent 的时间。许多命令需要提升的权限。此外,我已经有了一个我喜欢的终端布局和工作流。
我不想把所有东西都移到 agent 中。我想让 agent 看到我看到的东西。
我的项目天真版本很简单:给 agent 完整访问权。让它读取整个 Zellij 会话。然后完成。
除了……秘密和安全是一回事。我已经在我的 agent 上玩得太快太松散了。我试图在这方面做得更好。我需要的是选择性的窗格感知,而不是完整的终端可见性。
这成为了 zellij-agent-tools 的设计约束:agent 应该只读取我明确批准的窗格,该批准应该在窗格实际存在的地方可见。
该项目是一个 Zellij 插件加上一个本地 MCP sidecar。
Zellij 插件是面向人类的部分。它列出窗格、要求批准、标记被监视的窗格,并让我撤销访问权。
Sidecar 是面向 agent 的部分。它公开了一小组 MCP 工具,以便 agent 可以列出被监视的窗格并从我批准的窗格中读取有界输出。
我不想把同意隐藏在 agent 聊天中。我可以看到 agent 在行中调用这些工具,但我在 Zellij 插件中批准访问。我想要分离的表面。MCP 是 agent 接口。Zellij 是人类接口。
这感觉像是正确的边界。
v1 工具表面故意设计得很简单。只是:要求监视一个窗格、列出监视的窗格、读取有界快照、在光标后读取输出、检查状态。
这足以阻止我手动复制粘贴每个错误。
我没有天真地认为 agent 可能无法绕过这个。如果 agent 作为我的用户拥有不受限制的 shell 访问权,它可能能够直接调用 Zellij CLI 或做其他我没有打算的事情。
我不是在试图解决恶意本地代码。我试图让我的正常工作流不那么草率。
目标是让简单的路径成为更安全的路径:要求访问窗格、向用户展示、只读取被批准的内容、在状态陈旧或被撤销时关闭失败。
这已经感觉比复制粘贴混乱或完整的终端可见性要好得多。
我在这个项目上仍然有很多工作要做。这是一个非常粗糙的初版。但方向感觉是对的,我认为它解决了一个真实的问题,我想象其他人也有这样的需求。
我会继续在我的工作流中使用和迭代它。欢迎查看!
某些评论可能只对已登录的访客可见。登录查看所有评论。
如需进一步操作,你可能会考虑屏蔽此人和/或举报滥用。