这两天在GitHub上闲逛,翻到了一个项目,叫Cowart。
坦率的讲,一开始我是被名字吸引的。Cowart,牛画?奶牛艺术????我也没太搞明白这名字啥意思。点进去一看,好家伙,这是一个给Codex加无限画布的插件。
我说一下这个事情为什么让我兴奋。
你可能知道Codex,OpenAI出的那个编程Agent。说实话这玩意已经很猛了,你跟它说句话,它就啪啪啪给你写代码,改bug,跑测试,一气呵成。但有一件事我一直觉得别扭。
就是它,始终活在文字里。
你跟它聊天,是文字。它给你写代码,是文字。它给你解释方案,还是文字。你脑子里那些图,那些流程,那些UI排版的想法,全得翻译成文字才能喂给它。
有时候我真的想画个图。
就像你在白板上随便涂两笔,画个框框,画个箭头,然后指着说,你看,这块应该这样连过来。人类几十万年就是这么交流的,画图是我们最本能的表达方式。
但是AI编程工具,一直没有这个能力。
直到我看到了Cowart。

Cowart做的事情,说起来其实不复杂。它基于tldraw,在Codex里给你开了一块本地的无限画布。你可以在上面画画、标注、贴图,然后让Codex看懂你画的东西,根据你的标注来生成或者修改图片。
你可能会想,这不就是一个画板嘛?
不是。
关键在于,这块画布跟Codex是打通的。
我用了一下,发现它有三个核心玩法,一个比一个骚。
第一个,打开画布。
你在Codex里说一句,Open the Cowart canvas for this project。Cowart就会在本地起一个服务,默认地址是127.0.0.1:43217,然后浏览器自动弹出来一块tldraw的无限画布。
这块画布就是你的了。想画什么画什么,想拖什么拖什么。而且所有数据都存在你自己项目的canvas目录下面,不是存在什么云端,不是存在插件仓库里,就是老老实实存在你本地硬盘上。
这个设计我很喜欢。
怎么说呢,现在太多工具恨不得把你的所有东西都搬到云上,你画根线都得先登录。Cowart反过来,你的数据就是你的数据,就在你项目文件夹里躺着,你随时可以翻出来看,随时可以打包带走。

第二个,在画布上生成图片。
这个就有意思了。你在Cowart的画布上创建一个AI image holder,就是先画一个占位框,选中它,然后跟Codex说,Generate a new image into the selected Cowart AI image holder。
Codex会读到你选中的那个holder,按它的尺寸和比例生成一张图片,然后直接插到holder里面。
你想想这个流程。以前你要让AI生成一张图,得打开ChatGPT或者别的什么,描述半天,生成完了再截图保存,再拖到你的项目里。现在不用了,画布就在旁边,holder就在那里,一句话,图就来了。
而且这个holder还支持尺寸控制。你可以调宽高,可以锁定比例,还有一堆常用预设比例可以直接选。v0.1.3版本刚加的这个功能。

第三个,也是最让我「卧槽」的,根据标注图生成新图。
这个玩法是这样的。你在画布上放一张图,然后在图上做标注。画个箭头指一下,写几个字说这里要改,圈一块说这块不对。然后截图,把标注截图发给Codex,跟它说,Use my Cowart annotation screenshot to generate a clean revised image beside the original。
然后Codex会读你的标注和箭头,理解你想改什么,生成一张去掉标注痕迹的干净新图,放在原图旁边。
原图和标注都不会被动。
我当时试这个功能的时候是真的愣了一下。。。
因为这件事的厉害之处不在于AI能改图,而在于整个交互流程。你想想,以前你跟AI说「把这张图的左上角改一下」「那个按钮太大了往左移」,全靠文字描述,AI经常理解错。现在你直接在图上画箭头、圈范围、写批注,AI看图就懂了。
这跟设计师之间的协作方式是一模一样的。你给同事一张稿子,他拿红笔在上面圈圈改改递回来,你一看就懂。Cowart把这个过程搬进了AI编程的工作流里。
太牛逼了。

说到这,顺带聊一下Cowart背后的技术。不是我想显摆什么,是这玩意确实有几个设计细节挺值得琢磨的。
一个是tldraw。如果你没听过这个项目,它是一个开源的无限画布库,可以理解为网页版的Figma白板。很多画布类产品都是基于它做的,Cowart也是。tldraw本身就很能打,支持自由绘制、图形、文字、图片,还能多人协作。Cowart在它上面做了一层封装,加了AI图片生成和MCP工具集成。
再聊MCP。MCP全称Model Context Protocol,是Anthropic搞的一个标准协议,让AI可以调用外部工具。Codex支持MCP,所以Cowart就写了自己的MCP工具,包括读取画布选择状态、插入图片到画布、保存到本地资源目录这些操作。AI不需要你手动复制粘贴,它通过MCP工具直接跟画布交互。
还有一个我觉得特别聪明的设计,SSE实时同步。
Cowart在Vite的开发服务器上加了SSE广播接口。什么意思呢,就是你在画布上做任何改动,保存的时候服务器会主动推送变更给所有打开了的客户端。如果你同时开了两个浏览器窗口,一个窗口画的东西,另一个窗口实时就能看到。
这不是什么高深的技术,SSE这东西存在很多年了。但用在一个本地画布插件上,让画布有了实时协作的能力,这个思路很对。你可以在一个屏幕上画图标注,在另一个屏幕上看结果,不用手动刷新。
回到Cowart本身。
我翻了一下这个项目的commit历史,38个提交,作者叫ZHONG XIN,网站上写的是jiqiren.ai,机器人.ai。最新一个commit是今天的,就是6月25号。从第一个commit到现在也就不到一周的时间,迭代速度还挺快的。
v0.1.1加了本地磁盘持久化,v0.1.3加了AI图片尺寸控制和画布异常处理,今天的commit是在做代码重构,把画布快照逻辑提取到独立模块。你能看出来这个项目正在快速演进,功能在逐步完善。
说实话,一个不到一周的项目,能做到这个完成度,我觉得已经相当不错了。
安装也非常简单,把下面这段话发给codex:
请从 https://github.com/zhongerxin/cowart.git 安装 Cowart Codex 插件。
请 clone 仓库到 ~/plugins/cowart,确认 .codex-plugin/plugin.json 存在,
把插件加入 personal marketplace,先运行 codex plugin marketplace add ~,再运行 codex plugin add cowart@personal。
前段时间跟一个做设计的朋友聊天,他说他们团队现在用AI编程工具写代码,效率确实高了很多,但他总觉得哪里不对。他说他习惯在画板上推演方案,画流程图,画线框稿,但跟AI协作的时候这些全用不上,只能打字打字打字。
我当时觉得他说得对,但也没太当回事。
现在看到Cowart,我突然想明白了。他缺的不是AI,是一块跟AI打通的画布。
这就引出了一个更大的话题。
人类思考的时候,从来不是纯文字的。
你回忆一下,你想一个复杂问题的时候,脑子里浮现的是什么?是文字吗?不是。是画面,是空间关系,是流程,是结构。你要跟别人解释一个复杂方案,第一反应是什么?找张纸画个图。
从几万年前洞穴里的人画壁画,到会议室里的白板,到餐巾纸背面的草稿,人类最自然的思考方式就是可视化的。
但这波AI浪潮,基本上是绕开了这件事。ChatGPT是聊天的,Copilot是补全代码的,Cursor是对话式的,全是文字进文字出。我们花了几年时间,让AI学会了跟我们用文字交流,却在不知不觉中,放弃了自己最擅长的视觉表达。
这有点本末倒置。
我觉得Cowart代表了一个方向,虽然它现在只是一个小插件,做的也只是画布加图片生成这些事。但这个方向是对的,让AI开始适配人类的思维方式,而不是让人类继续适配AI的思维方式。
未来的AI编程工具,不应该只是一个终端里的聊天框。它应该有画布,有可视化,有空间感。你能在上面画图,AI能看懂你的图。你能在上面标注,AI能根据你的标注来改。你甚至能在上面推演整个系统架构,AI在一旁帮你补全和验证。
这才是我觉得AI编程该有的样子。
最后说一句,Cowart目前还是早期项目,v0.1.3,作者也才一个人在搞。但开源社区的好处就在这,好的想法会吸引到对的人。tldraw的作者Steve Ruiz之前说过一句话,大意是,画布不是用来展示信息的,是用来思考的。
我觉得这句话放在Cowart上也成立。它给你的不是一个画图工具,是一块让你跟AI一起思考的画布。
回到最开始那个问题,AI编程工具为什么始终活在文字里?
可能只是还没人想到要给它加一块画布而已。
现在有人想到了。
以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~
夜雨聆风