lemma-work/lemma-platform

GitHub: lemma-work/lemma-platform

Lemma 是一个让人类与 AI agent 在共享工作区中协同完成结构化工作的开源平台,以 Pod 为核心承载表格、工作流、审批和应用。

Stars: 227 | Forks: 45

Lemma — where humans and AI agents work as one team **表格、工作流、审批以及你团队所依赖的应用。一个 pod —— 而不是一堆拼接代码。** ![License](https://img.shields.io/github/license/lemma-work/lemma-platform) ![Release](https://img.shields.io/github/v/release/lemma-work/lemma-platform) ![Build](https://img.shields.io/github/actions/workflow/status/lemma-work/lemma-platform/ci.yml) [![Docs](https://img.shields.io/badge/docs-lemma.work-blue)](https://lemma.work) [快速开始](#quickstart) · [Pod 内部](#inside-a-pod) · [为何选择 Lemma](#chat-is-not-where-work-lives) · [界面](#use-it-from-anywhere) · [编码 agent](#the-back-layer-for-your-coding-agents) · [文档](https://lemma.work) 网站 → **[lemma.work](https://lemma.work)**
## 兼容工具
Works with Claude Code
Claude Code
Codex
Codex
OpenCode
OpenCode
Cursor
Cursor
Bash
Bash
HTTP
HTTP
任何能运行 CLI 的设备都可以操作 pod。
## 聊天不是工作驻留的地方 AI 可以回答问题、起草回复并调用工具。但聊天记录并不是工作可以长久驻留的地方。 真正的工作会持续数天或数周。它有归属者。它有许多人和 agent 都需要读写的状态。它有必须等待人类决策的步骤,也有 agent 绝不应独自执行的操作。如今,这些工作要么被困在聊天滚动记录中,要么由数据库、工作流工具、认证层、UI 构建器和拼接代码拼凑而成。 Lemma 是缺失的那一块:**一个从第一天起就为这两类参与者构建的共享工作区。** - **人类** 可以获得应用、审批队列以及他们已经在使用的聊天工具。 - **Agent** 可以获得能够以原生方式读写相同状态的 CLI 和 SDK。 - **Pod** 承载着使其成为一个系统而非一堆连接器的表格、文件、工作流、权限和审批。 突破性的 AI 产品已经指明了这个方向。Gamma 将 prompt 转化为可编辑的演示文稿,而不是一份聊天记录。Cursor 将其工作以 diff 的形式落地到你的编辑器中。Granola 将会议转化为结构化的笔记。这里的形态处处相同 —— agent 在后台工作,而结构化的输出会落地到专用的 UI 中。Lemma 就是*你*工作的那种形态:agent 的输出是你表格中的一行,队列中的一个任务,一份等待你批准的草稿。 ## 本地优先,无锁定 - **Mac 应用。** 下载 Lemma,打开它,并在首次运行时选择:将所有内容保留在你的机器上,或连接到 **lemma.work** 云端。无论哪种方式都是相同的产品,你之后也可以改变主意。 - **你的机器。** 完整的 stack 在你的笔记本电脑上独立运行 —— 在任何安装了 Docker 或 Podman 的操作系统上只需一条命令。除非你主动将其连接到某处,否则你的数据永远不会离开本地。 - **我们的云端,随时为你准备。** [lemma.work](https://lemma.work) 运行着相同的开源 stack —— 适用于当你希望你的 pod 能被团队成员和界面访问,而无需自行托管任何东西时。 - **你的订阅。** 已经为 Claude 或 ChatGPT 付费了?Lemma agent 可以通过你本地的 **Claude Code 或 Codex 登录** 来运行 —— 无需单独的 API key,没有按 token 计费的账单。 - **你的 key,你的模型。** 或者引入任何 **兼容 Anthropic 或兼容 OpenAI** 的 key 或 endpoint —— 云计算提供商、自托管的 gateway,或是兼容 OpenAI 服务器背后的本地模型。Runtime 配置文件是针对每个 pod 设置的,因此不同的 agent 可以在不同的模型上运行。 - **你的代码。** 核心部分是 [AGPLv3](LICENSE);SDK 和 CLI 为 [Apache-2.0](LICENSES/Apache-2.0.txt)。 ## 快速开始 **最简单的方法 —— 与你现有的编码 agent 配合使用。** 在 **[lemma.work/start](https://lemma.work/start)** 注册,安装 CLI,并将 Lemma 的技能导入你的 agent: ``` uv tool install lemma-terminal lemma skills install # auto-detects Claude Code / Codex / OpenCode / Cursor ``` 现在你的 agent 可以构建并操作 pod 了。进行身份验证,创建一个 pod,然后开始工作: ``` lemma auth login lemma pod create my-team --with-starter # scaffolds a working starter (table + agent) and imports it lemma chat "what can you do in this pod?" ``` 要在 Lemma *内部* 运行你的编码 agent —— 从共享队列中获取任务,并通过 pod 流式传回 —— 请启动 daemon: ``` lemma daemon start # serves pod-assigned runs via your local Claude Code / Codex / OpenCode ``` **在本地运行 —— 两种方式。** - **Mac 应用。** 下载 Lemma,打开它,并在首次运行时选择本地或云端。 - **从源码 / 原始 GitHub。** 一条命令即可启动完整的 stack(Docker 或 Podman;安装程序可以为你设置 Podman): **macOS / Linux:** ``` curl -fsSL https://raw.githubusercontent.com/lemma-work/lemma-platform/main/install.sh | bash ``` **Windows** (PowerShell, 需要安装 Docker Desktop): ``` iwr https://raw.githubusercontent.com/lemma-work/lemma-platform/main/install.ps1 | iex ``` 这将安装 `lemma-stack` 工具,并在 `http://127-0-0-1.sslip.io:3711` 运行应用,在 `http://127-0-0-1.sslip.io:8711` 运行 API(文档位于 `/scalar`)。请使用 `127-0-0-1.sslip.io` 这个 host —— 它会被解析为 `127.0.0.1`,但登录是绑定到这个 host 的,因此 `localhost` / `127.0.0.1` 无法通过身份验证。你可以使用 `lemma-stack start|stop|status|logs|config|uninstall` 来进行管理。将 CLI 指向它: ``` lemma servers select local lemma auth login ``` 设置模型 key 和后端环境变量(存储在 `~/.lemma/local/config.toml` 中的 `[backend.env]` 下),然后重启: ``` # 必填 — 选择一个模型提供商(同时设置 type 和 key): lemma-stack config set LEMMA_DEFAULT_MODEL_TYPE anthropic_compat lemma-stack config set LEMMA_ANTHROPIC_API_KEY sk-ant-... # (或者 openai_compat + LEMMA_OPENAI_API_KEY / _BASE_URL / _DEFAULT_MODEL / _MODEL_NAMES — # 兼容 OpenAI、Fireworks、本地服务器以及任何兼容 OpenAI 的端点) # 推荐 — 启用应用连接器 / 集成: lemma-stack config set COMPOSIO_API_KEY lemma-stack restart ``` 请参阅 [`docs/installation.md`](docs/installation.md#configure) 获取针对各个提供商的完整配置指南。 请参阅 [`docs/installation.md`](docs/installation.md) 获取完整的环境变量列表和配置指南。 ## 从 pod 开始,而不是从一张白纸 Pod 是一个包含普通文件的目录 —— 表格、agent、工作流、权限、应用,全都在里面。这使得 pod 具有可移植性:你可以导出一个、编辑它、再把它导入回来。或者导入别人构建好的 pod。 ``` lemma pod export ./my-team # the whole system, as files lemma pod import ./my-team # ship it back — or to another machine ``` ## Pod 内部 Lemma 中的一切都存在于一个 **pod** 中 —— 这是一个为单个团队或流程量身定制的独立工作区。 | 基础组件 | 提供的功能 | |---|---| | **Tables (表格)** | 具备行级安全性的、类型化且可查询的业务数据。潜在客户、工单、任务、审批 —— 均可被 agent 读取,由 pod 管理。 | | **Files (文件)** | 用于记录结构无法涵盖的所有内容的 Markdown 记忆库 —— 偏好、操作手册、语音指南、笔记。支持全文检索、受权限范围限制,可由 agent 与表格一起进行读写。 | | **Agents (智能体)** | 具有特定角色、工具授权,并被限定访问特定表格、文件和连接器的 LLM worker —— 绝非对一切事物的模糊访问。 | | **Workflows (工作流)** | 混合了 agent、函数、决策、循环、等待和 **人工审批步骤** 的图表。可通过定时任务、webhook、表格事件、聊天或 API 触发。 | | **Functions (函数)** | 与 agent 并存的确定性逻辑 —— 验证器、状态转换、操作。并非所有事情都应该交由 LLM 推理。 | | **Permissions (权限)** | 面向人员 *和* agent 的角色:pod 级别的角色、表格授权、资源可见性、委派 token。 | | **Approvals (审批)** | 工作流中可以暂停、路由给特定人员,并根据其决策(在应用中或在 Slack 中)恢复的步骤。 | | **Apps (应用)** | 你的团队进行日常操作所依赖的操作员 UI,部署在某个 URL 上,基于相同的 pod API 构建 —— 可以是单文件 HTML 页面(无需构建步骤),也可以是完整的 React 应用。 | | **Surfaces (界面)** | Slack、Microsoft Teams、Gmail、Outlook、Telegram 和 WhatsApp —— 通过身份解析和对话链接连接到 pod 的 agent。 | ## 从任何地方使用 聊天是一扇门,而不是整栋建筑。 团队成员 **在 Slack 中** 批准了一笔退款。一次字段更新以 **WhatsApp** 语音备忘录的形式到达,并作为一条结构化记录落地。Agent **在 Gmail 中** 起草了一份客户回复,并在发送前等待人工确认。对话是前端界面 —— 而在其之下,所有这些操作都在读写相同的表格,通过相同的工作流运行,并遵循相同的权限限制。 目前已支持:**Slack、Microsoft Teams、Gmail、Outlook、Telegram、WhatsApp** —— 每个平台都具备 webhook 入口、身份解析和由 agent 发起的操作。Telegram 的 long-polling 和 Slack 的 Socket Mode 均为内置,因此本地设置在没有公共 webhook URL 的情况下也能正常工作。
Surfaces Slack
Slack
Microsoft Teams
Teams
Gmail
Gmail
Outlook
Outlook
Telegram
Telegram
WhatsApp
WhatsApp
无论你的团队在哪里工作,pod 都能随时介入。
这不仅仅适用于团队。一个由一名人类和几个 agent 组成的 pod —— 以 WhatsApp 作为前端入口,以表格作为记忆库 —— 就是一个真正能保存状态、在采取行动前主动询问、并且明天能从今天中断的地方继续的私人助手。 ## 你的编码 agent 的坚实后盾 你不必把 Lemma 当作你的前端入口。它完全可以仅仅是 **你的 agent 工作落地的地方**。 **将 Lemma 的技能安装到你已经在使用的 agent 中** —— Claude Code、Codex、OpenCode 或 Cursor —— 它就可以直接构建并操作 pod: ``` lemma skills install # auto-detects Claude Code / Codex / OpenCode / Cursor lemma skills install --target claude --all-skills # or pick a target and include extras ``` 技能文件位于 [`lemma-skills/`](lemma-skills/)。安装后请重启你的编码 agent,然后要求它构建一个 pod。 **或者在 Lemma 内部运行你的 agent。** `lemma daemon start` 会将你本地的 Claude Code、Codex 或 OpenCode 连接到 pod:它会从共享队列中获取任务,将其工作通过 pod 流式传回,并受到与所有人相同的审批限制。两个操作同一个 pod 的 agent 会看到相同的状态 —— 这是一个任务队列,而不是一个转瞬即逝的终端会话。 ``` lemma daemon start # your local agent serves pod-assigned runs lemma daemon status # pid, running state, log path lemma daemon stop ``` 任何 agent 也都可以直接通过 CLI 操作 pod: ``` lemma table list # inspect the data model lemma record update tasks rec_8f2k --data '{"status": "done"}' lemma agent run qualifier --input '{"lead_id": "..."}' lemma workflow start follow-up # pauses at human approval steps lemma chat "what's left in the queue?" ``` 如果你是在编码 agent 的会话中阅读这段内容:那个 agent 现在就可以操作一个 pod。 ## 与编码 agent 一起构建 因为 pod 本质上只是文件,所以构建 pod 正是编码 agent 已经非常擅长的工作:向你正在使用的 Claude Code、Codex 或 Cursor 描述你想要的系统,让它编写 pod 目录,然后将其导入。构建它的 agent 同时也可以测试它 —— 创建记录、运行工作流、与它刚刚定义好的 agent 进行聊天 —— 因为构建和操作使用的是同一个 CLI。 ``` lemma pod init my-team # scaffold a starter bundle to edit (or: lemma agent|table|workflow init …) lemma pod import ./the-pod-your-agent-wrote lemma apps deploy my-app ./index.html # deploy a no-build HTML app (or a Vite project dir) ``` Python 和 TypeScript SDK(包含 25 个以上的 React hooks)位于 [`lemma-python/`](lemma-python/) 和 [`lemma-typescript/`](lemma-typescript/)。想在其他地方生成你的前端?可以用 pod 作为后盾 —— TypeScript SDK 可以让任何应用直接拥有表格、agent、工作流和权限功能。 ## Repo 布局 | 路径 | 包 | License | |------|---------|---------| | `lemma-backend/` | FastAPI 后端、数据库迁移和基础架构 Docker Compose | AGPLv3 | | `lemma-frontend/` | Next.js 前端 | AGPLv3 | | `agentbox/` | 沙盒化的 agent 工作区管理器和 runtime 镜像 | Apache-2.0 | | `agentbox-client/` | 用于 AgentBox 工作区 API 的 Python 客户端 | Apache-2.0 | | `lemma-stack/` | `lemma-stack` —— 用于独立本地 stack 的安装程序和管理器 | Apache-2.0 | | `desktop/` | Tauri macOS 桌面应用(`lemma-stack` 监督程序的轻量外壳) | AGPLv3 | | `lemma-cli/` | `lemma-terminal` —— `lemma` CLI 和终端 UI | Apache-2.0 | | `lemma-python/` | `lemma-sdk` —— Python SDK | Apache-2.0 | | `lemma-typescript/` | `lemma-sdk` —— 适用于 Node、浏览器和 React 的 TypeScript/JavaScript SDK | Apache-2.0 | | `lemma-skills/` | 内置 agent 技能 | Apache-2.0 | | `docs/` | 安装和配置指南 | — | | `install.sh` | 单行引导安装程序 | — | 不使用 git 子模块 —— 所有的内容都是同一个 repo 中的普通目录。 ## 开发说明 如果你打算为平台本身贡献代码 —— 支持从源码进行热重载: ``` git clone https://github.com/lemma-work/lemma-platform.git cd lemma-platform make dev # run backend, frontend, agentbox with live reload make logs # tail backend logs make stop # stop dev app processes make stop-all # also stop dev infra ``` 运行 `make help` 获取完整的命令列表。开发 stack 运行在它自己专属的端口上 (前端 3710,后端 8710),因此它永远不会与已安装的 `lemma-stack` stack (3711/8711) 发生冲突。 仅针对后端的命令 `lemma-backend/` 中: ``` cd lemma-backend make test make lint make migrate ``` 请参阅 [`docs/installation.md`](docs/installation.md) 获取完整的配置指南, [`lemma-backend/README.md`](lemma-backend/README.md) 了解后端详情,以及 [`lemma-frontend/README.md`](lemma-frontend/README.md) 了解前端详情。 ## 许可授权 Lemma 平台采用双重许可模式: **AGPLv3**(服务端核心): - `lemma-backend/` —— FastAPI 后端 - `lemma-frontend/` —— Next.js 前端和操作员 UI 这些组件均采用 [GNU Affero General Public License v3](LICENSE) 授权。 如果你修改并通过网络(例如托管的 SaaS)提供该软件,你 必须按照相同的条款发布你修改后的源代码。 **Apache-2.0**(客户端开发者工具): - `agentbox/` —— 沙盒化的 agent 工作区管理器和 runtime 镜像 - `agentbox-client/` —— 用于 AgentBox 工作区 API 的 Python 客户端 - `lemma-stack/` —— 本地 stack 安装程序和管理器 - `lemma-cli/` —— `lemma` CLI 和终端 UI - `lemma-python/` —— Python SDK - `lemma-typescript/` —— TypeScript SDK - `lemma-skills/` —— agent 技能 这些组件旨在方便广泛地被嵌入、安装和修改,因此它们 仍然保持为 Apache-2.0 协议,并包含各自的 `LICENSE` 文件。 对于采购政策不兼容 AGPLv3 的组织,Lemma 提供 **商业授权和例外情况**。 商业授权例外消除了 AGPL 在采购上的阻力,同时保持了 核心代码真正的开源性质。 **商标:** Lemma 的名称、徽标和标志均为 Lemma 的商标,不受 软件许可协议的授权。你可以 fork 代码,但请不要冒用品牌。
标签:AI代理, 人机协同, 团队协作, 工作流, 文档结构分析, 生产力工具, 请求拦截, 逆向工具