跳到主要内容

文件系统

文件系统

租户工作区是一个普通的 Vite 项目。编写者在 src/ 下每个被识别的文件系统角色中放置一份声明;Bolt 从中推导出全部装配与生成类型。本页是地图——编写章节的其余部分详述每个角色。

规范布局

src/
├── +agents.md                     # required — the workspace prompt
├── +env.ts                        # optional — declare env vars; private keys are server-only
├── access/
│   ├── +teams.ts                  # which policies each named team holds
│   ├── +anonymous_limits.ts       # pre-sign-in address limits only
│   └── policies/+<name>.ts        # grants, approvals, capabilities, and limits
├── capabilities/
│   ├── tools/+<name>.ts           # optional workspace tool
│   ├── mcp/+<name>.ts             # optional remote MCP server
│   └── skills/<name>/+skill.md    # optional workspace Agent Skill
├── collections/
│   ├── +relationship.ts
│   └── <lower_snake_case>/
│       ├── +model.ts
│       ├── +hooks.ts              # optional
│       ├── +pipelines.ts          # optional
│       ├── +integrations.ts       # optional
│       └── +representation.svelte # optional create/display/edit override
├── datatypes/<name>/
│   ├── +definition.ts
│   └── +renderer.svelte           # required
├── apps/
│   ├── +<app>.svelte
│   └── <group>/
│       ├── +group.ts
│       └── +<app>.svelte
├── automations/+<name>.ts
├── envoys/+<name>.ts
├── functions/+<name>.ts
├── i18n/
│   ├── messages.en.json           # required — English copy
│   └── messages.zh.json           # required — Chinese copy, exact same keys
└── lib/**                         # optional, free-form helper code — no role, no + prefix

必需角色是 src/collections/+relationship.ts 、至少一个集合 +model.ts ,以及至少一个应用 src/apps/**/+<lower_snake_case>.svelte 。应用、自动化、函数与 Envoy 的 ID 来自其文件名。放错位置、重复、嵌套与未知的角色文件都会导致结构化编译失败。src/+agents.md 中的工作区提示与 src/i18n/ 中的双语目录都是必需的。

生成状态

.norbital/
├── diagnosis/     # ignored
├── dist/          # ignored
├── generated/     # ignored
├── migrations/    # committed
├── types/         # ignored
└── tsconfig.json  # ignored

编写的根 tsconfig.json 继承 .norbital/tsconfig.json 。Bolt 拥有这份唯一的生成配置与所有编译器路径;它不使用 baseUrl 。只有 .norbital/migrations/ 会被提交。

命令

bolt sync
bolt migrate
  • bolt sync 运行文件系统编译器:校验角色、生成注册表模块、本地 $types 与生成的 TypeScript 配置。
  • bolt migrate 会对比已编写模型与迁移历史,并把下一条迁移写入 .norbital/migrations/ .

编写边界

  • 应用从 $bolt/client .
  • 服务器角色使用其相邻的生成 ./$types.js .
  • 不要手工编写注册表、装配模块、生成声明或打包脚本。
  • 不要添加 SvelteKit 路由、 svelte.config.*$app/*#lib .

一览所有角色

每个角色都是在唯一位置的一个文件,默认导出一份声明,并以文件名作为其身份。未知、重复、放错位置或遗留的角色文件是编译错误——不是被静默忽略的文件。

角色位置导出文档
集合模型collections/<name>/+model.tsdefineModel集合
关联注册表collections/+relationship.ts关联构建器集合
钩子collections/<name>/+hooks.ts钩子声明钩子
流水线collections/<name>/+pipelines.ts流水线声明流水线
集成collections/<name>/+integrations.ts集成声明集成
表单覆盖collections/<name>/+representation.svelte创建/展示/编辑组件UI 组件
自定义类型datatypes/<name>/+definition.tsdefineCustomTypeUI 组件
自定义类型渲染器datatypes/<name>/+renderer.svelte展示/编辑组件UI 组件
应用apps/**/+<name>.svelte应用组件应用
应用组apps/<group>/+group.tsgroup应用
自动化automations/+<name>.tsdefineAutomation自动化
Agent 工具capabilities/tools/+<name>.ts 位于 src/defineAgentTool自定义工具
Envoyenvoys/+<name>.tsEnvoy 声明Envoy
Agent 指令+agents.mdworkspace promptAgents
Agent 技能capabilities/skills/<name>/+skill.mdskill 文档Agents
策略access/policies/+<name>.tspolicy 声明策略
远程函数functions/+<name>.tsdefineQueryHandler / defineCommandHandler函数
环境+env.tsdefineEnvironment工作区工作室
种子数据+seed.ts租户夹具行为

保留名称与标识符

以下名称归平台所有。使用它们是编译错误,而不是覆盖:

  • 系统集合 —— userteamapproval_requestsession 及平台基线中的其余集合可以被查询,但绝不能重新定义( 系统集合 )
  • 平台列 —— idcreated_atupdated_atrow_versionsys_periodapproval_id 会自动添加到每一行
  • 内置 Agent 工具 —— describe_workspaceread_collectionwrite_collectionlist_skillsread_skillspawn_subagent 不能被重新定义为工作区 Agent 工具
  • 随附技能 —— norbital-platformauthoring-tenant-workspace 拥有其名称;遮蔽这些名称的工作区技能会被拒绝
  • 布局原语 —— StackInlineClusterSplitGridColumnsColumnCoverCenterFrameBoundScroll 拥有其几何属性——参见 布局
  • 编译器私有模块 —— virtual:bolt/* 是编译器私有的;租户源码必须使用 $bolt/client

租户源码中任何位置都禁止使用:

  • schema.tsworkspace.ts 、集合桶文件、 *.schema.ts 、应用 App.svelte 、SvelteKit 路由、自定义打包器、 defineTabledefineSchemaQueryRowNorbitalAuthoring$tenant#lib
  • 编译器直接拒绝的遗留 API——先前的 Page/Pane/Region、布局元数据、split-client、遗留枚举、record-rep、 +create.svelte 与调用点创建 API。没有兼容路径。