术语表
ObjectOS 和 ObjectStack 中使用的词汇 —— 每个术语一个定义。
本文档中使用的每个术语都有唯一的规范定义。
动作(Action)
在元数据中声明的具名操作,可以通过 REST(/api/v1/actions/<object>/<action>)、
UI 中的按钮调用,并且 —— 一旦其作者把它暴露给 AI(ai.exposed)—— 也可以由 Agent
调用。调用者能否调用它,以调用者的身份检查;随后 script 主体作为可信的应用代码
运行。参见动作。
适配器(Adapter)
把 ObjectStack 与宿主运行时集成的框架包 —— Express、Fastify、Hono、Next.js、 Nuxt、SvelteKit、NestJS。大多数 ObjectOS 部署不需要它;ObjectOS 自带 HTTP 服务器。
AI 席位(AI seat)
ObjectOS 的计价单位,也是每个版本中唯一计费的席位。查看者、不使用产品内 AI 的应用 用户,以及通过 MCP 构建的开发者都是免费的。参见 许可证与定价。
应用(App)
一组对象 + 视图 + 权限,呈现为一个可导航的应用。一个运行时中可以并存多个应用(例如 CRM + Helpdesk + Setup)。
产物(Artifact)
一个编译后的 objectstack.json 文件。对应用的自包含、不可变的描述 —— 清单、对象、
视图、应用、流程、权限、翻译。由 os compile 产出。ObjectOS 实际执行的就是它。
Better Auth
驱动 @objectstack/plugin-auth 的认证库。你不需要直接配置 Better Auth;插件封装
了它。
业务本体(Business ontology)
你的应用的定义 —— 对象和字段、关系、动作、权限、流程,以及 Agent 和工具的定义 —— 作为一个可执行、有版本的整体:以带类型的 ObjectStack 元数据编写,经过校验而不是 推理,并由运行时运行,运行时从中推导出数据库、REST API、UI 和 MCP 工具。视图、 仪表盘、应用和翻译是它的投影,而不是它的一部分。
它是可执行的,而不是知识本体:没有对象继承,没有公理,没有推理机。它也不是语义层 —— 那是覆盖在现有系统之上的只读映射,描述业务却不运行业务。无论在哪个 ObjectOS 版本上它都属于你:它是普通的 ObjectStack 元数据,把它导出到开源的 ObjectStack 运行时上运行尚在计划中。在本站参见 ObjectOS 中你的本体;完整的阐述见 ObjectStack 文档中的 Business Ontology。
能力(Capability)
产物在其 requires 列表中声明的可选运行时功能。对应一个包 —— 例如 audit →
@objectstack/plugin-audit。由 ObjectOS 按需加载。参见
运行时能力。
CEL
Common Expression Language —— Google 的 安全、沙箱化的表达式语法。用于公式、验证规则、权限谓词、共享规则和流程条件。
控制平面(Control Plane)
一项可选服务,向 ObjectOS 实例发布有版本的产物。以 ObjectOS Cloud 的形式托管,或 自托管。大多数部署不需要它 —— 基于文件的模式足以支撑单应用的生产环境。
驱动(Driver)
数据后端的实现:driver-sql(Postgres、MySQL、SQLite、Turso/libSQL)、
driver-mongodb、driver-memory。在启动时通过数据库 URL 选定。
嵌入器(Embedder)
为 RAG / 语义搜索把文本转换为向量的服务。可在多个提供商之间插拔(OpenAI、Azure、 硅基流动、Ollama……)。参见 AI 服务。
环境(Environment)
部署自身的身份 —— 它以 OS_ENVIRONMENT_ID 报告的 id,在云绑定完成后持久保存。
自管理的 ObjectOS 是一个单环境运行时:一个进程、一个环境、一个应用。持有多个
环境,并为每个环境发布一个产物,是控制平面做的事。参见
环境变量。
字段(Field)
对象上的带类型属性。约 48 种内置类型:text、select、lookup、markdown、
file、formula、summary 等。参见数据模型。
流程(Flow)
声明式的业务逻辑 —— 自动启动(记录触发)、定时(cron)或手动(按钮 / API)。以带有 条件/循环/重试/并行原语的 DAG 形式执行。参见 流程与自动化。
公式字段(Formula field)
一种计算字段,其值是在读取时求值的 CEL 表达式。不存储。
钩子(Hook)
注入到对象生命周期中的函数(beforeInsert、afterUpdate……)。用 TypeScript
编写。与流程不同:钩子是一等的代码;流程是元数据。
内核(Kernel)
ObjectOS 内部的微内核,负责加载插件、持有 DI 容器、分发事件,并提供部署的元数据。 一个进程在启动时构建一个内核,在构建完成之前不会报告就绪 —— 所以不会有任何按请求的逻辑去决定提供哪份元数据。
清单(Manifest)
位于产物开头的顶层元数据:id、namespace、version、type(app / plugin /
service)、name、description、requires 列表。
市场(Marketplace)
内置的可安装应用目录。由可配置的包注册表支撑。参见市场。
MCP(Model Context Protocol)
一个让 AI Agent 发现和调用工具的开放协议。每个 ObjectOS 部署都是位于 /api/v1/mcp
的 MCP 服务器,默认开启:每个对象都是一个工具,其作者暴露给 AI(ai.exposed)的
每个动作也是。每次调用都以调用者的身份运行。参见
接入 AI 工具(MCP)。
对象(Object)
一个带类型的业务实体 —— task、account、invoice。以 TypeScript schema 声明;
自动生成 REST API、视图、审计条目和 RBAC 检查点。参见数据模型。
ObjectOS
构建在 ObjectStack 之上的运行环境,一个产品、三个版本:ObjectOS Community —— 开源的运行时和 Console,在 Apache-2.0 下免费,在 objectstack 仓库中开发; ObjectOS Cloud —— 托管在浏览器中,无需安装任何东西;以及 ObjectOS Enterprise —— 需许可证,在你自己的基础设施上自管理。Cloud 和 Enterprise 按 AI 席位计价;把 Cloud 或 Enterprise 上的本体导出到开放的运行时上运行,尚在计划中。 本文档站点是关于 ObjectOS 的。
ObjectQL
数据层协议和查询引擎。把声明式查询编译为原生的 SQL / Mongo 查询。REST 端点、UI、 流程都使用它 —— 全部是同一个引擎。
ObjectStack
开放的技术栈,Apache-2.0:执行业务本体的协议、微内核、SDK、CLI 和生产运行时 ——
即 @objectstack/* npm 包和运行时镜像。ObjectOS 是构建在它之上的运行环境:
ObjectOS Community 就是这个开放的运行时和 Console,采用同样的 Apache-2.0 许可,
而 ObjectOS Cloud 和 ObjectOS Enterprise 是建立在其上的商业版本。
ObjectUI
视图层协议 —— 应用、视图、页面、仪表盘、动作、图表、导航。ObjectOS 渲染 ObjectUI 声明。
权限集(Permission Set)
一组授权 —— 对象权限、字段权限、系统权限。直接附加到用户,或通过岗位附加。是主要的 授权单元。参见权限。
插件(Plugin)
用一项能力扩展运行时的框架包 —— plugin-auth、plugin-security、
plugin-audit、plugin-webhooks、mcp 等。通过 DI + 生命周期钩子
(init → start → destroy)激活。
岗位(Position)
用户所担任的职能 —— "Sales Manager"、"Support Agent"、"Auditor"。从 ObjectStack 13 起唯一的人员分组概念,并且有意设计为扁平的:汇报结构改为放在业务单元树上。岗位 把应用和标签页定向到某个受众、指定审批人,并把权限集分配给担任它的每个人。参见 岗位。
项目(Project)
环境的旧名称。它仍保留在继承来的配置和框架内部的标识符中;ObjectOS 文档使用 环境。
投影(Projection)
视图、仪表盘、应用或翻译:与业务本体并列编写、经过同一道 校验关卡检查的元数据,但不是本体的一部分。投影呈现核心 —— 网格 上的对象字段、图表上对对象的查询、某个语言区域中的每个标签。修改核心,它的投影会 随之变化;移除一个投影,它所展示的业务不会改变。参见 ObjectOS 中你的本体。
记录共享(Record Share)
针对特定记录、授予一个接收方的直接访问 —— 一个用户(user)、一个团队(team)、
一个岗位(position)、一个业务单元(business_unit),或者一个业务单元连同其下
的每个单元(unit_and_subordinates)。存储为 sys_record_share 行,其
recipient_type 列恰好取这五个值。不同于共享规则(声明式条件)。
Setup
内置的管理应用,位于 /_console/ 所提供的 UI 中的 /apps/setup,由 setup.access
权限门控。管理用户、业务单元、团队、岗位、权限集、共享规则、记录共享和 API 密钥,
以及配置、诊断和集成。参见配置。
共享规则(Sharing Rule)
一种基于条件授予记录访问的声明式规则("区域经理可以看到其所在区域的记录")。在查询 时求值,编译为行级过滤条件。没有条件而存储的规则什么都不共享 —— 它并不匹配 全部。参见记录访问。
Studio
内置的元数据编写界面,位于 /_console/ 所提供的 UI 中的 /studio,由
studio.access 权限门控。元数据本身在这里被设计 —— 包、对象、应用、流程和权限集
—— 每次一个包,分为四个支柱:Data、Automations、Interfaces、Access。它与 Setup
并列,而不是 Setup 的一部分:Setup 运营一个运行中的部署(它的人员、他们的授权、它的
配置),Studio 编写这个部署所运行的内容 —— 因此权限在 Studio 中设计,在 Setup 中
分配。与 Setup 不同,它不是 /apps/ 下的应用;UI 把它作为独立的路由子树提供。
参见配置。
界面入口(Surface)
运行中的 ObjectOS 暴露的 HTTP 入口之一:/(REST API)和 /_console/(UI)。是
两个,不是三个 —— 账户不是一个独立的入口。登录、注册和账户自助服务都是 UI 内部
的路由:
| 账户界面 | 位于 |
|---|---|
| 登录 | /_console/login —— 你未登录时,每个受保护的页面都会把你送到这里 |
| 注册 | /_console/register —— 除非部署禁用了自助注册 |
| 账户自助服务 | /_console/apps/account —— Account 应用,与位于 /_console/apps/setup 的 Setup 并列 |
没有 /_account/ 入口。独立的账户门户被移除时,它也随之退役,这些 URL 现在返回 404。
系统上下文(System Context)
插件、钩子和种子脚本在需要绕过安全检查时使用的内部执行模式。可审计;不暴露给用户 代码。
租户(Tenant)
共享同一个部署的各组织之间的隔离边界。隔离墙式租户姿态会竖起这道墙,它是一项需 许可证的能力。这些组织仍然共享部署的应用、数据库和元数据,所以这道墙隔开的是它们的 数据和成员资格,而不是它们的模式。参见 多组织部署。
触发器(Trigger)
触发流程的条件 —— 记录事件(after_insert)、定时(cron)或手动调用。
校验关卡(Validation gate)
所有元数据在运行之前都要通过的同一套检查:@objectstack/spec 的 schema,以及那些
捕获能通过类型检查、却会在运行时静默失败的问题的编写规则 —— 错误的 CEL 谓词、对
不存在之物的引用。os validate 和 os compile 在仓库源码上运行它,运行时也会对每
一次上线的元数据写入应用同一道关卡,无论它来自 AI Builder、Studio 还是元数据 API。
参见 ObjectStack 文档中的
Validating Metadata。
视图(View)
声明式的 UI 配置 —— 列表、表单、看板、日历、甘特图 —— 附加在对象上。ObjectOS 渲染 它;你不需要编写组件。
Zod schema
@objectstack/spec 使用的运行时 + 编译时类型系统。每个对象、字段、视图、应用、流程
都由一个 Zod schema 解析和校验。JSON Schema、TypeScript 类型和 REST 请求校验器都
派生自同一组 Zod 定义。