GitHub博客指出聊天界面在某些场景下不够直观,提出Canvas作为更具体的AI交互替代方案,适合需要精确控制的开发者工作流。
我们已经在这场 AI 实验中走过了 176 年。
等等……明明才过去三年?
有时候我会想起去年发生的事,但感觉已经是很久以前了。那件事真的发生在我身上吗?还是它发生在我父亲身上,只是我小时候听他讲的?
不管怎样……我们进入这场 AI 实验已经三年了,而与 LLM 交互的主要界面依然是聊天。我很确定是 @pmarca 第一个提议在 HTML 规范中加入 textarea 组件。我之所以这么确定,是因为我在一个 textarea 里问过 AI。
但我想向你提出:也许,只是也许,聊天是错误的 UI。至少在大多数时候是。
学术派 Steven Pinker 是这样说的……
颇为遗憾的是,AI 的第一个大规模实现有点像个噱头——一个第一人称聊天机器人。但 AI 如果以任务为导向,前途是极其光明的。
既然一位学者说了这话,然后我又把它作为引言写进了博客,那你一定知道这是真的。
聊天是与 AI 协作的主要方式,因为它是最先被用户接受的。聊天作为一种通用解决方案确实很好用,原因很简单——我们根本不知道用户会尝试用 AI 做什么。
但作为用户,你知道自己要用它做什么,在那种情况下聊天往往就是错误的 UI。
亲爱的读者,你需要的是某种可定制的 UI,可以凭空构建出来,以适合你当下要做的事情的方式与 AI 协作(或者与它斗智斗勇——随你)。
有很多方式可以实现这一点,但在 GitHub Copilot 应用中,这被称为 canvas。
canvas 是运行在 GitHub Copilot 应用内部的一个小型全栈应用,没有任何浏览器外壳。agent 可以与应用的服务端部分通信,服务端也可以回传信息。最终你得到的界面可以做普通计算机程序能做的任何事情,同时还能与 GitHub Copilot agent 进行双向通信。
听起来很虚,我确实用了"双向"这个词,听起来就像是直接从 PowerPoint 上抄下来的。让我们把这个概念放到实践中看看,看能不能用它解决实际问题。
先从一个简单的例子开始:用 canvas 创建一个 Connect 4(四子棋)游戏,你可以在 GitHub Copilot 应用内与 agent 对战。
看我如何彻底击败 GPT-5.6 Sol 的高阶推理能力……
好吧,但我确实在无推理模式下击败了 GPT-5.6 Luna,所以……听我说……Connect 4 是个很难的游戏!!
构建一个 canvas 就像请求创建一个一样简单……
Create a new canvas that uses the Connect 4 game to demonstrate the ability for the user to interact with the canvas for the canvas to talk to the agent and for the agent to control the canvas
GitHub Copilot 应用知道什么是 canvas,所以我们不需要过多解释。
现在,因为这些 canvas 实际上是全栈应用而不仅仅是网页,它们可以调用第三方 API,可以,但也能在本地机器上执行代码。
例如,这是一个 Winget 的 UI,可以浏览注册表中的包,也可以管理本地包,包括安装和卸载。
这里没有 AI,但这就是重点。
当聊天是主要界面时,它会鼓励你用 agent 做所有事。这往往纯粹是浪费 token。让自己动手构建一个工具,让后续所有交互都是零 token 消耗的,几乎总是比把 agent 本身当作工具更好。别再让 GPT-5.6 Sol Max 去"暂存并提交"了。(我知道你这么做过。因为我也这么做过。别用 token 来羞辱我,我的自尊心很脆弱。)
另一个很好的例子是:与其用聊天让 agent 操作 SQLite 数据库,不如直接搭一个 canvas,自己来做。
我的意思是,这里你甚至可以有智能提示。为什么不呢?现在是 2026 年了,AI 就是一个神奇的盒子,你想让它做什么它就做什么。
偶尔写点 SQL 也不错。我说偶尔。别激动。
或者为什么非要用纯 Markdown 写 Jekyll 博客文章呢,你完全可以把 Windows Live Writer 从坟里挖出来。
好吧,这些都是有趣且略有用的例子,但当你用它来自动化开发工作流时,自定义 UI 的价值就清晰得多。
我不会告诉你该怎么生活,但我与 agent 协作的流程大致是这样的……
这很简单,但每一步都需要我在键盘前进行交互、查看原型、引导和切换步骤。
但关键是,其实这个流程的大部分我都不需要在旁边。agent 有能力做调研、生成原型,然后在我需要审核时通知我。与 agent 协作的目标始终是尽可能把自己从循环中解放出来。但这很难,因为当你只有一个聊天框时,根本不清楚该怎么做。
下面是一个完整的例子,展示如何用 canvas 来自动化你自己的工作流,随你心意或多或少地把自己从循环中移除。
我不是说你应该照搬这个工作流,也不是说这就是与 agent 协作的完美范例。我的意思是,也许吧。也许这就是。问问 AI……

说真的,我确实认为目前被聊天 UI 束缚可能正在与我们所有人作对。这让我们很难弄清楚如何解决实际问题,因为当你的唯一交互方式只是一个 textarea 时,根本不知道该怎么做。
今天就试试 canvas 吧。像 SQLite canvas 这样的你可以一次性搞定。workflow 那个花了大约一天时间才把设计和自动化调好。
但我认为你会发现,当你……等一下……跳出聊天框来思考时,你能用 AI 走得更远。
Download the GitHub Copilot app >
Technologist, author, speaker, and creator. Working at GitHub where I focus on AI-powered development.
AI-powered fuzzing with the GitHub Security Lab Taskflow Agent
In this blog post, I explain how to use the new fuzzing taskflow based on the GitHub Security Lab Taskflow Agent AI framework.
Rendering huge pull requests in the GitHub Copilot app
How we rebuilt the diff surface in the GitHub Copilot app to open a million-line pull request with hundreds of inline review comments.
Should you read the code, is RAG dead, and did Skills kill MCP?
We dive into these questions and other AI hot takes on the latest episode of the GitHub Podcast.