UNPKG

@lark-project/cli

Version:

飞书项目插件开发工具

53 lines (36 loc) 3.08 kB
# Phase 0:确认站点域名(最小预检) > **关键规则**:Phase 0 在 Phase 1 开始前执行,**只做一件事** > 钉死 `siteDomain`(硬前置,拿到之前不得调任何 CLI 命令,不得默认填充)。 > > Phase 0 **不写盘**——`siteDomain` 只在对话上下文里持有,连同后续的 `pluginId` / `projectDir` / `projectRoot` / `originalRequirement` 一起延后到 Phase 1.2(cwd 已切到 plugin-dir 之后)首次写入 `<plugin-dir>/.lpm-cache/state.json`。这样 state.json 永远只有一个落点(plugin-dir),不会出现 parent / plugin-dir 两份分裂。 > > 功能需求的意图识别、术语消歧、点位匹配全部留给 Phase 2 的 feature phase,Phase 0 不做任何解析。 > `siteDomain` 是所有 CLI 操作的定位根(Token 按域名分 key):动 CLI 前钉死、不得默认填 project.feishu.cn、不得从训练数据推断。 ## 0.1 确认站点域名 **先跑 `lpm whoami`****一切以它列出的真实登录站点为准**,按 stdout 行事: - **列出了已登录站点(≥1 个)** → 把 whoami 列出的**全部真实站点原样呈现给用户挑选** - 忽略 whoami 输出里的 `← 建议` 标记,**不预选、不带"上次登录的是 X,确认用它?"这类推荐口吻**;顺序沿用 whoami 的输出(有时间戳则最近在前,纯排序、不含推荐含义)。 - 单站点时也只列那一个,让用户确认。 - **不**附"自定义域名"项——有真实站点时只列真实的。 - 用户选定后即为 `siteDomain`,跳过下方"未登录"询问。 - **输出「未登录」**(whoami 一个站点都没列出)→ 走下方询问(唯一允许手动贴 URL 的入口)。 > 入口守卫已拦住"当前目录有 `plugin.config.json`"的场景;plugin.config.json 不存在 ⇒ plugin-dir 还没创建 ⇒ 不可能有任何上一次的 state.json 可读。 **询问(仅 whoami 报「未登录」时)**``` 在开始之前,先确认一下你要把插件部署到哪个 Meegle 站点: 1) 飞书项目(project.feishu.cn) 2) Meegle(meegle.com) 3) 自定义域名(请直接贴站点 URL,如 https://meego.your-company.com) 请告诉我 1 / 2 / 3,或直接贴 URL。 ``` **AI 硬约束**-**禁止**假设用户是 project.feishu.cn(即使概率最高) -**禁止**从对话历史/训练数据"推断"用户的站点 -**禁止**`https://meego.example.com` 或任何占位符(CLI 会拒绝,但在 skill 层就该先拦住) -**必须**等到用户明确回复后再继续 ## 0.2 产出 - 对话上下文持有 `siteDomain`(完整 URL,含 scheme) -**不写** `.lpm-cache/state.json`:plugin-dir 还未创建,此时写盘会落到 parent 形成孤儿。首次落盘统一发生在 Phase 1.2(见 `phase-1-scaffold.md` 1.2)。 → 进入 Phase 1 搭建工程。 --- **恢复语义**:入口守卫保证当前目录无 `plugin.config.json` ⇒ 也无 `.lpm-cache/state.json` 可读,任何重入都从 0.1 询问 siteDomain 开始。