研究 @full-self-browsing

Concierge.

面向智能体就绪 Web 应用的安全动作层。

类型化、经同意门控的操作,让 AI 运行你的网络应用;而无需接管浏览器。

▽0.2.1TypeScript-firstESM only · Node >=22.12MIT
安装

三个软件包,同一发布集

先安装用于框架无关集成的核心运行时,再添加对应适配器。请一并安装和升级,使每个适配器解析到同一份物理核心。

核心运行时
$ 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 上受支持的公开预览。ReactSvelte 包根在服务器上是安全的;其运行时绑定位于 /client/client.svelte。边缘部署不属于 0.2 支持矩阵。

为何选择 Concierge

发布动词,而不是页面表面

通用浏览器自动化会从页面结构、选择器或坐标重建意图。Concierge 让协作应用发布 AI 在此刻可以使用的精确动词。

通用浏览器自动化
Concierge
点击选择器或坐标
调用应用定义的动词
从可见界面重建意图
接收带类型的模式和实时可用性
继承宽泛的页面权限
只看到当前动作目录
把确认当成布尔值
同意绑定到已审阅的载荷和状态快照
信任模型回调去驱动浏览器
在分发前验证已签名且防重放的批次

FSB 操作不协作的站点。Concierge 是协作应用的动作层。这两个项目覆盖智能体浏览栈的不同部分。

工作方式

从声明到结构化结果

01

应用定义带名称的动作,包含描述、输入模式、可用性规则、效果元数据、脱敏策略和处理器。

02

Concierge 将活动阶段及其可用动作解析为一份带实例本地修订号的不可变目录快照。

03

模型只收到该快照允许的工具。

04

Concierge 在执行前再次校验每个请求的动作,应用同意与调度规则,并拒绝过期或冲突的调用。

05

应用桥接执行已批准的界面操作并返回结构化结果。

应用

动作定义、实时状态、界面操作、身份验证和服务器授权。

Concierge

目录准入、校验、同意、调度、去重、分发和工作流。

模型集成

工具呈现、模型调用、工具关联和结果投递。

快速开始

声明一个动作。解析一份目录。

把每个动作定义为具名常量,挂到一个阶段,并为当前应用状态解析一份原子目录快照。

  • 阶段、可用性、工具和修订号一并解析
  • 只有字面值 true 才会放行动作;其他一律失败关闭
  • 已解析目录被深度冻结,绝不是跨运行时权威
actions/open-project.ts
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

框架无关的目录、分发、同意、工作流、遥测和传输运行时。

React@full-self-browsing/concierge-react

React 上下文、桥接生命周期,以及包括 ConciergeActivityOverlay 在内的可选活动视觉。

Svelte@full-self-browsing/concierge-svelte

Svelte 上下文、桥接生命周期和响应式快照规范化。

Node.js>=22.12.0
Module formatESM only
React · React DOM^18.2.0 || ^19.0.0
Svelte^5.0.0
AI SDK core^6.0.0 || ^7.0.0
Runtime contractv2 throughout 0.2.x
集成

一个实例,多个入口

通过相应适配器挂载同一 Concierge 实例和桥接注册表。基于 getter 的状态保持实时,直到 Concierge 为校验或同意捕获快照。

集成
运行时入口
指引
框架无关
@full-self-browsing/concierge
使用核心运行时并直接注册应用桥接。
React
/concierge-react/client
提供核心实例、注册桥接,并可选择渲染活动叠加层。
Svelte
/concierge-svelte/client.svelte
用 Svelte 快照规范化器提供核心实例,并在初始化时注册桥接。
AI SDK 6 & 7
/concierge/ai-sdk
把已解析目录转成模型工具,并关联已完成的调用。
已签名的服务器桥接
/ai-sdk/server · /ai-sdk/browser
签发、验证并分发绑定到目录摘要的短时浏览器批次。

原始 onToolCall 值只是展示数据。它们从不驱动应用。已签名桥接会验证信封、消耗重放键、与实时浏览器目录比较,然后才进入核心分发。

运行时保证

运行时坚持的边界

Dispatch outcome

completed
nameopenProject
callIdcall_7f2c · index 0
catalogRevisionstage projects · fresh
consentbound · consumed once
dedupesession · response · callId
onDispatchredacted lifecycle
动作输入会在执行前再次校验,有副作用的动作会经过可取消的提交窗口。
完全相同的重试共享一个 Promise,去重窗口内不能执行两次;动作、输入、回合或修订号一变就返回 identity_conflict
批次按 outputIndex 顺序执行,并返回明确的已完成或终止结果。
复合动作使用核心自有的子分发、清理、延迟和有界谱系——每条根工作流最多 16 层嵌套、256 步。
混用 0.10.2 的安装会在桥接注册或分发之前失败。
安全与隐私

最小权限边界,而不是身份验证系统

安全模型

Concierge 不验证用户,客户端同意记录也不是服务器授权。执行受保护效果的服务器必须独立验证当前主体,按现行策略授权精确动作和载荷,拒绝重放,并使效果幂等或事务化。

已签名的 AI 桥接会验证一项短时服务器决定,以放行一个特定浏览器批次。它不会让模型输出变得可信,不会修复 XSS 漏洞,也不会把客户端状态变成服务器权威。

在上线有后果的集成之前,请阅读 SECURITY.md

遥测

已挂载的 ReactSvelte 运行时默认向 FSB 的汇总统计管道发送匿名用量估计。原生集成通过仅浏览器的 /telemetry 入口显式挂载遥测,该入口也提供状态和退出 APIs

遥测从不发送动作名、参数、结果、模式、阶段、页面 URLsDOM 内容、应用名或账户标识。若浏览器存储不可用,遥测会停止且不影响分发。

阅读遥测隐私合约以了解载荷、留存和删除。

AI 行动,而不交出浏览器

TypeScript 优先、仅 ESMMIT 许可。发布在 @full-self-browsingnpm 作用域下。