Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

百度地图 Agent Plugin

这是一个符合 Agent Plugins 1.0.0 规范的百度地图 Agent Plugin,提供 4 个并列 Skill 和 1 个官方文档检索 MCP。

Plugin 本体位于 baidu-map/,使用标准的 plugin.jsonmcp.jsonskills/ 目录结构,不绑定特定 Agent 客户端。本仓库同时提供 .agents/plugins/marketplace.json,可作为 marketplace 在 Codex 中安装;当前版本已在 Codex 0.147.0 完成端到端验证。

baidu-map-marketplace/
├── .agents/plugins/marketplace.json
├── README.md
└── baidu-map/
    ├── plugin.json
    ├── mcp.json
    ├── bin/
    ├── skills/
    └── tools/

baidu-map-marketplace/ 是分发目录;baidu-map/ 是 Agent Plugin 根目录。 Plugin 使用 Agent Plugins 1.0 的根 plugin.jsonmcp.json,不包含 .codex-plugin/.claude-plugin/.mcp.json 兼容清单。

客户端兼容性

Agent Plugins 规范不定义统一市场,也不限定具体 Agent 客户端。任何完整支持 Agent Plugins 1.0、Agent Skills 和 stdio MCP 的客户端,都可以按其自身机制加载 baidu-map/。实际兼容性取决于客户端对这些规范的实现,请以对应客户端的文档和验证 结果为准。

.agents/plugins/marketplace.json 是本仓库提供的 Codex 分发清单,不是 Plugin 本体的 一部分,也不表示 Plugin 仅限 Codex 使用。当前完整目录既可以通过本地路径分发,也可以 作为 Git 仓库分发;正式发布到 OpenAI Universal Plugins Directory 需要另外提交审核。

在 Codex 中安装

要求:Codex 0.146.0+、Node.js 18+。以下流程已使用 /opt/homebrew/bin/codex 0.147.0 完成隔离端到端测试。

从本地目录安装

将完整的 baidu-map-marketplace/ 目录交给接收方,然后执行:

codex plugin marketplace add /absolute/path/to/baidu-map-marketplace
codex plugin add baidu-map@baidu-map-marketplace

从 Git 仓库安装

将完整 marketplace 发布为 Git 仓库后执行:

codex plugin marketplace add baidu-maps/bmap-agent-plugin
codex plugin add baidu-map@baidu-map-marketplace

也支持 HTTPS 或 SSH Git URL。需要固定版本时,在第一次添加 marketplace 时指定 tag:

codex plugin marketplace add baidu-maps/bmap-agent-plugin --ref v1.2.0
codex plugin add baidu-map@baidu-map-marketplace

验证安装

codex plugin marketplace list
codex plugin list --marketplace baidu-map-marketplace

安装完成后新开一个 Codex 会话。无需单独复制 Skills,也无需在 config.toml 中手工 注册 MCP。baidu-map@baidu-map-marketplace 是”Plugin 名@marketplace 名”,不是路径。

使用方式

在支持自动发现 Agent Skills 和 MCP 的客户端中,不需要先选择入口 Skill,也不需要 显式调用 MCP。直接在新会话中描述地图需求,客户端会根据各 SKILL.mddescription 选择 Skill,并在需要精确官方资料时调用 baidu-maps-docs MCP:

帮我找西湖附近适合带孩子的餐厅
写一个 BMapGL 页面显示多个 Marker
用 Node.js 调用百度地图驾车路线规划接口
帮我登录百度地图开放平台并查看现有 AK
查询百度地图官方文档中驾车路线规划的返回字段

不需要写 $baidu-map:...$baidu-maps-docsmcp://...。显式形式只用于调试、 验证或强制选择组件。

第一次遇到需要百度账号、AK 或 SK 的任务时,Plugin 会按需进入 bmap-cli 登录和凭据 流程,不会在安装阶段要求用户预先配置所有凭据。

更新和卸载

Git marketplace 更新后,刷新 marketplace 快照、重新安装 Plugin,然后新开会话:

codex plugin marketplace upgrade baidu-map-marketplace
codex plugin add baidu-map@baidu-map-marketplace

本地目录分发时,替换原目录内容后重新执行:

codex plugin add baidu-map@baidu-map-marketplace

Codex 缓存的是 Plugin 快照,不会实时读取源目录。修改 Skill、MCP 或 manifest 后都应 重新安装并新开会话。

卸载 Plugin:

codex plugin remove baidu-map@baidu-map-marketplace

确认不再需要该 marketplace 后,可以继续移除来源:

codex plugin marketplace remove baidu-map-marketplace

组件职责

组件 负责 不负责
baidu-ai-map 直接回答地点、路线、地理编码、天气等地理问题;复杂地图问题优先考虑 生成调用代码、账户资源管理
baidu-map-jsapi-gl 编写、审查、调试 BMapGL 浏览器前端代码 服务端 WebAPI、直接地理问答
baidu-map-webapi 编写、审查、调试服务端 WebAPI 调用代码 浏览器渲染、直接地理问答
bmap-cli CLI 自举、登录、AK / SK、样式、配额、消费量和账户资源管理 总分诊、地图代码组织
baidu-maps-docs MCP 查询精确、缺失、版本相关或最新的官方 API / SDK 事实 决定业务流程和代码架构
直接地理结果 -> baidu-ai-map
浏览器地图代码 -> baidu-map-jsapi-gl -> 缺凭据时 bmap-cli
服务端地图代码 -> baidu-map-webapi -> 缺凭据时 bmap-cli
登录 / AK / Agent Plan / 样式 / 配额 -> bmap-cli
精确或最新的官方文档事实 -> baidu-maps-docs MCP

Skill 负责工作流、约束和代码组织,MCP 负责官方事实。代码任务先由业务 Skill 组织; 遇到精确、缺失或版本相关信息时查询 MCP。明确的官方文档问题可以直接使用 MCP。

首次使用与凭据

本包不包含任何凭据。各业务 Skill 只在实际缺少凭据时调用 bmap-cli

变量 用途
BAIDU_MAP_AUTH_TOKEN Agent Plan SK;直接地理问答
BMAP_WEBAPI_AK 服务端 AK;WebAPI 代码
BMAP_JSAPI_KEY 浏览器端 AK;BMapGL 代码
BAIDU_MAPS_DOCS_AK / BMAP_AK 文档 MCP AK;独立运行代理时可用
BMAP_CLI 已有 bmap-cli 路径;跳过自举

首次提出需要凭据的请求时,bmap-cli Skill 会检查外部 CLI。若本机没有 CLI,它会先 展示固定下载地址、完整命令和风险,取得用户确认后才安装,再按需启动浏览器登录并获取 正确类型的 AK / SK。

如果文档 MCP 在登录前已启动并因没有 AK 鉴权失败,完成登录后新开一个 Codex 会话, 让 MCP 进程重新从 bmap-cli 登录态解析凭据。只安装 Plugin 的含义是不需要独立安装 Skill 或手工配置 MCP;网络、百度账号登录态和按需运行的 bmap-cli 仍是外部依赖。

Codex 0.147.0 启动 Plugin stdio MCP 时会过滤任意宿主环境变量,只继承 HOMEPATH 等安全白名单。因此文档代理在 Codex 中通常通过 HOME 找到 bmap-cli,再由 CLI 读取登录态并解析可用 AK。Agent Plugins 1.0 没有可移植的 secret reference 字段, 不能把凭据写入可见的 mcp.json envheaders

在 Codex 中的安装后存储

Codex 原生读取 baidu-map/plugin.jsonbaidu-map/mcp.jsonbaidu-map/skills/,并将 Plugin 缓存到:

~/.codex/plugins/cache/baidu-map-marketplace/baidu-map/<version>/

Skill 不会被复制进 ~/.codex/skills/,MCP 也不会作为独立 [mcp_servers] 写入 config.toml。Plugin Skill 带命名空间,可以和用户单独安装的同名 Skill 并存。 ${PLUGIN_ROOT} 在 MCP 启动时展开为缓存中的 Plugin 根目录。

校验与测试

在 marketplace 根目录执行静态校验:

node baidu-map/tools/validate.mjs

执行 Codex 隔离端到端测试:

bash baidu-map/tools/test-in-codex.sh

测试固定使用 /opt/homebrew/bin/codex,将当前完整 marketplace 复制到临时目录,并创建 临时 CODEX_HOME。它不继承单独安装的 Skill、MCP 或 Plugin,也不修改真实 Codex 配置。测试会验证:

  • 实际交付的 marketplace 清单可以添加,baidu-map 可以安装并缓存;
  • 4 个 Plugin Skill 均能完整加载,且没有主提示词截断;
  • 不带 $skill 的自然语言请求能自动路由到正确 Skill;
  • 不带 mcp:// 的官方文档请求能自动发现并实际调用 Plugin MCP;
  • MCP 调用事件来自 baidu-maps-docs.list_docs,而不是 shell 或代理脚本绕行。

MCP 阶段只恢复真实 HOME,让代理复用由 bmap-cli 管理的登录态;CODEX_HOME 仍 完全隔离。非交互 codex exec 无法响应 MCP 审批,因此测试只在临时配置中为 list_docs 设置 approval_mode="approve"

MCP 代理

baidu-map/bin/docs-mcp-proxy.mjs 需要 Node.js 18+。它按 BAIDU_MAPS_DOCS_AKBMAP_AKbmap-cli ak list(优先服务端 AK)的顺序解析 凭据,将 stdio JSON-RPC 转发到 https://docs.map.baidu.com/mcp/,并兼容 JSON 与 SSE 响应。诊断信息只写 stderr。

单独验证:

printf '%s\n%s\n%s\n' \
  '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}' \
  '{"jsonrpc":"2.0","method":"notifications/initialized"}' \
  '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
  | node baidu-map/bin/docs-mcp-proxy.mjs

About

百度地图智能体插件

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages