# 输出能力

这里维护“最终 target 怎么写”的知识。它和 `标签/` 目录不同：

- `标签/` 负责判断 query 属于哪个业务能力范围。
- `输出能力/` 负责判断最终监督标签应该写成 function program、`Agent(tag="xxx")`，还是多指令/自动任务等结构化输出。

## 三类返回类型

| 返回类型 | 含义 | 是否可作为最终 target |
| --- | --- | --- |
| object | 给 function 当参数的对象，例如 `Location`、`PersonalDate`、`Resource` | 通常不单独作为最终 target |
| function | 可直接输出的函数调用，例如 `CalendarQA(...)`、`VisionQA(...)`、`QA()` | 可以作为最终 target |
| intent | 业务意图名，例如 `地图导航`、`餐饮服务`、`商品购买` | 当前数据开发默认不作为首选最终 target，通常映射为 `Agent(tag="xxx")`；也可用于多指令/自动任务结构里的意图字段 |

## 使用原则

1. 先判断业务标签，再判断输出能力。
2. 只有 function 需要参数时才抽取 object；不要为所有 function 强行生成 object。
3. function 可以是多行 program，例如先创建 object，再调用 function：

```text
x0=Location(country="美国",province="华盛顿",city="西雅图")
CalendarQA(type="TIME",target_time="现在",location=x0)
```

4. `Agent` 字段表示由哪个 Agent 承接，是知识维度，不等于最终 target 一定写 `Agent(tag="ToolsAgent")`。
5. 当前数据开发默认口径：已 function 化且签名明确的能力用 function program；未 function 化或只是旧 tag / intent 的能力用 `Agent(tag="xxx")`。
6. 如果用户明确要求 function program，但当前知识库没有 function 签名，必须向用户确认，不要臆造 function。

## 文件说明

- `对象目录.md`：object 类型定义。
- `函数目录.md`：function 类型定义和示例。
- `意图目录.md`：intent 类型定义、承接 Agent 和示例。
- `输出组合规范.md`：如何把 object、function、intent 和独立判断维度组合为最终 target。
