11. 目录结构与磁盘文件
omicos 把数据分两处存:全局(与用户绑定,跨工作区共享)和工作区(与你当前目录绑定)。理解这套布局有助于排查问题、备份数据、迁移环境。
11.1 全局目录 ~/.omicos/
与账户 / 机器绑定,所有工作区共享。可用 OMICOS_LOCAL_HOME 改写其位置。
~/.omicos/
├── cloud_login.json # 登录凭证的全局副本/回退(`omicos login` 默认写这里;守护进程优先读工作区本地版),权限 0600
├── auth.json # API key 回退存储(见 Provider 章节)
├── plan_token.jwt # 订阅分层 JWT,权限 0600,后台自动续期
├── env/ # omicos 管理的共享 Python kernel 环境(.venv)
├── memory/ # 跨对话长期记忆(.md 文件)
├── cloud-agents/ # 从 omicos-admin 同步的 agent 缓存
├── cloud-skills/ # skill 缓存
├── cloud-models/ # 模型 catalog 缓存(models.json)
├── cloud-memory/ # memory 同步缓存
├── oauth/ # 第三方 OAuth 凭证(codex.json / gemini_cli.json)
└── usage/ # 无工作区时的用量审计回退
11.2 工作区目录 <workspace>/.omicos/
与你启动 omicos 的目录绑定,存放该工作区的会话、轨迹、锁。serve 默认是 .omicos,cli 默认是 .omicos/cli(由 --data-dir 控制)。
下面是一个真实的、已登录工作区的 .omicos/ 内容(serve 默认 .omicos,cli 默认 .omicos/cli,由 --data-dir 控制):
<workspace>/.omicos/
├── workspace_id # 持久的 32 位十六进制 id,决定云端 process_id(跨目录移动稳定)
├── workspace_id.<user>.bak # 切换账户 / 旋转 workspace_id 时留下的备份
├── serve.pid # 守护进程锁(两行:第 1 行 pid,第 2 行 port)
├── cloud_login.json # 工作区本地登录凭证(守护进程优先读这里,权限 0600)
├── cloud_login.json.*.bak # 凭证 realign / 账户切换时留下的旧备份
├── account.json # 本地会话记录(authenticated / token / plan / email)
├── settings/ # llm-config.json、llm-providers-state.json
├── conversations/ # 会话内容(每会话含 history.jsonl、meta.json、outputs/、uploads/)
├── conversations.json # 会话索引
├── conversation_sync.state.json # 会话同步高水位(云端 stale filter 用)
├── trajectories/ # 每轮分析的审计日志
│ ├── <owner_id>/ # 按登录账户(owner UUID)隔离(2026-05 起),多账户不串
│ │ └── turn_<hex>.jsonl # append-only JSONL,自动 push 到云
│ ├── anonymous/ # 登录前写下的会话落这里
│ └── .sync_state.json # 轨迹上传同步状态(按 device_id 记录)
├── usage/ # 按 LLM 调用计的用量审计(<session>.jsonl)
├── tool_outputs/ # 工具结果溢出存储(可达数百条)
├── timeline/ # 时间线(可能为空)
├── sidecar-restart.log # sidecar 重启日志
├── agents/ # lab+ 订阅的本地 agent 覆盖(仅在你创建后才存在)
└── skills/ # lab+ 订阅的本地 skill 覆盖(仅在你创建后才存在)
注意:
agents/、skills/、updater/等目录只在被用到时才出现,干净的工作区里不一定有。
11.3 serve 与 cli 的数据目录隔离
| 模式 | 默认 data_dir |
|---|---|
omicos serve |
<workspace>/.omicos |
omicos cli |
<workspace>/.omicos/cli |
二者的会话、轨迹完全隔离、互不可见。这就是为什么在网页端进程选择器里,带 (cli) 后缀的进程和不带后缀的是两个独立命名空间。
11.4 几个关键文件的作用
| 文件 | 作用 |
|---|---|
workspace_id |
持久的 32 位十六进制 id(无连字符,不是带横线的标准 UUID)。它决定云端 process_id(local-<workspace_id>),即便你把工作区目录改名、搬位置,进程身份也稳定。 |
serve.pid |
工作区锁(两行:pid + port),由 RAII 守护——进程正常退出会自动清除;被 SIGKILL 强杀留下的陈旧锁,会在下次启动时被自动回收。 |
cloud_login.json |
工作区本地登录凭证,守护进程优先读这里(全局 ~/.omicos/cloud_login.json 作回退)。删了它等于该工作区登出。权限 0600,切勿外泄。 |
trajectories/<owner_id>/ |
轨迹自 2026-05 起按账户 owner UUID 分目录,保证同一个工作区文件夹里多个账户的记录互不串台;文件名形如 turn_<hex>.jsonl。 |
11.5 用变量改写位置
| 变量 | 改写什么 |
|---|---|
OMICOS_LOCAL_HOME |
全局目录(凭证、workspace_id 等)的根位置。 |
OMICOS_WORKSPACE_ROOT |
工作区根(会话 / 轨迹存储位置)。 |
--data-dir |
工作区数据目录(默认 workspace_root/.omicos)。 |
11.6 备份与迁移建议
- 要备份的:
~/.omicos/memory/(长期记忆)、各工作区的conversations/和trajectories/。 - 不必备份的:
cloud-*/缓存(会从云端重新同步)、env/(可用omicos env setup重建)、updater/、tool_outputs/。 - 绝不外泄的:
cloud_login.json、auth.json、plan_token.jwt、oauth/。