# Build Didi Map Sdk Features

> 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.

- Skill: `didi/build-didi-map-sdk-features` (Agent Skill, multi-file: 18 files)
- Install (CLI): `npx skillmds@latest add didi/build-didi-map-sdk-features`
- Raw SKILL.md: https://api.skillmd.com/api/skills/didi/build-didi-map-sdk-features/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: didi (https://skillmd.com/u/didi)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/didi/build-didi-map-sdk-features

---


# 滴滴地图 SDK 功能实现

## 手动单一入口

只有用户显式调用 `$build-didi-map-sdk-features` 时才运行。地图、导航、定位、推荐点相关实现都从本入口进入；内部阶段不得自动触发，也不得直接向用户交付。

所有滴滴地图、导航、定位、推荐点相关的宿主工程实现请求都必须由用户显式调用本入口；必须由用户显式调用 `$build-didi-map-sdk-features` 进入，本入口禁止隐式触发。宿主只安装本入口这一个顶层应用层 Skill；内部阶段不单独安装或注册，不要把用户直接分派到任一内部阶段。所有对外沟通和终止交付由本入口统一完成。任一阶段文件缺失时返回 `APPLICATION_STAGE_SKILL_MISSING`，不得自行重建流程。

## 固定 V2 发布快照

1. 从宿主工程向上定位 `.sdk-cognition/current.json`，只接受 `host.sdk-cognition-current/v2`。
2. 解析 `release_path` 与 `application_binding`，只接受 `sdk-cognition.release/v2` 和 `application.cognition-binding/v2`。
3. 对绑定中的每个 SDK，调用 `runtime/package-gate.mjs` 的 `loadFormalCognitivePackage`。它只接受 `cognition-package-v2.json` 与 `public-boundary.json`，且两者必须分别满足 `cognition.package/v2`、`sdk-cognition.public-boundary/v2`。
4. 固定每个包的 `cognition_id`、`tag`、`package_version`、`package_hash`、`boundary_hash`；阶段切换前调用 `assertPackageStable`。任何变化终止为 `stale`。

禁止读取或兼容旧 Manifest、graph 目录、recipes 目录。禁止读取 SDK 源码、私有账本、私有证据、内部符号或内部 API。正式认知包无效时终止为 `invalid`，不得进入宿主源码实现。

## 唯一知识边界

SDK 功能、接口、前置、时序、回调、失败语义和模板只来自固定的 V2 公共认知包。不得读取或搜索宿主中的 Framework、静态库、SDK 头文件、SDK 源码或私有实现来补充、反证或反向匹配认知知识，也不得因当前宿主尚未安装同名制品而拒绝规划或代码生成。项目依赖是否齐全属于写入后的构建/安装验证结果；问答模式不检查宿主依赖。

## V2 内部流程

依次完整读取并执行：

1. `skills/01-intent-understanding/SKILL.md`
2. `skills/02-intent-domain-mapping/SKILL.md`
3. `skills/03-flow-planning/SKILL.md`
4. `skills/04-demo-implementation/SKILL.md`
5. `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`；展示只读，不改变交付结论。

