2026-11-02。本次依据受控管理连接取得的只读证据 work/identity-audit-20261101.json(2026-11-01T15:57:36Z),以及现有 Skill、服务代码对照。没有为核查创建员工、Agent 或业务样例。
_User 返回 0 条。不存在独立员工/Agent 注册表;meta.ownerId 是写入所用服务身份,不是企微员工或机器人账号。name:王刚001(联调模拟),来源为 name_only。没有真实平台账号标识。| 对象 | 已有归属字段 | 本次缺项 |
|---|---|---|
| KfSession | studentName、userRef、groupId、workshopKey;meta.attribution 内的 participantName/Key、identityBasis、agentName/Key、agentKeyOrigin、conversationKey、channel | 私有员工/Agent 平台账号及 Agent 自身登记机制 |
| KfArtifact / KfProject | ownerName、uploadedByKey、agentName、agentId、ownerSession、sessionRef、uploadMethod;新工作坊记录另带归属快照 | 完整账号只能在补扩展后的私有快照中保存 |
| KfOpportunity | uploadedBy、uploadedByKey、agentName、agentId、sourceSession、sessionRef | 通过 sessionRef 追溯账号资料 |
| KfConcept / KfFormulaItem / KfStageEvent | projectRef / conceptRef / sessionRef | 沿关联追溯,不重复建立假账号 |
复用现有 meta、producer 和引用字段,无需改变业务表结构、建立登录账号或改看板样式。
所有新员工和新数字人都先登记独立档案;支持任意姓名和实例数量。Agent 自身档案存 name/key/role/identityBasis/runtimePlatform/channel/collectedAt/account。王刚001=workshop、运维001=operations 是已知实例用途,不是固定槽位。账号字段固定为 platform、tenantId、accountId、accountName、runtimeAgentId、wecomAppAgentId;未知 null,不从显示名推导账号。企微 corpId、企微应用 agentId、运行时 Agent ID 分开保存。人工登记生成持久 UUID;运行配置或可信渠道上下文必须提供真实稳定标识,生成平台与编号的摘要键,显示名与采集时间不进入稳定键。登记不表示平台认证,agentAccountVerified 始终为 false。
员工保存 name/key/identityBasis,account 包含 platform、tenantId、accountId、accountName、employeeNumber,未知字段 null。企微 userId 填 accountId;participant.userId 仅可引用本应用已有 _User.objectId。没有发送者 ID 时登记参与者 UUID,不拿群会话 ID 代表所有员工。同名返回 needsReview 与候选;明确复用才填 reuseKey,确认不同人才用 confirmNew 新建。稳定账号相同且资料一致时自动复用,资料冲突停止。
档案分别保存于 /opt/data/ksf-workshop-state/agents/ 和 participants/,文件名取完整档案键后缀;多人、多个同角色 Agent 共存。workshop-start 必须引用 participant.profileKey,并传 --agent-profile ,自动注入两份登记资料,缺档案在创建前停止。后续阶段写入检查 session 与自身 Agent 一致。冲突停止,不覆盖旧档案或换业务键。仅 role=workshop 能执行课堂写命令;角色本身不是服务权限。旧双槽文件可验证后 adopt-agent 复制进新目录,原档案保留。
本地登记不写远端员工表、也不创建 _User;会话成功时写入私有归属快照。不同容器不能自动发现本地 UUID,需要受控核对和复用同一档案,不能按姓名跨容器合并。数字人档案也不是可供其他实例随意冒用的认证凭据,必须与当前执行者可信配置核对。
自身配置的实际路径/接口需由数字人在当前运行环境核实;本地程序没有猜测 Hermes 配置路径。数字人首次提取白名单形成非密钥摘要,register 保存;后续 check 可对照当前配置摘要,零写入、零网络。业务入口自动带入的是已登记档案;当前没有可信配置可读时,必须如实说明仅复用登记资料。
服务端把账号资料保存在 KfSession.meta.attribution,报告、来源、项目继承同一快照,机会卡沿 sessionRef 追溯。通用资料导入的 KfImportJob.producer.agent 保留执行者。密码、服务令牌、私钥和 cookie 不属于账号资料,输入白名单不接受它们。
公开看板继续只返回所需归属名称/键。CLI 的 search/read/project-status 输出也移除账号、私密会话键和服务 ownerId;账号实际落库核验由受控管理端完成。业务原文/报告中不要复制账号信息。
完整操作说明在 skills/ksf-workshop-runtime/references/identity.md;入口为 ksf-identity.mjs。身份登记不改变材料的 dataMode:构造待查清单仍使用 sample,save 继承 session 模式。新增 workshop-read 按返回编号读取,不误用 search 的 sessionId 过滤。
2026-11-02补充:据运维001转交的只读核查,真实接入是aibot WebSocket,body.from.userid已存在;前面“没有发送者ID”的判断应收窄为此前未正确读取。此ID不自动视为通讯录成员UserID,企业及姓名仍未知。补充接收字段identifierType=wecom_aibot_sender、scopeId=botid;稳定归属以botid+from.userid为准,tenantId未知为null,不用chatid或前缀推断身份。无姓名时可自动登记“员工待绑定·摘要”并继续课堂,无需员工回答账号;实名及跨机器人合并仍须管理员核对。
Skill已在本地增加register-channel-employee,两个待部署函数增加作用域校验及channelIdentitySchema=ksf.wecom-aibot-sender.v1。可信逐消息上下文需要运维实现适配器/hook交付,本仓库没有该远端源码,未编造适配器补丁,也未更改网关、配置或进程。具体接入契约与待做工作见docs/wecom-aibot-identity-handoff.md;本地夹具不构成真实企微来源或实名认证证明。
本次为本地实现和测试,尚未把身份扩展部署到服务器,尚未更新数字人容器,也未填入无法核实的真实账号。现有公开看板和已上线九文件保持原状。
最新aibot接收版的验证结果记录在 work/aibot-identity-validation-20261102.json,覆盖原通用登记、作用域发送者自动登记、缺档案阻断、归属快照与脱敏,并做I/J、旧双槽及通用登记包的隔离升级。它们是本地验证,不代表生产库、企微接入或数字人容器已升级;此前交付包保留,不覆盖旧附件。
下一步可先安装新版 Skill 并分别登记自身档案;仅本地写入,零网络、零业务数据。运维001完成两函数发布预检后,正式升级 ksfStartWorkshopSession 和 ksfGetIngestContract;固定基线与函数对象 ID,未知版本停止,备份和失败回退只涉及两个函数代码。管理机已完成一次真实线上只读预检,两项均匹配已知基线,尚未执行 apply。
随后只读合同应出现 workshop.identitySchema=ksf.agent-self.v1,再用现有 K 轮稳定业务键让王刚001执行一次员工会话与 S1 待查清单保存,管理端回读归属、账号字段及 sample 标记,再确认看板显示。不要重新跑已有技术样例或伪造企微账号。发布工具默认命令为 node server/scripts/deploy-identity.mjs,正式执行才加 --apply。