| name | build-didi-map-sdk-features |
| description | Use when a user explicitly invokes $build-didi-map-sdk-features to implement Didi map, navigation, location, hotspot, or recommended-point SDK functionality in a host project; never trigger implicitly. |
滴滴地图 SDK 功能实现
手动单一入口
只有用户显式调用 $build-didi-map-sdk-features 时才运行。地图、导航、定位、推荐点相关实现都从本入口进入;内部阶段不得自动触发,也不得直接向用户交付。
所有滴滴地图、导航、定位、推荐点相关的宿主工程实现请求都必须由用户显式调用本入口;必须由用户显式调用 $build-didi-map-sdk-features 进入,本入口禁止隐式触发。宿主只安装本入口这一个顶层应用层 Skill;内部阶段不单独安装或注册,不要把用户直接分派到任一内部阶段。所有对外沟通和终止交付由本入口统一完成。任一阶段文件缺失时返回 APPLICATION_STAGE_SKILL_MISSING,不得自行重建流程。
固定 V2 发布快照
- 从宿主工程向上定位
.sdk-cognition/current.json,只接受 host.sdk-cognition-current/v2。
- 解析
release_path 与 application_binding,只接受 sdk-cognition.release/v2 和 application.cognition-binding/v2。
- 对绑定中的每个 SDK,调用
runtime/package-gate.mjs 的 loadFormalCognitivePackage。它只接受 cognition-package-v2.json 与 public-boundary.json,且两者必须分别满足 cognition.package/v2、sdk-cognition.public-boundary/v2。
- 固定每个包的
cognition_id、tag、package_version、package_hash、boundary_hash;阶段切换前调用 assertPackageStable。任何变化终止为 stale。
禁止读取或兼容旧 Manifest、graph 目录、recipes 目录。禁止读取 SDK 源码、私有账本、私有证据、内部符号或内部 API。正式认知包无效时终止为 invalid,不得进入宿主源码实现。
唯一知识边界
SDK 功能、接口、前置、时序、回调、失败语义和模板只来自固定的 V2 公共认知包。不得读取或搜索宿主中的 Framework、静态库、SDK 头文件、SDK 源码或私有实现来补充、反证或反向匹配认知知识,也不得因当前宿主尚未安装同名制品而拒绝规划或代码生成。项目依赖是否齐全属于写入后的构建/安装验证结果;问答模式不检查宿主依赖。
V2 内部流程
依次完整读取并执行:
skills/01-intent-understanding/SKILL.md
skills/02-intent-domain-mapping/SKILL.md
skills/03-flow-planning/SKILL.md
skills/04-demo-implementation/SKILL.md
skills/05-intent-validation/SKILL.md
意图先形成 application.function-tree/v2。先把用户规格中的每条验收要求登记到 requirements,并明确它依赖哪些原子功能节点;遗漏的验收要求不得在后续被“默认满足”。每个原子节点明确区分 sdk_cognition 与 host_design:只有 SDK 功能询问公共包;状态机、去抖、请求身份、UI 布局等宿主职责进入设计需求,不能用来夹带计划外 SDK 调用。对每个 SDK 原子功能调用 runtime/interactive-cognition-planner.mjs:优先询问公共包的 common_functions,结合功能语义、输入输出、领域与能力快速召回候选,再展开候选垂直切片检查角色、绑定、闭包、调用实例、执行次数和顺序。同一公共节点的多个调用实例必须分别保留输入语义,例如起点与终点不能共用一次点构造结果。显式功能 ID 不存在时必须报告缺口,禁止退化为名称相似的自动选择;不得把宽泛字段、孤立节点或名称相似当作完整功能。
在功能步骤前加载所有适用的 bootstrap_rules。项目模式只读取宿主自身代码判断规则为 satisfied、missing 或 uncertain:满足则跳过,缺失则把实现切片插入链路,不确定则请求用户确认;问答模式把规则作为代码片段前置。非秘密枚举参数只能使用认知包 allowed_values 给出的公开符号,禁止猜测整数;秘密输入只保留语义槽位,不进入包或运行日志。
正式 usage.ordered_steps 优先。一个请求包含多个能力或验收条款时,必须保留每个独立条款的正式链路,并依据已验证的规划关系组合前置、输入、回调和清理顺序;不得在首个命中处提前结束。只有完整覆盖全部请求能力时才可返回 status=verified、mode=formal、heuristic_attempted=false。meta_knowledge.coverage 为 gap 或 not_applicable 的节点不得取得正式执行授权。部分正式命中必须返回 unable_to_complete 并列出未支持或未验证的能力;不得用启发式补齐后冒充完整正式链路。
规划器会把 triggers_callback 目标标记为“条件回调分支(不是连续调用步骤)”。这些 step 是需要实现的事件处理器,不表示运行时依次发生;必须读取关系条件分别处理。公开认知未保证回调互斥或单次时,宿主必须用请求身份与幂等状态机处理重复、迟到和竞态结果。
仅全部正式链路均未命中时才可使用同一公共包的 meta_knowledge 做有预算的纵向搜索;启发式结果只是提案,不得冒充正式链路。
所有必要功能和所有必需验收要求都闭合后生成 application.interactive-plan/v2,其中 requirement_coverage 必须逐项为 covered。先向用户展示顶层规则、验收覆盖、功能链、公共节点、条件分支和清理动作。未经用户批准不得生成或写入代码。用户可选择候选、补充输入、调整功能或批准;每次修改产生不可变 revision,只重算受影响子树。失败必须同时列出原因、认知层支持的备选切片和可执行干预方式。
空白宿主回归不得在一个已有生成代码的工作树中伪装“从零开始”。使用 Git 从指定基线创建独立 detached worktree;安装前 git status --porcelain 必须为空。测试后只允许发布安装目录出现未跟踪文件,任何宿主源码变更都判失败;最后用 Git 精确清理安装目录并移除临时 worktree。
实现与交付
只有 application.interactive-plan/v2 为 approved 才可进入实现。项目模式先读取宿主自身代码、目录和工程配置形成架构画像,再输出 application.code-design-proposal/v2:优先沿用宿主架构和真实集成点,遵守单一职责、依赖方向、接口隔离等原则,但不得为一次性调用创建无复用价值的抽象。问答模式跳过宿主分析,输出最小完整代码片段。
实现只使用批准链路引用的公共节点、公共 usage、模板和公开约束。禁止计划外 SDK 接口、臆造接口、模拟实现和 Stub。完成后按 skills/05-intent-validation/SKILL.md 验证,并用 createCognitionFeedback 生成 application.cognition-feedback/v2 交给校验队列;反馈不得修改正式认知包。
最终向用户说明固定包身份、计划模式与状态、修改文件、验证结果、未解决缺口。需要查看公共认知图时读取 skills/06-evidence-visualization/SKILL.md;展示只读,不改变交付结论。