部门域:卷、组与用户
前两页讲了一名数字员工是一个目录、目录住在哪里。这一页讲「不同部门怎么分开」:磁盘怎么分区、身份怎么隔离、组织的五层怎样一一落到机器上,以及给一个新部门开区域要做哪几步。答案只有一句:公司登记在中枢,部门是一块卷加一个根目录,数字员工是根目录下的一个目录;边界由操作系统的组与用户承担。
一个部门 = 一块独立的卷 + 一个根目录 + 一个操作系统组;一名数字员工 = 根目录下的一个目录 + 一个操作系统用户。目录权限位直接就是组织边界,不靠软件层的承诺。
三层标准与各自的真源
这套布局不发明新结构,只是把运行时已有的「根目录 / 数字员工目录」两层,和 AIDC 中枢的登记对上号。每一层都有明确的真源与权限载体:
| 层 | 真源在哪 | 磁盘上 | 权限载体 |
|---|---|---|---|
| 公司 / 集团 | 中枢:岗位登记、策略、技能注册表 | 无对应目录 | 中枢登记与策略下发 |
| 部门 | 中枢登记 + 机器上的一块卷 | 一块卷挂载点下的根目录 | 一个操作系统组 |
| 数字员工 | 中枢登记 + 目录本体 | <根目录>/profiles/<岗位标识>/ | 一个操作系统用户 |
公司层「只登记不落盘」是刻意的。运行时本身没有公司这一层,AIDC 不发明一个假的「公司根目录」去套它。一个公司可以横跨几台机器,也可以几个小部门共用一台机器、各挂一块卷;机器与公司之间没有绑定关系。
什么是操作系统用户,为什么需要它
操作系统用户就是服务器上的账号。机器上每个进程都以某个账号的身份运行,每个文件都记着属主、属组和权限位,内核在每一次读写时按这两样判定放不放行。这是操作系统最底层、最不可绕过的隔离手段。人登录服务器要用账号,AIDC 让每一名数字员工也拥有自己的账号,道理相同。
需要它的原因很直接:数字员工目录只隔状态,不隔文件访问。如果全部数字员工跑在同一个账号下,财务的数字员工用一条读文件命令就能看到人事的会话库,人格文件里写再多禁令也拦不住。治理规则「数字员工的权限不高于它所服务岗位的人」要真能成立,必须落到内核层。
组织五层如何落到机器
AIDC 的组织模型是集团、公司、部门、岗位、场景五层。落到机器上,只有部门和岗位需要操作系统身份,其余各层要么在中枢,要么继承所在岗位:
| 组织层 | 机器上的对应物 | 权限载体 |
|---|---|---|
| 集团 / 公司 | 中枢租户;一台或多台机器 | 中枢登记表,不是操作系统概念 |
| 部门 | 一块卷 + 一个根目录 | 一个操作系统组 |
| 岗位(数字员工) | <根目录>/profiles/<岗位标识>/ | 一个操作系统用户 |
| 场景 | 会话、临时子代理 | 无独立身份,继承所在岗位的用户 |
于是目录权限直接就是组织边界。以一个部门、两名数字员工为例:
<部门卷挂载点>/ 2770 root:<部门组> 非本部门用户进不来
<部门卷挂载点>/<根目录>/ 2775 admin:<部门组> 根目录,同组共用
skills/ 2775 admin:<部门组> 部门共享技能,组只读
kanban.db 0660 admin:<部门组> 部门共享看板,组可写
profiles/<岗位 A>/ 0700 <岗位 A>:<部门组> 只有本人可进
profiles/<岗位 B>/ 0700 <岗位 B>:<部门组>
<部门卷挂载点>/workspaces/<岗位 A>/ 0700 <岗位 A>:<部门组> 工作区,一人一桌
<部门卷挂载点>/workspaces/shared/ 2770 admin:<部门组> 部门共用桌面,组可写
<部门卷挂载点>/homes/<岗位 A>/ 0700 <岗位 A>:<部门组> 工具缓存与配置
同部门的看板能共写、技能只能共读、彼此的目录互不可见,跨部门连卷都进不去。这就是 Agent Cell 所说的「爆炸半径可控」在内核层的实现。运行时的托管模式(同组共用根目录、新建文件自动继承组)正是为这种「一个根目录多个用户」的形态设计的,所以这条路是顺着运行时走,不是硬改。
根目录上放什么、不放什么
- 放:部门共享看板(组可写)、部门共享技能(组只读)、域级配置。
- 放在卷上、根目录旁边:
workspaces/(一人一桌,外加一个部门共用桌面)与homes/(每人的工具缓存与配置)。运行时把 profile 与工作区刻意分开,AIDC 照此办理,两者同卷不同目录。 - 不放:任何一名数字员工。部门的第一名数字员工也是
profiles/下的子目录,根目录永远只当容器。 - 不放:引擎代码。引擎是机器级安装,升级不触碰任何部门卷。
给一个部门开区域
- 开卷。容量按域内所有数字员工目录之和的一点五倍向上取整;会话库、工作区、子进程 HOME 是三大户。块存储的读写配额按卷计,分卷等于顺手把部门之间的 IO 争抢也隔开了。
- 挂载并建根目录。挂到部门的挂载点,写入开机挂载表,根目录设为组共用模式,属组给该部门的组。
- 建身份。每名数字员工一个操作系统用户,家目录指向部门卷上的
homes/<岗位>/,加入部门组;账号锁定密码,数字员工不需要登录。 - 放入或迁入数字员工。新建的直接在
profiles/下创建;从别处迁来的走「搬家式」语义:预同步、干净停止、增量同步、剥掉运行态文件、启动。 - 接系统服务。每名数字员工一个服务,以它的用户与组身份运行,工作目录指向
workspaces/<岗位>/、HOME 指向homes/<岗位>/,与配置里的terminal.cwd一致。这一步做完,一名数字员工的身份、桌面与工具状态都在同一块卷上。 - 中枢登记。岗位记录写入所属根目录与用户号;重新下发运行时策略,让受保护路径按新根目录生成;投影与工作区守卫的路径规则同步更新。
整个部门换机器时不拷数据:卸下卷、挂到新机器、逐个补用户与服务。用户号在新旧机器上保持一致,目录权限就原样有效。
容量与 IO 的三条经验
- 换挂载即丢页缓存。内存装不下热数据的机器,换卷后会经历一段冷扫描,提高读写配额救不了单线程的随机读。要么给足内存,要么在低峰期换。
- 会话库的膨胀主因是全文索引。定期瘦身索引比扩容更有效,索引可以重建,对话不能。
- 高敏部门独占机器,而不只是独占卷。卷隔的是数据,机器隔的是内存与 CPU 争抢;财务、人事这类部门两者都要。
两种运行形态下的身份映射
| 形态 | 进程以谁的身份跑 | 工具以谁的身份执行 |
|---|---|---|
| 一名数字员工一个网关进程 | 该数字员工的用户 | 同上,最直接 |
| 一个进程服务整个部门 | 一个专用的服务账号,只持有状态 | 每次工具调用切换到发起的数字员工的用户,动作归本人 |
| 分布式形态 | 无常驻进程;目录作为快照存于对象存储 | 按回合唤醒的节点以该数字员工的身份投影目录,快照键按「公司 / 部门 / 岗位」分前缀,逻辑不变 |
部门之间不共享卷,数字员工之间不共享用户。任何「为了方便先跑在同一个账号下」的临时做法,都等于取消了岗位边界;跨部门的协作走事件、本体链接与显式共享对象,不走文件系统。
相关阅读
- 文件路径与目录布局 — 根目录与数字员工目录的路径规则
- 中枢下发什么 — 公司层如何统一管理策略、技能与身份
- Agent Cell — 部门级隔离单元的六个组成部分
- 权限模型 — 从组织边界到文件权限的完整规则