跳到正文

使用指南

Canvas:一起写文档和代码

对话旁边的一块编辑区。ta 写的长文档和代码放在这里,你和 ta 一起改;每次修改留一个版本,代码一键运行,选中一段加评论。

#它是什么

长一点的东西——方案、文章、笔记、一段脚本——放在聊天气泡里不好改:改一个词要整段重发,前后几版也对不上。Canvas 是对话旁边的一块独立编辑区,ta 把这类内容放进去,你和 ta 在同一份上来回改。

每个会话可以有好几份 canvas,每份是一篇 Markdown 文档,或一段带语言的代码。

  • 电脑上(桌面版、网页版):点对话标题栏的 Canvas 按钮,对话右边多出一栏;中间的分隔线可以拖。ta 在这个会话里新建 canvas 时,这一栏会自己打开。
  • 手机上:点对话页右上角的 Canvas 按钮,进入全屏的 Canvas 页。

#一起改

  • 文档在「预览」和「编辑」之间切换:预览按 Markdown 渲染(公式、表格、Mermaid 图都行),编辑是原文。
  • 代码直接编辑,等宽字体,关键字、字符串、注释有颜色。
  • 保存(按钮或 Ctrl+S)就是一个新版本。ta 改了而你没在编辑时,面板马上换成新内容;你正在改的时候,顶部会提示「ta 改过」,你可以载入 ta 的版本,也可以保存你的——两版都留在历史里,谁也不会覆盖谁。
  • 版本历史:每一版是谁改的、什么时候、改了什么说明都在,点开看,觉得哪版好就「恢复到这一版」(恢复也是一个新版本,之前的都还在)。
  • 复制、导出:一键复制全文,或导出为文件(文档是 .md,代码按语言是 .py、.js……)。

ta 每次回复前都看得到这个会话的 canvas:你改过的地方会特别标出来,所以你可以直接说「我把第二段改了,你看看」。

#运行代码

代码 canvas 的语言是 Python、JavaScript、TypeScript、shell 或 PowerShell 时,工具栏上有「运行」:

  • 代码在 ta 所在的那具身体上运行,和 ta 执行命令是同一个沙箱,看不到基座的密钥;
  • 超过一段时间没有任何输出就停下,一次最多 15 分钟,输出太长只留开头和结尾;
  • 结果显示在面板底部:退出码、标准输出、错误输出。代码保存的图片(比如 matplotlib 用 plt.savefig("图.png") 存下的图)也显示在这里;
  • ta 也看得到你运行的结果,可以据此改代码;ta 自己也能运行,结果你在面板里同样看得到。

运行属于「执行命令」这一类权限:在 控制 → 权限 里改成「每次询问」后,每次运行都会先问你。

机器上没有 Python 时,会如实告诉你,而不是假装运行了:Windows 的安装程序会装好 Python 3;Linux 用系统的包管理器装 python3;安卓 App 里暂时没有 Python。

#评论

  • 在编辑里选中一段(预览里选中也行,会在原文里找到那一段),点「评论选中内容」写下意见;不选就是评论整份文档。
  • 默认勾着「发给她」:评论作为对话里的一条消息发给 ta,带着被评论的那一段和它在第几行。ta 可以回复评论、标为已解决,或者直接把那一段改掉。
  • ta 也会主动对某一段加评论,或者给出编辑建议(「这句建议改成……」)。你点「采纳」,那一段就换成建议的文字。
  • 内容改了以后,评论会跟着它评论的那段文字走;那段文字被改掉了,评论标为「过时」。
  • 评论可以回复、解决、重新打开。ta 改了 canvas 或加了评论时,Canvas 按钮上有小红点。

#多具身体

canvas(全部版本、评论、运行结果)和对话一样,在 ta 的各具身体之间同步:在手机上写到一半,到电脑上接着改。运行生成的图片留在运行它的那具身体上,别处的面板会说明取不到。

#实现细节

数据表、复制规则与工具定义见源码仓库的 ARCHITECTURE.md §5.5;控制台用到的接口见网关接口。