Skip to content

Vue 2.7 API ​

Vue 2.7 适配器沿用 DOM 运行时,提供指令与共享的 DOM 问答入口。下面出现的签名都按 Vue 2.7 的写法给出。

本页只列 @plingjs/vue2 的入口,以及与它一起使用的共享包类型。

API 总览 · 共享包 API

包对等依赖版本
@plingjs/vue2vue ^2.7.00.1.0-alpha.2

当前包版本为 0.1.0-alpha.2;稳定性为 preview。这是 pre-1.0 alpha,次要版本仍可能改变 API。

最小示例 ​

ts
import Vue from "vue";
import { createPling } from "@plingjs/vue2";

const pling = createPling({ namespace: "todo" });
Vue.use(pling.plugin);
pling.dock();

入口与生命周期 ​

创建应用级运行时、安装适配器,并释放它持有的观察器。

API类型参考
createPling函数参考
usePling函数参考
pling.plugin插件参考
VanillaPling接口参考
pling.destroy方法参考

createPling ​

创建应用级 Pling 实例,并返回对应适配器的运行时对象。

导入

@plingjs/vue2

调用方式

ts
// Vue 2.7
createPling(options?: Vue2PlingOptions): Vue2Pling

参数与选项

参数类型必填默认值说明
ui.locale"en-US" | "zh-CN" | "auto" | string否en-US内置助手界面的语言。传 auto 时跟随浏览器语言。
ui.theme"light" | "dark" | "auto" | PlingThemeOverrides否light内置界面的主题。传对象时可选择模式或覆盖设计令牌。
ui.theme.mode"light" | "dark" | "auto"否light主题传对象时指定的模式。auto 跟随操作系统外观。
ui.theme.tokensPartial<PlingThemeTokens>否—覆盖颜色、圆角、阴影、字体等单个设计令牌。未提供的键沿用所选明色或暗色主题的默认值。
ui.messagesPlingCatalogOverrides否—为一个或多个语言补充或替换界面文案。
ui.messages.<locale>Partial<Record<PlingMessageKey, string>>否—某个 BCP 47 语言的文案覆盖。未提供的键回退到内置文案。
ui.classNamesPlingClassNames否—为内置对话、浮窗、启动按钮和面板附加 class。
ui.classNames.dockstring否—浮窗外壳的附加 class。
ui.classNames.panelstring否—面板外壳的附加 class。
ui.classNames.launcherstring否—启动按钮的附加 class。
ui.classNames.chatstring否—对话界面的附加 class。
onWarn(message: string) => void否console.warn接收开发期告警和声明诊断。默认输出到 console.warn。
registryRegistry否—使用已有动作注册表,而不是新建一个。不要与 shared 同时传入。
sharedPlingPage否—接入多个框架孤岛共用的页面运行时。此时 registry 与 scopes 由页面统一持有。
namespacestring否—为该适配器实例的动作与记录 id 加前缀,例如 add 变成 todo/add。
scopesScopeControllerOptions否—覆盖可见性与命中测试行为。主要用于测试和特殊渲染宿主。
agentAgentSetup否—接线内置助手界面使用的模型、钩子、确认、连续性与观测能力。
deriveboolean | DeriveOptions否false开启可选的 L1 派生:从原生可点击元素推断动作。默认关闭;派生动作会标记为推断结果。
presenceboolean | PresenceOptions否true控制 agent 操作页面时的目标高亮。
revealSensitiveboolean否true仅在渲染层把敏感值代号还原为真值。发给模型的请求和存储中仍保留代号。
defaultApproval"danger" | "kind"否"danger"设置工具未写 confirm 时的声明期默认策略。danger 只询问危险动作;kind 按每个动作的风险等级决定。

返回值

适配器实例。Vue 3 与 React 返回 PlingElement;Vue 2.7 与原生 JS 返回 VanillaPling。

默认行为

  • 未声明的控件不会成为动作;derive 默认关闭。
  • 动作高亮默认开启。
  • 聊天中还原敏感值默认开启。

示例 1 · Vue 2.7 应用初始化

ts
import Vue from "vue";
import { createPling } from "@plingjs/vue2";

const pling = createPling({ namespace: "todo" });
Vue.use(pling.plugin);

new Vue({ render: (h) => h(App) }).$mount("#app");

示例 2 · 通过同源网关调用模型

ts
const pling = createPling({
  agent: {
    config: {
      baseUrl: "/llm/v1",
      model: "gpt-4.1-mini",
    },
    trace: true,
  },
});

精确契约

查看对应参考页

usePling ​

从当前框架组件树中读取最近的 Pling 实例。

导入

@plingjs/vue2

调用方式

ts
// Vue 2.7
usePling(): Vue2Pling

参数

无。

示例 1 · 读取已安装的运行时

ts
const pling = usePling();

精确契约

查看对应参考页

pling.plugin ​

安装 Vue 指令与运行时注入键。React 使用 PlingProvider。

导入

@plingjs/vue2

调用方式

ts
// Vue 2.7
Vue.use(pling.plugin)

参数

无。

示例 1 · 安装 Vue 2.7 指令

ts
Vue.use(pling.plugin);

精确契约

查看对应参考页

VanillaPling ​

原生 JS 与 Vue 2.7 共用的 DOM 运行时,暴露 tool、action、record、scope、state、dock、derived 与 destroy。

导入

@plingjs/vue2

调用方式

ts
// Vue 2.7
interface Vue2Pling extends VanillaPling {
  plugin: { install(Vue: VueConstructor): void };
}

参数与选项

参数类型必填默认值说明
plugin{ install(Vue: VueConstructor): void }否—安装 Vue 2.7 指令与 $pling 属性。

示例 1 · 安装 Vue 2.7 插件

ts
Vue.use(pling.plugin);

精确契约

查看对应参考页

pling.destroy ​

停止观察器、派生动作、作用域、存在感、UI 订阅与已挂载的助手界面。

导入

@plingjs/vue2

调用方式

ts
// Vue 2.7
pling.destroy(): void

参数

无。

示例 1 · 释放运行时

ts
beforeDestroy() {
  this.$pling.destroy();
}

精确契约

查看对应参考页

页面声明 ​

声明动作、记录、区域、状态、页面反馈、任务入口与敏感值。

API类型参考
元素动作声明参考
函数级动作声明参考
区域声明参考
记录声明参考
只读状态声明参考
Store 状态声明参考
sensitive函数参考

元素动作 ​

声明一个控件能做什么。说明是模型唯一的判断依据;执行仍经过可用性、确认与结果判据。

导入

@plingjs/vue2

调用方式

ts
// Vue 2.7
v-tool="string | ToolOptions | readonly ToolOptions[]"

参数与选项

参数类型必填默认值说明
v-toolstring | ToolOptions | readonly ToolOptions[]是—一句说明的简写,或同一元素上的一条/多条声明。

示例 1 · Vue 2.7 指令

vue
<button v-tool="{ id: 'add', desc: '添加一条待办', run: () => add() }">添加</button>

精确契约

查看对应参考页

函数级动作 ​

登记一个没有专属 DOM 控件的业务操作。

导入

@plingjs/vue2

调用方式

ts
// Vue 2.7
pling.action(options: ActionOptions): () => void

参数与选项

参数类型必填默认值说明
optionsActionOptions是—由代码实现、而不是绑定到 DOM 控件的动作。

示例 1 · 登记动作

ts
const unbind = pling.action({
  id: "clear_completed",
  desc: "清除所有已完成待办",
  run: () => clearCompleted(),
});

精确契约

查看对应参考页

区域 ​

声明页面的结构区域及其可达性。区域解释上下文,不是权限边界。

导入

@plingjs/vue2

调用方式

ts
// Vue 2.7
v-scope="string | ScopeOptions"

参数与选项

参数类型必填默认值说明
v-scopestring | ScopeOptions是—区域 id 或元数据对象。

示例 1 · 描述区域

vue
<section v-scope="{ id: 'todos', label: '待办列表' }">...</section>

精确契约

查看对应参考页

记录 ​

为一行数据提供稳定身份与有界字段。记录是只读的。

导入

@plingjs/vue2

调用方式

ts
// Vue 2.7
v-record="RecordValue | null | undefined"

参数与选项

参数类型必填默认值说明
v-recordRecordValue | null | undefined是—行对象或显式记录包装。

示例 1 · 暴露一行记录

vue
<li v-for="todo in todos" :key="todo.id" v-record="todo">...</li>

精确契约

查看对应参考页

只读状态 ​

暴露当前 UI 状态的只读视图。状态没有 setter;写入必须声明成动作。

导入

@plingjs/vue2

调用方式

ts
// Vue 2.7
useAgentState(key: string, source: StateSource, options?: AgentStateOptions | string): () => void

参数与选项

参数类型必填默认值说明
keystring是—用于页面上下文与诊断的稳定状态名。
sourceunknown | (() => unknown) | Ref<unknown> | Record<string, unknown>是—值、ref 或读取函数。推荐传函数,让每次快照都反映当前状态。
optionsStateOptions | string否—说明对象或说明字符串。写清这组状态是什么。

示例 1 · 暴露筛选与计数

ts
useAgentState("todo", () => ({ filter: this.filter, total: this.todos.length }));

精确契约

查看对应参考页

Store 状态 ​

从 Pinia 或 Vuex 中显式选择字段,不会把整个 store 暴露给模型。

导入

@plingjs/vue2

调用方式

ts
// Vue 2.7
useAgentStoreState<S extends object>(key: string, store: S, read: AgentStoreRead<S>, options?: AgentStateOptions | string): () => void

参数与选项

参数类型必填默认值说明
keystring是—稳定状态名。
storeS extends object是—Pinia 或 Vuex 风格的 store 对象。
readreadonly string[] | ((store: S) => unknown)是—字段白名单,或返回有界视图的 selector。
optionsAgentStateOptions | string否—随状态一起进入模型上下文的说明。

示例 1 · 暴露 store 字段白名单

ts
const cart = this.$store.state.cart;
useAgentStoreState("cart", cart, ["count", "total"], "购物车件数与小计");

精确契约

查看对应参考页

sensitive ​

标记一个值在出站时隐藏、遮罩、代号化或只给提示,同时保留字段名。

导入

@plingjs/core

调用方式

ts
// Vue 2.7
sensitive<T>(value: T, options?: SensitivityMode | SensitiveOptions): SensitiveValue<T>

参数与选项

参数类型必填默认值说明
valueT是—会进入页面上下文与模型对话的值。
options"masked" | "hidden" | SensitiveOptions否"masked"控制模型看到占位代号还是不看到值。真值仍留在浏览器内。

示例 1 · 脱敏电话号码

ts
const phone = sensitive(customer.phone, "masked");

精确契约

查看对应参考页

共享选项类型 ​

声明所引用的选项结构。适配器使用不同名称时,会同时列出别名。

API类型参考
ToolOptions类型参考
ScopeOptions类型参考
RecordValue类型参考
State options类型参考
AgentSetup类型参考
Kind类型参考
ParamDeclaration类型参考
Expectation类型参考
HandoffStep类型参考
FlowStep类型参考
RegionRole类型参考
PlingUiOptions类型参考

ToolOptions ​

所有适配器共享的动作声明结构。

导入

@plingjs/vue2 · @plingjs/core

调用方式

ts
// Vue 2.7
type ToolOptions = AtomicToolOptions | ParamsToolOptions

参数与选项

参数类型必填默认值说明
descstring是—必填的面向模型说明,描述控件或操作做什么。这是模型选择工具时最主要的依据。
idstring否generated once per binding稳定动作 id。仅一次性控件可以省略;列表行与流程应显式提供。
kind"read" | "write" | "danger"否write用于确认与审计的风险等级。省略时按 fail-closed 视为 write。
confirmboolean | "always"否derived from kind覆盖确认推导。false 跳过确认,true 要求确认,always 每次询问且不提供长期允许。
action"click" | "fill" | "select" | "press" | "hover"否inferred from element覆盖动作原语推断。默认表单输入使用填写,其余元素使用点击。
keystring否Enter原语为按键时使用的键名。
scopestring否nearest scope显式区域 id。省略时继承最近声明的区域。
fidelity"high" | "auto" | "low"否inferred声明执行目标的可靠程度。显式设置后不再自动定位目标。
targetstring否—限定在声明元素内部查找具体目标的 CSS 选择器。
autoTargetboolean否true自动定位声明元素内部唯一的原生控件。
available() => boolean | string | undefined否—动作出现前检查的业务前置条件。返回字符串时,该字符串会作为不可用原因交给模型。
expectExpectation否—执行后检查的成功判据。不成立时返回 EXPECTATION_FAILED,不会把未完成当成功。
handoffboolean | string | HandoffOptions否—把这一步交给用户完成,而不是模拟操作。布尔值或字符串形式提供原因。
paramsParamDeclaration条件必填—带参数表单使用的参数声明。存在时,run 收到校验后的参数对象,而不是单个原语值。
run(valueOrArgs) => void | Promise<void>否—注入的执行实现。原子动作收到原语值;带参数动作收到完整参数对象。写了 steps 时不会运行。
stepsreadonly FlowStep[]否—把声明变成对模型可见的单个流程,按顺序执行已注册动作 id。不要与 run 同时使用。

类型结构

ts
interface ToolOptionsBase {
  desc: string;
  id?: string;
  kind?: "read" | "write" | "danger";
  confirm?: boolean | "always";
  action?: "click" | "fill" | "select" | "press" | "hover";
  key?: string;
  scope?: string;
  fidelity?: Fidelity;
  target?: string;
  autoTarget?: boolean;
  available?: () => boolean | string | undefined;
  expect?: Expectation;
  handoff?: boolean | string | { reason?; expect?; steps?; timeout? };
}

type ToolOptions =
  | { params?: undefined; run?: (value?: unknown) => void | Promise<void> }
  | { params: ParamDeclaration; run?: (args: Record<string, unknown>) => void | Promise<void> };

示例 1 · 带参数的声明

js
const move = {
  id: "move_task",
  desc: "把待办移动到指定位置",
  params: [{ name: "position", label: "新位置", type: "number", min: 1 }],
  run: ({ position }) => moveTask(Number(position)),
};

精确契约

查看对应参考页

ScopeOptions ​

区域声明结构。Vue 3 以 ScopeValue 暴露等价类型。

导入

@plingjs/vue2

调用方式

ts
// Vue 2.7
interface ScopeOptions {
  id: string;
  label?: string;
  description?: string;
  role?: RegionRole;
  parent?: string;
}

参数与选项

参数类型必填默认值说明
idstring是—稳定区域 id。会写入 DOM,并由后代声明继承。
labelstring否—面向模型的短名称,例如“待办列表”。
descriptionstring否—说明区域的用途,以及其中动作适用的场景。
roleRegionRole否—main、dialog、toolbar、list 等结构角色。只影响阅读顺序与上下文,不构成权限边界。
parentstring否—为传送门、浮层或挂到 body 的节点显式指定父区域 id。

示例 1 · 区域元数据

ts
const scope = {
  id: "orders",
  label: "订单列表",
  description: "当前筛选结果,每行可以打开或删除",
  role: "list",
  parent: "main",
};

精确契约

查看对应参考页

RecordValue ​

一行数据,或带显式 id、label、fields 的完整记录声明。

导入

@plingjs/core

调用方式

ts
// Vue 2.7
type RecordValue =
  | object
  | {
      data: object;
      id?: string | number;
      label?: string;
      fields?: Record<string, unknown>;
    }

参数与选项

参数类型必填默认值说明
plain object.id | keystring | number否—直接把行对象作为记录时,默认从 id 或 key 读取主键。
envelope.dataobject条件必填—使用显式记录包装时承载的行数据。
envelope.idstring | number否—主键字段不叫 id / key 时用它覆盖。
envelope.labelstring否—给人也给模型看的行说明。
envelope.fieldsRecord<string, unknown>否—模型可见字段白名单。不写时暴露除主键外的全部行字段。

示例 1 · 显式字段白名单

ts
const value = {
  data: order,
  id: order.code,
  label: `订单 ${order.code}`,
  fields: { customer: order.customer, total: order.total },
};

精确契约

查看对应参考页

State options ​

只读状态视图的可选说明。

导入

@plingjs/vue2

调用方式

ts
// Vue 2.7
interface AgentStateOptions { description?: string }

参数与选项

参数类型必填默认值说明
descriptionstring否—说明状态视图及其单位或范围。描述的是一个有界视图,不是整个 store。

示例 1 · 描述有界视图

ts
{ description: "当前筛选项、总条数与未完成条数" }

精确契约

查看对应参考页

AgentSetup ​

应用级运行时选项:模型覆盖、钩子、闸门、事件、跟踪与连续性。

导入

@plingjs/vue2

调用方式

ts
// Vue 2.7
type AgentSetup = Omit<AgentRuntimeOptions, "config" | "registry" | "gate"> & {
  config?: AgentConfigOverrides;
  gate?: () => boolean;
}

参数与选项

参数类型必填默认值说明
configAgentConfigOverrides否—模型与运行时的局部配置。未写的字段从 VITE_AGENT_* 环境变量或框架默认值读取。
llmLlm否—注入模型调用函数。可用于测试模型、服务端代理或非 OpenAI 兼容传输。
responseLocalestring | (() => string)否—拼接回答语言约束时使用的语言。传函数时,每次模型请求前重新读取。
telemetryTelemetry否—收集当前运行时的 token、耗时、成本与重试指标。
traceboolean | AgentTraceOptions否false在内存中保留有界的模型请求记录,供只读诊断面板查看。默认关闭。
settle() => Promise<void>否—替换动作之间的页面落定等待。主要用于确定性测试和非浏览器宿主。
hooksHookRegistry否—由该应用运行时创建的界面共用的工具生命周期钩子。
onEvent(event: SessionEvent) => void否—接收与对话、运行视图相同的会话事件流。
onApproval(pending: PendingApproval | null) => void否—确认请求出现或清除时调用。可用来接自己的确认界面。
onHandoff(pending: PendingHandoff | null) => void否—人工接力请求出现或清除时调用。
policyConfirmGate否—替换默认确认闸门。传入后不再使用内置闸门和对话中的确认按钮。
approvalTimeoutMsnumber否60000等待人工确认的最长时间;超时按拒绝处理。
handoffTimeoutMsnumber否300000人工接力的默认等待时间。单个工具的 handoff.timeout 可以覆盖。
handoffHandoffGate否—用自定义通道替换内置人工接力队列。
idstring否—多会话宿主使用的稳定会话 id。
onLeaseLost() => void否—共享会话租约被另一个标签页或宿主接管时调用。
continuityContinuitySetting否—开启跨整页导航的有界对话连续性。"tab" 使用 sessionStorage;省略即关闭。
gate() => boolean否true返回 false 时关闭该应用的内置确认通道。默认开启。

示例 1 · 应用级助手接线

ts
const pling = createPling({
  agent: { config: { limits: { maxTurns: 12 } }, trace: true },
});

精确契约

查看对应参考页

Kind ​

动作的风险等级,供确认策略使用。

导入

@plingjs/core

调用方式

ts
// Vue 2.7
type Kind = "read" | "write" | "danger"

参数与选项

参数类型必填默认值说明
read"read"否—不改变业务状态。查看、导航和检查属于这一档。
write"write"否—改变业务状态,但不是破坏性或不可逆操作。
danger"danger"否—破坏性、不可逆或影响较大的操作。确认策略默认更严格。

示例 1 · 选择风险等级

ts
pling.tool(deleteButton, { desc: "删除此订单", kind: "danger" });

精确契约

查看对应参考页

ParamDeclaration ​

用于校验动作参数的数组简写或 JSON Schema。

导入

@plingjs/core

调用方式

ts
// Vue 2.7
type ParamDeclaration = readonly ToolParam[] | JsonSchema

参数与选项

参数类型必填默认值说明
[].namestring是—run 收到的参数键,也是模型看到的参数名。
[].labelstring是—必填的参数说明,是模型唯一可依赖的语义提示。
[].type"string" | "number" | "boolean"否"string"参数类型。会把明显的字符串形式规整为对应类型,并拒绝无效值。
[].optionalboolean否false把参数标为可选。参数默认必填。
[].valuesreadonly (string | number)[]否—静态封闭值集合。模型只能从已知值里选择时使用。
[].options() => readonly ParamOption[]否—动态值集合,每次快照与执行前重新读取。
[].min | [].maxnumber | (() => number)否—数字参数的上下界,也支持动态边界。
[].minLength | [].maxLengthnumber否—字符串长度边界。
[].patternRegExp | string否—字符串参数的正则约束。
[].format"date"否—语义格式校验。date 还要求是真实存在的日期。
JSON Schema.type"object"条件必填"object"直接传 JSON Schema 时,根类型必须是对象。
JSON Schema.propertiesRecord<string, unknown>否—直接 JSON Schema 形式的属性定义。
JSON Schema.requiredstring[]否—直接 JSON Schema 形式的必填属性名。

示例 1 · 参数简写

ts
const params = [
  { name: "orderId", label: "订单号", pattern: /^SO-\d{4}$/ },
  { name: "note", label: "新备注", maxLength: 200 },
  { name: "notify", label: "是否通知客户", type: "boolean", optional: true },
];

精确契约

查看对应参考页

Expectation ​

动作结束后检查的成功条件。

导入

@plingjs/core

调用方式

ts
// Vue 2.7
interface Expectation {
  desc?: string;
  check(): boolean | Promise<boolean>;
  timeout?: number;
}

参数与选项

参数类型必填默认值说明
descstring否—对预期结果的人话说明。会出现在成功与失败回执里。
check() => boolean | Promise<boolean>是—执行后求值的判断函数。函数自身异常会原样抛出,不会被吞掉。
timeoutnumber否2000成立前的最长等待时间;超过后报告 EXPECTATION_FAILED。

示例 1 · 确认新记录真的出现

ts
const expect = {
  desc: "新待办出现在列表中",
  check: () => todos.some((todo) => todo.text === "准备发布"),
  timeout: 3000,
};

精确契约

查看对应参考页

HandoffStep ​

人工接力时展示给用户的一条步骤说明。

导入

@plingjs/core

调用方式

ts
// Vue 2.7
interface HandoffStep {
  text: string;
  highlight?: string;
}

参数与选项

参数类型必填默认值说明
textstring是—交给接手人看的操作说明。
highlightstring否—可选的高亮目标:引导目标 id 或动作 id。

示例 1 · 引导人工步骤

ts
const steps = [
  { text: "填写短信验证码", highlight: "captcha" },
  { text: "点击提交", highlight: "submit" },
];

精确契约

查看对应参考页

FlowStep ​

复合动作中的一步。步骤不是第二条执行通道。

导入

@plingjs/core

调用方式

ts
// Vue 2.7
interface FlowStep {
  action: string;
  args?: Record<string, unknown> | ((params: Record<string, unknown>) => Record<string, unknown>);
  expect?: Expectation;
  desc?: string;
  optional?: boolean;
  idempotent?: boolean;
}

参数与选项

参数类型必填默认值说明
actionstring是—要执行的已注册动作 id,可包含 占位符。
argsRecord<string, unknown> | ((params) => Record<string, unknown>)否—步骤参数。字符串可引用流程参数;函数形式收到完整参数对象。
expectExpectation否—覆盖该步骤动作自身声明的成功判据。
descstring否—用于进度与回执的人话步骤说明。
optionalboolean否false可选步骤失败时跳过,不中断整个流程。
idempotentboolean否false允许执行后或判据失败后重试。执行前失败本身就可以重试。

示例 1 · 在步骤中引用参数

ts
const steps = [
  { action: "edit@order:{{orderId}}", desc: "打开订单" },
  { action: "dialog_note", args: { text: "{{note}}" }, desc: "填写备注" },
  { action: "dialog_save", desc: "保存" },
];

精确契约

查看对应参考页

RegionRole ​

区域的结构角色。

导入

@plingjs/core

调用方式

ts
// Vue 2.7
type RegionRole =
  | "page"
  | "header"
  | "nav"
  | "main"
  | "aside"
  | "section"
  | "form"
  | "dialog"
  | "toolbar"
  | "list"
  | "footer"

参数与选项

参数类型必填默认值说明
role"page" | "header" | "nav" | "main" | "aside" | "section" | "form" | "dialog" | "toolbar" | "list" | "footer"是—为同名动作提供结构上下文。它不会授予或限制权限。

示例 1 · 区分两个确认按钮

ts
pling.scope(dialog, { id: "edit_dialog", role: "dialog", label: "编辑订单" });
pling.scope(toolbar, { id: "bulk_toolbar", role: "toolbar", label: "批量操作" });

精确契约

查看对应参考页

PlingUiOptions ​

共享助手界面的语言、主题、文案覆盖与类名。

导入

@plingjs/ui

调用方式

ts
// Vue 2.7
interface PlingUiOptions {
  locale?: PlingLocale;
  theme?: PlingTheme;
  messages?: PlingCatalogOverrides;
  classNames?: PlingClassNames;
}

参数与选项

参数类型必填默认值说明
locale"en-US" | "zh-CN" | "auto" | string否en-US内置助手界面的语言。传 auto 时跟随浏览器语言。
theme"light" | "dark" | "auto" | PlingThemeOverrides否light内置界面的主题。传对象时可选择模式或覆盖设计令牌。
theme.mode"light" | "dark" | "auto"否light主题传对象时指定的模式。auto 跟随操作系统外观。
theme.tokensPartial<PlingThemeTokens>否—覆盖颜色、圆角、阴影、字体等单个设计令牌。未提供的键沿用所选明色或暗色主题的默认值。
messagesPlingCatalogOverrides否—为一个或多个语言补充或替换界面文案。
messages.<locale>Partial<Record<PlingMessageKey, string>>否—某个 BCP 47 语言的文案覆盖。未提供的键回退到内置文案。
classNamesPlingClassNames否—为内置对话、浮窗、启动按钮和面板附加 class。
classNames.dockstring否—浮窗外壳的附加 class。
classNames.panelstring否—面板外壳的附加 class。
classNames.launcherstring否—启动按钮的附加 class。
classNames.chatstring否—对话界面的附加 class。

示例 1 · 中文界面与令牌覆盖

ts
const ui = {
  locale: "zh-CN",
  theme: { mode: "light", tokens: { colorPrimary: "#0b6bcb" } },
  classNames: { dock: "product-assistant" },
};

精确契约

查看对应参考页

助手界面 ​

已挂载的对话与检查界面。它们渲染共享运行时,不创建第二个 Agent。

API类型参考
VanillaDock接口参考

VanillaDock ​

pling.dock() 返回的 DOM 浮窗控制器:element、runtime、open、close、toggle、isOpen、destroy。

导入

@plingjs/vue2

调用方式

ts
// Vue 2.7
pling.dock(options?: VanillaDockOptions): VanillaDock

参数与选项

参数类型必填默认值说明
titlestring否—助手标题。
placeholderstring否—输入框占位文案。
emptyHintstring否—空状态文案。
quickreadonly string[]否—推荐指令。
defaultOpenboolean否false浮窗是否默认展开。
configAgentConfigOverrides否—浮窗级模型覆盖。
llmLlm否—注入的模型函数。
hooksHookRegistry否—浮窗级工具钩子。
gate() => boolean否—确认通道开关。
registryRegistry否—要操作的注册表。默认使用当前 Pling 实例的注册表。
onSessionEvent(event: SessionEvent) => void否—会话事件回调。
onOpenChange(open: boolean) => void否—浮窗展开或收起时调用。
navigate(href: string) => void否window.location.replace任务完成后的导航实现。
return.elementHTMLElement否—浮窗持有的根元素。
return.runtimeAgentRuntime否—驱动浮窗对话的运行时。
return.open()void否—展开浮窗。
return.close()void否—收起浮窗并保留对话。
return.toggle()void否—切换展开状态。
return.isOpen()boolean否—返回当前展开状态。
return.destroy()void否—移除浮窗并释放其运行时资源。

示例 1 · 挂载并控制原生浮窗

ts
const dock = pling.dock({
  title: "待办助手",
  defaultOpen: false,
  onOpenChange: (open) => console.log(open),
});

// Later:
dock.open();
// On teardown:
dock.destroy();

精确契约

查看对应参考页

版本与兼容性 ​

包版本对等依赖
@plingjs/vue0.1.0-alpha.2vue ^3
@plingjs/react0.1.0-alpha.2react >=18
@plingjs/vue20.1.0-alpha.2vue ^2.7.0
@plingjs/vanilla0.1.0-alpha.2—
项目值
引入版本0.1.0-alpha.2
稳定性pre-1.0 alpha;次要版本可能改变 API

机器可读副本 ​