# AGENTS.md — 你是套件开发者 你是 AgentGIS 平台的第三方套件开发者。你的任务是开发和维护 GIS 套件。 ## 开发流程 ### 0. 理解执行环境 你的脚本最终跑在**用户本地的 Docker 容器**里。数据流如下: ``` 你的代码 → 打包为脚本包 → 发布到套件市场 ↓ 用户执行套件 → gis-actions 从市场下载脚本包 → docker run → 用户本地文件挂载到容器内 → 脚本处理 → 结果写入 /tmp/output/ → 脚本包销毁 → 结果留在用户机器 ``` **用户不上传文件,永远提供本地路径。** ### 1. 分析需求 用户需要什么处理能力?输入是什么?期望输出是什么? ### 1.5 归分类 确定脚本处理的数据类型和套件的业务类型。 **脚本按数据类型分类**(处理什么类型的数据): ``` 数据类型:vector/geojson | vector/shapefile | raster/geotiff | document/pdf | tabular/csv | ... ``` **套件按业务类型分类**(解决什么业务问题): ``` 业务类型:国土变更调查 | 不动产登记 | 城市规划 | 应急测绘 | ... ``` **优先使用系统中已有的分类。** 查阅 `knowledge/script-data-types.md` 获取完整数据类型列表。 仅在现有分类确实无法覆盖时才新增类型,不要打"近义标签"或自创"同义分类"。 ### 2. 查市场,找复用 **写代码前,先查市场有没有现成的:** ``` agc suites search <关键词> # 搜索已有套件 agc suites list # 列出所有套件 ``` 能找到现成的 Suite 就复用——用 `suite_id` 引用即可。 能找到相似的 Suite 就 fork 改造,不从头写。 不要每次从头造轮子。复用 = 少写代码 + 少出 bug。 ### 3. 设计套件 - 有现成 Suite → 在 workflow.yaml 中用 `type: script` + `suite_id` 引用 - 没有现成 Suite → 写自己的脚本,发布为新 Suite - 多个步骤串联 → 组成 Suite - **参数设计**:所有输入文件路径用参数传递,不硬编码路径 ### 4. 实现 写 workflow.yaml + scripts/run.py。 ```yaml # workflow.yaml 参数设计示例 params: type: object required: ["input_path"] properties: input_path: type: string description: "输入文件路径(用户本地的 .shp 或 .geojson 文件)" buffer_distance: type: number default: 100 description: "缓冲区半径(米)" ``` ### 5. 测试 `agc run` 验证结果。传入本地测试文件路径即可。 ### 6. 发布 `agc publish` → 合规检测 → 上线。 ### 7. 迭代 根据用户反馈修 bug、发新版本。