Concierge.
面向智能体就绪 Web 应用的安全动作层。
类型化、经同意门控的操作,让 AI 运行你的网络应用;而无需接管浏览器。
三个软件包,同一发布集
先安装用于框架无关集成的核心运行时,再添加对应适配器。请一并安装和升级,使每个适配器解析到同一份物理核心。
$ pnpm add @full-self-browsing/concierge zod$ pnpm add @full-self-browsing/concierge@^0.2 \
@full-self-browsing/concierge-react@^0.2 zod版本 0.2.1 是运行时合约 v2 上受支持的公开预览。React 和 Svelte 包根在服务器上是安全的;其运行时绑定位于 /client 和 /client.svelte。边缘部署不属于 0.2 支持矩阵。
发布动词,而不是页面表面
通用浏览器自动化会从页面结构、选择器或坐标重建意图。Concierge 让协作应用发布 AI 在此刻可以使用的精确动词。
FSB 操作不协作的站点。Concierge 是协作应用的动作层。这两个项目覆盖智能体浏览栈的不同部分。
从声明到结构化结果
应用定义带名称的动作,包含描述、输入模式、可用性规则、效果元数据、脱敏策略和处理器。
Concierge 将活动阶段及其可用动作解析为一份带实例本地修订号的不可变目录快照。
模型只收到该快照允许的工具。
Concierge 在执行前再次校验每个请求的动作,应用同意与调度规则,并拒绝过期或冲突的调用。
应用桥接执行已批准的界面操作并返回结构化结果。
应用
动作定义、实时状态、界面操作、身份验证和服务器授权。
Concierge
目录准入、校验、同意、调度、去重、分发和工作流。
模型集成
工具呈现、模型调用、工具关联和结果投递。
声明一个动作。解析一份目录。
把每个动作定义为具名常量,挂到一个阶段,并为当前应用状态解析一份原子目录快照。
- 阶段、可用性、工具和修订号一并解析
- 只有字面值 true 才会放行动作;其他一律失败关闭
- 已解析目录被深度冻结,绝不是跨运行时权威
import { createBridge, createConcierge, defineAction, offPageResult } from "@full-self-browsing/concierge";
import { z } from "zod";
const projectBridge = createBridge<{
actions: { openProject(id: string): void };
snapshot: { activeProject(): string | null };
}>("project-ui");
const openProject = defineAction({
name: "openProject",
description: "Open one project in the application preview.",
schema: z.object({ projectId: z.string().min(1).max(64) }).strict(),
jsonSchema: {
type: "object",
properties: { projectId: { type: "string", minLength: 1, maxLength: 64 } },
required: ["projectId"],
additionalProperties: false,
},
redact: ({ projectId }) => ({ projectId }),
effects: { readOnly: false, destructive: false, idempotent: true },
handler: ({ args, bridge }) => {
if (bridge === null) {
return offPageResult("Project opening", "project interface");
}
bridge.actions.openProject(args.projectId);
return { ok: true, message: `Opened project ${args.projectId}.` };
},
});
const concierge = createConcierge({
stages: [
{
id: "projects",
match: (context) => context.pathname === "/projects",
actions: [openProject],
bridge: projectBridge,
},
],
});
const catalog = concierge.resolveCatalog({ pathname: "/projects" });
// → catalog.stage · catalog.revision · catalog.tools one snapshot核心运行时加框架绑定
公开软件包组成固定发布集,并共享运行时合约 v2。
@full-self-browsing/concierge框架无关的目录、分发、同意、工作流、遥测和传输运行时。
@full-self-browsing/concierge-reactReact 上下文、桥接生命周期,以及包括 ConciergeActivityOverlay 在内的可选活动视觉。
@full-self-browsing/concierge-svelteSvelte 上下文、桥接生命周期和响应式快照规范化。
一个实例,多个入口
通过相应适配器挂载同一 Concierge 实例和桥接注册表。基于 getter 的状态保持实时,直到 Concierge 为校验或同意捕获快照。
原始 onToolCall 值只是展示数据。它们从不驱动应用。已签名桥接会验证信封、消耗重放键、与实时浏览器目录比较,然后才进入核心分发。
运行时坚持的边界
Dispatch outcome
completed最小权限边界,而不是身份验证系统
安全模型
Concierge 不验证用户,客户端同意记录也不是服务器授权。执行受保护效果的服务器必须独立验证当前主体,按现行策略授权精确动作和载荷,拒绝重放,并使效果幂等或事务化。
已签名的 AI 桥接会验证一项短时服务器决定,以放行一个特定浏览器批次。它不会让模型输出变得可信,不会修复 XSS 漏洞,也不会把客户端状态变成服务器权威。
在上线有后果的集成之前,请阅读 SECURITY.md。
遥测
已挂载的 React 和 Svelte 运行时默认向 FSB 的汇总统计管道发送匿名用量估计。原生集成通过仅浏览器的 /telemetry 入口显式挂载遥测,该入口也提供状态和退出 APIs。
遥测从不发送动作名、参数、结果、模式、阶段、页面 URLs、DOM 内容、应用名或账户标识。若浏览器存储不可用,遥测会停止且不影响分发。
阅读遥测隐私合约以了解载荷、留存和删除。