Heidi Labs
GitHub TrendingGitHub Trending 项目约 15 分钟6,047 字

Macro:团队一体化工作空间

本文目录

Macro 是面向你和团队的一体化工作空间。它把邮件 + 消息 + 文档 + 任务 + 智能体 + CRM 统一到一个快速界面中,并共享团队级记忆。工作空间中的所有内容都通过 @ 链接相互关联、可被搜索,因此你的团队(以及你的智能体)无需再切换工具。

为什么是 Macro#

我们构建 Macro,是因为我们想要一个属于自己的初创公司的单一操作系统。市面上有很多优秀的软件产品,我们全都用过——Slack、Linear、Notion、HubSpot 和 Superhuman——但它们无法作为一个系统协同工作。当我们将上一个创业项目扩展到约 20 人时,问题开始出现:每个团队都有了各自的工具,整个公司靠 MCP 和 Zapier 勉强维系。公司变得不可计算,一片混乱。

Macro 是对工作软件的一次彻底重新设计,从底层开始就作为一个单一系统构建。

由我们在纽约和多伦多设计,团队约 15 人内部试用(dogfooding)了两年。使用 SolidJS 和 Rust 构建,以获得速度与可靠性。我们专注于打造一款任何小型公司,或大公司内的小团队,都能用作其“操作系统”的产品。

功能#

Macro 由多个“块”(blocks)组成,这些块被设计为模块化、可扩展,并能像乐高积木一样协同工作。对于每个块,我们都研究了最优秀的前作,并努力做得更好。

每个界面都是为其职责专门打造的,而不是由通用块原语组合而成——但它们都共享同一个后端;文档与任务之间、频道消息与邮件之间的交叉引用,都以双向图(bidirectional graph)的形式原生存储。

块文档功能
邮件文档 →多账户统一收件箱、键盘快捷键和共享收件箱。Gmail。
消息文档 →为专注的技术讨论而设计的频道和私信。
任务文档 →受 Linear 启发的任务,与频道、邮件和智能体紧密集成。
文档文档 →实时协作、基于 CRDT 的 Markdown 原生文档,支持 @提及。
画布文档 →2D 白板,可嵌入指向任务、文件和邮件的 @链接。
智能体文档 →统一的团队级记忆,可以代表你采取行动。
通话文档 →录制、转录并记录到团队记忆中,供智能体使用。
文件存储文档 →从邮件和频道自动导入,完全可搜索。
拉取请求文档 →关联到任务,可嵌入频道,可供智能体使用。
CRM文档 →客户和联系人对象、自定义属性、邮件同步、数据充实。

多个带优秀 AI 工具的邮箱,集成 CRM#

Macro Mail 的灵感来自 Superhuman 键盘优先的界面,并加入了几个关键特性:

  • 多账户。在同一个收件箱中分拣你所有的 Google 账户,使用相同的标签和共享系统。也可以分别处理。
  • 统一收件箱:邮件、消息、@提及和待办任务都在同一个列表中。使用 j、k 和 e 导航所有内容。
  • 更好的 AI,配备专为跨收件箱工作而设计的工具/MCP 接口,帮助你的智能体更准确地检索信息。例如,我们提供统一的搜索工具,让智能体直接搜索所有文件附件 PDF(从邮件中解析出来),而不是先拉取邮件线程再取附件。你还可以直接在 AI 聊天中起草、编辑和发送邮件,无需打开邮箱。
  • 多任务能力——Macro 内置窗口管理器,可创建 3 个以上分屏(随显示器尺寸扩展),让你在查看历史邮件的同时起草新邮件。
  • 公司/联系人对象。Macro 原生具备 CRM 能力,因此你可以用 cmd+k 跳转到某个联系人,例如 tim@acme.com,查看你与这个人之间的所有邮件;也可以跳转到公司,查看你团队每个人与该公司所有人之间的所有邮件和文件,例如 @acme.com。所有这些都能在邮件界面内完成,无需打开 HubSpot 或 Salesforce 这类笨重的 CRM。按联系人或公司聚合的邮件信息也提供给智能体使用,使它们能更好地处理 CRM 类查询和操作。

Macro Mail 与频道、文档、任务和代码位于同一个界面。从任意邮件出发,点击“task”即可创建一个关联任务,例如为工程师创建一张来自客户支持邮件的工单。可以在文档中 @提及邮件,例如在 Todos.md 中写入 @Re: Contract Signature.eml。在 Macro 中,你的邮件与所有工具、你的团队被纳入同一个权限系统:只需点击“共享”,就能把邮件分享到任意私信或频道——无需截图。

邮件文档 →

专注技术讨论的团队聊天#

Macro Chat 被设计得比 Slack 更专注。前几条回复会内联显示,其余则折叠进线程,因此繁忙的频道也能保持可读。线程具有独立权限,你可以通过复制链接在不同频道间共享线程。所有内容都存储在双向图中,因此任务会 @链接到创建它的消息,客户支持邮件会与支持频道关联,CRM 记录在消息中被讨论时也会更新,等等。核心理念是:(i)消息应当成为中心,任务、邮件、文档和内容管理都以轻量方式围绕它构建,智能体应当像人类用户一样成为一等公民;(ii)消息需要更专注、更可读,以适合技术对话,而不是变成一场场上下文丢失、进展与噪音难以区分的混战。

消息文档 →

围绕聊天构建的任务管理#

Linear 最近发布了一份报告,称问题追踪(issue tracking)已经死了。我们同意这一点,但更强的说法是:问题追踪从来就没有真正奏效过,至少对我们而言如此。我们确实努力尝试过,并责怪自己,但在与其他公司交流后才发现,没有人是在“正确地”使用他们的问题追踪器。如果情况如此,那么问题就在于工具的设计,而不是使用它的公司。

传统问题追踪器或项目管理工具的核心问题是它们会过时。它们过时的原因是:(i)它们与团队聊天中真正发生对话的地方(例如 Slack、Macro、Discord 等)是分离的系统;(ii)除了追踪工作之外,它们并没有增加多少额外价值。它们是一件苦差事,短期有成本,只承诺长期收益。相比 2D 白板,它们过于僵硬、过于主观,也不符合你的项目实际运作方式。

解决方案并不是完全放弃追踪。我们试过,那只是另一种形式的混乱。我们找到的解决方案是轻量级问题,与频道和私信紧密耦合,让问题追踪自然发生在对话本身所在的地方。

在 Macro 中创建任务很容易。在可能的情况下,创建的任务会与创建它的上下文(例如一封客户邮件)双向链接,因此完整链条——“我们为什么做这件事” → 任务 → 智能体 → 拉取请求——都可以在一个系统中审计。

从邮件创建任务:

  • 在任何地方通过 c t
  • 在 Markdown 文档中使用 /task
  • 选中任意 - [ ] 项目符号并点击“Task”
  • 在任意频道或私信中 @Macro 创建任务
  • 在任意智能体聊天中
  • 通过外部 MCP、API 或 SDK

任务文档 →

由 CRDT 驱动的 @链接 Markdown 文档#

我们希望所有内容都在一个 Markdown 编辑器中完成,无需切换工具。

  • 原生 Markdown 兼容,支持批量导入/导出(参见“文件优先于应用”范式)
  • 借助 CRDT 和 Cloudflare Durable Objects 实现实时协作,感觉就像在同一台电脑上编辑。编辑几乎即时到达,而不是像 Google Docs 那样一顿一顿地出现
  • 版本控制:历史记录和分叉,配有简洁的 UI 用于拖动查看历史。目前仍是 v1,要更接近 git 还有很多工作要做,或者我们最终可能会加入 git 兼容性
  • 离线编辑与协调
  • @链接到工作空间中的所有内容:邮件、文档、任务、消息、频道、公司、联系人等。像 Notion,但支持多模态
  • 移动端友好,可在我们的 iOS 应用或网页上使用(Android 应用即将推出)
  • 智能体原生编辑,由一群作为对等节点、像人类协作者一样在 CRDT 协作系统中工作的智能体驱动。参见 Wolf 关于此事的技​​术博客。可通过 MCP 或内部智能体使用

智能体可以编辑打开或关闭的文档。智能体编辑的一个有趣用例是维护团队上下文。例如,我们有一个 Macro 自动化每天运行,更新办公室台球游戏的 Markdown 文档。它会扫描所有频道,看是否有人今天赢了,然后更新文档。如果有人已经编辑过文档,它能知道并放弃更新。冲突由 CRDT 协作系统原生处理。

文档 →

自我保持更新的 CRM#

独立 CRM 的问题与任务追踪器相同:它并不保持最新。CRM 只部分反映现实,因此如果你想了解某笔交易的最新状态,仍然得给 AE/SDR 发消息询问上下文。CRM 也过于僵硬且闭源,而在 Airtable/Notion 中 DIY 的 CRM 又无法提供按公司/联系人/交易聚合邮件这一 CRM 的核心功能。我们考察了所有 CRM,包括新的 AI 原生 CRM,虽然它们设计得不错,但从结构上就注定会随着时间推移而失效。

Macro 的解决方式是把 CRM 与团队聊天和邮件放在一起,而不是另设一个系统。当你在消息中 @提及某个公司记录时,你的团队可以点击该记录查看最新情况——这比先导航到 CRM 找到记录、再回到 Slack 粘贴进去快得多,而速度上的差异会带来完全不同的体验。其次,@提及公司/联系人会在该消息与记录之间创建双向链接,因此之后你可以从记录回溯发生过的对话。这解决了我们在 Attio/HubSpot/Salesforce 上遇到的核心问题:关于交易真正重要的对话并不发生在 CRM 里,而是发生在消息中。Macro 把这变成一个特性,而不是让你因此感到自己缺乏条理。这不是你的错,是 CRM 的错!

除了上一段所述内容,我们并未对 CRM 的核心理念进行创新。这些本不该有多么新奇:

  • 看板视图和可自定义的交易阶段、列表视图、保存的视图、可共享的视图、个人和团队视图等
  • 公司上的“备注”实际上使用与频道/私信相同的系统,因此你可以 @提及并做所有你在频道中预期能做的事。基本上,每笔交易都会自动拥有自己的频道,并固定在该交易记录上
  • 在任意备注、消息、任务、拉取请求等中 @提及公司或联系人,即可在记录与该对象之间创建双向链接。例如,从一项工程任务中 @提及某家公司,以记录他们的请求。一切都会串联起来

CRM 文档 →

智能体与统一的团队级记忆#

由于 Macro 将团队上下文放在同一个数据库中,它处于独特的位置,可以提供具备业务全部运营上下文的团队级记忆。我们每天都通过 cron 任务做到这一点。你的记忆会根据团队对话、私信、发送和接收的邮件、创建和完成的任务等更新。所有内容会在一次处理中综合起来,而不是分散进行,并与你之前的记忆结合,形成新的记忆输出。最终结果是:

  • 相比只从以往聊天中构建记忆的聊天机器人,Macro 对你正在做什么、关心什么拥有最好的记忆
  • 该记忆可通过 MCP 提供给外部智能体,也可通过模型选择器提供给任何 AI 模型(OpenAI、Google、Anthropic 等),实现最大可移植性
  • 记忆以 Markdown 明文存储,你可以随意导出。要手动更新,只需让 AI 记住某些内容/更新你的记忆

团队记忆非常方便。例如,我拍了一张自己在纸质笔记本上写的一些功能创意的截图,然后让智能体创建工单并分配给合适的工程师,它完美完成了任务,而且完全没有使用任何运行时工具。

记忆并不打算涵盖一切。Macro 还提供工具/MCP 接口,几乎 100% 覆盖你在 Macro UI 中能做的事情,因此你的智能体不会像在大多数 SaaS 中那样受到能力限制。MCP 也没有速率限制。

智能体文档 →

你的编程智能体也可以使用 Macro。把 Claude Code、Codex 或任何 MCP 客户端指向你的工作空间:

claude mcp add --transport http macro https://mcp-server.macro.com/mcp

参见 MCP 设置和智能体 recipes,了解连接后它们能做什么。

一切如何协同工作#

如上所述,每个块都被设计为同类最佳。我们精心设计了 Chat、Docs、Email、Agents 等每一个产品,让它们在单独使用时都能超越你的现状。但真正精彩之处在于它们如何结合在一起,如何做到大于各模块之和。

  • 双向 @链接。在消息中 @提及文档,双方都会知道彼此的存在。你的工作空间变成一张可以双向导航的上下文网络。
  • 基于频道的权限。你在频道中 @提及的任何内容都会自动共享给频道成员。加入频道即获得访问权限,离开即失去权限。无需反复申请权限。
  • 统一记忆。智能体记得整个团队在邮件、消息、任务、文档和通话中正在做什么,而不仅仅是你自己的聊天历史。每晚刷新。
  • 一个收件箱。邮件、频道消息、任务分配、@提及和智能体回复都汇聚到同一个地方,并分为“信号”和“噪音”。全程键盘优先。

深入阅读:核心概念涵盖块、提及、属性和权限;FAQ 涵盖对比、许可和自托管。

使用托管应用#

注册并连接你的 Gmail 或 Google Workspace 账户。Macro 可在任何现代浏览器中运行,手机端有 iOS 应用。入门指南会带你从全新账户走到可用配置,大约需要 15 分钟。从 Notion、Slack、Superhuman 或 Linear 过来?参见“切换到 Macro”。

本地运行#

要针对托管服务运行前端,或运行本地技术栈,请遵循“在本地运行”指南。

要贡献代码,请参见 CONTRIBUTING.md。

目录结构#

macro/
├── apps/
│   ├── web/        SolidJS 客户端 — 浏览器、Tauri 桌面端、移动端
│   └── docs/       docs.macro.com
├── services/       42 个可部署服务、worker 和 Lambda 处理程序
├── crates/         167 个 Rust 库 — 领域逻辑、模型、数据库客户端
├── packages/       共享 TypeScript — collaboration、lexical-core、loro-mirror
├── infra/          Pulumi 定义
├── docker/         本地 Compose 栈
├── nix/            固定版本的开发 shell 和构建输入
└── tooling/        仓库脚本和代码生成器

服务遵循六边形架构:入站适配器、带端口的领域核心、出站适配器。docs/development/style-guide.md 中有相关约定,CONTRIBUTING.md 涵盖 PR 流程。

安全#

企业级安全。对模型提供商零数据保留,包括不会用客户数据训练模型。通过 SOC 2 Type II 认证。我们欢迎负责任的安全报告,并根据严重性和影响支付赏金。请将报告发送至 security@macro.com。

许可证#

Macro 完全开源——不是“开放核心”——采用 GNU Affero 通用公共许可证 v3.0。详见 LICENSE.txt。

你可以根据 AGPLv3 的条款自行托管 Macro;FAQ 涵盖相关事项。如果你想在另一种许可证下基于 Macro 构建,请联系 licensing@macro.com。如需托管或商业合作,请联系 self-host@macro.com。

社区#

有想法、想贡献,或者想参与 Macro 的开发?

  • 功能请求:contact@macro.com
  • 贡献:参见我们的贡献指南
  • 招聘:teo@macro.com

在 GitHub 上给我们加星#

如果 Macro 让你感兴趣/对你有用,请向上滚动并给仓库加一颗星(滚动到本页顶部 -> 点击右上角的 Star)。星标是大多数用户了解 Macro 的方式,因为它能让我们在 GitHub 搜索和趋势页面中排名更高。