UNPKG

@lark-project/cli

Version:

飞书项目插件开发工具

67 lines (48 loc) 4.11 kB
# Phase 1:搭建工程 将用户原话转化为可运行的插件工程骨架。本阶段只做创建工程一步,**不涉及点位配置**(延后到 Phase 2)。 > **Checkpoint**:本阶段的 1.2 是 `.lpm-cache/state.json` 的**首次写入点**——之前的 Phase 0 / 1.1 都不落盘,全程仅在对话上下文持有数据。详见 SKILL.md「进度追踪」章节。 ## 1.1 创建插件 → 进入 create 子阶段 **进入 create 子阶段****不要** Skill(),本 skill 内 Read 推进——router 顶部规则):按序 Read 1. [`create-setup.md`](create-setup.md)(取 siteDomain,已在 Phase 0 钉死 → 直接复用,不重新询问) 2. [`create-plan.md`](create-plan.md)(工作名称派生 + app_type 决策 + 用户确认) 3. [`create-apply.md`](create-apply.md)(`lpm create` 执行 + 日志解析 pluginId / projectDir + auth 兜底 + cwd 切换) 4. [`create-verify.md`](create-verify.md)(plugin.config.json 五字段完整性 + node_modules / src 就绪) > **被 workflow 编排的语义**:workflow 已在入口守卫验过当前目录无 `plugin.config.json`,create 子阶段内的「EXIST 拦截」无需重复执行;若 create reference 文件里仍残留独立调用语境下的 EXIST 拦截 prose,按本编排路径**跳过**它。 workflow 层**不得**在此处直接 `lpm create`**不得**自己拼目录名、**不得**自己 cd——任何一项都会绕过 create 子阶段的 HARD GATE(C19 P1.5 决策树 + C34 cd HARD GATE)。 create 子阶段完成时的契约:cwd 在插件子目录、对话上下文持有 `pluginId` / `projectDir` / `projectRoot`**create 子阶段不写 state.json**(保持与 workflow 状态解耦),状态落盘统一在 1.2。 **后置 verify(防弱 AI 跳过 create skill 或中途短路)**```bash pwd && test -f plugin.config.json && echo "PHASE1_CWD_OK" || echo "PHASE1_CWD_FAIL" ``` - `PHASE1_CWD_OK`:进入 1.2;记下当前 `pwd` 作为 `context.projectRoot`,后续每条 lpm 命令都带 `--cwd "<projectRoot>"`(详见 [workflow-overview.md「cwd 锚定规则」](workflow-overview.md) 与 [`shared.md` 执行约定](shared.md)) - `PHASE1_CWD_FAIL`:create 子阶段没真跑完 A3,**不得自己 cd 凑数**——回 1.1 重新走 create 子阶段的 Read 序列 ## 1.2 首次 checkpoint 落盘(state.json 零号写入点) PHASE1_CWD_OK 通过、cwd 已在 plugin-dir、create 内部 HARD GATE 全过——此时把对话上下文里的 5 个字段一次性写入 checkpoint。用 `lpm ai state set`(CLI 经 `workspacePaths()` 把路径锚定到插件根的 `.lpm-cache/state.json``assertPluginRoot` 守卫,不依赖裸相对路径): ```bash lpm --cwd "<projectRoot>" ai state set '{ "phase": 1, "step": "1.2", "stepName": "首次 checkpoint 落盘", "context": { "siteDomain": "<Phase 0 采集>", "pluginId": "<create A1 日志解析>", "projectDir": "<create A1 日志解析>", "projectRoot": "<create A3 PHASE1_CWD_OK 后的 pwd 输出>", "originalRequirement": "<用户启动 workflow 时说的那句话,逐字保留>" } }' ``` **硬约束**- 这是 state.json **零号写入点**——先 `lpm --cwd "<projectRoot>" ai state get`,有输出(例如断点恢复进入 1.2)则跳过写入,按 SKILL.md 恢复规则继续 - `originalRequirement` 逐字记录,**不做任何后处理**(不提取 mentionedPointType、不判空指令、不追问) - `.lpm-cache/` 目录由 `lpm ai state set` 自动创建,不用手动建 - 5 个字段缺一不写——缺了说明 Phase 0 / 1.1 没真正完成,回到对应步骤补齐 - **不写 `app_type`**——形态信息已经由 `lpm create --app-type` 落进 `plugin.config.json`,Phase 2/3 子 skill 与 CLI 都以那里为权威源;state.json 不复述,避免双源漂移 ## 1.3 阶段输出 ``` ✅ 插件工程骨架搭建完成 pluginId: MII_xxxxxxxxx 工程目录:<context.projectRoot> ← 当前 cwd 已切到此处 下一步:正在分析可用点位... ``` **自动进入 Phase 2,无需用户确认。**