| name | ok-cosmic |
| description | 金蝶云苍穹开发主 Skill,优先复用 kd-cd-cosmic-commons 封装。适用于插件开发、单据/列表/表单逻辑、操作服务、BOTP 转换、后台视图打开、附件处理、DynamicObject 与元数据处理、弹性域解析及 OpenAPI 集成。默认优先使用仓库封装;在涉及原生插件事件、SDK API、方法签名或封装未覆盖场景时,使用内置脚本进行查询。 |
苍穹开发
默认按"封装优先,原生兜底"工作,避免在仓库已封装的场景里退回到 BOS 原生低层 API。
最短决策路径
- 先判断插件类型或能力类别(查下方决策矩阵)。
- 先读对应
references/*.md,确认事件边界与适用场景。
- 再读对应
assets/*.java 模板,沿用已有方法签名和骨架。小场景可直接用 assets/snippets/*.java。
- 字段不确定先查
cosmic-form-metadata.py,SDK 签名不确定先查 cosmic-api-knowledge.py。
- 只有"插件类型 + 事件方法 + 字段/签名"都确认后,才开始生成代码。
- 代码生成后,必须执行
cosmic-post-lint.py 自动校验;若存在 ERROR 级问题须立即修复并重新校验直到通过。
快速决策矩阵
能力封装路由(按需加载,只读相关的 1-2 个文档)
原生 SDK 兜底路由(仅在封装层不够用时)
子文件引用
以下文件提供详细规则,AI 应在需要时按需加载:
场景化代码片段 (snippets)
模板骨架给出完整插件结构,snippets 给出单个场景的最小可运行示例。遇到以下场景时,优先读对应 snippet 再写实现:
API 知识与元数据查询脚本
本 Skill 提供了两个核心 Python 脚本,用于查询苍穹 SDK API 和表单元数据。
A. 知识图谱查询脚本 (cosmic-api-knowledge.py)
用于模糊搜索类名、获取类方法签名、继承树与注释。
- 用法:
python3 <SKILL_ROOT>/scripts/cosmic-api-knowledge.py [options] <command> [args]
- 常用命令:
search <query...>: 模糊搜索类名。支持多关键词,默认任一关键词命中即可返回;加 --all 表示全部关键词都要命中。
search-method <query...>: 全局搜索方法名。支持多关键词,默认任一关键词命中即可返回;加 --all 表示全部关键词都要命中。结果会优先把与查询词更接近的方法排在前面,并展示方法说明摘要。
detail <classname>: 获取指定全限定类名的详细信息。
- 可配合
--method <keyword> 只看相关方法。
- 可配合
--declared-only 只看当前类声明的方法,不展开父类。
- 可配合
--compact 输出紧凑事实块,减少 token 消耗,适合继续交给 AI 生成代码。
- 定向过滤能力:
--class-prefix <prefix>: 按包前缀或类名前缀过滤,可重复传入多个前缀。
--class-regex <regex>: 按类全限定名正则过滤。
--kind <helper|servicehelper|plugin|service|utils|runtime|entity|const|enum|controller>: 按常见类别快速过滤。
- 配置: 通过
--config <path/to/ok-cosmic.json> 指定配置文件(优先匹配当前运行项目的根目录)。
推荐用法(比裸搜更稳)
- 查某个领域的 helper:
python3 <SKILL_ROOT>/scripts/cosmic-api-knowledge.py --config ok-cosmic.json search Helper --class-prefix kd.bos.servicehelper --kind helper
- 查某个包下的方法:
python3 <SKILL_ROOT>/scripts/cosmic-api-knowledge.py --config ok-cosmic.json search-method send email --class-prefix kd.bos.servicehelper.message
- 查插件相关类:
python3 <SKILL_ROOT>/scripts/cosmic-api-knowledge.py --config ok-cosmic.json search plugin operation --kind plugin --all
- 精确确认某个类有没有目标方法:
python3 <SKILL_ROOT>/scripts/cosmic-api-knowledge.py --config ok-cosmic.json detail "类全限定名" --method "关键词"
- 精确确认方法是否由当前类自己声明:
python3 <SKILL_ROOT>/scripts/cosmic-api-knowledge.py --config ok-cosmic.json detail "类全限定名" --method "关键词" --declared-only
- 当需要把方法事实继续喂给 AI 做后续生成时:
python3 <SKILL_ROOT>/scripts/cosmic-api-knowledge.py --config ok-cosmic.json detail "类全限定名" --method "关键词" --compact
AI 调用约束
- 允许直接传多个关键词,不要再把多个词错误地拆成多个"未知参数"。
- 当第一次裸搜结果过宽时,第二次必须优先补
--class-prefix 或 --kind,不要连续无过滤地重复大范围搜索。
- 搜 BOS/苍穹核心能力时,优先从这些包前缀收窄:
kd.bos.servicehelper
kd.bos.entity
kd.bos.form
kd.bd
kd.scm
定向搜索优先级
- 先定"领域":
- BOTP / 下推 / 转换
- BaseData / 基础资料
- Message / 邮件 / 消息
- Form / UI / List / Plugin
- 再定"包前缀":
- BOS 通用服务优先
kd.bos.servicehelper
- 插件事件优先
kd.bos.entity、kd.bos.form
- 主数据优先
kd.bd
- 最后再用关键词:
- 类搜索用
search
- 方法搜索用
search-method
- 类已知时直接
detail
- 需要确认
@Override 是否应写在当前类,而不是父类已有实现时:
- 优先
detail "类全限定名" --method "关键词" --declared-only
- 需要把方法签名、参数说明、返回值作为低噪音事实块继续注入当前会话时:
- 优先
detail "类全限定名" --method "关键词" --compact
B. 元数据查询脚本 (cosmic-form-metadata.py)
用于根据 formId 或 billName 获取单据元数据字段,支持字段模糊筛选。
- 用法:
python3 <SKILL_ROOT>/scripts/cosmic-form-metadata.py [options] get [args]
- 参数:
--form-id: 表单英文标识。
--bill-name: 表单中文名称。
--fuzzy: 字段标识或名称的模糊匹配列表。[强制] 多个关键词必须用空格分隔(例如 --fuzzy qty price amount),支持正则表达式(如 --fuzzy "qty|price|amount"),严禁使用逗号分隔。
--show-detail: 详情模式开关。当存在模糊匹配结果时,显示枚举项映射 (extMap) 或基础资料引用类型 (refType)。
- 配置: 通过
--config <path/to/ok-cosmic.json> 指定配置文件(优先匹配当前运行项目的根目录)。
AI 调用约束 (元数据查询)
- 常规对齐: 仅确认字段标识时,不带
--show-detail。
- 深度实现: 当需要编写
if 条件判断(针对枚举值)、手动赋值 或 基础资料关联查询 前,必须带上 --show-detail。
- 严禁 SQL: 有了此参数后,严禁直接通过 SQL 查询
form_metadata_cache 表,必须通过脚本获取详情,以保证逻辑的一致性和可维护性。
常见实体/能力地图
下面这张"先找哪里"的地图,优先用于缩小搜索范围。
代码生成后自动校验(Post-Lint)
[强制] 在生成或修改任何苍穹 Java 代码后,必须执行以下校验流程:
- 对生成的文件执行校验脚本:
python3 <SKILL_ROOT>/scripts/cosmic-post-lint.py <生成的文件或目录> --fix-hint
- 若报告中存在 ERROR 级问题,必须立即修复后重新执行校验,直到 ERROR 为 0。
- 若仅存在 WARNING 级问题,应优先修复;若有合理理由可保留,须在代码注释中说明原因。
- INFO 级问题为建议项,按团队风格决定是否处理。
AI 调用约束 (Post-Lint)
- 每次生成或修改
.java 文件后,自动触发 lint 校验,不需要用户手动请求。
- 修复后必须再次执行脚本确认通过,形成"生成 → 校验 → 修复 → 复检"闭环。
- 若单次修复后仍有 ERROR,最多重试 3 次;3 次后仍未通过,报告给用户并附带剩余问题清单。
- 校验脚本不替代编译检查;通过 lint 后仍应确保代码可编译。