GitHub Copilot 如何用 canvases 替代聊天界面
When chat is the wrong UI
GitHub Copilot 应用推出 canvas 功能,一种在应用内运行、无浏览器外壳的全栈小应用,可与 Copilot 智能体双向通信。canvas 能调用第三方 API 并在本地执行代码,例如用 Winget 界面管理本地包、直接操作 SQLite 数据库,从而避免把每次交互都交给聊天智能体、浪费 token。作者认为聊天只是 AI 的通用兜底界面,任务明确时自定义 UI 更合适。
正文 · AI 翻译
我们这场AI实验已经进行了176年。
等等……才三年?
你确定吗?
有时候我会想起去年发生的事,却感觉已经过去很久了。那真的发生在我身上吗,还是发生在我父亲身上、他只是在我小时候告诉过我?
总之……我们这场AI实验才进行了三年,而我们与大语言模型的主要交互界面仍然是聊天。我很确定是@pmarca最先主张在HTML规范中加入textarea组件的。我之所以这么确定,是因为我问过AI。在一个textarea里问的。
但我想向你提出一个想法:也许,只是也许,聊天是错误的UI。好吧,至少大多数时候是这样。
学者史蒂芬·平克是这样说的……
AI的首次大规模实现竟然只是个噱头——一个第一人称聊天机器人,这有点可惜。但如果AI是面向任务的,它就有巨大的前景。史蒂芬·平克,学者
如果一位学者这么说,然后我把它作为引语写进博客文章里,那你就知道这是真的了。
聊天是与AI协作的主要方式,因为它是人们最先上手的东西。而聊天之所以能作为通用解决方案很好地运作,仅仅是因为我们不知道人们会尝试用AI做什么。
但作为用户,你知道自己要拿它做什么,而到了那个时候,聊天往往就是错误的UI。
亲爱的读者,你需要的是某种可定制的UI,你可以凭空把它变出来,以适合你当下所要做的事情的方式与AI协作(或者与它搏斗——随你便)。
实现这一点的方法有很多,但在GitHub Copilot应用中,这被称为canvas。
canvas是一个小型全栈应用,运行在GitHub Copilot应用内部,没有浏览器外壳。智能体可以与这个应用的服务端部分通信,服务端也可以回传通信。所以你最终得到的是一个能做普通计算机程序所能做的一切、并且能与GitHub Copilot智能体双向通信的界面。
这听起来非常含糊其辞,而且我确实用了“双向”这个词,听起来像是直接从PowerPoint里搬出来的,所以让我们在实践中看看这个概念,看看我们能否用强大的canvas解决实际问题。
我们从一个简单的例子开始:用canvas创建一个四子棋游戏,让你可以在GitHub Copilot应用内与智能体对弈。
看我如何彻底碾压高推理模式下的GPT-5.6 Sol……
好吧。但我确实在无推理模式下击败了GPT-5.6 Luna,所以……听着……四子棋可是个难玩的游戏!!
构建一个canvas就像开口要它一样简单……
创建一个新的canvas,使用四子棋游戏来演示用户与canvas交互的能力、canvas与智能体对话的能力,以及智能体控制canvas的能力
GitHub Copilot应用知道canvas是什么,所以我们不需要再多做解释。
现在,因为这些canvas实际上是全栈应用而不只是网页,它们可以调用第三方API,没错,但它们也可以在你的机器上本地执行代码。
例如,这里有一个Winget的UI,可以在注册表中浏览软件包,还可以管理我的本地软件包,包括安装和卸载。
这里没有AI,但这正是重点。
当聊天是主要界面时,它会鼓励你用智能体去做一切事情。这往往纯粹是浪费token。让智能体构建一个工具、使未来所有交互都免费,几乎总是比把智能体本身当作工具更好。别再让GPT-5.6 Sol Max去“暂存并提交”了。(我知道你会这么做。因为我也做过。别拿token羞辱我,我的自尊心很脆弱。)
另一个很好的例子是:与其用聊天让智能体对你的SQLite数据库做各种事情,不如弹出一个canvas,然后,你懂的,自己动手做。
我是说,你甚至可以在这里拥有智能提示。为什么不呢?现在是2026年,AI是个魔法盒子,你想让它做什么它就做什么。
这难道不令人愉快吗?
偶尔写点SQL挺好的。我说的是偶尔。放轻松。
或者,既然你能把Windows Live Writer从坟墓里挖出来,为什么还要用纯Markdown写你的Jekyll博客文章呢。
好吧,这些都是有趣且略有用的例子,但当你用自定义UI来自动化开发工作流时,它的价值就清楚得多了。
我不会告诉你该怎么生活,但我与智能体协作的流程大致是这样的……
这很简单,但其中每一步都需要我坐在键盘前进行交互、查看原型、引导并在步骤之间切换。
但问题在于。这个流程的大部分环节我其实并不需要在场。智能体有能力研究并生成原型,然后在我可以审阅时通知我。使用智能体的目标始终是尽可能把自己从循环中移除。但这很难,因为当你只有一个聊天框时,并不清楚该怎么做。
下面是一个完整示例,展示如何用canvas自动化你自己的流程,按你的意愿或多或少地把自己从循环中移除。
我不是说你应该照搬这个流程,也不是说这是与智能体协作的完美范例。我是说,它也许是。它很可能就是。让我们问问AI……
天哪。
说正经的,我确实认为被聊天UI框住可能正在拖累我们所有人。这让我们难以弄清楚如何解决实际问题,因为当你唯一的交互方式是一个textarea时,该怎么做完全不明显。
今天就试试canvas吧。有些东西,比如SQLite canvas,你可以一次搞定。工作流那个花了大半天才把设计和自动化弄对。
但我认为你会发现,当你……等等……跳出聊天框思考时,你能用AI走得更远。