Skip to content

核心概念 ​

Persona 围绕六个一级概念组织:Identity(分身)、Context(上下文)、Material(身份材料)、Policy(策略)、Action(动作),以及预留的 Principal(主体)。它们共同回答一个问题:

一个人(或一个 Agent、一台设备)在某个数字环境中,以哪个身份、持有哪些身份材料、通过什么策略、执行什么动作?

mermaid
flowchart TB
    P["Principal 主体<br/>(预留:人 / Agent / 设备)"]
    I["Identity 分身"]
    M["Material 身份材料"]
    C["Context 上下文"]
    POL["Policy 策略"]
    A["Action 动作"]

    P --> I
    I --> M
    C --> POL
    M --> POL
    POL --> A
  • Principal(主体):发起者——人、AI Agent 或设备的抽象(预留方向,尚未实现)。
  • Identity(分身):同一个人的不同数字身份,是身份材料的组织与切换单位。
  • Context(上下文):客户端可观察到的环境事实(域名、主机、目录、设备…),用于建议与策略判断。
  • Material(身份材料):密码、SSH 密钥、API key、TOTP、钱包、通行密钥。
  • Policy(策略):决定「谁、在什么上下文、对哪个材料的哪个动作」被放行的规则集合。
  • Action(动作):作用于某个材料的具体操作——reveal、copy、fill、TOTP、generate、sign、save。

为什么必须把这六个概念分开 ​

  • Identity ≠ Material:工作分身的 GitHub 密码、GitHub SSH key、GitHub API key 是三份独立材料,归属同一个分身。迁移、轮换、分享的是材料,不是分身。
  • Material ≠ Action:SSH key 本身没有权限,「sign」才是权限动作。客户端/浏览器扩展不直接持有明文,只请求一个经过策略检查的 Action。
  • Context ≠ 用户声明:上下文是观察得到的事实(页面域名、本机 host、目录),不是用户拍脑袋选的模式——所以它能做建议,而不是声明。
  • Policy 不是安全细节:它是所有敏感 Action 的统一裁决入口,与材料模型平级,而不是加密文档里的一个章节。

现状与规划(诚实边界) ​

概念现状主要落点
Identity✅ 已实现identities 表 + active 指针(见用户手册:身份)
Material✅ 已实现credentials / crypto_wallets / passkeys 表(见身份材料)
Policy🟡 已实现为安全硬门槛,部分可配置origin binding、user gesture、SSH 策略、审批闸门(见策略)
Action🟡 协议层已分离bridge 请求类型 + 授权闸门(见动作)
Context🟡 部分机制已落地origin binding、按身份过滤、站点默认值(见上下文)
Principal⬜ 预留,未实现方向见主体

「已实现」指代码里存在并可测试;「部分落地」指机制存在但未抽象成一级模型, 或只有部分入口使用;「预留」指设计方向,不含实现承诺。

为什么这不是又一个密码管理器 ​

密码管理器把世界建模成「一个 Vault,里面是条目」。Persona 把世界建模成:

  • 谁(Principal,含未来的 Agent)持有哪个分身(Identity);
  • 分身下有哪些材料(Material)——密码只是其中一种;
  • 什么上下文(Context)下、按什么策略(Policy)、允许哪些动作(Action)。

因此 Password、SSH、TOTP、Wallet、Passkey、浏览器填充都不是功能清单,而是 同一个模型下的材料与动作。1Password/Bitwarden 的能力是功能基准 (Persona 的开发者特性以此为对标),但产品的身份叙事不是「又一个密码管理器」。

Released under the MIT License.