kcode-pi 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +35 -2
  2. package/dist/cli/kcode.d.ts +1 -0
  3. package/dist/cli/kcode.js +27 -4
  4. package/package.json +1 -1
  5. package/src/cli/kcode.ts +29 -4
  6. package/src/official/kingdee-skills.ts +60 -13
  7. package/src/rules/checker.ts +143 -0
  8. package/vendor/kingdee-skills/kingdee-cosmic-reviewer/SKILL.md +2 -2
  9. package/vendor/kingdee-skills/ok-cosmic/SKILL.md +52 -101
  10. package/vendor/kingdee-skills/ok-cosmic/agents/openai.yaml +4 -4
  11. package/vendor/kingdee-skills/ok-cosmic/manifest.json +21 -20
  12. package/vendor/kingdee-skills/ok-cosmic/ok-cosmic-intro.html +1 -1
  13. package/vendor/kingdee-skills/ok-cosmic/rules/a-layer-rules.json +1 -1
  14. package/vendor/kingdee-skills/ok-cosmic/rules/anti-patterns.md +2 -2
  15. package/vendor/kingdee-skills/ok-cosmic/rules/coding-preferences.md +4 -4
  16. package/vendor/kingdee-skills/ok-cosmic/rules/constraints.md +3 -3
  17. package/vendor/kingdee-skills/ok-cosmic/rules/decision-matrix.md +8 -8
  18. package/vendor/kingdee-skills/ok-cosmic/rules/intent-routing.md +1 -1
  19. package/vendor/kingdee-skills/ok-cosmic/rules/post-check.md +19 -18
  20. package/vendor/kingdee-skills/ok-ksql/SKILL.md +9 -9
  21. package/vendor/kingdee-skills/ok-ksql/manifest.json +2 -1
  22. package/vendor/kingdee-skills/ok-ksql/references/ksql-datafix.md +2 -2
  23. package/vendor/kingdee-skills/kingdee-cosmic-reviewer/scripts/pattern-matcher.py +0 -336
  24. package/vendor/kingdee-skills/kingdee-cosmic-reviewer/scripts/review-score-calculator.py +0 -121
  25. package/vendor/kingdee-skills/ok-cosmic/CHANGELOG.md +0 -295
  26. package/vendor/kingdee-skills/ok-cosmic/README.md +0 -460
  27. package/vendor/kingdee-skills/ok-cosmic/requirements.txt +0 -2
  28. package/vendor/kingdee-skills/ok-cosmic/scripts/config_loader.py +0 -204
  29. package/vendor/kingdee-skills/ok-cosmic/scripts/cosmic-api-knowledge.py +0 -910
  30. package/vendor/kingdee-skills/ok-cosmic/scripts/cosmic-basedata-query.py +0 -359
  31. package/vendor/kingdee-skills/ok-cosmic/scripts/cosmic-config-check.py +0 -181
  32. package/vendor/kingdee-skills/ok-cosmic/scripts/cosmic-extpoints-query.py +0 -389
  33. package/vendor/kingdee-skills/ok-cosmic/scripts/cosmic-form-metadata.py +0 -856
  34. package/vendor/kingdee-skills/ok-cosmic/scripts/cosmic-post-check.py +0 -262
  35. package/vendor/kingdee-skills/ok-cosmic/scripts/cosmic-post-lint.py +0 -293
  36. package/vendor/kingdee-skills/ok-cosmic/scripts/lint/__init__.py +0 -2
  37. package/vendor/kingdee-skills/ok-cosmic/scripts/lint/base.py +0 -393
  38. package/vendor/kingdee-skills/ok-cosmic/scripts/lint/resource_check.py +0 -176
  39. package/vendor/kingdee-skills/ok-cosmic/scripts/lint/scene_check.py +0 -375
  40. package/vendor/kingdee-skills/ok-cosmic/scripts/lint/style_check.py +0 -434
  41. package/vendor/kingdee-skills/ok-cosmic/scripts/lint/verify_check.py +0 -36
  42. package/vendor/kingdee-skills/ok-cosmic/scripts/route_client.py +0 -186
  43. package/vendor/kingdee-skills/ok-cosmic/scripts/script_utils.py +0 -40
  44. package/vendor/kingdee-skills/ok-cosmic/scripts/sqlite_cache.py +0 -142
  45. package/vendor/kingdee-skills/ok-cosmic/setup/cuslib/kd-cd-cosmic-commons.jar +0 -0
  46. package/vendor/kingdee-skills/ok-cosmic/setup/cuslib/kd-cd-cosmic-features.jar +0 -0
  47. package/vendor/kingdee-skills/ok-cosmic/setup/setup-mac.sh +0 -18
  48. package/vendor/kingdee-skills/ok-cosmic/setup/setup-windows.bat +0 -53
  49. package/vendor/kingdee-skills/ok-cosmic/setup/setup.jar +0 -0
  50. package/vendor/kingdee-skills/ok-ksql/scripts/ksql_lint.py +0 -363
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: "ok-cosmic"
3
- description: "金蝶云苍穹开发主 Skill,优先复用 kd-cd-cosmic-commons 封装。适用于插件开发、单据/列表/表单逻辑、操作服务、BOTP 转换、后台视图打开、附件处理、DynamicObject 与元数据处理、弹性域解析及 OpenAPI 集成。默认优先使用仓库封装;在涉及原生插件事件、SDK API、方法签名或封装未覆盖场景时,使用内置脚本进行查询。"
3
+ description: "金蝶云苍穹开发主 Skill,优先复用 kd-cd-cosmic-commons 封装。适用于插件开发、单据/列表/表单逻辑、操作服务、BOTP 转换、后台视图打开、附件处理、DynamicObject 与元数据处理、弹性域解析及 OpenAPI 集成。默认优先使用仓库封装;在涉及原生插件事件、SDK API、方法签名或封装未覆盖场景时,使用 KCode Node 适配器查询。"
4
4
  ---
5
5
 
6
6
  # 苍穹开发
@@ -13,18 +13,18 @@ description: "金蝶云苍穹开发主 Skill,优先复用 kd-cd-cosmic-commons
13
13
 
14
14
  ## Step 0. 配置预检(先于一切)
15
15
 
16
- 1. Step 0 的第一个动作必须直接执行:
17
- `python3 <SKILL_ROOT>/scripts/cosmic-config-check.py`
16
+ 1. Step 0 的第一个动作必须直接执行 KCode 工具:
17
+ `kd_cosmic_config`
18
18
  2. 默认在当前项目工作目录直接执行;不要先询问或搜索 `ok-cosmic.json` 的位置。
19
19
  3. 只有用户明确提供了其他配置路径,或当前工作目录不是目标项目根目录时,才改用:
20
- `python3 <SKILL_ROOT>/scripts/cosmic-config-check.py --config <显式路径>`
20
+ `kd_cosmic_config config=<显式路径>`
21
21
  4. 若脚本返回非 0 或输出含 `ERROR`:停止生成代码,明确提示用户补齐缺失项。
22
- 5. 若仅有 `WARNING`:先告知用户哪些在线能力不可用,再决定是否继续当前任务。后续脚本调用受以下限制:
22
+ 5. 若仅有 `WARNING`:先告知用户哪些在线能力不可用,再决定是否继续当前任务。后续工具调用受以下限制:
23
23
 
24
24
  | WARNING 类型 | 限制 |
25
25
  |---|---|
26
- | "API 不可达" 或 "在线服务不可用" | **禁止调用** `cosmic-basedata-query.py`;`cosmic-form-metadata.py` 仅允许使用本地缓存,**禁止 `--refresh` 刷新** |
27
- | "知识库不存在" | `cosmic-api-knowledge.py` 不可用,改为仅依赖 `cheat-sheet.md` 和模板中的方法签名 |
26
+ | "API 不可达" 或 "在线服务不可用" | `kd_cosmic_metadata` 只能使用 KCode 本地缓存;需要实时基础资料数据时停止并要求项目侧证据 |
27
+ | "知识库不存在" | `kd_cosmic_api` 随包知识不可用,改为仅依赖 `cheat-sheet.md`、项目 SDK 和编译结果 |
28
28
 
29
29
  ## 自然语言意图路由(首读)
30
30
 
@@ -100,15 +100,15 @@ description: "金蝶云苍穹开发主 Skill,优先复用 kd-cd-cosmic-commons
100
100
  - 🔍 **Agent A — 事件参考**:读对应 `references/*.md` 的 TL;DR 摘要 + `assets/*.java` 模板,提取事件签名与骨架。只读当前任务需要的事件方法段,不要一次性通读整个模板。如果卡在事件先后顺序,先读 [references/adv/event-lifecycle.md](references/adv/event-lifecycle.md)。
101
101
  - 🔍 **Agent B — 项目探索**:在用户项目中搜索相似插件实现(同类型插件、相似业务场景),分析已有代码风格、import 习惯、封装用法,确保生成代码与项目风格一致。
102
102
  3. **‖ 并行验证**字段与 API 签名(互不依赖的查询应同时发起):
103
- - 调用脚本前,先查下方“脚本路由”表格确认调用模板;表格未覆盖时才执行 `python3 <script> --help`。
104
- - 3a. 若目标 API 已在 `rules/cheat-sheet.md` 中列出 → 直接使用,**无需脚本验证**。
105
- - 3b. 字段 / `entityId` / 枚举值验证 → 查 `cosmic-form-metadata.py`。**只要要生成代码且已知目标单据/表单,凡涉及字段(无论用户给中文名还是英文标识),都必须验证字段是否存在、字段类型、所属实体和特殊取值规则;多个字段合并到同一次调用**。
106
- - 3c. SDK 类名/方法签名不在 cheat-sheet 中 → 查 `cosmic-api-knowledge.py`。**与 3b 互不依赖,应同时发起**。
103
+ - 调用工具前,先查下方“KCode 工具路由”表格确认参数;表格未覆盖时读取工具 schema。
104
+ - 3a. 若目标 API 已在 `rules/cheat-sheet.md` 中列出 → 直接使用,**无需额外工具验证**。
105
+ - 3b. 字段 / `entityId` / 枚举值验证 → 查 `kd_cosmic_metadata`。**只要要生成代码且已知目标单据/表单,凡涉及字段(无论用户给中文名还是英文标识),都必须验证字段是否存在、字段类型、所属实体和特殊取值规则;多个字段合并到同一次调用**。
106
+ - 3c. SDK 类名/方法签名不在 cheat-sheet 中 → 查 `kd_cosmic_api`,并优先结合项目 SDK/编译结果做红绿验证。**与 3b 互不依赖,应同时发起**。
107
107
  - 3d. 需要查询多个不同类的 detail → **多个 `detail` 调用也可并行**。
108
- - ⚠️ `cosmic-basedata-query.py` 必须等 `entityId` 从 3b 确认后才能调用,**不可并行**。
108
+ - ⚠️ 基础资料实时数据查询必须等 `entityId` 从 3b 确认后才能进行;npm 包不再内置 Python 基础资料脚本,需要项目侧接口、SQL 或人工证据。
109
109
  4. 只有"插件类型 + 事件方法 + 字段/签名"都确认后,才开始生成代码。
110
110
  5. 编写代码时遵守最小干预:插件只做当前事件该做的事;能用封装就不退回原生。
111
- 6. **代码生成后,必须执行 `cosmic-post-check.py` 自动校验**,详见"代码生成后自动校验"章节。
111
+ 6. **代码生成后,必须执行 `kd_check`,条件允许时再执行 `kd_build` 或项目编译命令**,详见"代码生成后自动校验"章节。
112
112
 
113
113
  ## 写代码前的最小确认卡
114
114
 
@@ -119,105 +119,56 @@ description: "金蝶云苍穹开发主 Skill,优先复用 kd-cd-cosmic-commons
119
119
  | 1 | 插件类型 | 决策矩阵 |
120
120
  | 2 | 目标事件方法 | 模板 / references |
121
121
  | 3 | 使用模板 | `assets/*.java` |
122
- | 4 | 已验证字段 / refType / entityId | 生成代码且已知目标单据/表单时,字段中文名/英文标识都必须经 `cosmic-form-metadata.py` 确认;`entityId` 来自用户明确给出或元数据脚本确认 |
123
- | 5 | 已确认枚举/下拉选项值(有使用时) | `cosmic-form-metadata.py --show-detail` |
124
- | 6 | 已验证类/方法签名 | cheat-sheet / `cosmic-api-knowledge.py` / 业务拓展点 `--full` 返回的清晰 Java 示例 |
122
+ | 4 | 已验证字段 / refType / entityId | 生成代码且已知目标单据/表单时,字段中文名/英文标识都必须经 `kd_cosmic_metadata` 确认;`entityId` 来自用户明确给出或元数据证据确认 |
123
+ | 5 | 已确认枚举/下拉选项值(有使用时) | `kd_cosmic_metadata showDetail=true` |
124
+ | 6 | 已验证类/方法签名 | cheat-sheet / `kd_cosmic_api` / 项目 SDK / 编译结果 / 业务拓展点清晰 Java 示例 |
125
125
 
126
- ## 脚本路由
126
+ ## KCode 工具路由
127
127
 
128
- ### 脚本调用协议
128
+ ### 工具调用协议
129
129
 
130
- 常用脚本的调用模板已列在下方表格,可直接按模板执行。仅当参数不确定或下表未覆盖时,才需先执行 `python3 <script> --help` 确认调用方式。
130
+ npm 包不发布 Python/JAR/bat/sh 运行资产;官方脚本能力已迁移为 KCode Node 适配器。所有查询和校验优先使用下表工具,不要尝试执行 `scripts/*.py`。
131
131
 
132
- ### 先选脚本,再按模板调用
133
-
134
- | 场景 | 优先脚本 | 常用用法 | 调用模板 | 备注 |
135
- |---|---|---|---|---|
136
- | SDK 类名、方法名、继承链、`@Override` 签名确认 | `scripts/cosmic-api-knowledge.py` | `search` / `search-method` / `detail` | `python3 <SKILL_ROOT>/scripts/cosmic-api-knowledge.py --config ok-cosmic.json <subcommand> ...` | `detail` 支持逗号分隔批量查类详情(并发请求) |
137
- | 字段标识、枚举映射、`refType`、按中文名确认真实英文标识 | `scripts/cosmic-form-metadata.py` | `get` | `python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get ...` | 字段不确定先查它。`formIdOrName` 支持逗号分隔批量查询(formId 与中文名可混合,自动识别,并发请求) |
138
- | 已确认 `entityId` 后查询基础资料编码/名称/完整数据 | `scripts/cosmic-basedata-query.py` | `get` | `python3 <SKILL_ROOT>/scripts/cosmic-basedata-query.py --config ok-cosmic.json get ...` | 只在 `entityId` 来源已确认后调用 |
139
- | 查询业务拓展点 / SDK 扩展接口候选 | `scripts/cosmic-extpoints-query.py` | `get` | `python3 <SKILL_ROOT>/scripts/cosmic-extpoints-query.py --config ok-cosmic.json get --keyword ...` | 默认摘要模式;仅在需要生成代码或查看 Java 示例时加 `--full`;若 `--full` 已返回清晰 Java 示例,可先按示例,不强制立即 `detail` |
140
- | 生成或修改苍穹 Java 代码后的统一校验 | `scripts/cosmic-post-check.py` | 直接执行 | `python3 <SKILL_ROOT>/scripts/cosmic-post-check.py <file_or_directory> --fix-hint` | 必须形成"生成 -> 校验 -> 修复 -> 复检"闭环 |
132
+ | 场景 | 优先工具 | 常用参数 | 备注 |
133
+ |---|---|---|---|
134
+ | SDK 类名、方法名、继承链、`@Override` 签名确认 | `kd_cosmic_api` | `mode=search/search-method/detail`、`query`、`method`、`compact` | 随包知识给线索;精确签名优先结合项目 SDK/编译红绿验证 |
135
+ | 字段标识、枚举映射、`refType`、按中文名确认真实英文标识 | `kd_cosmic_metadata` | `form`、`fuzzy`、`typeFilter`、`sql`、`op`、`showDetail` | 字段不确定先查它;多个表单用逗号合并 |
136
+ | 已确认 `entityId` 后查询基础资料编码/名称/完整数据 | 项目侧接口/SQL/人工证据 | 先由 `kd_cosmic_metadata` 确认 `entityId` | KCode 不内置实时基础资料 Python 查询脚本 |
137
+ | 查询业务拓展点 / SDK 扩展接口候选 | `kd_search` + `kd_cosmic_api` | 业务关键词、接口类名、方法名 | 命中接口类名后用 `kd_cosmic_api detail` 或编译确认签名 |
138
+ | 生成或修改苍穹 Java 代码后的统一校验 | `kd_check` + `kd_build` | 修改文件路径、项目构建命令 | 必须形成"生成 -> 校验 -> 修复 -> 复检"闭环 |
141
139
 
142
140
  ### 常用用法示例
143
141
 
144
- ```bash
145
- # 搜索类名
146
- python3 <SKILL_ROOT>/scripts/cosmic-api-knowledge.py --config ok-cosmic.json search QueryServiceHelper
147
-
148
- # 搜索方法名
149
- python3 <SKILL_ROOT>/scripts/cosmic-api-knowledge.py --config ok-cosmic.json search-method loadSingle
150
-
151
- # 查看类详情(全部方法)
152
- python3 <SKILL_ROOT>/scripts/cosmic-api-knowledge.py --config ok-cosmic.json detail kd.bos.servicehelper.QueryServiceHelper
153
-
154
- # 查看类详情(单个方法筛选)
155
- python3 <SKILL_ROOT>/scripts/cosmic-api-knowledge.py --config ok-cosmic.json detail kd.bos.servicehelper.QueryServiceHelper --method loadSingle --compact
156
-
157
- # 批量查类详情(逗号分隔,并发请求)
158
- python3 <SKILL_ROOT>/scripts/cosmic-api-knowledge.py --config ok-cosmic.json detail kd.bos.servicehelper.QueryServiceHelper,kd.bos.servicehelper.SaveServiceHelper --method save --compact
159
-
160
- # 查元数据字段
161
- python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get sal_order
162
-
163
- # 查元数据字段(带数据库相关信息)
164
- python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get sal_order,ap_finapbill --sql
165
-
166
- # 批量查询多个单据(逗号分隔)
167
- python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get sal_order,ap_finapbill --fuzzy supplier
168
-
169
- # 混合查询:formId + 中文单据名(自动识别)
170
- python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get "ap_finapbill,物料,bd_supplier" --fuzzy number
171
-
172
- # 模糊筛选字段
173
- python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get sal_order --fuzzy qty price amount
174
-
175
- # 按多种字段类型筛选(正则 OR)
176
- python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get sal_order --type "combo|check"
177
-
178
- # 类型 + 关键词交集筛选(Decimal 类型且含 amount)
179
- python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get sal_order --type decimal --fuzzy amount
180
-
181
- # 按单据中文名查元数据
182
- python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get 物料
183
-
184
- # 查看单据所有操作
185
- python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get sal_order --op
186
-
187
- # 按关键词筛选操作
188
- python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py --config ok-cosmic.json get sal_order --op 审核 提交
189
-
190
- # 查基础资料
191
- python3 <SKILL_ROOT>/scripts/cosmic-basedata-query.py --config ok-cosmic.json get --entity-id bd_material --number-or-name 01.0001
192
-
193
- # 查业务拓展点
194
- python3 <SKILL_ROOT>/scripts/cosmic-extpoints-query.py --config ok-cosmic.json get --keyword 应付
195
-
196
- # 代码校验
197
- python3 <SKILL_ROOT>/scripts/cosmic-post-check.py ./src/main/java/MyPlugin.java --fix-hint
142
+ ```text
143
+ kd_cosmic_config
144
+ kd_cosmic_api mode=search query=QueryServiceHelper
145
+ kd_cosmic_api mode=search-method query=loadSingle
146
+ kd_cosmic_api mode=detail query=kd.bos.servicehelper.QueryServiceHelper method=loadSingle compact=true
147
+ kd_cosmic_metadata form=sal_order
148
+ kd_cosmic_metadata form=sal_order,ap_finapbill sql=true
149
+ kd_cosmic_metadata form=sal_order fuzzy="qty price amount"
150
+ kd_cosmic_metadata form=sal_order typeFilter="combo|check" showDetail=true
151
+ kd_cosmic_metadata form=sal_order op=true fuzzy="审核 提交"
152
+ kd_check path=./src/main/java/MyPlugin.java
153
+ kd_build
198
154
  ```
199
155
 
200
- ### 跨脚本硬约束
201
-
202
- - 完成 Step 0 后,后续脚本优先显式使用 `--config ok-cosmic.json`;若当前工作目录不是项目根目录,再传绝对路径。不要为了拼配置路径先额外搜索 `ok-cosmic.json`。
203
- - **参数不确定时**,先执行 `python3 <script> --help` 确认调用方式;如果 `--help` 仍不足以确认,就停止并报告。
204
- - **凡是带子命令的脚本,`--config` 等全局参数统一放在子命令前,按 `python3 <script> --config ok-cosmic.json <subcommand> ...` 组织。**
205
- - `entityId` 只允许来自"用户明确给出的准确英文标识"或"元数据脚本确认出的真实标识";来源不明时,先查 `cosmic-form-metadata.py`,不得直接执行基础资料查询。
206
- - **字段生成代码强制验证**:只要要生成/修改代码,且已知目标单据/表单(`formId` 或 `billName`),凡涉及字段(无论用户给的是中文名还是英文标识),都必须先用 `cosmic-form-metadata.py` 验证字段是否存在、字段类型、所属实体(表头/表体/子表体/容器)和特殊取值规则(如 `BasedataPropField` 的 `refType`、`LargeTextField` 的 `{fieldKey}_tag`、Combo/下拉字段的 Ext 映射)。目标单据/表单不明确时,先确认目标,不要直接把用户给的字段写进代码。
207
- - **枚举/下拉选项值禁猜 [A1.8]**:使用 ComboField / 下拉字段的具体选项值前,必须先查 `cosmic-form-metadata.py` 的 Ext 列确认真实映射,详见 [constraints.md](rules/constraints.md) A1.8。
208
- - 需要确认多个字段时,优先一次性合并到同一次元数据查询里;不要逐个字段重复调用脚本。
209
- - **并行调用**:`cosmic-form-metadata.py`(字段/枚举验证)与 `cosmic-api-knowledge.py`(类/方法签名验证)查询不同数据源、互不依赖,应在同一轮并行发起。同理,多个 `detail` 查询、多个文件读取也应并行。唯一例外:`cosmic-basedata-query.py` 依赖 `entityId` 确认结果,必须串行等待。
210
- - **元数据批量查询**:`cosmic-form-metadata.py` 的 `formIdOrName` 位置参数支持逗号分隔多个查询目标(如 `get sal_order,ap_finapbill,物料`),含中文的自动走 billName、英文标识走 formId,脚本内部通过 `ThreadPoolExecutor` 并发请求(最多 4 线程),结果按原始顺序拼接输出。跨单据场景(如下推、对比源单与目标单字段)优先使用批量查询,减少脚本调用次数。
156
+ ### 跨工具硬约束
157
+
158
+ - 完成 Step 0 后,后续工具可显式传 `config=<ok-cosmic.json>`;当前项目没有 `ok-cosmic.json` 时,KCode 使用随包默认知识库并输出 warning。不要把苍穹工程 `cosmic.json` 当成 `ok-cosmic.json`。
159
+ - `entityId` 只允许来自"用户明确给出的准确英文标识"或"`kd_cosmic_metadata` 确认出的真实标识";来源不明时,先查元数据,不得直接查询基础资料或写入代码。
160
+ - **字段生成代码强制验证**:只要要生成/修改代码,且已知目标单据/表单(`formId` `billName`),凡涉及字段(无论用户给的是中文名还是英文标识),都必须先用 `kd_cosmic_metadata` 验证字段是否存在、字段类型、所属实体和特殊取值规则。目标单据/表单不明确时,先确认目标,不要直接把用户给的字段写进代码。
161
+ - **枚举/下拉选项值禁猜 [A1.8]**:使用 ComboField / 下拉字段的具体选项值前,必须先查 `kd_cosmic_metadata showDetail=true` 的附加信息确认真实映射,详见 [constraints.md](rules/constraints.md) A1.8。
162
+ - 需要确认多个字段时,优先一次性合并到同一次元数据查询里;不要逐个字段重复调用工具。
163
+ - **并行调用**:`kd_cosmic_metadata`(字段/枚举验证)与 `kd_cosmic_api`(类/方法签名验证)查询不同数据源、互不依赖,应在同一轮并行发起。
211
164
  - 查询超时或远端失败时,只能基于当前会话里已确认的字段、`refType`、`entityId`、接口返回继续;若本次查询结果是继续前提,则停止。
212
- - 若 Traceback 明确指向 Skill 脚本实现问题,立即停止并报告命令与错误摘要;不要绕过验证继续生成依赖该事实的代码。
213
- - 只有在用户已修正配置/环境,或本次明确修改了查询条件后,才允许重试同类脚本;不要原样重复执行。
214
165
 
215
166
  ### 项目级配置文件 (`ok-cosmic.json`)
216
167
 
217
- 脚本依赖 `ok-cosmic.json` 获取数据库路径及 API 地址。若需模板可参考 `<SKILL_ROOT>/setup/ok-cosmic.json`。
168
+ KCode 适配器可读取 `ok-cosmic.json` 获取知识库路径及在线路由 API 地址。若项目没有该文件,会使用随包默认知识库并输出 warning;苍穹工程自带的 `cosmic.json` 不是 KCode 官方能力配置。
218
169
 
219
- - **显式指定**: 调用脚本时建议指定 `--config <路径>`。未指定时读取**当前执行目录**下的 `ok-cosmic.json`;不存在则报错。
220
- - **在线查询配置**: 三个在线查询脚本统一走 `route.apiUrl`(`runtime/route`,URL 中包含 `openApiSign`)/ `route.timeoutSeconds`;脚本内部通过 `data.type=meta|basedata|extpoint` 路由。
170
+ - **显式指定**: 调用工具时可指定 `config=<路径>`。未指定时优先读取当前项目根目录下的 `ok-cosmic.json`;不存在则使用随包默认配置。
171
+ - **在线查询配置**: 元数据在线查询走 `route.apiUrl`(`runtime/route`,URL 中可包含 `openApiSign`)/ `route.timeoutSeconds`;KCode 内部通过 `data.type=meta` 路由。
221
172
  - **统一路由请求体**: 元数据 `data.type=meta` + `reqData.entityId/formId/billName/full`;基础资料 `data.type=basedata` + `reqData.entityId/numberOrName/full`;业务拓展点 `data.type=extpoint` + `reqData.keyword`。
222
173
 
223
174
  ## 扩展代码库探索(Extension Repos Fallback)
@@ -236,16 +187,16 @@ python3 <SKILL_ROOT>/scripts/cosmic-post-check.py ./src/main/java/MyPlugin.java
236
187
  - 扩展代码库仅作为**实现参考**,不等同于 ok-cosmic 推荐写法。
237
188
  - 生成代码时仍须遵守 A 层硬约束(`rules/constraints.md`、`rules/anti-patterns.md`)与 B 层编码偏好(`rules/coding-preferences.md`)。
238
189
  - 若扩展代码与 ok-cosmic 规范冲突,**以 ok-cosmic 规范为准**;只借鉴参考项目的业务组装方式与字段暴露结构。
239
- - 若扩展代码库中未搜到相关实现,回落到 fallback 第 3 步(`cosmic-api-knowledge.py search`)后再向用户确认。
190
+ - 若扩展代码库中未搜到相关实现,回落到 fallback 第 3 步(`kd_cosmic_api mode=search`)后再向用户确认。
240
191
 
241
192
  ## 代码生成后自动校验(Post-Check)
242
193
 
243
194
  修改任何苍穹 `.java` 文件后,必须执行:
244
195
 
245
- `python3 <SKILL_ROOT>/scripts/cosmic-post-check.py <生成的文件或目录> --fix-hint`
196
+ `kd_check path=<生成的文件或目录>`
246
197
 
247
198
  - `ERROR` → 必须修复并复检;`WARNING` → 优先修复;`INFO` → 治理参考,不阻断。
248
- - Gradle 项目编译成功后仍串联 post-lint 静态校验,以综合结果为准;非 Gradle 直接回退静态 lint。
199
+ - 条件允许时继续执行 `kd_build` 或项目 Gradle/Maven 编译命令;编译与静态校验以综合结果为准。
249
200
  - 最多连续 3 轮"修复 → 复检";3 轮后仍有 `ERROR`,向用户报告。
250
201
  - 规则 ID 映射、修复示例、历史项目解释口径见 [rules/post-check.md](rules/post-check.md)。
251
202
 
@@ -3,14 +3,14 @@ interface:
3
3
  short_description: "封装优先的苍穹开发主 skill"
4
4
  default_prompt: |
5
5
  使用 $ok-cosmic 来实现或审查苍穹插件代码。严格遵循以下流程:
6
- 0. 首先执行 cosmic-config-check.py 完成配置预检;ERROR 必须停止,WARNING 需告知用户受限能力
6
+ 0. 首先执行 kd_cosmic_config 完成配置预检;ERROR 必须停止,WARNING 需告知用户受限能力
7
7
  1. 先查 SKILL.md 决策矩阵确定插件类型和对应模板
8
8
  2. 读 references/*.md 确认事件边界和适用场景
9
9
  3. 读 assets/*.java 模板沿用已有骨架,小场景查 snippets 映射表
10
- 4. 首次调用任何脚本前,先执行 --help 读取调用契约,定好命令模板后再填参数执行(三步首调协议)
11
- 5. 字段不确定先查 cosmic-form-metadata.py;entityId 来源不明先查 cosmic-form-metadata.py(查 refType 或按中文名确认英文标识),严禁凭经验猜 entityId;枚举/下拉选项值必须查 --show-detail 的 Ext 列确认(A1.8 硬约束),严禁凭空编造;SDK 签名不确定先查 cosmic-api-knowledge.py
10
+ 4. 首次调用任何 KCode 工具前,先读取工具 schema,定好参数后再执行
11
+ 5. 字段不确定先查 kd_cosmic_metadata;entityId 来源不明先查 kd_cosmic_metadata(查 refType 或按中文名确认英文标识),严禁凭经验猜 entityId;枚举/下拉选项值必须查 showDetail=true 的 Ext 列确认(A1.8 硬约束),严禁凭空编造;SDK 签名不确定先查 kd_cosmic_api
12
12
  6. 只有"插件类型 + 事件方法 + 字段/基础资料/签名 + 枚举值来源"都确认后,才开始生成代码
13
- 7. 代码生成后,执行 cosmic-post-check.py 自动校验,有 ERROR 须修复后重验
13
+ 7. 代码生成后,执行 kd_check,条件允许时执行 kd_build 或项目编译;有 ERROR 须修复后重验
14
14
  核心原则:封装优先(kd-cd-cosmic-commons),原生兜底;严禁凭记忆猜测 API 签名。
15
15
 
16
16
  policy:
@@ -5,44 +5,44 @@
5
5
  "author": "Cosmic",
6
6
  "tools": [
7
7
  {
8
- "name": "cosmic_search_classes",
9
- "description": "搜索苍穹类名。用法: --config <json> search <keyword...> [--class-prefix <prefix>] [--kind <kind>]",
10
- "source": "scripts/cosmic-api-knowledge.py"
8
+ "name": "kd_cosmic_api",
9
+ "description": "搜索苍穹类名/API 线索。用法: mode=search query=<keyword...> [config=<json>]",
10
+ "source": "kcode-node:cosmic-api"
11
11
  },
12
12
  {
13
- "name": "cosmic_search_methods",
14
- "description": "全局搜索苍穹方法名。用法: --config <json> search-method <keyword...> [--class-prefix <prefix>] [--kind <kind>]",
15
- "source": "scripts/cosmic-api-knowledge.py"
13
+ "name": "kd_cosmic_api",
14
+ "description": "搜索苍穹方法名。用法: mode=search-method query=<keyword...> [config=<json>]",
15
+ "source": "kcode-node:cosmic-api"
16
16
  },
17
17
  {
18
- "name": "cosmic_get_class_detail",
19
- "description": "获取类详情并校验方法签名。用法: --config <json> detail <full.class.Name> [--method <keyword>] [--compact] [--declared-only]",
20
- "source": "scripts/cosmic-api-knowledge.py"
18
+ "name": "kd_cosmic_api",
19
+ "description": "获取类/API 详情线索。用法: mode=detail query=<full.class.Name> [method=<keyword>] [compact=true]",
20
+ "source": "kcode-node:cosmic-api"
21
21
  },
22
22
  {
23
- "name": "cosmic_get_meta_fields",
24
- "description": "查询表单元数据字段。用法: --config <json> get <formIdOrName> [逗号分隔批量] [--fuzzy <words...>] [--show-detail] [--refresh] [--tree]",
25
- "source": "scripts/cosmic-form-metadata.py"
23
+ "name": "kd_cosmic_metadata",
24
+ "description": "查询表单元数据字段。用法: form=<formIdOrName> [config=<json>] [fuzzy=<words>] [sql=true] [showDetail=true]",
25
+ "source": "kcode-node:cosmic-metadata"
26
26
  },
27
27
  {
28
28
  "name": "cosmic_query_basedata",
29
- "description": "查询基础资料。用法: --config <json> get --entity-id <id> [--number-or-name <kw>] [--full] [--refresh] [--json]。entityId 必须已确认来源,不确定时先用元数据脚本查 refType",
30
- "source": "scripts/cosmic-basedata-query.py"
29
+ "description": "基础资料在线查询已从 npm 包移除。entityId 必须先由 kd_cosmic_metadata 确认;需要实时数据时由项目侧接口或人工查询提供证据。",
30
+ "source": "kcode-node:metadata-gated-manual"
31
31
  },
32
32
  {
33
33
  "name": "cosmic_query_extpoints",
34
- "description": "查询业务拓展点候选。用法: --config <json> get --keyword <kw> [--limit <n>] [--json] [--full]。命中接口类名后继续用 cosmic-api-knowledge.py detail 确认签名",
35
- "source": "scripts/cosmic-extpoints-query.py"
34
+ "description": "业务拓展点候选通过 kd_search/kd_cosmic_api 查询随包知识和项目代码;命中接口类名后继续用 kd_cosmic_api detail 或编译验证签名。",
35
+ "source": "kcode-node:cosmic-api"
36
36
  },
37
37
  {
38
38
  "name": "cosmic_post_check",
39
- "description": "代码生成后统一检查入口。用法: <file_or_dir> [--fix-hint] [--json] [--strict]。Gradle 项目优先编译检查,非 Gradle 回退静态校验(A/B/C 三层)",
40
- "source": "scripts/cosmic-post-check.py"
39
+ "description": "代码生成后统一检查入口。先运行 kd_check;条件允许时再运行 kd_build 或项目编译命令;ERROR 必须修复后复检。",
40
+ "source": "kcode-node:kd-check"
41
41
  },
42
42
  {
43
43
  "name": "cosmic_config_check",
44
- "description": "Step 0 环境与配置预检。用法: [--config <json>] [--strict] [--json]。检查 Python 依赖(自动安装)、Java 环境、ok-cosmic.json 配置完整性",
45
- "source": "scripts/cosmic-config-check.py"
44
+ "description": "Step 0 环境与配置预检。运行 kd_cosmic_config;当前项目没有 ok-cosmic.json 时使用 KCode 随包默认配置并给出 warning。",
45
+ "source": "kcode-node:cosmic-config"
46
46
  }
47
47
  ],
48
48
  "assets": [
@@ -72,6 +72,7 @@
72
72
  ".DS_Store",
73
73
  "__pycache__/",
74
74
  "*.pyc",
75
+ "*.py",
75
76
  "setup/**",
76
77
  "README.md"
77
78
  ]
@@ -497,7 +497,7 @@
497
497
  <div class="flow-line" style="margin:24px 0;">
498
498
  <div class="flow-box">生成 .java</div>
499
499
  <div class="flow-arrow">→</div>
500
- <div class="flow-box">cosmic-post-check.py</div>
500
+ <div class="flow-box">kd_check + kd_build</div>
501
501
  <div class="flow-arrow">→</div>
502
502
  <div class="flow-box" style="border-color:var(--accent);">Gradle?</div>
503
503
  </div>
@@ -1,5 +1,5 @@
1
1
  {
2
- "_comment": "A 层硬约束规则 ID 列表(单一可信源)。cosmic-post-lint.py post-check.md 共同引用此文件。",
2
+ "_comment": "A 层硬约束规则 ID 列表(单一可信源)。KCode kd_check 逐步迁移并引用这些规则。",
3
3
  "a_layer_rule_ids": [
4
4
  "SCENE-001",
5
5
  "SCENE-002",
@@ -1,7 +1,7 @@
1
1
  # 禁忌清单 (Anti-Patterns)
2
2
 
3
- > 本文件为禁忌清单;其中 `scene_check.py`(SCENE-\*)对应的场景错配条目会被自动检测。
4
- > 幻觉方法名/类名黑名单用于事前人工/AI 自检,`hal_check.py` 与 `HAL-*` 事后 lint 规则已废弃。
3
+ > 本文件为禁忌清单;其中高价值 SCENE 规则已逐步迁移到 KCode `kd_check`。
4
+ > 幻觉方法名/类名黑名单用于事前人工/AI 自检,`HAL-*` 事后 lint 规则已废弃;精确签名优先通过 `kd_cosmic_api`、项目 SDK 或编译验证。
5
5
  > 场景错配条目默认属于 **A 层硬约束**,除非单独标注 `[B层]`。
6
6
  > 编码风格(STYLE-\*)和资源管理(RESOURCE-\*)规则见 [coding-preferences.md](coding-preferences.md)。
7
7
 
@@ -1,6 +1,6 @@
1
1
  # 编码偏好、默认写法与治理方向
2
2
 
3
- > 本文件为 `style_check.py`(STYLE-\*)、`resource_check.py`(RESOURCE-\*)、`verify_check.py`(VERIFY-\*)的**规则来源**。
3
+ > 本文件为 `kd_check` 中 STYLE / RESOURCE / VERIFY 类规则的领域来源。
4
4
  > 幻觉禁忌和场景错配见 [anti-patterns.md](anti-patterns.md);当前自动 lint 规则前缀为 SCENE-\*。
5
5
 
6
6
  本文件承载 `ok-cosmic` 的 **B 层** 和 **C 层** 规则:
@@ -61,9 +61,9 @@
61
61
 
62
62
  ## B2. 元数据与脚本配合细则
63
63
 
64
- - **[B2.1]** **元数据查询约束**:调用 `cosmic-form-metadata.py` 时,脚本会无条件展示所有字段;如果概览模式未显示所需字段,请主动在 `--fuzzy` 中增加搜索词进行精准匹配。
64
+ - **[B2.1]** **元数据查询约束**:调用 `kd_cosmic_metadata` 时,工具会尽量展示字段;如果概览模式未显示所需字段,请主动在 `fuzzy` 中增加搜索词进行精准匹配。
65
65
  - **[B2.2]** 如果脚本未查到字段或表单元数据,必须提醒用户确认其提供的表单名称/标识是否正确,再继续处理。
66
- - **[B2.3]** **字段元数据强制验证**:只要要生成/修改代码,且已知目标单据/表单,凡涉及字段(无论用户给中文名还是英文标识),都必须通过 `cosmic-form-metadata.py` 确认字段存在、字段类型、所属实体和特殊取值规则后再写入代码。
66
+ - **[B2.3]** **字段元数据强制验证**:只要要生成/修改代码,且已知目标单据/表单,凡涉及字段(无论用户给中文名还是英文标识),都必须通过 `kd_cosmic_metadata` 确认字段存在、字段类型、所属实体和特殊取值规则后再写入代码。
67
67
  - **[B2.4]** **批量合并**:需要确认多个字段时,必须合并为一次 `--fuzzy` 调用(如 `--fuzzy qty price amount material org`),严禁逐个字段发起多次查询。
68
68
  - **[B2.5]** **自动详情**:当 `--fuzzy` 传入 ≥3 个关键词时,脚本自动升级为详情模式(含枚举/refType),无需手动追加 `--show-detail`。
69
69
  - **[B2.6]** **常规字段对齐**:仅确认 1-2 个字段标识时,不带 `--show-detail` 和 `--sql`。
@@ -91,7 +91,7 @@
91
91
 
92
92
  ## 自动检测规则速查(STYLE / RESOURCE)
93
93
 
94
- > 以下规则由 `style_check.py` 和 `resource_check.py` 自动扫描。
94
+ > 以下规则由 `kd_check` 自动扫描,尚未自动覆盖的规则仍需人工审查。
95
95
  > A 层规则 ID 定义在 [a-layer-rules.json](a-layer-rules.json)(单一可信源),报 ERROR 必须修复;B 层报 WARNING,新代码优先修复。
96
96
 
97
97
  ### STYLE-\*: 编码风格
@@ -14,15 +14,15 @@
14
14
 
15
15
  - **[A1.1] 拒绝幻觉**:严禁凭记忆或猜测生成任何 API 签名、事件方法名或单据字段标识。
16
16
  - **[A1.2] 模板强制先行**:AI 在生成任何苍穹插件代码前,必须先读取对应的 `assets/*.java` 模板文件,并严格遵守模板中的方法签名。
17
- - **[A1.3] 签名强制校验**:在编写任何 `@Override` 方法或调用 BOS SDK 关键方法前,应通过 `cosmic-api-knowledge.py` 的 `detail` 子命令验证该方法确实存在且签名准确(已在 `rules/cheat-sheet.md` 中列出的 API 可直接使用,无需脚本验证)。`API-*` 事后 lint 规则已废弃,若事前校验被跳过,只能依赖编译、脚本查询或人工确认补救。
17
+ - **[A1.3] 签名强制校验**:在编写任何 `@Override` 方法或调用 BOS SDK 关键方法前,应通过 `kd_cosmic_api mode=detail`、项目 SDK 或编译结果验证该方法确实存在且签名准确(已在 `rules/cheat-sheet.md` 中列出的 API 可直接使用,无需额外验证)。`API-*` 事后 lint 规则已废弃,若事前校验被跳过,只能依赖编译、工具查询或人工确认补救。
18
18
  - **[A1.4] 入口对齐协议**:
19
19
  - **UI 控制 (只读/隐藏/弹窗)**:必须通过 `IFormView`(由 `this.getView()` 获取)。
20
20
  - **数据操作 (取值/赋值/结构)**:必须通过 `IDataModel`(由 `this.getModel()` 获取)。
21
21
  - **[A1.5] 验证优先级**:在使用原生 SDK 前,必须先查本地 `.md`,再通过脚本验证。
22
22
  - **[A1.6] 继承溯源**:利用脚本返回的继承树确认方法是否在基类中。
23
23
  - **[A1.7] 代码风格基线**:新生成代码必须以对应模板为主,不得脱离模板随意改写方法签名、生命周期方法或基础骨架。
24
- - **[A1.8] 枚举/下拉选项值禁猜**:凡是需要使用 `ComboField`、下拉列表等字段的**具体选项值**(无论用于条件判断、状态赋值、QFilter 构造、数据反写还是任何其他场景),**严禁凭空编造或凭经验猜测**。必须先通过 `cosmic-form-metadata.py` 查询该字段,读取返回结果中「附加信息 (Ext)」列的真实枚举映射(如 `A:已审核, B:暂存`),确认后才能将对应的值写入代码。
25
- - **[A1.9] 字段生成代码强制验证**:只要要生成或修改代码,且已知目标单据/表单(`formId` 或 `billName`),凡涉及字段(无论用户给的是中文名还是英文标识),都必须先通过 `cosmic-form-metadata.py` 验证字段是否存在、字段类型、所属实体(表头/表体/子表体/容器)和特殊取值规则(如 `BasedataPropField` 的 `refType`、`LargeTextField` 的 `{fieldKey}_tag`、Combo/下拉字段 Ext 映射)。未验证前不得直接把用户给出的字段写入代码。
24
+ - **[A1.8] 枚举/下拉选项值禁猜**:凡是需要使用 `ComboField`、下拉列表等字段的**具体选项值**(无论用于条件判断、状态赋值、QFilter 构造、数据反写还是任何其他场景),**严禁凭空编造或凭经验猜测**。必须先通过 `kd_cosmic_metadata showDetail=true` 查询该字段,读取返回结果中「附加信息 (Ext)」列的真实枚举映射(如 `A:已审核, B:暂存`),确认后才能将对应的值写入代码。
25
+ - **[A1.9] 字段生成代码强制验证**:只要要生成或修改代码,且已知目标单据/表单(`formId` 或 `billName`),凡涉及字段(无论用户给的是中文名还是英文标识),都必须先通过 `kd_cosmic_metadata` 验证字段是否存在、字段类型、所属实体(表头/表体/子表体/容器)和特殊取值规则(如 `BasedataPropField` 的 `refType`、`LargeTextField` 的 `{fieldKey}_tag`、Combo/下拉字段 Ext 映射)。未验证前不得直接把用户给出的字段写入代码。
26
26
 
27
27
  ## A2. 平台开发红线
28
28
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  如果用户原话还是业务描述、还没翻译成“操作插件 / 表单插件 / 基础资料能力”等技术场景,先读 [intent-routing.md](intent-routing.md) 做语义翻译。
6
6
 
7
- > **提示**:`入口类` 主要用于缩小 `cosmic-api-knowledge.py` 的搜索范围,不代表必须直接依赖原生 API;`封装文档` 和 `原生文档` 都应先读 `TL;DR`,确实需要时再展开全文。
7
+ > **提示**:`入口类` 主要用于缩小 `kd_cosmic_api` 的搜索范围,不代表必须直接依赖原生 API;`封装文档` 和 `原生文档` 都应先读 `TL;DR`,确实需要时再展开全文。
8
8
 
9
9
  ---
10
10
 
@@ -140,7 +140,7 @@
140
140
  ### 基础资料 {#basedata}
141
141
  - **关键词**: 基础资料 / 管控策略 / 分配 / 个性化 / 客户 / 物料 / 供应商
142
142
  - **入口类**: `BaseDataServiceHelper` · `kd.bd.master.*`
143
- - **先读**: 先用 `cosmic-form-metadata.py` / `cosmic-basedata-query.py` 确认 `refType` / `entityId`
143
+ - **先读**: 先用 `kd_cosmic_metadata` 确认 `refType` / `entityId`,实时基础资料值需项目侧证据
144
144
  - **兜底**: [sdk-dynamic-model-svc.md](../references/base/sdk/sdk-dynamic-model-svc.md)
145
145
  - **片段**: [BaseDataQuerySample](../assets/snippets/query/BaseDataQuerySample.java)
146
146
 
@@ -199,10 +199,10 @@
199
199
 
200
200
  ### 业务拓展点查询 {#business-extpoints}
201
201
  - **关键词**: 业务拓展点 / 业务扩展点 / SDK 扩展接口 / 扩展场景 / 扩展插件 / 二开接口 / Java 示例 / route extpoint
202
- - **入口脚本**: `scripts/cosmic-extpoints-query.py`
203
- - **先查**: `python3 <SKILL_ROOT>/scripts/cosmic-extpoints-query.py --config ok-cosmic.json get --keyword <业务关键词>`
204
- - **示例查询**: 默认不用 `--full`;只有当需要生成实现代码或查看返回中的 Java/代码示例时,才追加 `--full`
205
- - **后续验证**: `--full` 返回中已有清晰 Java 示例代码(能识别 `implements` 接口、`@Override` 方法、参数与返回值),可先按示例生成,不强制立即调用 `cosmic-api-knowledge.py detail`;若示例缺失/不完整/签名仍不确定,再用 `detail <full.class.Name>` 确认
202
+ - **入口工具**: `kd_search` / `kd_cosmic_api`
203
+ - **先查**: 用业务关键词搜索随包知识、项目代码和扩展代码库
204
+ - **示例查询**: 只有当需要生成实现代码或查看 Java/代码示例时,才展开参考实现全文
205
+ - **后续验证**: 若参考实现中已有清晰 Java 示例代码(能识别 `implements` 接口、`@Override` 方法、参数与返回值),可先按示例生成;若示例缺失/不完整/签名仍不确定,再用 `kd_cosmic_api mode=detail query=<full.class.Name>` 或编译确认
206
206
  - **约束**: 仅用于定位标准产品预留的业务拓展点候选;不要误判为 OpenAPI 控制器、表单插件或操作插件;示例代码可作为优先参考,但示例不清晰时不得猜方法签名
207
207
 
208
208
  ---
@@ -215,8 +215,8 @@
215
215
  - "保存前校验 + 审核后下推 + 下推后在 BOTP 回写阶段更新来源" → 操作插件 + 转换插件 + 反写插件
216
216
  - "列表批量选中 + 弹窗编辑 + 保存" → 列表插件 + 表单插件 + 操作插件
217
217
  2. **纯后端逻辑(无 UI、无操作链)**:优先命中"查询与存取""基础资料""消息通知""并发上下文恢复"等能力卡片;仍不匹配时,再回到 `references/base/sdk/` 原生 SDK 文档。
218
- 3. **用户想找标准产品预留扩展点**:优先命中 [`#business-extpoints`](#business-extpoints),用业务关键词查候选接口,再用 `cosmic-api-knowledge.py detail` 校验签名。
219
- 4. **仍无法匹配**:先用 `cosmic-api-knowledge.py search <关键词>` 搜索相关类,再向用户确认具体实现方向后动手。
218
+ 3. **用户想找标准产品预留扩展点**:优先命中 [`#business-extpoints`](#business-extpoints),用业务关键词查候选接口,再用 `kd_cosmic_api mode=detail` 或编译校验签名。
219
+ 4. **仍无法匹配**:先用 `kd_cosmic_api mode=search query=<关键词>` 搜索相关类,再向用户确认具体实现方向后动手。
220
220
  5. **扩展代码库探索**(需 `ok-cosmic.json` 配置 `extensionRepos`):
221
221
  用当前需求关键词在扩展代码库中搜索相关 Java 实现,
222
222
  作为实现参考但仍需遵守 ok-cosmic 规范。
@@ -76,7 +76,7 @@
76
76
  | 用户常说的话 | 优先翻译为 | 对应矩阵 |
77
77
  |---|---|---|
78
78
  | 查业务拓展点 / 找业务扩展点 / 有没有标准扩展点 / SDK 扩展接口 / 扩展场景编码 / 业务扩展插件 / 给我拓展点 Java 示例 | 查询标准产品预留的业务拓展点候选 | [`#business-extpoints`](decision-matrix.md#business-extpoints) |
79
- | 查类 / 查方法 / 看签名 / 这个接口有哪些方法 | SDK API 事实查询 | 先走 `cosmic-api-knowledge.py`;已命中具体实现需求时再回到矩阵 |
79
+ | 查类 / 查方法 / 看签名 / 这个接口有哪些方法 | SDK API 事实查询 | 先走 `kd_cosmic_api`;已命中具体实现需求时再回到矩阵 |
80
80
 
81
81
  ## 常见误判修正
82
82
 
@@ -1,9 +1,9 @@
1
1
  # 生成后自动校验规则 (Post-Check)
2
2
 
3
- `cosmic-post-check.py` 是代码生成后的**统一检查入口**,自动选择最佳检查策略:
3
+ KCode 的 `kd_check` + `kd_build` 是代码生成后的**统一检查入口**,自动选择可用检查策略:
4
4
 
5
- - **Gradle 项目** → 先执行 `./gradlew :module:compileJava` 真实编译,编译成功后继续执行 `cosmic-post-lint.py` 场景/风格校验
6
- - **非 Gradle 项目** → 直接回退到 `cosmic-post-lint.py` 静态校验(A/B/C 三层规则)
5
+ - **Gradle 项目** → 优先执行项目编译命令或 `kd_build`,编译成功后继续执行 `kd_check` 场景/风格校验
6
+ - **非 Gradle 项目** → 直接执行 `kd_check` 静态校验(A/B/C 三层规则中已迁移的部分)
7
7
 
8
8
  ## 触发条件
9
9
 
@@ -11,40 +11,41 @@
11
11
 
12
12
  ## 默认执行命令
13
13
 
14
- ```bash
15
- python3 <SKILL_ROOT>/scripts/cosmic-post-check.py <生成的文件或目录> --fix-hint
14
+ ```text
15
+ kd_check path=<生成的文件或目录>
16
+ kd_build
16
17
  ```
17
18
 
18
- 脚本自动判断:
19
+ 执行策略:
19
20
  1. 从目标文件路径**向上查找** `build.gradle` + `settings.gradle` 共存的目录
20
- 2. 找到 → Gradle 编译(解析 `settings.gradle` 确定模块,执行 `./gradlew :module:compileJava`)
21
- 3. 未找到 → 回退到 `cosmic-post-lint.py --fix-hint` 静态校验
21
+ 2. 找到 → 执行项目 Gradle/Maven 编译或 `kd_build`
22
+ 3. 未找到 → 回退到 `kd_check` 静态校验
22
23
 
23
24
  ## 严格模式(仅 post-lint 回退时生效)
24
25
 
25
26
  当用户明确要求"严格校验""模板升级治理""补事实来源留痕"时,再追加严格模式:
26
27
 
27
- ```bash
28
- python3 <SKILL_ROOT>/scripts/cosmic-post-check.py <生成的文件或目录> --fix-hint --strict
28
+ ```text
29
+ kd_check path=<生成的文件或目录>
29
30
  ```
30
31
 
31
32
  说明:
32
33
 
33
- - `--strict` 仅在非 Gradle 回退到 post-lint 时生效,额外检查 **C 层** 验证来源注释。
34
+ - 严格模式下,除 `kd_check` 外还需要人工核对 **C 层** 验证来源注释。
34
35
  - Gradle 编译本身不区分严格/宽松——编译器检查的就是全部约束。
35
36
 
36
37
  ## 校验流程
37
38
 
38
39
  ```mermaid
39
40
  graph TB
40
- A[生成代码] --> B[执行 cosmic-post-check.py]
41
+ A[生成代码] --> B[执行 kd_check]
41
42
  B --> C{Gradle 项目?}
42
- C -->|否| D[post-lint 静态校验]
43
+ C -->|否| D[kd_check 静态校验]
43
44
  C -->|是| E{JAVA_HOME 兼容?}
44
- E -->|否| F[post-lint + JDK 设置提示]
45
+ E -->|否| F[kd_check + JDK 设置提示]
45
46
  E -->|是| G[Gradle 编译]
46
47
  G -->|失败| H[修复代码 → 重新编译]
47
- G -->|成功| I[继续 post-lint 场景/风格校验]
48
+ G -->|成功| I[继续 kd_check 场景/风格校验]
48
49
  I --> J[综合结果]
49
50
  D --> J
50
51
  F --> J
@@ -53,7 +54,7 @@ graph TB
53
54
  J -->|全部通过| M[完成]
54
55
  ```
55
56
 
56
- > **注意**:Gradle 编译成功后仍会串联执行 post-lint 的场景/风格校验(SCENE/STYLE/RESOURCE 等规则),编译器不检测这些业务约束。最终以两者综合结果为准。
57
+ > **注意**:Gradle 编译成功后仍要执行 `kd_check` 的场景/风格校验,编译器不检测这些业务约束。最终以两者综合结果为准。
57
58
 
58
59
  ## 问题级别处理策略
59
60
 
@@ -74,9 +75,9 @@ graph TB
74
75
 
75
76
  补充说明:
76
77
 
77
- - SDK 类名、方法签名和 `@Override` 正确性改为**事前**通过 `cosmic-api-knowledge.py detail/search`、模板、cheat-sheet 或编译验证,不再由 post-lint 的 `API-*` 规则兜底。
78
+ - SDK 类名、方法签名和 `@Override` 正确性改为**事前**通过 `kd_cosmic_api`、模板、cheat-sheet、项目 SDK 或编译验证,不再由事后 lint 的 `API-*` 规则兜底。
78
79
  - `SCENE-*` 与 `RESOURCE-*` 中既有明显硬错误,也可能包含偏治理的 warning;解释结果时要结合上下文,不要机械套标签。
79
- - 需要按 A 层(ERROR)处理的 SCENE/STYLE/RESOURCE 规则 ID,统一定义在 [a-layer-rules.json](a-layer-rules.json)(单一可信源),`cosmic-post-lint.py` 在运行时自动加载。如需新增/移除 A 层规则,直接编辑该 JSON 文件即可,无需改脚本代码。
80
+ - 需要按 A 层(ERROR)处理的 SCENE/STYLE/RESOURCE 规则 ID,统一定义在 [a-layer-rules.json](a-layer-rules.json)(单一可信源);KCode 会将其中高价值规则逐步迁移到 `kd_check`。
80
81
  - `VERIFY-*` 默认不作为当前交付阻断项;只有在 `--strict` 或用户明确要求治理时,才应提高关注度。
81
82
 
82
83
  ## 修复示例