# 🏗 AgentGIS Cloud Platform — Agent 集成层架构规划䞎迭代路线 > **猖制**: Huawei | **日期**: 2026-07-21 > **基于**: CARTO for Agents 架构研究 + AgentGIS 平台现状 > **定䜍**: 平台䞋䞀阶段架构升级的决策参考 --- ## 目圕 1. [现状快照](#䞀现状快照) 2. [目标架构蓝囟](#二目标架构蓝囟) 3. [差距分析](#䞉差距分析) 4. [迭代路线](#四迭代路线) 5. [Phase 1 诊讟Skill 目圕 + CLI 扩展](#五phase-1-诊讟skill-目圕--cli-扩展) 6. [Phase 2 诊讟MCP Server](#六phase-2-诊讟mcp-server) 7. [Phase 3 诊讟Suite as Tool](#䞃phase-3-诊讟suite-as-tool) 8. [Phase 4 展望语义暡型䞎 Agent 自劚化](#八phase-4-展望语义暡型䞎-agent-自劚化) 9. [附圕](#九附圕) --- ## 䞀、现状快照 ### 1.1 我们有什么 ``` 甚户 / AI Agent │ ├── mk_ API Key → suites.mercator.cn REST API ← 圓前䞻芁 Agent 接入方匏 │ └── agc CLI仅 run + config 子呜什 │ ├── agc run --suite-id --input k=v ├── agc config set/get/list └── agc config set api-key ``` **平台栞心** | 组件 | 状态 | 诎明 | |------|------|------| | `auth-center` | ✅ 运行䞭 | 讀证 + API Key + OIDC + OAuth2/OIDC 服务端 | | `suite-market` | ✅ 运行䞭 | 套件 CRUD、发垃、合规检测、搜玢 | | `discussions` | ✅ 运行䞭 | 瀟区讚论、故障自劚报告 | | `gis-actions` (`agc`) | ✅ 运行䞭 | CLI 本地执行噚圓前只有 `run` 和 `config` | | `Agent Profiles` | ✅ 运行䞭 | SuiteHub/agent-profiles 仓库倚角色讀知文件 | | 合规检测 | ✅ 有 | `POST /api/v1/compliance/check` | | 参数校验 | ✅ 有 | `POST /api/v1/parameters/validate` | ### 1.2 我们猺什么 | 胜力 | 状态 | 差距 | |------|------|------| | **CLI 党平台芆盖** | ❌ 仅 `run` + `config` | 无搜玢、无讀证管理、无数据操䜜、无查看健康状态 | | **CLI JSON 蟓出** | ❌ | 圓前蟓出是自由文本Agent 无法可靠解析 | | **Agent Skill 目圕** | ❌ 无 | Agent Profiles 是静态讀知文件䞍是可加蜜的 playbook | | **MCP Server** | ❌ 无 | Agent 接入面窄只有 REST API | | **Workflow as Tool** | ❌ 无 | 套件 = 流皋䜆䞍可被 Agent 盎接调甚 | | **语义暡型** | ❌ 无 | Agent 䞍理解数据含义䟝赖人填参数 | | **Agent 审计远螪** | ❌ 无 | 无法远螪"哪䞪 Agent 做了什么操䜜" | --- ## 二、目标架构蓝囟 ### 2.1 䞀层架构 → 四层架构 ``` 圓前䞀层 目标四层 Agent ──REST──→ suite-market Agent ──MCP──→ MCP Server │ CLI ├── Platform Tools内眮 │ ├── Interactive Tools未来 │ └── Suite Tools劚态泚册 agc ──→ 本地执行 Agent Skill 目圕 │ Utility → Platform → Use-case │ agc CLI扩展 │ suite-market REST API䞍变 ``` ### 2.2 目标架构总囟 ``` ┌──────────────────────────────────────────────────────────────────────────┐ │ Agent 集成层新建/扩展 │ ├─────────────────────────────────────────────────────────────────────────── │ │ │ ┌─────────────────────────────────────────┐ ┌────────────────────────┐ │ │ │ MCP Server新建 │ │ Agent Skills新建 │ │ │ │ agentgis-mcp-server:8100 │ │ │ │ │ │ │ │ Use-case Tier │ │ │ │ Platform Tools内眮 │ │ ├─ 囎栏分析 │ │ │ │ ├─ list_suites │ │ ├─ POI 叠加 │ │ │ │ ├─ inspect_suite │ │ ├─ 热点分析 │ │ │ │ ├─ run_suite │ │ ├─ 数据莚量报告 │ │ │ │ ├─ run_suite_async │ │ └─ arcgis-迁移远期 │ │ │ │ ├─ get_run_status │ │ ↑ 䟝赖 │ │ │ │ ├─ get_run_results │ │ Platform Tier │ │ │ │ ├─ check_compliance │ │ ├─ 套件搜玢䞎运行 │ │ │ │ ├─ search_data │ │ ├─ 合规检测流皋 │ │ │ │ └─ get_org_stats │ │ ├─ 数据富入富出 │ │ │ │ │ │ └─ 平台健康检查 │ │ │ │ Suite Tools劚态泚册 │ │ ↑ 䟝赖 │ │ │ │ 每䞪标记䞺 mcp_enabled=True 的套件 │ │ Utility Tier │ │ │ │ 自劚泚册䞺䞀䞪 tool │ │ ├─ 安装䞎讀证 │ │ │ │ │ │ ├─ agc 基础呜什 │ │ │ │ 讀证API Key / OAuth未来 │ │ ├─ Docker 执行暡型 │ │ │ └─────────────────────────────────────────┘ │ └─ Gitea 包䞋蜜 │ │ │ └────────────────────────┘ │ │ │ │ ┌──────────────────────────────────────────────────────────────────────┐ │ │ │ agc CLI扩展 人类 + Agent 通甹 │ │ │ │ agc auth login|token|logout │ │ │ │ agc suite search|inspect|run|list-status │ │ │ │ agc data import|export|list │ │ │ │ agc compliance check │ │ │ │ agc org stats │ │ │ │ agc mcp start|stop|status ← 新增MCP 本地代理 │ │ │ └──────────────────────────────────────────────────────────────────────┘ │ │ │ └──────────────────────────────────────────────────────────────────────────┘ │ â–Œ ┌──────────────────────────────────────────────────────────────────────────┐ │ 平台服务层现有小幅修改 │ ├─────────────────────────────────────────────────────────────────────────── │ │ │ suite-market+ mcp_enabled 字段 + 审计 API │ │ auth-center+ M2M OAuth 支持远期 │ │ discussions+ Agent 操䜜审计话题 │ │ │ └──────────────────────────────────────────────────────────────────────────┘ │ â–Œ ┌──────────────────────────────────────────────────────────────────────────┐ │ 本地执行层䞍变 │ ├─────────────────────────────────────────────────────────────────────────── │ │ │ agc run → 䞋蜜 → 解压 → 拓扑序执行 → 结果保留本地 │ │ │ └──────────────────────────────────────────────────────────────────────────┘ ``` ### 2.3 Agent 亀互流皋目标态 ``` 场景 A人类圚终端甚 甚户 → agc suite search --keyword 囎栏 → JSON 结果 场景 BClaude Code 通过 CLI 操䜜 Claude Code → shell: agc suite search --keyword 囎栏 --format json → 解析 JSON → 决定调甚哪䞪套件 → shell: agc suite run --suite-id geofence --input center=POINT(116 40) 场景 CChatGPT 通过 MCP 操䜜 ChatGPT → MCP list_suites(keyword="囎栏") → MCP run_suite(suite_id="geofence", inputs={"center": "POINT(116 40)"}) → MCP Server → 调甚 suite-market API → 觊发 agc run本地或返回执行指什 场景 D自研 Agent 通过 Skill Playbook 操䜜 Agent 收到请求{"type": "geofence", "params": {...}} → 匹配 trigger 关键词 → 加蜜 geofence-analysis skill → 按 skill steps 执行agc suite search → agc suite run → agc suite list-status ``` --- ## 䞉、差距分析 ### 3.1 胜力对照矩阵 | 胜力 | CARTO | AgentGIS 现状 | 差距等级 | 参考实现 | |------|-------|--------------|---------|---------| | **CLI 安装** | `npm install -g @carto/carto-cli` | `pip install gis-actions` | 等效 | 无需改劚 | | **CLI 呜什芆盖** | 30+ 子呜什auth/credentials/maps/workflows/import/export/org | 2 子呜什run/config | 🔎 䞥重 | [Phase 1](#五phase-1-诊讟skill-目圕--cli-扩展) | | **CLI JSON 蟓出** | 默讀 JSON | 文本栌匏需解析 | 🟡 侭等 | `--format json` 党局参数 | | **CLI 讀证集成** | `carto auth login` OAuth 亀互匏 | `agc config set api-key` 手劚配 | 🟡 侭等 | `agc auth login` + OAuth 讟倇码流 | | **Agent Skills** | 䞉层 15+ skillGitHub 公匀仓库 | 无 | 🔎 䞥重 | [Phase 1](#五phase-1-诊讟skill-目圕--cli-扩展) | | **MCP Server** | 托管匏OAuth/Token 讀证 | 无 | 🔎 䞥重 | [Phase 2](#六phase-2-诊讟mcp-server) | | **Workflow as Tool** | 䞀键 MCP publish | 无 | 🔎 䞥重 | [Phase 3](#䞃phase-3-诊讟suite-as-tool) | | **平台工具内眮** | list_connections, browse_tables, describe_table... | 无 | 🔎 䞥重 | Phase 2 内眮 | | **亀互匏地囟** | view_mapMCP Apps 内联枲染 | 䞍需芁 | 侍适甹 | 无计划 | | **语义暡型** | Apache Ossie + CARTO 空闎扩展 | 无 | 🟡 侭等 | Phase 4 | | **Agent 审计** | CARTO AI Analytics 面板 | 无 | 🟡 侭等 | Phase 3+ | | **迁移工具** | carto-arcgis-migration | 无 | 🟢 䜎 | 按需 | | **In-product Agent** | Builder 内嵌聊倩 | 暂䞍考虑 | 侍适甹 | 排陀 | ### 3.2 技术债评䌰 | 项目 | 圱响 | 建议 | |------|------|------| | `agc` 无统䞀蟓出栌匏 | Agent 无法可靠解析 | 加党局 `--format json|text` | | suite-market 无 MCP 盞关 API | 无法泚册和查询 mcp_enabled 套件 | 后端加字段 + API | | 无 Agent 操䜜审计 | 无法远螪谁做了什么 | PostgreSQL + Redis 写审计流 | | 无隔犻的 MCP Server 容噚 | 需芁新容噚 | Docker + NPM 反代 | | Agent Profiles 是静态文件 | 䞍胜皋序化加蜜 | 独立出 skills 目圕结构 | --- ## 四、迭代路线 ### 总览 ``` Phase 1 Phase 2 Phase 3 Phase 4 2026-07-21 2026-08-01 2026-09-01 2026-Q4 ───────── ───────── ───────── ──────── ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ Skill 目圕 │ │ MCP Server │ │ Suite as Tool │ │ 语义暡型 │ │ CLI 扩展 │ ───► │ (基础版) │ ───► │ (劚态泚册) │ ───► │ Agent 自决 │ │ 审计埋点 │ │ Claude 对接 │ │ AI Analytics │ │ 策 + 䌘化 │ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │ 2-3 呚 3-4 呚 3-4 呚 远期持续 ``` ### Phase 1地基2026-07-21 起预计 2-3 呚 **目标让 AI 猖码 Agent 胜正确操䜜 AgentGIS 平台** | 工䜜项 | 亀付物 | 莟莣人 | |--------|--------|--------| | **1a. 讟计 Skill 目圕结构** | `agent-skills/` 目圕 + 仓库 | Huawei匀 Issue | | **1b. 猖写 Utility Skill3 䞪** | install-auth.md, basic-commands.md, execution-model.md | Huawei匀 Issue | | **1c. 猖写 Platform Skill2 䞪** | suite-search-run.md, compliance-check.md | Huawei匀 Issue | | **1d. 猖写 Use-case Skill1 䞪** | geofence-analysis.md | Huawei匀 Issue | | **1e. 扩展 `agc` CLI** | 添加 auth/search/list-status/stats 子呜什 + `--format json` | Admin猖码 | | **1f. 审计埋点** | `suite-market` 后端添加 `agent_action` 审计衚 | Admin猖码 | **验收标准** - ✅ Claude Code 通过 skill 匕富胜甚 `agc` CLI 完成"搜玢套件→查看诊情→运行" - ✅ `agc suite search --format json` 返回可解析 JSON - ✅ 所有 Agent 操䜜写入审计日志 ### Phase 2标准协议接入2026-08-01 起预计 3-4 呚 **目标让任意 MCP 兌容的 AI 客户端胜盎接调甚 AgentGIS 平台** | 工䜜项 | 亀付物 | 莟莣人 | |--------|--------|--------| | **2a. 搭建 MCP Server 容噚** | Docker 镜像 + NPM 反代 (mcp.mercator.cn) | Huawei运绎 | | **2b. 实现栞心 Platform Tools** | list_suites, inspect_suite, run_suite, run_suite_async, get_run_status, get_run_results, check_compliance | Admin猖码 | | **2c. API Key 讀证集成** | MCP Server 验证 `mk_` 前猀 API Key | Admin猖码 | | **2d. 对接 Claude Desktop 测试** | 配眮 MCP Server URL端到端验证 | Huawei测试 | | **2e. 对接 ChatGPT 测试** | ChatGPT 自定义 MCP 测试 | Huawei测试 | | **2f. 猖写 MCP 䜿甚文档** | 匀发者指南 + 甚户指南 | Huawei文档 | **验收标准** - ✅ ChatGPT 盎接聊倩搜玢套件→查看诊情→运行→查状态→获取结果 - ✅ Claude Desktop 同样可甚 - ✅ 讀证正确非法 API Key 被拒绝 - ✅ `mcp.mercator.cn` 皳定运行 ### Phase 3劚态套件工具2026-09-01 起预计 3-4 呚 **目标经合规检测的套件自劚变䞺可 MCP 调甚的工具** | 工䜜项 | 亀付物 | 莟莣人 | |--------|--------|--------| | **3a. suite-market 增加 mcp_enabled 字段** | 暡型迁移 + API 曎新 + 前端 UI | Admin猖码 | | **3b. 合规通过后自劚标记** | 合规检测流皋末尟增加自劚标记逻蟑 | Admin猖码 | | **3c. MCP Server 劚态泚册** | MCP Server 读取可调甚套件列衚自劚泚入 tools | Admin猖码 | | **3d. 匂步执行支持区化** | 执行状态回调 / 蜮询 + 超时机制 | Admin猖码 | | **3e. AI Analytics 面板** | 审计数据 → 可视化面板操䜜排行、成功/倱莥率 | Admin猖码 | | **3f. 完善 Use-case Skill 目圕** | 再写 3 䞪 Use-case skill | Huawei文档 | **验收标准** - ✅ 发垃䞀䞪合规套件 → 自劚圚 MCP Server 䞊出现䞺可调甚 tool - ✅ Agent 盎接调 `run_geofence_analysis(inputs={...})` → 执行 → 返回结果 - ✅ 管理员看到 Agent 操䜜统计面板 - ✅ Skill 目圕蟟到 5+ 䞪 Use-case skill ### Phase 4智胜 Agent 层2026-Q4远期 **目标Agent 胜理解数据含义自劚选择并填充参数执行套件** | 工䜜项 | 诎明 | |--------|------| | 4a. **语义暡型讟计** | 基于 Apache Ossie 标准定义数据集、字段、关系、指标 | | 4b. **语义暡型存傚** | suite-market 扩展支持套件关联语义暡型 | | 4c. **Agent 自决策** | Agent 根据甚户自然语蚀描述 + 语义暡型自劚匹配套件并填充参数 | | 4d. **M2M OAuth** | 䞺埮服务和自劚化 Agent 提䟛机噚闎讀证 | | 4e. **迁移工具按需** | 劂出现迁移需求实现 agentgis-arcgis-migration skill | --- ## 五、Phase 1 诊讟Skill 目圕 + CLI 扩展 ### 5.1 Skill 目圕结构 **仓库䜍眮** `SuiteHub/agent-profiles`已有仓库新增 `agent-skills/` 目圕 ``` SuiteHub/agent-profiles/agent-skills/ │ ├── catalog.json ← 技胜枅单䟛 Agent 皋序化加蜜 ├── ARCHITECTURE.md ← 架构诎明 + 加蜜规则 │ ├── utility/ │ ├── install-and-auth.md ← 安装 agc + 配眮 API Key │ ├── basic-commands.md ← agc 基础呜什参考 │ ├── execution-model.md ← Docker 隔犻执行暡型诎明 │ └── gitea-packages.md ← Gitea Packages 䞋蜜暡匏 │ ├── platform/ │ ├── suite-search-and-run.md ← 搜玢套件 + 查看诊情 + 运行 │ ├── compliance-check.md ← 合规检测流皋 │ ├── data-import-export.md ← 数据富入富出配合 CLI │ └── platform-health.md ← 平台健康检查 │ └── use-case/ ├── geofence-analysis.md ← 地理囎栏分析 ├── poi-overlay-analysis.md ← POI 叠加分析Phase 3+ ├── spatial-statistics.md ← 空闎统计Phase 3+ └── data-quality-report.md ← 数据莚量报告Phase 3+ ``` ### 5.2 Skill 文件暡板 每䞪 `.md` 文件遵埪统䞀栌匏Agent 可皋序化解析 ```markdown # Skill: <名称> > 层级: utility | platform | use-case > 觊发词: keyword1, keyword2, keyword3 > 䟝赖: [utility/install-and-auth, ...] ## 适甚场景 甚自然语蚀描述什么情况䞋 Agent 应该加蜜这䞪 skill ## 前眮条件 需芁圚加蜜这䞪 skill 之前已满足的条件 ## 步骀 ### 步骀 1xxxx ```bash agc --format json ``` 蟓出瀺䟋 ```json {...} ``` 解析指匕Agent 应该关泚哪䞪字段、劂䜕刀断䞋䞀步... ### 步骀 2xxxx ... ## 完敎瀺䟋 䞀䞪端到端的对话或脚本瀺䟋 ## 垞见错误 Agent 可胜遇到的错误及倄理方法 ``` ### 5.3 Skill 加蜜规则`catalog.json` ```json { "version": "1.0", "skills": [ { "id": "install-and-auth", "tier": "utility", "triggers": ["install", "setup", "auth", "api key", "login"], "dependencies": [], "file": "utility/install-and-auth.md" }, { "id": "basic-commands", "tier": "utility", "triggers": ["agc", "cli", "command"], "dependencies": ["install-and-auth"], "file": "utility/basic-commands.md" }, { "id": "suite-search-and-run", "tier": "platform", "triggers": ["search suite", "run suite", "execute", "find suite"], "dependencies": ["install-and-auth", "basic-commands"], "file": "platform/suite-search-and-run.md" }, { "id": "geofence-analysis", "tier": "use-case", "triggers": ["geofence", "fence", "buffer", "囎栏", "猓冲区"], "dependencies": ["suite-search-and-run", "execution-model"], "file": "use-case/geofence-analysis.md" } ] } ``` **Agent 加蜜逻蟑** 1. 解析甚户请求 → 提取关键词 2. 匹配 `catalog.json` äž­ skills[].triggers → 收集匹配的 skill ID 3. 去重、按 tier 排序utility → platform → use-case 4. 递園加蜜 dependencies 5. 按加蜜顺序读取所有 `.md` 文件泚入 Agent 䞊䞋文 ### 5.4 `agc` CLI 扩展讟计 **新增子呜什** ``` agc ├── auth │ ├── login # OAuth 讟倇码流远期 │ ├── token set # 圓前 config set api-key 的改版 │ ├── token show # 星瀺圓前 API Key掩码 │ └── token test # 测试 API Key 有效性 │ ├── suite │ ├── search # 搜玢套件封装 GET /api/v1/suites/search │ ├── inspect # 查看套件诊情 │ ├── run --input k=v # 圓前 run 的粟简版 │ └── list-status # 查看历史执行状态新增功胜 │ ├── data │ ├── list # 列出已连接的数据源远期 │ ├── import # 富入数据远期 │ └── export # 富出结果远期 │ ├── compliance │ └── check # 觊发合规检测 │ ├── org │ └── stats # 组织统计 │ ├── mcp │ ├── start # 启劚本地 MCP 代理远期 │ └── status # 查看 MCP 连接状态 │ └── config (现有) ├── set ├── get └── list ``` **党局标志** - `--format json|text` — 控制蟓出栌匏。默讀 `text`人类友奜`json`Agent 友奜 - `--quiet` — 只蟓出结果数据无 banner/提瀺信息 - `--timeout ` — 执行超时 **JSON 蟓出栌匏纊定** 所有返回 JSON 的子呜什遵埪统䞀 schema ```json { "status": "ok" | "error", "data": { ... }, "error": { "code": "ERROR_CODE", "message": "Human readable" } } ``` ### 5.5 审计埋点讟计 **新衚 `agent_action_log``suite_market_db`** ```sql CREATE TABLE agent_action_log ( id BIGSERIAL PRIMARY KEY, api_key_id VARCHAR(64) NOT NULL, -- 哪䞪 API Key 执行的操䜜 agent_name VARCHAR(128) DEFAULT '', -- Agent 标识劂 "claude-code" action VARCHAR(64) NOT NULL, -- 操䜜类型 target_type VARCHAR(32), -- 操䜜对象类型suite/data/... target_id VARCHAR(128), -- 操䜜对象 ID request JSONB, -- 请求参数 response_summary VARCHAR(256), -- 响应摘芁 status VARCHAR(16) DEFAULT 'success', -- success/failure duration_ms INTEGER, -- 耗时 ip_address INET, created_at TIMESTAMP DEFAULT NOW() ); CREATE INDEX idx_agent_action_log_api_key ON agent_action_log(api_key_id); CREATE INDEX idx_agent_action_log_created ON agent_action_log(created_at); ``` **采集点** - 所有 REST API 入口通过 FastAPI middleware - `agc` CLI 所有子呜什通过请求倎 `X-Agent-Name` - 未来 MCP Server 所有调甚 --- ## 六、Phase 2 诊讟MCP Server ### 6.1 架构 ``` Claude.ai / ChatGPT / 自研 Agent │ │ MCP Protocol (SSE / Streamable HTTP) â–Œ ┌──────────────────────────────────────┐ │ agentgis-mcp-server:8100 │ │ │ │ Python (FastAPI) + mcp-python-sdk │ │ │ │ Auth Middleware: 验证 mk_ API Key │ │ │ │ ┌────────────────────────────────┐ │ │ │ Tool Registry │ │ │ │ ├── Built-in Tools (静态) │ │ │ │ │ ├── list_suites │ │ │ │ │ ├── inspect_suite │ │ │ │ │ ├── run_suite │ │ │ │ │ ├── run_suite_async │ │ │ │ │ ├── get_run_status │ │ │ │ │ ├── get_run_results │ │ │ │ │ ├── check_compliance │ │ │ │ │ ├── search_data │ │ │ │ │ └── get_org_stats │ │ │ │ └── Suite Tools (劚态) │ │ │ │ └── Phase 3 启甚 │ │ │ └────────────────────────────────┘ │ │ │ │ Backend Calls: │ │ └─→ suites.mercator.cn REST API │ │ └─→ auth.mercator.cn 验证 API Key │ └──────────────────────────────────────┘ │ â–Œ Nginx Proxy Manager mcp.mercator.cn → agentgis-mcp-server:8100 ``` ### 6.2 栞心 Tool 定义 每䞪 tool 甹 JSON Schema 定义参数和返回 #### `list_suites` ```json { "name": "list_suites", "description": "搜玢可甚套件。从关键词搜玢或按分类浏览所有已发垃套件。", "inputSchema": { "type": "object", "properties": { "keyword": { "type": "string", "description": "搜玢关键词支持暡糊匹配" }, "category": { "type": "string", "description": "分类过滀" }, "page": { "type": "integer", "description": "页码默讀 1" }, "page_size": { "type": "integer", "description": "每页数量默讀 10" } } } } ``` #### `inspect_suite` ```json { "name": "inspect_suite", "description": "查看套件的诊细信息包括参数诎明、版本历史、䜿甚诎明。Agent 圚决定运行前应该先 inspect。", "inputSchema": { "type": "object", "properties": { "suite_id": { "type": "string", "description": "套件 ID" }, "version": { "type": "string", "description": "可选指定版本" } }, "required": ["suite_id"] } } ``` #### `run_suite` ```json { "name": "run_suite", "description": "运行套件。参数必须匹配 inspect_suite 返回的 parameter_schema。同步执行等埅结果返回。", "inputSchema": { "type": "object", "properties": { "suite_id": { "type": "string", "description": "套件 ID" }, "version": { "type": "string", "description": "可选指定版本" }, "inputs": { "type": "object", "description": "参数键倌对栌匏由套件的 parameter_schema 定义", "additionalProperties": { "type": "string" } } }, "required": ["suite_id", "inputs"] } } ``` #### `run_suite_async` 侎 `run_suite` 盞同参数䜆立即返回 `run_id`Agent 甹 `get_run_status` / `get_run_results` 蜮询。 #### `check_compliance` ```json { "name": "check_compliance", "description": "对套件的脚本内容觊发合规检测。返回合规评分和检测报告。", "inputSchema": { "type": "object", "properties": { "suite_id": { "type": "string", "description": "套件 ID" }, "version": { "type": "string", "description": "可选指定版本" } }, "required": ["suite_id"] } } ``` ### 6.3 讀证实现 ``` Client Request Header: Authorization: Bearer mk_8e8oJPtslcrwWMdbveIYF6JTj2DdVWmip1YuXDywQsY MCP Server: 1. 提取 Bearer Token 2. 调 auth.mercator.cn/api/v1/apikeys/verify POST { "api_key": "mk_..." } ← { "valid": true, "user_id": "...", "scopes": ["suite:read", "suite:run"] } 3. 猓存验证结果5 分钟 TTLRedis 4. 圚 tool 执行时检查 scope 是吊匹配 ``` ### 6.4 郚眲配眮 ```dockerfile # Dockerfile FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY src/ ./src/ ENV PYTHONPATH=/app/src EXPOSE 8100 CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8100"] ``` ```yaml # docker-compose 新增服务 agentgis-mcp-server: build: ./agentgis-mcp-server container_name: agentgis-mcp-server networks: - mercator-net environment: - SUITE_MARKET_URL=http://suite-market-backend:8001 - AUTH_CENTER_URL=http://auth-center-backend:8000 - REDIS_URL=redis://mercator-redis:6379/1 - MCP_SERVER_PORT=8100 - LOG_LEVEL=info restart: unless-stopped ``` ``` NPM 配眮 Domain: mcp.mercator.cn Forward: http://agentgis-mcp-server:8100 SSL: Let's Encrypt WebSocket Support: ✅ OnMCP 需芁 SSE ``` ### 6.5 测试枅单 | 测试项 | 方法 | 预期 | |--------|------|------| | API Key 正确 | curl -H "Authorization: Bearer mk_..." | 返回正垞结果 | | API Key 错误 | curl -H "Authorization: Bearer mk_wrong" | 401 Unauthorized | | API Key 过期 | 䜿甚已过期 Key | 401 | | 无 API Key | curl 无 Authorization | 401 | | MCP Inspector 连接 | npm install -g @modelcontextprotocol/inspector | 列出的 tools 正确 | | Claude Desktop 连接 | claude_desktop_config.json 配眮 | 工具正垞调甚 | | run_suite 同步 | 短套件 | 等埅完成后返回结果 | | run_suite_async | 长套件 | 立即返回 run_id蜮询获取结果 | | 并发调甚 | 同时 5 䞪请求 | 各请求独立倄理 | --- ## 䞃、Phase 3 诊讟Suite as Tool ### 7.1 数据库暡型变曎 `suite_suites` 衚新增字段 ```python # suite_market 暡型 class Suite(Base): __tablename__ = "suite_suites" # 现有字段... id: str name: str # ... # Phase 3 新增 mcp_enabled: bool = False # 是吊可䜜䞺 MCP Tool 调甚 mcp_tool_name: str | None = None # 自定义 tool 名默讀甚 suite_id mcp_description: str | None = None # 自定义 tool 描述默讀甚 suite description mcp_approved_at: datetime | None # 批准时闎 mcp_approved_by: str | None # 批准人 mcp_call_count: int = 0 # 环计 MCP 调甚次数 ``` ### 7.2 发垃流皋变曎 ``` 匀发者打包 workflow.yaml + scripts/ → .tar.gz → POST /publish/upload需 API Key + Gitea Token → 合规检测 → 参数校验 → 䞊䌠脚本包到 Gitea Packages → 写入 suite_suites → [新增] 劂果合规通过 → mcp_enabled = True → [新增] MCP Server 重新加蜜 tool 列衚 ``` ### 7.3 MCP Server 劚态泚册逻蟑 ```python # mcp-server 启劚时 + 定时刷新每 5 分钟 async def refresh_suite_tools(): """从 suite-market 拉取所有 mcp_enabled=True 的套件泚册䞺 tool""" async with httpx.AsyncClient() as client: resp = await client.get( f"{SUITE_MARKET_URL}/api/v1/suites", params={"mcp_enabled": True}, headers={"Authorization": f"Bearer {INTERNAL_TOKEN}"} ) suites = resp.json() # 枅空旧的 suite tools suite_tools.clear() for suite in suites: # 生成 tool schema tool_def = { "name": suite.get("mcp_tool_name") or slugify(suite["id"]), "description": suite.get("mcp_description") or suite.get("description", ""), "inputSchema": { "type": "object", "properties": {}, "required": [] } } # 从 parameter_schema 蜬换参数定义 for param in suite.get("parameter_schema", []): tool_def["inputSchema"]["properties"][param["name"]] = { "type": param.get("json_type", "string"), "description": param.get("description", "") } if param.get("required"): tool_def["inputSchema"]["required"].append(param["name"]) suite_tools[suite["id"]] = tool_def ``` ### 7.4 AI Analytics 面板 **数据源** `agent_action_log` 衚 **面板内容可以甚简单 K/V 展瀺或选型 Grafana** | 指标 | SQL | |------|-----| | 今日掻跃 Agent 数 | `SELECT COUNT(DISTINCT api_key_id) FROM agent_action_log WHERE created_at > today()` | | 操䜜 Top 5 | `SELECT action, COUNT(*) FROM agent_action_log GROUP BY action ORDER BY 2 DESC LIMIT 5` | | 成功/倱莥率 | `SELECT status, COUNT(*) FROM agent_action_log GROUP BY status` | | 最掻跃套件 Top 5 | `SELECT target_id, COUNT(*) FROM agent_action_log WHERE target_type='suite' GROUP BY target_id` | | 操䜜趋势最近 7 倩 | `SELECT DATE(created_at), COUNT(*) FROM agent_action_log WHERE created_at > 7days GROUP BY 1` | **前端集成** suite-market 前端 Settings → AI Analytics 页 --- ## 八、Phase 4 展望语义暡型䞎 Agent 自劚化 > 这郚分是远期方向写圚这里䜜䞺技术傚倇䞍纳入近期迭代。 ### 8.1 语义暡型适配 基于 Apache Ossie 扩展空闎语义 ```yaml version: "0.1.1" semantic_model: - name: "土地利甚分析套件" description: "基于遥感圱像的土地利甚分类䞎分析" datasets: - name: "land_use_parcels" fields: - name: "geom" description: "地块蟹界Polygon, EPSG:4326" custom_extensions: - vendor_name: AgentGIS data: '{"spatial_data": {"type": "polygon", "srid": 4326}}' - name: "land_type" description: "土地利甚类型猖码" - name: "area_sqkm" description: "面积平方公里" metrics: - name: "各类型占比" expression: "COUNT(*) * 1.0 / SUM(COUNT(*)) OVER()" ``` ### 8.2 Agent 自决策流皋 ``` 甚户蟓入 "垮我分析北京五环内的商䞚甚地分垃" │ ├── (Phase 4) Agent 读取语义暡型 → 匹配到 land_use_parcels ├── (Phase 4) Agent 自劚选择"囎栏 + 分类统计"套件组合 ├── (Phase 4) 自劚填充参数center=北京垂䞭心, radius=五环半埄 │ ├── (Phase 3) MCP Server → run_suite("geofence-analysis", inputs={...}) │ └── (Phase 2) 执行 → 返回结果 → Agent 解读蟓出 ``` --- ## 九、附圕 ### A. 工䜜量䌰算汇总 | Phase | 工䜜项 | 类型 | 䌰计人倩 | 䌘先 | |-------|--------|------|---------|------| | P1 | Skill 目圕结构搭建 | 文档 | 0.5 | 🔎 | | P1 | Utility Skill × 3 | 文档 | 1 | 🔎 | | P1 | Platform Skill × 2 | 文档 | 1 | 🔎 | | P1 | Use-case Skill × 1 | 文档 | 1 | 🔎 | | P1 | CLI 扩展auth/suite/search/stats | 猖码 | 3 | 🔎 | | P1 | CLI JSON 蟓出栌匏化 | 猖码 | 1 | 🔎 | | P1 | 审计衚 + middleware | 猖码 | 2 | 🟡 | | **P1 小计** | | | **9.5** | | | P2 | MCP Server 容噚搭建 + 郚眲 | 运绎 | 1 | 🔎 | | P2 | 5 䞪栞心 tool 实现 | 猖码 | 4 | 🔎 | | P2 | API Key 讀证䞭闎件 | 猖码 | 1 | 🔎 | | P2 | 测试对接 + 调试 | 测试 | 2 | 🔎 | | P2 | MCP 䜿甚文档 | 文档 | 1 | 🟡 | | **P2 小计** | | | **9** | | | P3 | suite-market 暡型变曎 | 猖码 | 1 | 🔎 | | P3 | 发垃流皋修改 | 猖码 | 2 | 🔎 | | P3 | MCP 劚态泚册 | 猖码 | 2 | 🔎 | | P3 | 匂步执行增区 | 猖码 | 2 | 🟡 | | P3 | Analytics 面板前端 | 猖码 | 3 | 🟡 | | P3 | Use-case Skill × 3 | 文档 | 2 | 🟡 | | **P3 小计** | | | **12** | | **总计纊 30 人倩**分 3 䞪阶段执行 ### B. Issue 创建暡板 Boss 批准后按以䞋暡板匀 Issue ```markdown ## 标题 [Agent集成] Phase X: <工䜜项名称> ## 背景 䞺什么做、参考了 CARTO for Agents 的什么讟计 ## 需求描述 具䜓做什么验收条件 ## 技术参考 - 架构文档: research/carto-for-agents-architecture-notes.md - 盞关 API: 劂有 - 需芁修改的仓库: suite-market / gis-actions / agent-profiles ## 验收条件 - [ ] 条件 1 - [ ] 条件 2 ## 指掟 @Admin ``` ### C. 决策记圕 | 决策 | 选择 | 理由 | |------|------|------| | MCP 协议版本 | 2025-06-18最新皳定版 | 客户端支持最广 | | MCP Server 语蚀 | Python (FastAPI) | 䞎现有技术栈䞀臎mcp-python-sdk 成熟 | | MCP 䌠蟓方匏 | SSEServer-Sent Events | 兌容性最奜NPM 支持 WebSocket | | Agent Skill 栌匏 | Markdown + JSON catalog | 人类可读Agent 可解析无需新工具 | | CLI JSON 蟓出 | å…šå±€ --format 参数 | 䞍圱响现有 text 蟓出兌容性 | | 审计存傚 | PostgreSQLsuite_market_db | 䞎现有数据库䞀臎避免匕入新存傚 | | 容噚眑络 | 加入现有 mercator-net | 统䞀眑络管理 | --- *文档版本: v1.0* *䞋次评审: Phase 1 完成后*