122 lines
2.7 KiB
Markdown
122 lines
2.7 KiB
Markdown
# MEMORY.md — 套件开发者长期记忆
|
||
|
||
## 平台入口
|
||
|
||
- **市场:** https://suites.mercator.cn
|
||
- **API Key 获取:** https://auth.mercator.cn
|
||
- **API 文档:** https://suites.mercator.cn/docs
|
||
|
||
## 知识库(knowledge/)
|
||
|
||
| 文件 | 内容 |
|
||
|------|------|
|
||
| `data-execution-model.md` | 数据执行模型(本地执行设计) |
|
||
|
||
## Workflow.yaml 核心规则
|
||
|
||
### 完整结构
|
||
|
||
```yaml
|
||
name: 套件名称
|
||
description: 功能描述
|
||
version: 1.0.0
|
||
author: 作者
|
||
tags: [标签1]
|
||
category: 业务分类
|
||
|
||
params:
|
||
input_path:
|
||
type: string
|
||
required: true
|
||
desc: 输入文件路径
|
||
|
||
base_image: gis-base:latest
|
||
|
||
steps:
|
||
- id: step1
|
||
name: 步骤1
|
||
type: python
|
||
script_id: run
|
||
params:
|
||
input: $params.input_path
|
||
```
|
||
|
||
### 引用语法
|
||
|
||
| 语法 | 说明 | 示例 |
|
||
|------|------|------|
|
||
| `$params.xxx` | 引用套件输入参数 | `$params.input_path` |
|
||
| `$steps.step_id.output_name` | 引用前一步骤输出 | `$steps.step1.result_path` |
|
||
|
||
### 步骤依赖
|
||
|
||
```yaml
|
||
steps:
|
||
- id: step1
|
||
type: python
|
||
script_id: analyze
|
||
- id: step2
|
||
type: python
|
||
script_id: report
|
||
depends_on: [step1] # step2 等 step1 完成后才执行
|
||
```
|
||
|
||
### 常见错误
|
||
|
||
| ❌ 错误 | ✅ 正确 |
|
||
|---------|--------|
|
||
| `script: run.py` | `script_id: run` |
|
||
| `params_mapping: {...}` | `params: {...}` |
|
||
| `$inputs.xxx` | `$params.xxx` |
|
||
|
||
### 跨步骤文件共享
|
||
|
||
所有步骤共享 `/tmp/output` 目录。Step 1 写入的文件,Step 2 可以直接读取。
|
||
|
||
## 核心原则:先查市场,再动手写
|
||
|
||
开发新套件前,先搜索市场是否已有能复用的套件:
|
||
|
||
```bash
|
||
curl -s "https://suites.mercator.cn/api/v1/suites/search?q=缓冲区"
|
||
curl -s https://suites.mercator.cn/api/v1/suites | python3 -m json.tool
|
||
```
|
||
|
||
找到现成的套件 → 直接使用,不写新代码。
|
||
找不到 → 写新脚本 → 发布套件 → 方便后续者复用。
|
||
|
||
## 发布流程
|
||
|
||
### 前置条件
|
||
|
||
1. **API Key**(从 https://auth.mercator.cn 获取)
|
||
2. **Gitea Token**(从 https://git.mercator.cn 用户设置中生成,需 `write:packages` 权限)
|
||
|
||
### 文件上传发布
|
||
|
||
```bash
|
||
# 打包套件(不含 git 历史)
|
||
tar czf my-suite.tar.gz --exclude='.git' --exclude='__pycache__' my-suite/
|
||
|
||
# 发布
|
||
curl -X POST https://suites.mercator.cn/publish/upload \
|
||
-H "Authorization: Bearer $API_KEY" \
|
||
-F "file=@my-suite.tar.gz" \
|
||
-F "gitea_token=YOUR_GITEA_TOKEN"
|
||
```
|
||
|
||
### Git 仓库发布
|
||
|
||
```bash
|
||
curl -X POST https://suites.mercator.cn/publish \
|
||
-H "Authorization: Bearer $API_KEY" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"repo_url": "https://github.com/user/my-suite",
|
||
"suite_path": "suites/default",
|
||
"gitea_token": "YOUR_GITEA_TOKEN"
|
||
}'
|
||
```
|
||
|
||
合规检测和参数校验由发布 API 自动完成。
|