sketch
一次部署,全团队共享的 AI 助手,支持 Slack/WhatsApp 多渠道,具备三层记忆隔离
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
一次部署,全团队共享的 AI 助手,支持 Slack/WhatsApp 多渠道,具备三层记忆隔离
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:Sketch 项目 Logo,Apache 2.0 开源协议
想象一下:你们团队 10 个人,每个人都在用各自的 AI 助手。工程师每天早上对着新开的 Claude 窗口重新解释代码库;运营人员反复把 SOP 文档复制粘贴进聊天窗口,因为 bot 根本不"认识"这份文档;创始人回答了一个客户问题,而他的 AI 助手五分钟前已经回答过同样的问题——只是存在另一个人的对话历史里。
这是 2024-2025 年 AI 落地过程中最普遍、却最少被公开讨论的场景。Canvas Labs(canvasxai)团队观察到了这个痛点——他们自己运营着一个 11-50 人的 AI 研发实验室,一直在探索 AI 与现实工作的交集。他们注意到团队成员在用个人 AI 工具时,存在大量重复性上下文浪费——于是决定自己动手解决。
Sketch 是 canvasxai 团队开源的企业级 AI 助手,核心理念是"一次部署,全团队共用,私有上下文各自隔离"。它不是又一个套了壳的聊天机器人,而是一个真正的多用户、多渠道、多层记忆的 AI 工作搭档。
你可以在 Slack 里 @mention 它,也可以在 WhatsApp 上给它发消息——背后是同一个 AI 助手,拥有相同的记忆体系。它为整个组织构建了一个共享的知识库,同时每个用户又保有自己独立的私有工作区(workspace)。
Canvas Labs 本身是一家成立于 2022 年的 AI 创业公司,目前有两款产品:Canvas AI(AI 工作流自动化平台,深度集成 3000+ 工具)和 Sketch(旗舰开源产品)。Sketch 的定位被团队形容为"面向企业的 OpenClaw"——将 OpenClaw 的多渠道、本地优先理念带入多用户组织场景。
Sketch 采用 TypeScript + Node.js 24 构建,代码组织为 pnpm monorepo:
packages/
server/ — 后端核心:HTTP 服务、消息队列、Slack 适配器、Agent Runner
web/ — 前端:React + Vite,提供 Web 管理界面
ui/ — 共享 UI 组件库
shared/ — 共享类型定义
Agent Runtime(大脑) 来自 Anthropic 的 Claude Agent SDK,这是 Anthropic 官方推出的 Agent 开发框架,提供了内置的工具调用(Tools)、会话管理(Sessions)和上下文压缩(Compaction)能力。Sketch 在此基础上封装了自己的 canUseTool 验证器,作为沙箱安全的第一道防线——每次工具调用执行前,必须经过路径和权限检查,Agent 本身无法突破这个边界。
数据库层 使用 Kysely 查询构建器,默认接入 SQLite(零配置,开箱即用),文档中明确标注了 PostgreSQL 升级路径。
消息网关 层面,Slack 接入采用 Slack Bolt(Socket Mode,无需公网 Webhook),WhatsApp 则基于 Baileys 库实现(puppeteer-free)。每个渠道有独立的内存消息队列,确保消息处理顺序一致,不会因跨渠道消息交错导致上下文混乱。
前端 使用 Hono 作为轻量级 HTTP 框架(非 Express/Koa),响应更轻量。配合 Vite 开发服务器,热更新时间极快。
每个用户在 data/workspaces/{user_id}/ 下拥有独立的文件目录。Workspace 隔离通过两重机制保证:
canUseTool 验证所有文件路径操作,Agent 无法访问他人目录buildSystemContext() 在每次对话开始时注入用户专属上下文Channel(Slack 频道/WhatsApp 群组)也支持共享 Workspace——在频道里 @mention Sketch,该频道的所有成员共享同一个上下文空间和会话历史,解决了传统聊天机器人"对话碎片化"的问题。
这解决了"上传一次,全员共享"的企业协作需求,而不需要每个员工各自维护同一份知识库。
Sketch 内置了 Skills 目录(packages/server/src/skills/),允许组织管理员发布跨用户的技能包,类似于钉钉/飞书的机器人技能市场。例如可以将 ICP(理想客户画像)发现工具或 CRM 集成打包为组织级 Skill,所有成员自动获得,无需各自配置。Skills 支持通过 MCP(Model Context Protocol)接入外部工具生态。
项目源码中包含完整的 packages/server/src/mcp/ 模块,表明 Sketch 已原生支持 MCP 协议。开发者可以为自己的组织自定义 MCP Server,将内部 API、数据源或第三方服务接入 Sketch 的工具链。MCP 是 Anthropic 2025 年主推的 Agent 工具扩展标准,Sketch 紧跟这一生态趋势。
| 渠道 | 状态 | 特色 |
|---|---|---|
| Slack | 稳定 | DMs、频道 @mention、线程对话 |
| 稳定 | DMs、群聊、媒体文件(含图片 vision) | |
| macOS App | 开发中 | 原生桌面客户端 |
| WhatsApp Wati 集成 | 自托管可配 | 可通过 Wati 路由 DMs,Baileys 处理群聊 |
数据主权:100% 自托管,所有数据保存在自有服务器,不存在第三方数据泄露风险。数据库(SQLite/Postgres)存储经过哈希处理的密码、加密的 API 密钥和 WhatsApp 认证状态。
沙箱隔离:Workspace 边界由代码强制执行,Agent 进程在受限的文件系统权限下运行。Slack App-Level Token 和 WhatsApp 认证状态均加密存储。
自动化能力:packages/server/src/automation/ 模块和 workflows/ 目录表明项目已具备基础的 Workflow 自动化能力,可实现类似"消息触发 → Agent 执行 → 状态回写"的自动化流程。
Sketch 最大的工程亮点之一是极低的部署门槛。项目明确喊出"Single Node.js process. No Kubernetes thesis required"的口号。
本地开发仅需三步:
git clone https://github.com/canvasxai/sketch.git
cd sketch && pnpm install
pnpm dev
浏览器打开 http://localhost:3000,通过 Web 向导完成 Slack 配置、API Key 填写、管理员账号创建——全程无需编辑任何配置文件。
Docker 部署提供了完整的多阶段构建 Dockerfile:
生产部署推荐使用 systemd + Caddy(反向代理 + 自动 HTTPS),官方提供了完整的 sketch.service 模板和一键 Caddyfile 配置,数据目录按 ./data/ 集中管理,备份仅需一条命令。
Node.js 24 硬性要求是一大障碍。截至 2025 年底,Node.js 24 仍是前沿版本,多数 Linux 发行版默认仓库仅提供 Node 22 LTS。这意味着部署者需要手动安装 nvm/fnm,或在 Docker 环境中指定自定义基础镜像,增加了运维复杂度。
无 docker-compose 让习惯了一键 docker-compose up 的用户感到不便。Dockerfile 本身完整,但必须手动编写 docker-compose.yml 或通过 docker run 拼接参数。
WhatsApp 账号风险不可忽视:Baileys 实现依赖非官方 WhatsApp Web 协议,账号存在被封禁风险,尤其是高频使用场景下。官方也坦承这一限制,并提供了 Wati 作为企业级替代方案。
Skills 生态仍在早期:Skills 目录目前条目有限,官方提供的超级能力(superpowers)文档中仅有少数规格说明,生态丰富度不及 Zapier/Make 等成熟平台。
Sketch 代表了 2025-2026 年 AI 应用落地的两个重要趋势:
趋势一:从"个人 AI"到"组织 AI"的跃迁。2023-2024 年的 AI 助手市场以个人用户为主(ChatGPT、Claude、Poe),2025 年开始出现大量面向企业的 AI 助手平台。Sketch 的 Workspace 隔离 + 组织共享记忆模型,为这一跃迁提供了可参考的架构范式。
趋势二:多渠道 AI 的一致性体验。用户不再局限于单一 IM 工具——在 Slack 上开始一个任务,切到 WhatsApp 上继续,背景的 AI 上下文完全一致。这种"AI 跟随人,而不是跟随应用"的体验,正在成为 AI Agent 产品的标配能力。
截至 2026 年初,Sketch 在 GitHub 拥有 179 Stars、32 Forks,由 Canvas Labs 团队持续维护(41 个 open issues,活跃度高)。项目采用 Apache 2.0 许可证,适合企业内部门署。
本报告基于 GitHub 仓库源码(2026-07-18 采集)和官方文档撰写,数据以采集时为准。