关于 docs-mcp
docs-mcp 是 Tandem 提供的远程 MCP 服务,提供 Tandem 文档、安装指南、SDK、工作流及 Agent 设置帮助。Tandem 本身是一个运行时层,对 AI Agent 可访问的工具、数据、记忆和操作实施策略控制,适合平台与安全团队使用。该服务的说明信息来自 Tandem 的 README。
主要功能
- 01查询 Tandem 文档与安装指南
- 02提供 SDK 与工作流相关说明
- 03协助配置 Agent 接入 Tandem
- 04远程访问方式的 MCP 服务
适用场景
- 01让编码 Agent 查询 Tandem 的安装步骤
- 02为接入 Tandem 的 Agent 获取 SDK 使用说明
- 03协助团队配置 Agent 与 Tandem 的 MCP 连接
MCP 相关
该项目是远程 MCP 服务,向 MCP 客户端暴露 Tandem 文档与设置相关的内容。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://tandem.ac/mcpclaude mcp add --transport http ac-tandem-docs https://tandem.ac/mcp{"mcpServers":{"ac-tandem-docs":{"type":"http","url":"https://tandem.ac/mcp"}}}在 Cursor 中打开{"servers":{"ac-tandem-docs":{"type":"http","url":"https://tandem.ac/mcp"}}}在 VS Code 中打开{"mcpServers":{"ac-tandem-docs":{"type":"http","url":"https://tandem.ac/mcp"}}}{"mcpServers":{"ac-tandem-docs":{"serverUrl":"https://tandem.ac/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
13| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | 要返回的匹配文档页面的最大数量。 |
| query | string | 是 | 要搜索的 Tandem 问题、任务或关键词查询。 |
| audience | string | 否 | 可选的受众筛选条件,例如 developer、desktop user 或 operator。 |
| docs_ref | string | 否 | 文档频道或不可变引用。默认为 stable。仅在明确需要时使用 next、refs/<sha> 或 releases/<version>。 |
| engine_version | string | 否 | 可选的 Tandem 引擎版本提示。如果未提供 docs_ref,MCP 仍默认使用 stable,除非已配置匹配的版本化文档引用。 |
详细介绍
对 Tandem Hosted 感兴趣? 加入候补名单
Tandem
Tandem 在 AI Agent 与其使用的工具、数据、记忆和操作之间实施策略。
Agent 可以推理、起草并提出工作建议。Tandem 决定它们获准查看哪些内容、可以调用哪些工具、哪些操作必须暂停并等待批准、可以访问哪些记忆/上下文,以及要记录哪些证据。
当 Agent 接触真实的公司系统时,Tandem 就能发挥作用:文件、代码库、电子邮件、MCP 工具、客户数据、内部文档、生产工作流和长时间运行的自动化任务。
对于平台和安全团队而言,Tandem 是 Agent 系统的运行时控制平面:限定范围的工具访问、审批关卡、受权限控制的记忆、租户/资源边界和审计证据。
模型提出建议。Tandem 负责执行策略。
从治理角度来看,Tandem 在运行时管理委派给 AI Agent 的权限。
Tandem 的功能
- 运行具有持久状态的 AI 工作流,而不是仅基于对话记录执行。
- 限定每个工作流步骤中可见的内置工具和 MCP 连接器。
- 在执行前拦截超出运行时策略范围的工具调用。
- 对影响重大的操作暂停执行,等待人工批准。
- 控制一次运行可以检索哪些公司记忆和上下文。
- 在模型上下文窗口之外记录产物、工具事件、审批决定和审计证据。
简单示例
Agent 可以起草客户电子邮件,但不能发送。
Tandem 可以提供起草工具,同时隐藏或拦截发送工具,在审批关卡处暂停,只有在人类批准后才继续执行,并将审批决定记录在审计跟踪中。
Tandem 不是什么
| 不是这个 | 而是 |
|---|---|
| 聊天机器人封装 | 位于 Agent 和工作流之下的运行时层 |
| 仅仅是 Agent 框架 | 控制 Agent 工作流可查看和执行内容的策略层 |
| 仅仅是审批界面 | 通过审批这一受控关卡实施运行时强制执行 |
| 仅仅是大模型网关 | 管理工作流状态、工具、记忆、审批、制品和审计 |
| 扁平 RAG 系统 | 运行时范围内的记忆和绑定来源的检索 |
| 仅基于提示词的安全层 | 在模型之外实施强制执行 |
Tandem 将此称为 运行时权限控制:在模型之外实施授权、执行控制、审批、范围限定的记忆和审计。桌面应用、TUI、Web 控制面板、渠道和 SDK 等入口,都是同一引擎运行时的客户端。
- **由运行时管理的控制项:**运行、会话、记忆、上下文、服务商密钥、MCP 工具、审批、制品和审计记录都存储在模型之外。
- **受治理的工具执行:**内置工具和 MCP 连接器可按工作流步骤设定范围,并可为重要操作设置审批关卡。
- **感知租户的运行时:**托管模式和企业模式会在会话、运行、上下文运行、记忆、服务商凭据、MCP 密钥和事件中传递租户/主体上下文。
- **可部署在数据所在之处:**Tandem 可在本地、无头模式、托管环境或客户基础设施内运行。
- **不受服务商限制:**可使用 OpenRouter、Anthropic、OpenAI、OpenCode Zen 或本地 Ollama 端点。
Agent 意图 -> 运行时策略 -> 范围限定的工具/数据访问 -> 审批关卡 -> 制品 -> 审计跟踪
-> AI 运行时基础设施 | 企业就绪情况 | 运行时信任边界 | 欧盟 AI 法案就绪情况 | 合规入门包 | 通过 MCP 连接 Agent
Tandem 存在的原因
Agent 正在成为工作者。它们会读取公司上下文、调用工具、创建拉取请求、起草客户沟通内容、操作项目看板,并准备过去只在纯人工系统中处理的决策。
提示词不等于权限。系统提示词可以要求模型避免使用某个工具、跳过某个文件夹或等待审批,但模型不应成为安全边界。Tandem 将这些控制放在运行时中,因此工作流可以只授予 Agent 当前步骤所需的工具、记忆和操作权限,并拒绝范围之外的一切。
公司还需要集中式 AI 上下文,但不能是无差别访问。具有权限控制的公司记忆应了解公司的信息,但代表某个团队、租户、项目或用户行事的 Agent,只应检索获准使用的那部分信息。
Tandem 管控的内容
- 公司知识与记忆: 由运行时管理的记忆、知识空间和检索路径,围绕租户与工作区边界设计。
- 工具和 MCP 可见性: 按步骤限定的内置工具和 MCP 连接器工具;计划在企业部署中提供更广泛的调用前屏蔽机制。
- 工作流执行: 持久化自动化和上下文运行状态,而非脆弱的、仅依赖对话记录的执行方式。
- 人工审批: 运行时关卡会暂停运行、收集批准/返工/取消决定,并留下证据。
- 租户与工作区边界: 支持感知租户的会话、运行、上下文运行、事件、提供商凭据、MCP 密钥、记忆,以及用于资源范围和授权的契约词汇。
- 连接器凭据与密钥: 提供商和 MCP 密钥引用由运行时管理;随着这一层逐渐成熟,连接器源绑定为有范围限制的数据摄取提供通用契约。
- 制品与审计跟踪: 输出、验证结果、工具账本事件、审批决定和受保护的审计记录均会保存在模型上下文窗口之外。
核心用例
| 用例 | Tandem 提供的能力 |
|---|---|
| 需审批的电子邮件和工作流 | Agent 提出工作方案,Tandem 在执行操作前暂停运行,由人工批准或要求返工。 |
| 权限受控的公司知识库 | 公司记忆和知识空间,支持感知租户的检索及资源授权词汇。 |
| 受管控的编码 Agent | 编码器运行、工作树上下文、交接制品、审批节点,以及可审计的实现状态。 |
| 项目、冲刺和活动大脑 | 可跨会话和团队留存的长期上下文、任务、制品和记忆。 |
| 租户隔离的托管自动化 | 按租户划分范围的托管运行时记录、事件流、提供商凭据、MCP 密钥和记忆。 |
| 内部 Agent 和工具治理 | 用于控制哪些 Agent 可以查看哪些工具、执行哪些操作,以及留下哪些证据的控制点。 |
平台和安全团队为何关注
Tandem 专为需要在真实运营管控下运行 AI 工作的团队而设计:
- 运行时授权,而非提示词授权: 模型可以请求上下文或工具调用;运行时决定哪些内容可见、哪些操作可执行。
- 感知租户的记录: 在托管/共享模式下,会话、自动化运行、上下文运行、事件流、提供商凭据、MCP 密钥和记忆路径均携带租户上下文。
- 资源和授权模型: Tandem 对资源、主体、授权、数据类别和数据边界进行建模,以便运行时执行访问决策。
- 权限受控的记忆: 记忆和知识路径带有租户边界,让公司知识变得实用,同时避免成为无差别共享的内容。
- 可部署的运行时: 随着企业层逐渐成熟,同一运行时可在笔记本电脑上运行、作为无头引擎运行、托管运行,或部署在客户基础设施中。
- 可审计性: 审批决定、策略拒绝、提供商密钥变更、MCP 活动、工具账本事件、制品和受保护的审计记录,均可在聊天记录之外检查。
部署模式
Tandem 可在本地使用,并逐步支持更严格的公司部署:
- 本地桌面应用: 单用户桌面运行时,具有本地工作区范围、提供商配置和需审批的工具。
- 无头引擎: 使用
tandem-engine serve服务 SDK、控制面板、自动化和 CI/开发环境。 - 托管/私有托管: 托管部署使用传输令牌和签名上下文断言,实现感知租户的访问控制。
- 客户基础设施: 可部署在需要存放公司数据、连接器凭据和运营证据的位置。
当前状态
| 当前能力 | 企业版路线图 |
|---|---|
运行时身份验证模式:local_single_tenant、hosted_single_tenant、enterprise_required | 完整的 RBAC、OIDC、SCIM、SIEM 集成、SOC2 套件和企业身份策略桥接 |
| 面向托管/企业入口的租户上下文和签名上下文断言 | 私有企业 sidecar,采用失败关闭的策略授权 |
| 支持租户的会话、自动化运行、上下文运行、事件、编码器路由和记忆 API | 确保每条路径上的工件/导出完全隔离 |
| 提供方凭证和 MCP 密钥的租户边界 | 在调用大模型前完整屏蔽工具发现结果 |
| 记忆租户分区、租户范围的知识空间和资源范围的检索 API | 面向生产连接器数据导入的管理平台,支持实时外部数据源导入 |
| 资源访问控制契约类型和严格的上下文投影词汇 | 签名审批回执和符合审计要求的不可变回执链 |
| 审批关卡、待审批收件箱、渠道审批、工具账本事件和审计记录 | 将高级连接器隔离/撤销/轮换操作接入生产数据导入工作流 |
合规性与 AI 法案就绪情况
Tandem 帮助团队在人工监督下运行 AI 工作流,使用范围受限的工具,保留持久的执行证据,并控制受保护操作。对于受监管或安全敏感的部署,请先阅读 EU AI Act readiness brief,然后使用 Compliance Starter Pack 获取控制项映射、Article 50 透明度指南、部署者说明、Annex IV 文档模板以及局限性/责任矩阵。
30 秒快速入门
Web 控制面板
安装 master CLI,然后引导配置控制面板及其引擎服务:
npm i -g @frumu/tandem
tandem install panel
tandem panel init
tandem panel open
如果你想使用由引擎提供支持的浏览器控制中心,请选择此方式。
现在,对于本地安装,你可以打开 Settings -> Providers -> openai-codex,并选择 Connect Codex Account,通过浏览器登录,而无需粘贴 OpenAI API 密钥。
桌面版
- 下载并启动 Tandem:tandem.ac
- 打开 Settings 并添加提供方 API 密钥,或使用本地控制面板为
openai-codex连接 Codex 账户。 - 选择一个工作区文件夹。
- 输入任务提示词,然后选择 Immediate 或 Plan Mode。
可编辑应用脚手架
在你自己的文件夹中生成完全可编辑的控制面板应用:
npm create tandem-panel@latest my-panel
cd my-panel
npm install
npm run dev
如果你想自定义路由、页面、主题、样式或运行时行为,而不编辑 node_modules,请使用此方式。
MCP 辅助设置
如果你想让现有 Agent 帮忙安装或配置 Tandem,请先将该 Agent 连接到 Tandem 的 MCP 接口。MCP 文档说明了如何将你自己的 Agent 接入 Tandem,使其协助完成设置、配置和后续任务:
如果你只需要引擎运行时,可以让它仅在前台运行:
tandem-engine serve --hostname 127.0.0.1 --port 39731
其他入口
- TUI:
npm i -g @frumu/tandem-tui && tandem-tui - SDK:
npm install @frumu/tandem-client或pip install tandem-client
Codex 和 Docker 设置
- Codex 用户可以通过 tandem-codex-plugin 仓库连接 Tandem。
- 如需基于 Docker 设置 Tandem Agent,请参阅 tandem-agents。
开放核心与源代码可用架构
Tandem 以开发者为先,采用开放核心模式构建。我们相信,要信任 AI 运行时,就必须能够逐行审查执行路由器。
本地开发与评估: 宽松许可的 crate 和库(MIT OR Apache-2.0)可按其各自条款使用。每个分发的引擎二进制文件还包含源代码可用的 BUSL-1.1 组件,可免费用于评估、开发、测试、查看源代码、个人非商业用途以及非生产概念验证。
企业方案: 面向大规模组织部署的高级功能,例如企业身份联合、更丰富的策略执行、签名回执链、私有 Sidecar 执行、SIEM 导出和高可用性打包,属于规划中的企业功能,可能受商业条款或源代码可用条款管辖;如有声明,也可能适用 Business Source License 1.1(BUSL-1.1)。
许可边界: 对 BUSL-1.1 组件进行商业生产使用——包括内部生产使用、客户生产部署,以及托管、代管、SaaS、白标、嵌入式、OEM 或经销商服务——都需要从 Frumu LTD 获取单独的商业许可。具体到每个软件包的条款,请参阅 docs/LICENSING.md。
架构
flowchart TD
Human[Human operator or team]
subgraph Entrypoints["Entrypoints: clients, not authority boundaries"]
Desktop[Desktop app]
Panel[Web control panel]
TUI[Terminal UI]
SDK[TypeScript / Python SDKs]
Channels[Slack / Discord / Telegram]
end
subgraph Agents["Agents and models: propose, reason, draft"]
Workers[Agent workers]
Models[OpenAI / Anthropic / OpenRouter<br/>OpenCode Zen / Ollama]
end
subgraph Tandem["Tandem governed runtime: owns authority"]
API[HTTP/SSE API]
Tenant[Auth mode, tenant context<br/>and authority chain]
Projection[Authority projection<br/>resources, grants, data classes]
Runs[Sessions, workflows<br/>automations, context runs]
Gates[Human approval gates]
Policy[Tool and MCP policy]
Memory[Permissioned memory<br/>and company knowledge]
Secrets[Provider and MCP secrets]
Artifacts[Artifacts, validation<br/>and run evidence]
Audit[Audit trail and tool ledger]
end
subgraph Systems["Company systems and data"]
Workspace[Workspace files and repos]
MCP[MCP servers and connectors]
Data[Customer / company data]
Browser[Browser and external tools]
end
Human --> Desktop
Human --> Panel
Human --> TUI
Human --> SDK
Human --> Channels
Desktop --> API
Panel --> API
TUI --> API
SDK --> API
Channels --> API
API --> Tenant
Tenant --> Projection
Projection --> Runs
Runs <--> Workers
Workers <--> Models
Runs --> Gates
Runs --> Policy
Runs --> Memory
Runs --> Artifacts
Gates --> Audit
Policy --> Audit
Artifacts --> Audit
Policy --> Secrets
Policy --> Workspace
Policy --> MCP
Policy --> Data
Policy --> Browser
Memory --> Data
常见工作流
| 受管控的工作流 | Tandem 运行时的控制内容 |
|---|---|
| 评估供应商或策略风险 | 读取选定来源,起草带引文的材料,验证限制,并确保读取步骤不使用变更类工具。 |
| 需审批的邮件或更新 | 让 Agent 起草操作,在人工审批关卡暂停;只有记录了批准/返工/取消凭证后才继续。 |
| 执行代码迁移 | 跟踪编码器运行、工作树状态、已更改文件、验证、交接材料和审批节点。 |
| 管控外部 MCP 工具 | 按工作流步骤限定连接器工具的范围,要求提供具体工具证据,并按租户路径隔离 MCP 密钥。 |
| 具备权限控制的公司记忆 | 通过运行时管理的记忆和知识空间检索公司上下文,而不是把所有内容都粘贴到聊天中。 |
| 租户隔离的托管工作流 | 在托管/共享模式下,按租户分隔会话、运行、事件、凭证、MCP 密钥和记忆。 |
功能
受管控的执行
- 模型不是控制系统: 模型可以提出工作建议;Tandem 负责管理获准使用的工具、上下文、状态转换、审批和审计证据。
- 限定范围的工作流执行: Automation V2 节点可以携带内置工具和 MCP 连接器策略,让不同步骤具备不同的能力。
- 需审批的操作: 运行可在执行重要工作前暂停,等待批准/返工/取消决定,并在恢复后保留审批关卡记录。
- 状态持久性: 检查点、可重放的事件历史记录和物化运行状态,可在 API 超时和连接器故障后继续保留。
具备权限控制的记忆与公司知识
- 按租户分区的记忆: 基于向量的会话、项目、全局和文件导入记忆路径均带有租户范围。
- 知识空间: 可通过支持租户感知的 API 管理精选知识空间和条目。
- 运行时检索: Agent 通过运行时检索上下文,为实现具备权限控制的公司记忆提供路径,而不是将平铺的对话记录全部塞入上下文。
租户和工作区隔离
- 支持租户的记录: 会话、自动化定义/运行、上下文运行、事件流、提供商凭据、MCP 密钥引用、记忆和编码路由均携带租户上下文。
- 严格的上下文契约: 企业契约中对资源引用、范围授权、数据类别、主体和数据边界进行了建模。
- 保留本地行为: 桌面和开发工作流仍默认使用本地/默认的单租户模式。
MCP 和工具治理
- 支持 MCP 连接器: Tandem 可连接到 MCP 服务、同步工具,并将选定连接器工具限定为仅供工作流节点使用。
- 密钥隔离: 在托管/共享路径中,基于存储的 MCP 密钥引用会在解析前验证租户范围。
- 工具发现作为权限边界: 工具发现和 MCP 可见性受运行时策略管理;在模型调用前全面屏蔽未经授权的工具仍属于企业路线图规划内容。
人工审批关卡和审计
- 审批收件箱和渠道审批: 操作员可在运行时拥有的审批界面中批准、要求返工或取消。
- 持久化证据: 工具台账事件、关卡历史、制品、验证元数据和受保护的审计事件可保留在模型上下文窗口之外。
- 审计流: 已提供面向管理员的审计流和受保护的审计封装;不可变回执链和签名审批回执仍属于路线图规划内容。
多 Agent 编排
- 看板驱动的执行: Agent 通过确定性的状态领取任务、报告阻碍因素并移交工作。
- 具备记忆能力的工作者: Agent 可通过运行时路径使用先前运行上下文、项目记忆和知识空间。
- 带版本的协作: 引擎强制执行的锁可防止多个 Agent 同时修改同一代码库。
本地和可自托管控制
- MCP 工具连接器
- 计划的自动化和例程
- 提供 HTTP + SSE API 的无头运行时
- 适用于 Windows、macOS 和 Linux 的桌面运行时
- API 密钥在本地 SecureKeyStore 中加密(AES-256-GCM)
- 本地 Codex OAuth 凭据由引擎持有;浏览器 UI 可发起登录,但不会持久化刷新令牌
- 工作区访问权限仅限于你明确授权的文件夹
- 写入/删除操作必须通过受监督的工具流程审批
- 默认拒绝访问敏感路径(
.env、.ssh/*、*.pem、*.key、密钥文件夹) - Tandem 本身不会收集分析数据或进行回连遥测
输出和制品
- Markdown 报告
- HTML 仪表板
- PowerPoint(
.pptx)生成
企业路径和路线图
Tandem 已具备在托管和自我管理环境中开展受治理 AI 工作所需的运行时构建模块。下一阶段的企业功能将在这些构建模块的基础上强化身份、策略、审计导出和管理能力。
现已提供:
- 运行时身份验证模式,以及托管/企业级签名上下文断言验证。
- 支持租户的会话、运行、上下文运行、事件流、提供商凭据、MCP 密钥、记忆和编码路由。
- 用于描述资源、范围、主体、授权、数据类别和数据边界的资源访问控制契约词汇。
- 审批关卡、受保护的审计记录、审计流、工具台账事件和运行时制品。
- 连接器源绑定契约,使用密钥引用、资源引用、数据类别、隔离/撤销/轮换词汇,以及带范围的记忆块引用。
计划中的企业功能:
- 完整的 RBAC、OIDC/SSO、SCIM、SIEM 导出、SOC2 套件和企业管理工作流。
- 私有企业 Sidecar 和策略桥接,并在必需模式下执行故障关闭。
- 签名审批回执、不可变回执链,以及更全面的审计/导出隔离。
- 在模型调用前全面屏蔽工具发现结果。
- 完整的外部连接器接入管理平台和生产级接入流程。
编程式 API
SDK 是 API 客户端。它们不会捆绑 tandem-engine。
你需要先运行 Tandem 运行时(桌面端 sidecar 或无头引擎),然后使用 SDK 创建会话、触发运行并流式传输事件。
运行时选项:
-
在本地运行桌面应用(会启动 sidecar 运行时)
-
通过 npm 运行无头引擎:
npm install -g @frumu/tandem tandem-engine serve --hostname 127.0.0.1 --port 39731 -
TypeScript SDK:@frumu/tandem-client
-
Python SDK:tandem-client
-
引擎包:@frumu/tandem
// npm install @frumu/tandem-client
import { TandemClient } from "@frumu/tandem-client";
const client = new TandemClient({ baseUrl: "http://localhost:39731", token: "..." });
const sessionId = await client.sessions.create({ title: "My agent" });
const { runId } = await client.sessions.promptAsync(sessionId, "Summarize README.md");
for await (const event of client.stream(sessionId, runId)) {
if (event.type === "session.response") process.stdout.write(event.properties.delta ?? "");
}
# pip install tandem-client
from tandem_client import TandemClient
async with TandemClient(base_url="http://localhost:39731", token="...") as client:
session_id = await client.sessions.create(title="My agent")
run = await client.sessions.prompt_async(session_id, "Summarize README.md")
async for event in client.stream(session_id, run.run_id):
if event.type == "session.response":
print(event.properties.get("delta", ""), end="", flush=True)
提供商设置
在设置中配置提供商。
| 提供商 | 说明 | 获取 API 密钥 |
|---|---|---|
| OpenAI Codex Account | 通过浏览器登录,以便在本地使用 Codex 账户 | 本地控制面板:Settings -> Providers -> openai-codex |
| OpenRouter ⭐ | 通过一个 API 使用多种模型 | openrouter.ai/keys |
| OpenCode Zen | 为编码优化的快速、高性价比模型 | opencode.ai/zen |
| Anthropic | Anthropic 模型(Sonnet、Opus、Haiku) | console.anthropic.com |
| OpenAI | GPT 模型和 OpenAI 端点 | platform.openai.com |
| Ollama | 本地模型(无需远程 API 密钥) | 设置指南 |
| Custom | 兼容 OpenAI 的 API 端点 | 配置端点 URL |
注意:
openai-codex目前适用于由本地引擎支持的 Tandem 配置。- 标准 OpenAI API 密钥仍受普通
openai提供商支持。
网页搜索设置
现在可以直接通过以下位置配置 websearch:
- 桌面端:Settings -> Web Search
- 控制面板:连接到本地托管引擎时,前往 Settings -> Web Search
建议的默认设置:
Backend = auto- 添加 Brave 密钥、Exa 密钥,或两者都添加
auto 会优先使用已配置的提供商,并可在不同后端之间切换,而不是将引擎固定到单一托管搜索路径。对于无头安装,你仍可通过环境变量进行配置:
TANDEM_SEARCH_BACKEND=auto
TANDEM_BRAVE_SEARCH_API_KEY=...
TANDEM_EXA_API_KEY=...
TANDEM_SEARXNG_URL=http://127.0.0.1:8080
TANDEM_SEARCH_URL=https://search.tandem.ac
如果 Brave 达到速率限制且已配置 Exa,auto 可以改用 Exa,而不是立即提示搜索不可用。
设计原则
- 本地优先运行时:除非你将提示词/工具发送给已配置的提供商,否则数据和状态都会保留在你的设备上。
- 受监督的执行:AI 通过受控工具运行,写入/删除操作需要明确批准。
- 不绑定特定提供商:通过你选择的模型提供商进行路由。
- 可审计的源代码,且许可边界清晰:这是一个混合许可仓库:宽松许可的
MIT、Apache-2.0和MIT OR Apache-2.0组件与仅提供源代码的BUSL-1.1编译器和治理组件并存,详见 docs/LICENSING.md。
安全与隐私
- 遥测:Tandem 不包含分析/跟踪功能,也不会发送回传遥测数据。
- 提供商流量:AI 请求内容只会发送到你配置的端点(云服务提供商或本地 Ollama/自定义端点)。
- 网络范围:桌面运行时会与本地 sidecar(
127.0.0.1)和已配置的端点通信。 - 更新程序/发行版检查:应用更新和发行版元数据流程可能会连接到 GitHub 端点。
- 凭据存储:提供商密钥经过加密存储(AES-256-GCM)。
- 文件系统安全:访问范围仅限已授权文件夹;默认拒绝访问敏感路径。
完整的威胁模型和报告流程请参阅 SECURITY.md。
了解更多
- 架构概览:ARCHITECTURE.md
- 引擎运行时 + CLI 参考:docs/ENGINE_CLI.md
- 桌面端/运行时通信约定:docs/ENGINE_COMMUNICATION.md
- 引擎测试与冒烟检查:docs/ENGINE_TESTING.md
- 文档门户:docs.tandem.ac
高级 MCP 行为(包括 OAuth/需要身份验证的流程和重试)记录在 docs/ENGINE_CLI.md 中。
高级设置(从源代码构建)
前置要求
| 平台 | 其他要求 |
|---|---|
| Windows | Visual Studio 生成工具 |
| macOS | Xcode 命令行工具:xcode-select --install |
| Linux | libwebkit2gtk-4.1-dev、libappindicator3-dev、librsvg2-dev、build-essential、pkg-config |
本地开发
git clone https://github.com/frumu-ai/tandem.git
cd tandem
pnpm install
cargo build -p tandem-ai
pnpm tauri dev
生产构建与签名说明
pnpm tauri build
对于本地自行构建的更新程序制品,请生成自己的签名密钥并配置:
pnpm tauri signer generate -w ./src-tauri/tandem.keyTAURI_SIGNING_PRIVATE_KEYTAURI_SIGNING_PASSWORDsrc-tauri/tauri.conf.json中的pubkey
参考:Tauri 签名文档
输出路径:
# Windows: src-tauri/target/release/bundle/msi/
# macOS: src-tauri/target/release/bundle/dmg/
# Linux: src-tauri/target/release/bundle/appimage/
macOS 安装故障排查
如果下载的 .dmg 显示“已损坏”或“损坏”,通常是因为 Gatekeeper 拒绝了未经过 Developer ID 签名和公证的应用程序包/DMG。
- 确认架构正确(
aarch64/arm64与x86_64/x64)。 - 尝试通过 Finder 打开(“右键 -> 打开”或“系统设置 -> 隐私与安全性 -> 仍要打开”)。
- 对于面向非技术用户的分发,请通过发行版自动化流程提供已签名并经过公证的制品。
参与贡献
欢迎贡献。请参阅 CONTRIBUTING.md。
# Run lints
pnpm lint
# Run tests
pnpm test
cargo test
# Format code
pnpm format
cargo fmt
引擎专用的构建/运行/冒烟测试说明:docs/ENGINE_TESTING.md
引擎 CLI 使用参考:docs/ENGINE_CLI.md
引擎运行时通信约定:docs/ENGINE_COMMUNICATION.md
维护者发行说明
- 桌面二进制文件/应用发行版:
.github/workflows/release.yml(标签模式v*) - 注册表发布(crates.io + npm 封装包):
.github/workflows/publish-registries.yml(手动触发或使用publish-v*) - 这些工作流有意分开
项目结构
tandem/
├── src/ # React frontend
│ ├── components/ # UI components
│ ├── hooks/ # React hooks
│ └── lib/ # Utilities
├── src-tauri/ # Rust backend
│ ├── src/ # Rust source
│ ├── capabilities/ # Permission config
│ └── binaries/ # Sidecar (gitignored)
├── scripts/ # Build scripts
└── docs/ # Documentation
Star 历史
许可证
本仓库采用混合许可模式。docs/LICENSING.md 是按软件包划分的权威许可说明。
-
核心引擎 crate 和工具(例如
tandem-core、tandem-server、tandem-types、tandem-orchestrator以及crates/中的其他项目):- 除非其清单或本地许可证另有说明,否则均采用
MIT OR Apache-2.0许可 - 参见 LICENSE-MIT 和 LICENSE-APACHE
- 除非其清单或本地许可证另有说明,否则均采用
-
任务编译器 crate(
tandem-plan-compiler):- 采用 Business Source License 1.1(
BUSL-1.1)许可 - 条款请参见
crates/tandem-plan-compiler/LICENSE
- 采用 Business Source License 1.1(
-
治理引擎 crate(
tandem-governance-engine):- 采用 Business Source License 1.1(
BUSL-1.1)许可 - 条款请参见
crates/tandem-governance-engine/LICENSE
- 采用 Business Source License 1.1(
-
事件监控器 crate(
tandem-incident-monitor):- 采用 Business Source License 1.1(
BUSL-1.1)许可 - 条款请参见
crates/tandem-incident-monitor/LICENSE
- 采用 Business Source License 1.1(
-
企业级服务 crate(
tandem-enterprise-server):- 采用 Business Source License 1.1(
BUSL-1.1)许可 - 条款请参见
crates/tandem-enterprise-server/LICENSE
- 采用 Business Source License 1.1(
-
引擎服务 crate(
tandem-server,自 0.7.0 起):- 采用 Business Source License 1.1(
BUSL-1.1)许可 - 条款请参见
crates/tandem-server/LICENSE
- 采用 Business Source License 1.1(
简而言之:Tandem 采用开放核心模式。宽松许可的协议、SDK、客户端和本地工具部分均为开源,而引擎服务、任务/计划编译器、递归治理引擎、事件监控器和企业级服务则依据 Business Source License 条款提供源代码。
本仓库中的任何许可证均不授予商标权。“Tandem”、“Frumu”及相关徽标均为 Frumu LTD 的商标——使用政策请参见 TRADEMARKS.md。
致谢
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。