用 /create-canvas 给 Copilot 搭一块共享画布:自定义工作流实战
原文:GitHub Blog - 《GitHub Copilot app for beginners: How to build custom workflows with canvases》(https://github.blog/ai-and-ml/github-copilot/github-copilot-app-for-beginners-how-to-build-custom-workflows-with-canvases)
GitHub 官方博客在 2026 年 9 月 25 日发了一篇面向新手的教程,讲 GitHub Copilot app 里的画布(canvas)怎么用自然语言搭出来。作者是 Kayla Cinnamon,核心观点是:过去是用户去适应固定界面,现在是界面围绕工作流生成。对做 Agent 应用的人来说,这背后是一个很值得研究的交互模式------人和智能体共享同一份可读写的状态。这篇把它的定义、提示词写法和实际步骤走一遍。
一、画布是什么
官方定义:画布也叫画布扩展(canvas extension),是你和智能体共享的一个可定制界面。它可以是看板、问题分拣板、发布检查表、仪表盘、表单,甚至是一张表格------形状由你的工作方式决定。
关键在"共享"两个字。原文强调画布是双向的:智能体可以在干活的过程中更新它,你也可以用按钮、卡片、筛选器等控件去改,就像一块实时共享的白板。
这一点和常见的"让模型生成一个静态产物"很不一样。产物生成完就固定了,而画布是一个持续存在的状态容器,人和智能体读写的是同一份数据。
二、写提示词的三个要素
创建画布不需要写代码或做设计,只要开一个 agent session,输入 /create-canvas 这个内置技能,然后用平实的自然语言描述你想要什么。官方明确了提示词必须覆盖三件事:
- 这块画布要支撑的工作流是什么。
- 在界面上,你希望能做什么操作。
- 智能体应该能做什么。
第三条最容易被漏掉,也最影响体验。如果只描述"我要看到什么",画布就只是个只读报表;把"智能体可以新增和更新条目"写进去,它才会真正参与进来。
三、实操:从一句话到一块可用界面
官方给了一个可以直接抄的示例提示词:
/create-canvas Create a release notes canvas for tracking new feature work completed across GitHub Copilot app sessions. Include controls for reviewing and organizing entries and allow the agent to add and update them.
原文是英文示例,中文场景直接写中文描述即可。拆开看,这句话正好覆盖了上面三个要素:"跟踪跨会话完成的新功能"是工作流,"包含审阅与整理条目的控件"是你的操作,"允许智能体新增与更新条目"是智能体的能力。
完整流程是这样:
- 打开一个 agent session。
- 输入 /create-canvas 技能。
- 用自然语言描述需求,覆盖三要素。
- 智能体自动构建界面,并在右侧面板打开------你不用写文件、也不用调布局。原文的说法是:一句描述就变成一个可用工具。
- 继续迭代。可以要求加一列、加一个筛选器、把打开的 PR 拉进来,或者把整块画布变成当天的检查清单,智能体会跟着改。原文提到没有固定的布局菜单,但只要能描述清楚一个工作流,通常就能把它变成画布。
- 创建完成后,画布会作为扩展保存下来,可以随项目共享给团队,也可以存成只属于你的个人扩展。
四、为什么它能双向同步
原文给了一个关键描述:当你点击按钮、更新字段或移动卡片时,画布的共享状态会立即改变,智能体看到的是同一个更新,不需要额外的发送或同步步骤。
也就是说,人在界面上的操作和智能体的工具调用,改的是同一份状态,而不是两条各自维护、事后合并的数据流。你甚至可以要求智能体调用画布自身的能力------也就是你能用的那些动作------去新增一条发布说明或移动一张卡片,然后看着变化出现在界面上。原文把这形容为:不是发一条指令等回复,而是一起把活推着走。
这种设计的好处是省掉了一层同步逻辑:不需要"人改完通知模型、模型改完再回写界面"的往返协议,状态本身就是通信媒介。
五、动手前可以先问自己三个问题
原文建议在建画布前先想清楚三件事,这三问基本等价于一次需求梳理:
- 我想看到什么信息?
- 我想直接改什么?
- 智能体应该能更新或做什么?
第二问和第三问的边界,决定了权限和分工。哪些字段人手动填、哪些由智能体写,如果一开始不说清楚,后面很容易出现两边互相覆盖的情况。
六、分享与复用
创建好的画布会作为扩展保存,可以随项目给团队共用,也可以保存成个人扩展只给自己用。社区已经把现成的画布扩展放到了 Awesome Copilot 上,包括发布说明工具、看板、问题分拣流程等,可以拿来直接改。
对一个刚上手的人来说,原文的建议很朴素:先小步试------打开一个 session,跑一次 /create-canvas,给你手头正在做的一件事描述一块简单的看板或检查清单。
七、给 Agent 开发者的三点启发
- 让界面成为共享状态,而不是输出容器。当人和智能体读写同一份状态时,协作协议的复杂度会明显下降。
- 描述需求时把"智能体能做什么"讲清楚。只讲展示、不讲操作,生成出来的往往只是一个静态报表。
- 从自然语言到可用工具,中间只隔一层技能封装。create-canvas 本身就是一个内置技能,这种"把模板化生成封装成技能"的做法,很适合搬到自己团队的工具链里。