用户模型
USER.md 是代理工作区中可选的用户模型工件。它以指令形式存储稳定偏好、沟通风格、关系以及当前项目上下文,用于指导后续会话。
OpenClaw 在会话启动时会在 MEMORY.md 旁边加载 USER.md。它有独立的小型引导预算,在长生命周期会话中,后续轮次会拾取编辑。如果文件不存在,启动将继续而不加载它。
共享 Gateway 上的个人 USER 文件¶
单用户 Gateway 仅使用代理工作区根目录中的 USER.md,可在 代理 → 文件 中编辑。它们不暴露个人指令编辑器或聊天工具,不接受个人文件 API 请求,也不加载第二个按个人档案的 USER.md。已存在的按个人档案文件会保留在磁盘上不变,不会自动合并到根文件中。
个人文件仅在 Gateway 具有至少两个不同的、未合并的人员档案,并使用现有多用户身份策略时可用。共享的所有者个人档案不计为单独的人。名册更改后,重新连接 Control UI 以刷新其通告的能力;服务器会在每次读取和写入时重新检查当前策略。
打开 设置 → 个人档案 → 个人指令,在设置侧边栏现有的代理选择器中选择一个代理,并保存你的偏好。你可以使用已认证个人档案和 operator.read 创建或编辑自己的个人 USER.md;不需要管理员或通用写入权限。编辑器始终使用已登录的人,而不是当前打开聊天的所有者。它不能编辑其他人的文件或共享默认设置。
你也可以在任何已认证的 Gateway 聊天会话中要求代理更新你的个人指令,包括由项目工作树支撑或属于其他人的会话。personal_instructions 工具会读取或更新请求者的在所选代理配置工作区中的文件;会话所有者、任务目录以及模型提供的个人档案 ID 永远不会选择写入目标。它在保存前会读取当前文件及其内容哈希。没有实时已认证请求者的匿名或自主运行不能使用此例外。正常工具策略仍然适用;通用文件系统访问不变。在多用户 Gateway 上,Token/密码或设备 Token 的共享所有者登录会编辑该共享所有者个人档案的文件;请使用个人登录以将不同人的文件分开。
保存时会检查你加载的版本。如果另一个编辑器更改了文件,请保留草稿副本并在再次保存前重新加载。与共享工作区编辑器一样,针对独立主机端编辑器的冲突检测是尽力而为;避免同时通过 UI 和主机进程编辑同一文件。个人指令必须符合 4,000 字符的引导预算;更低的已配置预算和现有来源检查仍然适用。不要存储机密。编辑器支持本地代理工作区;远程托管的代理工作区会报告明确错误,而不是写入另一个 Gateway 本地文件。
将工作区根目录中的 USER.md 保留用于共享默认设置。个人偏好位于代理工作区中的 users/<canonical-profile-id>/USER.md,而不是任务 Git 工作树。对于手动主机端编辑,请从 Gateway 的已认证个人档案/人员数据中获取持久个人档案 ID;不要使用显示名称、GitHub 登录名、电子邮件或粘贴到消息中的个人档案 ID。这使用现有的会话所有权和创建记录;无需模式或配置更改。
每个会话选择一个个人 USER.md:优先选择已分配的人类所有者的文件,否则选择已认证的人类创建者的文件。代理或系统分配不会阻止该创建者回退。对于符合条件的外部聊天轮次,OpenClaw 先加载共享文件,再加载所选个人文件。个人文件是对共享文件的补充,而不是替换,它会覆盖冲突的共享用户偏好,但不覆盖项目规则或安全策略。无论工作区目录名称如何,工作区根目录中的 USER.md 始终为共享。
文件会在后续轮次中刷新。重新分配会话会在下一个新轮次中更改个人上下文,而不是当前正在运行的轮次。另一位参与者可以在正常权限和队列规则下引导,而无需切换个人上下文。来自多人的排队和收集消息会保留会话的选择;当前发送者不会选择不同文件。个人档案合并会选择存活的规范 ID;请自行将偏好移动到该目录。OpenClaw 不会合并文件或创建档案。
缺少文件或缺少符合条件的人类身份时,仅使用共享默认设置。没有个人档案 ID 的人类分配不会回退到创建者。显示标签、频道发送者 ID、未知来源的创建者 ID 以及代理所有者不能选择个人文件。内部事件和委派任务不会自动继承个人档案。子代理引导仍然只包含其现有允许的项目指令。共享本地所有者个人档案代表使用该身份的所有连接,而不是单独的人;在团队 Gateway 上请使用按个人登录。
个人文件使用现有的受保护读取和内存来源检查。不接受符号链接别名。每个个人文件必须完全适合 4,000 字符的 USER 预算(或更低的已配置按文件/剩余总预算);否则它会带有警告被省略,而不是部分注入。共享文件保留其现有限制。现有特定于 harness 的引导抑制仍然适用:例如,嵌入式运行器的 contextInjection: "never" 和 continuation-skip 设置,以及轻量级引导模式。使用默认 always 模式在后续轮次中刷新会话所选的个人指令。
此选择由本地嵌入式、通用 CLI 和原生 Codex 引导路径支持。ACP 代理、实时会话和远程 worker 执行不会从此功能获得按个人选择。
这是提示词选择,而非文件系统保密。工作区工具、受信任插件、共享转录以及先前生成的响应可能会暴露其他上下文。重新分配会话或更改参与者不会删除对话历史。请勿在这些文件中存储机密。
Gateway 个人资料与 GitHub 署名¶
您已认证的 Gateway 个人资料独立于 USER.md。打开设置 → 个人资料 → 身份,以设置显示给 Gateway 上其他人的显示名称和头像。当 GitHub 账户经过验证时,自定义 OpenClaw 头像仍保持权威。个人资料头部会跟随您当前的用户身份,包括从其他浏览器清除的名称,即使配置了多个代理也是如此。未识别的连接保留默认代理预览。
已认证用户可以使用 operator.read、operator.sessions.read 或其隐含的写入/管理员权限读取自己的个人资料,即使共享的人员名册不可用也是如此。刷新和重新连接会读取当前已认证的个人资料。编辑名称、头像或署名偏好仍需要 operator.write;会话访问权限不会授予个人资料编辑权限或访问其他个人资料的权限。个人资料图片下载保留其独立的读取权限,对于仅会话访问可能显示首字母。
单用户 Gateway 会为未识别的 operator 连接提供一个持久的本地所有者个人资料,跨设备和标签页共享,包括设备令牌重新连接。Gateway 主机账户的全名会填充未设置的显示名称。已保存的名称永远不会被覆盖。如果没有可用全名,侧边栏和个人资料头部会显示所有者,直到您设置名称。登录名称不会被使用。所有者个人资料没有电子邮件,也不会更改权限或身份范围。它不能与个人资料合并,也不能分配 operator 角色。要执行这些操作,请使用个人身份登录。如果早于 v2026.9.2 的构建将所有者个人资料合并到了某个人员中,连接将保持未识别状态并记录修复提示。运行 openclaw doctor --fix,然后重新连接以恢复所有者身份。该人员保留其电子邮件、角色和 GitHub 身份。
当配置了 gateway.roles 时,未识别的 operator 仅在通过令牌或密码认证时才会收到所有者个人资料。其他连接需要基于个人资料的登录以获得个人身份。节点、临时和合成连接不会收到所有者个人资料。
控制 UI 在人员侧边栏、活动卡片、会话查看者和人员组中将此状态标记为共享所有者。该卡片说明它不是个人登录。其连接和活动详情仍然可见。您在个人资料页面上保存的名称保持不变。
在 macOS 上,没有保存头像的所有者会使用 Gateway 主机账户的用户图片。在设置 → 个人资料 → 身份中上传头像会覆盖该默认值。该图片仍保持为本地、进程缓存的默认值,而不是已保存的个人资料上传。在 macOS 中更改后,请重启 Gateway。这仅适用于共享所有者个人资料,不适用于使用自己身份登录的人员。不可用的图片会回退为首字母。
通过 Cloudflare Access 和 Tailscale Serve 支持基于 GitHub 的登录。对于 Cloudflare Access,Gateway 仅在成功通过 trusted-proxy 认证后接受身份增强,该认证需包含标准 Access 电子邮件头和必需的 Access 断言头。它会调用 Access 身份端点,并要求返回的电子邮件与已认证的代理主体匹配。账户 ID 来自 GitHub 身份提供商,或来自显式配置的受信任 OIDC 声明。然后,它会从该数字账户 ID 解析规范的 GitHub 登录名。对于 Tailscale Serve,Gateway 会通过 GitHub 解析经过验证的基于 GitHub 的 Tailscale 登录名。两条路径都会记录不可变的数字账户 ID 以及当前规范登录名。
没有受信任 GitHub 声明的 OIDC 会保留仅电子邮件登录以及任何现有已链接身份。受信任的 OIDC 增强会保留现有电子邮件个人资料的角色和已保存的共同作者偏好;冲突的身份需要显式管理员链接,而不是自动合并或电子邮件重新分配。
对于新个人资料或未设置的显示名称,OpenClaw 优先使用经过验证的 GitHub 账户的公开名称。如果 GitHub 没有公开名称,则使用登录提供商的名称。已保存的名称仅在其与当前规范 GitHub 登录名完全匹配(包括大小写)时才会升级。所有其他已保存的名称均保持不变,包括自定义名称和先前采用的全名。这将在下一次成功同步身份时生效,同步可通过登录、重新连接,或会重试查找的个人资料刷新完成。现有个人资料不会在后台迁移中重命名。
GitHub 账户行是只读的。通用受信任代理、令牌、密码和未认证连接不能声明 GitHub 账户,并且代理或工具的 GitHub 凭据从不用于此身份。公共 GitHub 账户查找使用 Gateway 配置的 gateway.controlUi.github.token,或者在未配置凭据时使用其进程 GH_TOKEN / GITHUB_TOKEN,以避免较小的匿名 API 配额。该凭据仅用于认证 API 请求。登录提供商仍决定人员的身份。转发的 Cloudflare Access 断言是连接范围的:OpenClaw 不会持久化、导出、记录或将其暴露给 UI 或模型。
Cloudflare Access 账户查找会自动共享一个有界的、内存中的 GitHub 元数据缓存,持续 15 分钟,以不可变账户 ID 和 API 凭据为键。并发查找共享一个 GitHub 请求。过期条目在可用时使用 ETag 进行条件刷新。经过认证的 304 Not Modified 响应不会消耗 GitHub 的主要配额。每个新连接或经过认证的 HTTP 请求仍会检查 Cloudflare Access,并且本地个人资料权限使用当前 operator 角色。缓存不会存储 Access 断言或角色决策。Tailscale 用户名查找保持最新,因为用户名可以被重命名或重新分配。
当 操作员角色 配置后,身份验证会在 WebSocket 连接被接受之前完成。如果验证不可用,连接会返回可重试的个人资料验证错误,并附带恢复指引。GitHub 速率限制会被明确识别。已验证的 Cloudflare 电子邮件和不可变账户 ID 可以在可重试的 GitHub 故障期间复用其现有个人资料。首次用户必须在获得基于角色的访问权限之前完成验证。
在 GitHub 速率限制方面,Gateway 会对使用受影响凭据和配额桶的请求共享冷却时间。搜索配额耗尽不会阻止个人资料查找。次要限制可以暂停使用该凭据的其他 GitHub REST 读取。后续 API 请求会暂停,直到 GitHub 的 Retry-After 截止时间,或者当剩余配额为零时,直到其主要重置截止时间。没有 Retry-After 的次要限制会暂停 60 秒。Control UI 重连会遵守该延迟并保留其正常退避,因此打开另一个标签页不会针对已耗尽的桶重启 GitHub 请求。如果冷却后验证仍不可用,请要求管理员检查已配置的服务凭据以及共享其配额的其他工作负载。
在没有操作员角色的情况下,身份查找会在 WebSocket 登录之后运行,因此连接状态和其他不依赖身份的读取仍然可用。个人资料和会话工作会等待查找完成。Cloudflare 或 GitHub 速率限制,或网络故障,会返回可重试的不可用状态。它不会暴露可变别名,也不会移除先前已验证的账户。后续请求、连接或个人资料刷新会重试查找。GitHub 登录名重命名会通过数字账户 ID 进行协调,以便个人资料历史和偏好设置始终关联到同一个人。
管理员可以通过 users.linkEmail 或 users.merge 显式链接属于同一个人的个人资料。完成后的个人资料合并会保留所有已验证的 GitHub 账户及其登录别名。任一账户都会解析为同一个人、头像、偏好设置和提及收件箱。目标个人资料会保留其主要 GitHub 账户,用于公开身份和 Git 署名;未验证的目标会继承源主要账户。通过次要账户登录不会更改该选择或其署名偏好。人员绝不会通过名称匹配自动合并。
主要账户使用现有个人资料表中的可空字段,而不会提升数据库架构版本。降级风险: 没有架构版本提升会阻止旧版本构建使用此状态。它们的单账户写入器可能会丢弃次要账户链接,或再次将此人拆分。重新升级不会重建已丢弃的链接;管理员必须显式重新链接这些个人资料。降级前请保留备份。
公开提交元数据是一个独立选项。Git 共同作者署名 对已验证账户默认开启。它会为从共享会话创建的提交添加已验证账户的公开 GitHub noreply 地址。OpenClaw 绝不会为此功能请求或存储私有 GitHub 电子邮件。无关且未链接的 GitHub 账户会使用其自己的个人资料和署名偏好,因此复用登录电子邮件或用户名不会继承另一个人的选择。通过已链接的次要账户登录会保留规范个人资料的主要账户和署名偏好。
当你的已认证个人资料曾在代理运行之前向某个会话发送过提示时,从该运行创建的提交会收到你确切的 Co-authored-by 尾注。提交和拉取请求随后会可见地署名参与该会话的人员。具有已验证 GitHub 身份且启用了 Git 共同作者署名的个人资料参与者符合条件。远程身份、代理、机器人以及已配置的主要 Git 作者会被排除。贡献者按记录的贡献聚合值显示,最高者在前。平局时使用最早已知的个人资料输入,未知历史时间排在已知时间之后,然后是不可变 GitHub 账户 ID。这些尽力而为的聚合值不是精确的终身提示计数。来自已合并个人资料的贡献仍会关联到其存活的已验证账户。新参与者准入和面向模型的署名输出各自上限为 32。修复可以保留更大的历史。
委派任务会在子任务启动之前保留源会话人类贡献者个人资料 ID 的独立快照。嵌套委派会向前传递该快照,最多 32 个唯一个人资料,在添加直接源参与者之前保留继承的贡献者。这不会创建子任务参与、增加提示计数或授予访问权限。后来加入源的人员不会被添加到现有子任务的快照中。使用时,OpenClaw 会将继承的署名与直接子任务贡献合并,并检查当前已验证的 GitHub 身份和署名偏好。每个 GitHub 账户只署名一次;直接贡献者保留其通常顺序,随后是按快照顺序排列的继承贡献者。普通侧边栏父级链接不会传递署名。
署名遵循会话参与情况,包括同一源对话中的早期工作。当工作需要不同的贡献者集合时,请使用单独的源对话。已验证的频道到个人资料链接以及对单个任务的归属是独立功能。
该快照会在会话重置后保留,并随子会话消失。隐身会话不会保留它或发布署名。没有快照的现有委派会话不会自动回填。这使用可选的会话元数据,无需数据库架构迁移;旧版本不会使用它,并在重置会话时可能会丢弃它。
当某个会话有需要署名的人员时,其系统提示会列出确切的尾注一次。它会指示代理将其添加到从该会话创建的提交中。Codex 运行时会在其开发者指令中接收相同的代码块。当没有可署名的人员时,不会添加任何内容,并且隐身会话从不携带署名。Gateway 发布代理会直接在其生成的提交和拉取请求中应用相同的署名。当 Gateway 暴露外部 HTTPS 会话 URL 时,拉取请求会以指向该确切团队会话的链接结尾。这些尾注不会通过进程或 shell 环境导出。直接 Git 命令仍然是普通 shell 执行。OpenClaw 不会替换 git 或安装仓库钩子。因此,遵循该系统提示指令的代理就是执行边界。
关闭 Git 共同作者署名 后,后续运行将不再生成署名。Gateway 管理的发布还会在每次待处理的提交、推送或拉取请求写入之前检查贡献者身份与同意。如果资格在发布期间发生变化,它会在下一次写入前停止,并要求你在再次请求发布之前查看已记录的结果。它不会重写已经包含该公共尾注的提交。
合并重复个人资料¶
使用 openclaw users 列出个人资料 ID,并合并属于同一人的重复个人资料。关联和合并都需要 operator.admin。
当你想移动一个电子邮件别名时,请使用 openclaw users link-email <email> --to <profile-id>。只有当先前的个人资料失去其最后一个电子邮件地址时,该个人资料才会被合并。当你想合并整个重复个人资料(包括没有电子邮件别名的个人资料)时,请使用 users merge。Gateway 方法则是使用 sourceProfileId 和 targetProfileId 调用 users.merge。
存续个人资料保留其角色、显示名称和主身份标识;没有已验证主 GitHub 账号的目标个人资料会继承源个人资料的主身份标识。电子邮件别名、提供方身份标识和渠道绑定随存续个人资料保留。存续个人资料上已保存的偏好设置键优先;仅存在于源个人资料的键会转移,直到达到现有个人资料上限。个人模型账号会转移,但存续个人资料现有的提供方选择(包括显式断开连接)优先。存续个人资料已保存的 GitHub 连接状态同样优先;如果没有,则继承源个人资料的连接。已保存的头像仅在存续个人资料没有头像时才会转移。个人 USER.md 文件不会合并;请自行将其内容移动到存续个人资料的目录中。
已停用的个人资料仍然是一个直接指向存续个人资料的别名。先前合并到该重复个人资料中的个人资料也会直接指向存续个人资料。两个 ID 都必须存在且彼此不同,目标必须是当前且未合并的个人资料。两个个人资料都不能是共享的 Owner。重复执行相同的合并会成功,但不会再次移动任何内容。如果源个人资料当前指向不同的个人资料,则请求会失败,并标识当前存续个人资料。
历史记录保留其原始个人资料 ID:会话记录、创建者、分配者、贡献者、审计上下文、审批来源、发布回执和会话参与者都不会被重写。解析个人资料别名的读取方仍可显示存续档案对应的人。这不会转移先前捕获的权限:绑定到已停用个人资料的特权工作会安全失败(fail closed),需要新的已授权请求。合并后,连接的身份、在线状态和权限会刷新;受影响的连接可能需要重新连接。
渠道身份绑定¶
管理员可以证明一个稳定的渠道发送者属于现有的 Gateway 个人资料。该绑定包含渠道、已配置的渠道账号和发送者的原生 ID。显示名称、用户名和 session.identityLinks 均不能确立此关联。
以下三种 Gateway 方法都需要 operator.admin:
| 方法 | 参数 | 结果 |
|---|---|---|
users.linkChannelIdentity |
profileId, identity |
规范个人资料 ID 和已保存的身份 |
users.listChannelIdentities |
profileId |
该个人资料的 links |
users.unlinkChannelIdentity |
profileId, identity |
removed |
例如,Discord 用户的 identity 对象如下:
请使用精确配置的账号 ID 和不可变的发送者 ID。另一个账号上相同的发送者 ID 是不同的绑定。重复执行相同的绑定是安全的。已被其他个人资料拥有的绑定必须先从该个人资料显式解除。解除绑定时也会检查预期的个人资料,因此过期的请求无法移除他人的绑定。共享的 Owner 个人资料并不是一个真实的人,无法接收这些绑定。
绑定会跟随显式的个人资料合并,并采用存续个人资料的当前角色。绑定不会重命名或合并人员、重写会话记录的归属、分配会话所有权或更改会话可见性。权限解析会分别检查受信任的传入发送者和被绑定人员当前的权限。
只要任何需要角色的人员访问授权仍然有效,当前有效操作员角色包含 operator.admin 的每个已绑定发送者就会自动获得渠道所有者权限。角色名称无关紧要,也不需要额外的 gateway.auth.identityScopes 授权。当未配置操作员角色时,匹配的管理身份范围授权会代替提供此权限。已配置的非管理员角色会阻止该回退。移除绑定、将该人员降级或移除该角色的管理范围,都会撤销继承的权限。在待处理的特权操作生效前,会重新检查权限;已接受的操作会完成其必需的清理工作。显式的 commands.ownerAllowFrom 条目仍然独立。参见 操作员作用域。
托管更新会在暂存阶段和将 Gateway 停放前的必要授权检查中保留原始人员访问授权。一旦接受停放,原生更新程序将负责完成或恢复该更新,同时个人资料、角色和配置检查保持最新。重启的策略服务或续期的邀请不会基于原始授权批准新的请求。参见 重启交接。
渠道策略和显式命令允许列表仍然适用,原生命令也不例外。仅外观层面的个人资料更改不会取消已授权的请求;更改个人资料的身份绑定或角色则需要重新发起请求。
这些记录使用现有的共享状态身份表,且不更改其模式版本。旧版本构建会忽略通道绑定命名空间;降级会禁用此识别,而不会将这些链接转换为登录账户。升级不会猜测或回填通道身份。管理员在再次升级后,可以通过相同方法检查并移除这些链接。
从通道分配给我¶
使用 users.linkChannelIdentity 将发送者链接到其现有个人资料。对于
Slack,使用 channelId: "slack"、已配置的账户 ID 以及精确的
原生用户 ID(例如,senderId: "U0123456789")。直接 Socket Mode 和
经过签名验证的 HTTP 投递会验证该发送者;中继投递不会。Discord 的已验证原生发送者使用相同的个人资料解析。
下一个已验证的消息轮次会在每轮对话信息中包含规范个人资料 ID 和当前显示
标签,作为主机生成的字段。系统
提示在请求者之间保持稳定。例如,一个有效角色包含 operator.admin 的已链接人员
可以询问:“将此会话分配给我。” 代理可以调用 sessions,并设置 action: "assign_owner"、
ownerType: "human",以及将该可信个人资料 ID 设置为 ownerId。粘贴到消息中的姓名、电子邮件
和 ID 不会确立请求者身份。
已链接的非管理员发送者也会收到请求者元数据,但 sessions
工具仍然仅限所有者使用。未链接或断言身份的发送者不会收到请求者
个人资料。取消链接会在后续轮次生效,无需重启。
GitHub 连接¶
打开 设置 → 个人资料 → GitHub 连接 以连接 我的 GitHub,而不更改共享的 系统 GitHub 账户。两个账户及其连接状态会一起保持可见。查看这些连接不需要选择代理或配置默认代理。连接凭据不会更改你已验证的 GitHub 登录身份、显示名称、头像、Git 共同作者署名偏好或 OpenClaw 权限。
我的 GitHub 需要一个已认证且持久的 Gateway 个人资料,包括本地所有者个人资料。具有 operator.read 的已识别操作员只能管理自己的连接,即使没有管理权限或通用写入权限。使用所有者个人资料的共享密钥设备会共享该连接。团队请使用按人员登录。系统级和按代理的连接更改仍然需要 operator.admin。
- 选择 为我 并连接 GitHub。对于已识别的管理员,这是默认目的。为系统 是明确的替代选项。
- 自行打开显示的
github.com/login/device链接并批准一次性代码。Gateway 会验证账户,并确保凭据不出现在浏览器响应和代理上下文中。 - 在使用前检查已连接的账户。个人连接使用设备授权。现有的 PAT 替代方案仍可用于管理员管理的共享连接。
使用你的账户发布¶
发布 PR 旁边的账户箭头仅在共享账户和个人账户都可用时出现。其紧凑菜单显示账户名称和已选账户;有效的共享账户仍为默认值。如果只有共享账户,请直接使用 发布 PR。如果只有 我的 GitHub,以 @account 身份发布 按钮会明确选择该账户并在一击内请求发布;仅发现操作绝不会选择个人凭据。如果同一账户通过两种路径连接,菜单会分别标注它们。个人发布要求会话处于空闲状态,并且工作树已协调或仓库检查点已被接受。设置帮助仅在无账户可用时出现,工作区指导仅针对个人发布出现。
编辑器显示未发布的分支更改或 PR 行。新更改会替换较早的 PR 历史,包括在同一分支上合并后所做的更改。账户箭头仅在发布处于空闲状态且账户选择未锁定时出现。待定状态、重试操作、确认详情和错误都保留在当前行内。成功发布会显示一个紧凑的 PR 链接,直到 GitHub 元数据提供正常的 PR 行;它不会添加单独的发布卡片。
如果 Gateway 在接受第一个发布请求之前拒绝了所选账户,请选择 刷新发布,查看当前账户,然后再次明确发布。未知结果会保持原始账户和请求锁定。对于共享发布,刷新发布 会使用原始调用密钥查找回执;未找到回执并不能证明该请求从未运行。重试发布 是对同一幂等请求的明确重放,而不是切换账户或新的发布。
发布状态会在聊天之间的导航中保留,包括非活动聊天窗格被卸载时。显示同一聊天的分屏窗格会共享其发布进度和重试。页面在当前已认证的 Gateway 连接中最多保留 32 次发布尝试。达到容量时,现有重试仍可用。在开始另一次发布之前,请关闭已完成的 PR 行,或在失败尝试后选择 选择新的发布。只读操作员可以关闭已观察到的完成结果,而无需发布或确认任何内容。
共享发布进度来自 Gateway 拥有的回执。检查状态 会读取已记录的结果,而不会再次执行发布。回执更改会通过现有的会话事件流刷新 UI,突发更改会在活动请求背后合并;恢复该事件订阅也会刷新任何待定观察。重新加载或重新连接会查找当前会话和工作区最新的适用共享回执,包括离线时错过的完成。关闭已完成的 PR 行或在失败后选择新的发布会确认当前呈现的该终态回执,因此刷新不会立即恢复它。已完成的共享请求可以从 Gateway 恢复,而不是保留一个屏幕外浏览器操作。个人回执和确认仍绑定到其原始已认证所有者。
排队的共享发布还会保留请求者本人、其原始权限上限,以及请求被接受时所需的任何访问授权。已过期的访客访问或已撤销的访客访问会阻止进一步的 GitHub 写入,包括在重启之后。新的邀请或后来获得的 staff 角色不会授权旧的访客请求。已保存的工作、现有 PR 以及单独授权的请求保持不变。Gateway 仍可以记录在访问结束前已接受的 GitHub 结果;如果回读不可用,则保持该原始结果待定,以便对账。
对于由访问授权支持的请求,将此人原始邮箱别名之一移动到另一个个人资料也会终止发布权限。恢复该别名不会重新激活旧请求。请求之后发生的显示名称更改以及添加的别名(包括其后续移除)不会取消该请求。
没有此请求者绑定的较旧未完成共享请求需要一个新的已授权发布请求。请先检查其已记录或未确认的 GitHub 影响。已发布的回执仍可读,而仍在启动中的插件会延迟恢复,直到可以检查其原始授权。
待处理的会话删除会阻止发布操作,但不会丢弃原始请求。删除失败会恢复其重试。已确认的删除会使该尝试失效。页面在重新加载或连接变化时会清除此记忆。个人资料、会话访问和工作区变化也会使受影响的浏览器状态失效;它们永远不会重新指向现有的 Gateway 请求。
发布需要 operator.write 以及当前访问权限才能更改会话。仅连接你的账号不会授予其中任何一项权限。
个人 GitHub 是由 Gateway 代理的发布连接,而不是会话范围的 shell 身份。普通 agent 的 git/gh 命令、模型发起的发布,以及仓库预览和发现保持其现有凭据行为。OpenClaw 云工作器使用共享执行身份,绝不会使用你的个人连接。对于仅仓库会话,请完成当前轮次并等待其已接受的 Git 规范化检查点。当工作器空闲或在 Stop 之后,个人发布可用,无需 Gateway 检出。源自 Gateway worktree 的远程会话在个人发布前仍需要 Stop cloud worker…。有关共享 agent 执行,请参阅 tools.github。
Gateway 会将个人发布绑定到你的已认证个人资料、所选账号,以及已接受的 worktree 快照或仓库检查点。另一位参与者的消息无法切换该账号,也无法授权使用你的连接进行后续工作。如果账号变得不可用或工作区发生变化,发布会停止并提供恢复操作,而不是回退到 System 或原生凭据。
在 Gateway 重启后,未完成的个人发布在继续之前需要你的明确确认。确认会复用原始请求。它会检查是否已创建提交、已推送分支或拉取请求,因此丢失的响应不会盲目重复该操作。连接变化或不兼容的工作区需要一个新的、明确选择的操作。对于仅仓库会话,即使后续轮次已完成,确认也会保留原始检查点。它绝不会静默发布这些后续更改。
如果确认无法访问其状态存储,Gateway 会报告一个可重试的不可用结果,并附带存储原因。如果工作区排他锁被持有,响应会指明其记录的持有者和租约纪元。调用方取消会单独报告,并且不会触发自动重试。重试使用原始请求和已接受的检查点。
断开并重连¶
断开 My GitHub 会移除其可用的本地凭据,并阻止未完成的个人工作使用该连接。重新连接会创建一个新的选择,即使是同一个 GitHub 账号也是如此。旧请求不会自动获得新的授权。断开不会重写已发布的提交,也不会撤销 GitHub 上的应用授权。如有需要,请在 GitHub 的应用设置中单独撤销该授权。
个人连接共享 Gateway 现有的可信主机边界。它们可防止另一位参与者通过个人 GitHub API 使用你的连接。它们不会将凭据与管理员隔离,也不会与对 Gateway OS 账号具有不受限制访问权限的代码隔离。请参阅 操作员作用域 和 网关安全。
个人资料外观偏好¶
当 Control UI 连接绑定到已认证的 Gateway 个人资料时,OpenClaw 会按个人资料存储其主题、主题模式和强调色。它们位于共享状态数据库中现有的 user_preferences 表中。这些选择会跟随该用户跨设备,而不会更改同一 Gateway 上其他人的外观。
个人资料的主题和主题模式偏好会覆盖其网关范围的 ui.prefs 设置,否则回退到当前主题的默认值。插件主题使用带命名空间的 ID,例如 space-pack/xenovessel。通过 agent 创建的个人主题定义存储在同一个人资料偏好存储中,并跟随个人资料跨浏览器。theme 工具和外观共享一个目录和选择所有者。插件热重载会在不重启 Gateway 的情况下更新该目录和已连接的浏览器。不可用的插件主题会临时渲染为 Claw,同时保留其已保存的选择。旧版 tweakcn 导入是例外:它们的调色板保留在导入它们的浏览器中,并且永远不会自动上传。选择该本地导入永远不会跟随个人资料。强调色优先级依次为个人资料中的 ui.accent 偏好、网关范围的 ui.prefs.accent、ui.seamColor,最后是当前主题的默认强调色。在外观中选择不同主题会清除个人资料字体覆盖,并存储 ui.accent: "theme",明确选择主题调色板而不继承网关强调色。恢复默认值仅清除个人资料偏好。所有者个人资料偏好会跟随所有者跨设备。没有个人资料的连接保持网关范围的外观行为。语言、聊天偏好和侧边栏条目继续使用网关配置。
编写指令,而非观察¶
每个条目包含一行元数据,随后是一条祈使句指令:
<!-- observed: 2026-07-27 | status: active -->
- Prefer concise progress updates during implementation work.
使用以下规则:
- 以祈使句开头,例如
Always、Never或Prefer。 - 记录观察到该偏好的日期。
- 状态仅使用
active或superseded。 - 每条指令只保留一条行为指导。
- 只存储有助于改进协助的细节。不要将该文件变成档案。
PrefEval 发现,在更长的对话中,偏好遵循能力会急剧下降,即使有检索和 Prompting(arXiv:2502.09597)。将稳定的偏好重新表述为指令,可以在代理使用它的位置使预期行为明确。
就地取代¶
当偏好发生变化时,更新其现有部分。不要在文件的其他位置追加第二条 active 指令。
之前:
<!-- observed: 2026-05-10 | status: active -->
- Prefer detailed explanations for every code change.
之后:
<!-- observed: 2026-05-10 | status: superseded -->
- Prefer detailed explanations for every code change.
<!-- observed: 2026-07-27 | status: active -->
- Prefer concise implementation summaries unless more detail is requested.
将已取代的条目保留在其替代条目旁边,以便当前指令没有歧义。HorizonBench 报告称,在用户更改偏好后,系统通常会选择最初陈述的偏好(arXiv:2604.17283)。仅追加的矛盾历史会重现该失败模式。
选择正确的文件¶
| 信息 | 存储位置 |
|---|---|
| 稳定的偏好或沟通风格 | USER.md |
| 会改变应如何协助用户的关系或活跃项目事实 | USER.md |
| 持久的非个人资料事实、决策或经验教训 | MEMORY.md |
| 详细观察或运行上下文 | memory/YYYY-MM-DD.md |
| 事件条件化的未来操作 | 常设意图 |
| 精确时间或周期性操作 | 计划任务 |
保持紧凑¶
USER.md 有固定的 4,000 字符 bootstrap 上限,小于通用的每文件预算。agents.defaults.bootstrapMaxChars 和 agents.entries.*.bootstrapMaxChars 设置只能降低 USER.md 的此上限;它们不能提高它。个人资料指导旨在保持指令大小,以免将项目规则或持久事实挤出共享 Prompt 预算。
当 USER.md 接近上限时:
- 删除过时的已取代条目(将替代条目保留在旧条目旁边,以便当前指令保持无歧义)。
- 将不会改变应如何协助你的持久事实和经验教训移到
MEMORY.md。 - 将详细观察和正在运行的项目上下文移到每日
memory/YYYY-MM-DD.md文件中。 - 对事件条件化的未来操作使用 常设意图,以便触发器保持注入,而不包含完整细节。
MEMORY.md 在符合条件的私有会话中,以工作区 bootstrap 和正常的每文件预算注入 — 子代理、cron、组和频道会话会省略根记忆,没有可信来源的记忆会被过滤掉(参见 记忆来源)。每日记忆文件按需检索,因此移到每日记忆中的细节仍然可访问,而不会消耗始终注入的 USER.md 预算。当固定上限限制 USER.md 时,openclaw doctor 会指出该上限并建议压缩文件。如果共享总预算也限制注入,Doctor 会保留减少总 bootstrap 内容或调整 bootstrapTotalMaxChars 的建议。
相关¶
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw