全部文档

应用包结构(必须有什么)

读者:要从零手工搭一个可运行工作区应用的人。

来源 sdk/appsdk/应用包结构.md

读者:要从零手工搭一个可运行工作区应用的人。 运行时根目录{RUNTIME_DIR}/workspaces/{workspaceId}/apps/{appSlug}/


1. 完整目录一览

{appSlug}/
├── app.json                 # 界面与数据模型(作者主改)
├── manifest.json            # 清单(平台写入:显示名、程序集、intents…)
├── data/
│   └── app.db               # 业务 SQLite(平台按 entities 建表)
├── schema/
│   └── 001_init.sql         # 由 entities 生成的 DDL
├── logic/
│   ├── handlers.py          # 自定义动作入口(有 script 动作时必须可执行)
│   └── *.py                 # 可选:业务辅助模块(如 generate_profile.py)
├── scripts/                 # 可选:组装/工具脚本(invoke 时拷入沙箱)
├── assets/                  # 可选:HTML 模板、静态资源
├── references/              # 可选:pipeline.json、field-mapping.json 等
└── skills/
    └── SKILL.md             # 供智能体对话调用的说明(常由平台生成)

2. 必选 vs 可选

2.1 最小可用应用(仅本地登记 + 列表)

例如「记事本」:只有 form + list,走内置 CRUD。

是否必须说明
app.json必须≥1 实体、≥1 视图
manifest.json必须正常经平台「创建应用」写入;勿手改错 app_id
data/app.db必须首次初始化/迁移时生成
schema/*.sql必须与实体对齐;改实体后由平台迁移补列
logic/handlers.py磁盘上通常有桩无自定义 actions 时可不实现业务;有 impl=script 则必须实现 handle
actions不需要仅 CRUD 时可省略
scripts/ assets/ references/不需要

2.2 带「一键办事」的应用(动作 + 可选取数)

例如「员工画像」:action_form + 历史列表 + 脚本取数出 HTML。

是否必须说明
上表最小集必须
app.jsonactions + action_form必须动作 id 与视图 action 一致
logic/handlers.py 中对应分支必须动作与handlers
logic 内其它 .py按需建议拆分,避免单文件过大
references/pipeline.json建议多步取数时用声明式步骤
scripts/ + assets/按需要生成报告/HTML 时需要
references/field-mapping.json按需模板填槽
工作区 数据连接 与预定义查询按需pipeline 里的 query_id 必须在连接中存在且用户有权

3. 调用时哪些目录会进沙箱

执行自定义动作时,平台把下列目录拷到临时工作目录(不会把整个应用目录原样挂载):

  • logic/(必须有 handlers.py
  • scripts/
  • assets/
  • references/

不拷贝data/schema/skills/app.jsonmanifest.json。 业务库路径通过环境/ctx["app_db"] 注入。

因此:业务脚本要用的模板、流水线、辅助 py,必须放在上述四个目录之一。


4.1 产品内「应用包」面板

打开轻量应用后,顶栏「应用包」可浏览上述目录中的文本文件,并对白名单路径编辑保存(与应用开发助手可写范围一致)。app.json / manifest.json 为只读预览。详见 取数与流水线 §8


5. 各文件职责(速查)

文件谁维护职责
app.json作者 / 应用开发助手实体、视图、动作 → 决定界面长什么样、有哪些按钮
logic/handlers.py作者handle(action, params, ctx) 分发;写库、调平台桥
logic/*.py作者取数编排、领域逻辑
references/pipeline.json作者取数步骤清单(query_id、参数模板)
scripts/*.py作者纯转换(如 HTML 组装),尽量无副作用
assets/*作者结果版式模板
data/app.db运行时历史记录等应用私有数据
skills/SKILL.md常自动生成对话里如何调用本应用的动作

6. 与「界面增加功能」的对应关系

你在界面想增加…改哪里
多一列表格列 / 表单输入app.json 实体字段 + 视图 columns/fields 或动作 params
多一个「办事」按钮区actions[] + action_form + handlers.py 新分支
办事时要查 HR/业务库handlers 内调 ctx["platform"].query_run;建议配 pipeline.json
办事后生成可打开的报告组装 HTML → platform.save_upload → 返回 upload_id;列表实体含 upload_id
只增删本地记录form/list + 内置 CRUD,可不写脚本逻辑

详细步骤:动作与handlers · 取数与流水线 · 手工搭建指南