文件路径与目录布局

上一页讲了一名数字员工的目录里有什么,这一页讲它在磁盘上的位置:运行时的路径规则是什么、AIDC 把部门与数字员工放在哪里、同一台机器上多名数字员工彼此是什么关系、技能能不能互相使用。所有路径都以结构占位符给出,实际部署时按客户的命名规范填入。

// 一句话理解

运行时只有两个层级:一个根目录,下面若干个平级的数字员工目录。AIDC 把根目录当作部门域,把每个数字员工目录当作一名数字员工;「公司」这一层由中枢承担,不是机器上的目录。

运行时的路径规则

Harness 运行时通过一个状态目录来定位自己的全部状态:配置、会话库、记忆、技能、日志、定时任务、网关进程号,全部在这个目录之下。运行时内部所有路径都从它推导,因此把这个目录指向哪里,运行时就在哪里工作。

创建一名数字员工,就是在根目录下建一个子目录 profiles/<标识>/,启动时把状态目录指向它。同一份运行时代码于是看到另一套完整、独立的状态。根目录本身也具备状态目录的形态,但在 AIDC 的布局里它只承担容器职责:放 profiles/ 子目录、域内共享看板与共享技能。

东西位置
根目录<根目录>/,可挂在任意一块卷上
数字员工目录<根目录>/profiles/<标识>/
某数字员工的技能<数字员工目录>/skills/
域内共享看板<根目录>/kanban.db
域内共享技能<根目录>/skills/
引擎代码与状态目录无关的机器级安装位置

运行时判断层级的规则很简单:状态目录的上一级叫 profiles,那么再上一级就是根目录。所以任何 <某处>/profiles/<标识>/ 都是合法的数字员工目录,根目录可以放在任意一块卷上。AIDC 正是利用这一条把每个部门放到独立卷。

AIDC 的布局:部门域与数字员工

AIDC 不改运行时的规则,只决定根目录放在哪、叫什么、谁拥有。规则是:一个部门一个根目录,根目录挂在该部门的卷上,部门里每一名数字员工是根目录下的一个子目录,且每名数字员工对应一个独立的操作系统用户。

组织单位路径示例(某部门的应付会计岗)
引擎(机器级)<引擎安装目录>/<版本>/由 AIDC 发行与升级,客户 IT 不改
部门域根目录<部门域卷>/<根目录>//opt/finance/harness/
域内共享物<根目录>/kanban.db<根目录>/skills//opt/finance/harness/skills/
数字员工<根目录>/profiles/<岗位标识>//opt/finance/harness/profiles/finance-ap/
数字员工的工作区(在 profile 外)<部门域卷>/workspaces/<岗位标识>//opt/finance/workspaces/finance-ap/
部门共用工作区<部门域卷>/workspaces/shared//opt/finance/workspaces/shared/
数字员工的 HOME(只放工具状态)<部门域卷>/homes/<岗位标识>//opt/finance/homes/finance-ap/
系统服务每名数字员工一个,以岗位标识命名finance-ap-gateway

两条纪律跟着这张表:第一,根目录不当数字员工用,部门的第一名数字员工也要是 profiles/ 下的子目录;第二,工作区与 HOME 放在部门卷上、根目录之外,但不出这块卷:profile 是「人」,工作区是「岗位上的桌面」,运行时刻意把两者分开,桌面可以几个人共用;出了卷就无法按部门核算容量、也无法随卷整体搬迁。

根目录、数字员工与临时子代理

同一台机器上会出现三种「像 Agent 的东西」,它们的关系是平的,不是树:

把这三样对应到组织语言,就是下面这张表。「公司」在运行时里没有对应物,这是刻意的分工:公司级的登记、策略与技能注册表由中枢承担,它不是任何一台机器上的目录。

运行时里的东西AIDC 组织单位说明
(无)公司由中枢承担:岗位登记、策略下发、技能注册表、用量与健康投影。Company Harness 是组织制度层面的概念,不是某个目录
根目录部门域一块卷、一份共享看板、一组共享技能;高敏部门独占机器
数字员工目录数字员工一个岗位一名,独立操作系统用户,独立网关
临时子代理数字员工的临时分身同一目录内,任务结束即消失,不是组织单位

技能能不能跨数字员工使用

默认不能,需要显式共享。运行时为每名数字员工解析技能目录时只看它自己的 skills/,根目录下的 skills/ 对数字员工是不可见的。这与「根目录不是上级」是同一件事的两面:既然没有上级,就没有自动继承。

运行时提供了四条让技能出现在多名数字员工里的路径,性质各不相同:

路径机制是复制还是共享之后会不会联动
引擎内置技能创建数字员工时从引擎自带目录播种;引擎升级时把新增的内置技能同步给所有数字员工复制只同步新增,用户改过的不覆盖;可让某名数字员工退出播种
建档时克隆以另一名数字员工为模板创建时,把它的技能目录整个拷过来复制不联动,之后各改各的
外部技能目录在数字员工的配置里列出额外要扫描的目录,例如指向根目录的 skills/共享实时联动;但只要目录可写,任何一名数字员工都能改动共享技能
项目内技能工作区里受信任的仓库自带的技能目录共享(随仓库)随代码更新;每次进索引前过安全扫描,危险技能被隔离

同名技能的优先级固定为:项目内技能优先,其次数字员工自己的,最后外部目录。这意味着一个部门共享的技能可以被某名数字员工在自己目录里同名覆盖,而不影响其他人。

AIDC 在这四条之上定了两条用法:

// 治理规则

不要为了「让大家都能用」把技能放进根目录再让所有数字员工可写地挂上它。一名数字员工改坏一个共享技能,全部门下一次会话一起坏,而且审计上分不清是谁改的。共享目录只读,授权走中枢。

路径速查

运维时最常要找的几样东西,按「先找部门域,再找数字员工」的顺序:

要找什么在哪
这台机器上有哪些部门域每个域一个根目录,各挂在自己的卷上;一台机器可以有多个
某部门有哪些数字员工<根目录>/profiles/ 下的子目录,一个子目录一名
某数字员工的人格与规则<数字员工目录>/SOUL.md<数字员工目录>/AGENTS.md
它连了哪些渠道、用什么模型<数字员工目录>/config.yaml;凭证在 <数字员工目录>/.env
它的会话与消息<数字员工目录>/state.db
它产出的文件<部门域卷>/workspaces/<岗位标识>/,即配置里 terminal.cwd 指向的目录
它的网关日志<数字员工目录>/logs/gateway.log
它的定时任务<数字员工目录>/cron/
它有哪些技能<数字员工目录>/skills/,加上配置里登记的外部目录
它是不是在跑<数字员工目录>/gateway.pid,或以岗位标识命名的系统服务的状态
部门共享看板<根目录>/kanban.db
中枢登记的岗位、负责人、策略不在机器上,在 AIDC Console

相关阅读