Actor 模型

概述

Actor 是 wesgine 运行时的一等标识符。wesgine 不定义用户身份体系(认证、授权、组织架构归应用层),但 Actor 是引擎内部用于记忆隔离、资源调度、认知路由和行为归因的核心概念。

简单理解:Cell = 租户(物理隔离),Actor = 请求主体(逻辑隔离)。

两层隔离模型

wesgine 采用 Tenant + Actor 两层隔离:

层对应概念隔离方式示例
TenantCell物理隔离(独立数据库)法务部、审计部
Actor请求主体逻辑隔离(同一 Cell 内按 Actor 过滤)张三、李四

Cell 之间完全物理隔离——不同 Cell 的数据库文件互相独立,表内没有 cell_id 列。Actor 隔离发生在 Cell 内部,通过引擎的判据单点实现。

结构资源 vs 运行时行为

Cell 内的资源分为两类,Actor 隔离规则不同:

结构资源(归 Cell,不区分 Actor):

运行时行为(按 Actor 隔离):

记忆四层与 Actor

wesgine 的记忆分为七个层,其中四个是用户记忆层:

层名称Actor 关系说明
L1environment共享宿主环境信息,所有人可见
L2consensus共享部门共识,所有人可见
L3about_me按 Actor 隔离个人偏好,仅本人可见
L4agent_memory按 Actor 隔离角色记忆,仅本人可见

L1/L2 是 Cell 级共享资产,L3/L4 按 Actor 隔离——张三的个人偏好不会出现在李四的对话中。

使用方式

必填字段

AppRunRequest.Actor 是必填一等字段。如果为空,引擎直接返回 ErrActorRequired:

events, err := cell.Runtime().Run(ctx, wesgine.AppRunRequest{
    Actor:     "alice",   // ★ 必填
    SessionID: "s1",
    AgentID:   "agent-legal",
    Messages:  []Message{...},
})

Actor 来源

Actor 的值由应用层决定,引擎不规定格式:

产品Actor 来源
桌面应用(wesclaw/wescode/wescraft)登录用户 uid 或固定 "local"
企业 SaaS(teleclaw)JWT claim 中的 user_id

管理视图

空 Actor 在引擎中表示管理视图(需要 admin token)。例如 GET /memory?actor= 返回 Cell 内全部记忆条目。普通用户请求始终携带 Actor,只能看到自己的数据。

设计原则