Make product-data skill portable
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# Canonical Record v1
|
||||
|
||||
canonical record 是产品数据生成链路的中间元数据格式。它不是最终训练、评测或展示格式。
|
||||
|
||||
## 示例
|
||||
|
||||
```json
|
||||
{
|
||||
"record_id": "gen_aabbccdd_000001",
|
||||
"source": {
|
||||
"type": "generated",
|
||||
"request_id": "aabbccdd",
|
||||
"timestamp": 1755567930500
|
||||
},
|
||||
"turn": {
|
||||
"query": "本轮 query",
|
||||
"timestamp": 1755567930500
|
||||
},
|
||||
"prev_session": [
|
||||
{
|
||||
"query": "前一轮 query",
|
||||
"tts": "前一轮 tts",
|
||||
"timestamp": 1755567870500
|
||||
}
|
||||
],
|
||||
"context": {},
|
||||
"label": {
|
||||
"dataset_label": "数据集或专题名称",
|
||||
"target": "Agent(tag=\"xxx\")",
|
||||
"target_type": "agent"
|
||||
},
|
||||
"meta": {
|
||||
"case_name": "case名称",
|
||||
"notes": ""
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 校验重点
|
||||
|
||||
- `turn.query` 必须有值。
|
||||
- 当前轮 `turn` 不包含 `tts`。
|
||||
- `prev_session` 最多 10 轮,且按时间从早到晚。
|
||||
- 相邻轮时间间隔超过 5 分钟时给 warning。
|
||||
- `label.target` 必须有值。
|
||||
- `target_type` 只能是 `agent`、`function` 或 `unknown`。
|
||||
@@ -0,0 +1,34 @@
|
||||
# Dataset Draft Text v1
|
||||
|
||||
模型生成数据样本时,先写便于人工 review 的 draft text,不直接写 canonical JSON。
|
||||
|
||||
## 格式
|
||||
|
||||
```text
|
||||
# dataset_label: 数据集或专题名称
|
||||
|
||||
### case: case名称
|
||||
用户: 本轮 query
|
||||
target: Agent(tag="xxx")
|
||||
notes: 可选,说明覆盖的问题或边界
|
||||
|
||||
### case: 多轮 case 名称
|
||||
用户: 前一轮 query
|
||||
小爱: 前一轮 tts
|
||||
用户: 本轮 query
|
||||
target: Agent(tag="xxx")
|
||||
notes: 可选,说明覆盖的问题或边界
|
||||
```
|
||||
|
||||
## 规则
|
||||
|
||||
- 每条数据用一个 `### case:` 开始。
|
||||
- `用户:` 表示用户 query。
|
||||
- `小爱:` 表示小爱回复 tts。
|
||||
- 最后一个 `用户:` 是本轮 query。
|
||||
- `target:` 是本轮 query 对应的监督标签,必须存在。
|
||||
- 单轮数据只需要写一行 `用户:`,然后写 `target:`。
|
||||
- 多轮数据需要按照时间顺序写多组 `用户:` / `小爱:`。
|
||||
- 多轮数据的最后一轮只写 `用户:` 和 `target:`,不要写最后一轮 `小爱:`。
|
||||
- 如果 `target` 无法确定,不要编造,必须向用户确认。
|
||||
- 不要手写 `record_id`、`request_id`、`timestamp`、`context`。
|
||||
@@ -0,0 +1,65 @@
|
||||
# Portable Skill Contract
|
||||
|
||||
本约定用于让 skill 能在不同 Agent 平台之间迁移。
|
||||
|
||||
## 核心原则
|
||||
|
||||
能力归 skill,运行适配归平台。
|
||||
|
||||
- 脚本必须能独立执行。
|
||||
- 平台工具注册只做薄封装,不承载业务逻辑。
|
||||
- 没有工具注册能力的 Agent,可以阅读 `SKILL.md` 并直接执行脚本。
|
||||
- 脚本输入输出都使用 JSON,避免自然语言解析。
|
||||
|
||||
## 脚本输入
|
||||
|
||||
脚本必须支持:
|
||||
|
||||
```bash
|
||||
python scripts/<name>.py --input input.json
|
||||
```
|
||||
|
||||
也必须支持从 stdin 读取 JSON:
|
||||
|
||||
```bash
|
||||
cat input.json | python scripts/<name>.py
|
||||
```
|
||||
|
||||
## 脚本输出
|
||||
|
||||
stdout 只输出一个 JSON 对象。
|
||||
|
||||
成功:
|
||||
|
||||
```json
|
||||
{
|
||||
"ok": true,
|
||||
"result": {}
|
||||
}
|
||||
```
|
||||
|
||||
失败:
|
||||
|
||||
```json
|
||||
{
|
||||
"ok": false,
|
||||
"error": "错误原因"
|
||||
}
|
||||
```
|
||||
|
||||
## 输出路径
|
||||
|
||||
默认写入当前会话 `output/`,或调用方明确传入的输出目录。
|
||||
|
||||
脚本不得写项目源码目录、随机临时目录或用户未确认的外部路径。
|
||||
|
||||
## 平台注册
|
||||
|
||||
`tools.yaml` 是平台适配层:
|
||||
|
||||
- `name` 是平台注册后的工具名。
|
||||
- `script` 指向真正执行能力。
|
||||
- `input_schema` / `output_schema` 供平台生成工具 schema。
|
||||
- `fallback` 告诉无注册环境如何手动调用。
|
||||
|
||||
如果平台不支持 `tools.yaml`,不影响脚本独立使用。
|
||||
Reference in New Issue
Block a user