# 学习新工具标准流程

## 概述

当用户请求执行一个 skills 中未收录的工具或分析流程时，agent 应按照本流程引导用户提供信息，学习并记录为新的 skill。

## 流程

### 第一步：确认未知工具

在 skills 目录中搜索匹配的工具 skill。如果没有找到：
- 告知用户："该工具/分析流程尚未收录，需要学习后才能执行。"
- 请用户提供以下信息（至少一项）

### 第二步：收集信息

请用户提供以下材料：
1. **脚本路径** — 工具脚本的绝对路径
2. **软件名称** — 如果是已安装的软件
3. **示例命令** — 一条完整的运行示例
4. **文档/README** — 工具的使用文档

### 第三步：分析与理解

Agent 阅读用户提供的材料：
- 读取脚本内容（如提供路径）
- 分析命令参数和输入输出格式
- 理解工具的功能和适用场景

### 第四步：确认投递参数

向用户确认以下关键信息：

#### 投递方式
- **annoeva**：整个分析流水线，包含多个步骤
- **annotask**：单步骤工具，可批量并行

#### 如果是 annotask 模式
- **qsubsge** 还是 **local**？
- 如果 qsubsge：
  - CPU 核数（每个子任务）？
  - 内存上限 h_vmem（每个子任务，单位 GB）？
  - 投递队列 -q（如有特定要求）？
- 如果 local：
  - 并行线程数 -t？

#### 如果是 annoeva 模式
- 项目类型 -t？
- 需要哪些元数据？（可能需要数据库查询）

### 第五步：生成 skill 文件

根据收集到的信息，生成新的 skill 文件：

```
actflare/skills/tool-<name>.md
```

文件模板：

```markdown
# <工具名称>（<tool_name>）

## 工具信息

- **工具名**: <tool_name>
- **投递模式**: annoeva / annotask
- **工具路径**: <path>（annotask 模式）
- **项目类型**: <type>（annoeva 模式）

## 功能说明

<工具功能描述>

## 资源配置（annotask 模式）

| 参数 | 值 | 说明 |
|------|-----|------|
| mode | qsubsge/local | 投递模式 |
| cpu | N | 每个子任务 CPU |
| h_vmem | N | 每个子任务内存(GB) |
| line | N | 每任务行数 |

## 命令模板

<完整命令示例>

## 输入文件格式

<每行的格式说明>
```

### 第六步：用户确认

将生成的 skill 内容展示给用户确认：
- 投递参数是否正确？
- 资源配置是否合理？
- 是否需要补充信息？

用户确认后，保存 skill 文件到 `~/.config/actflare/skills/` 目录。

### 第七步：执行当前任务

学习完成后，立即使用新 skill 执行用户最初的请求。

## 注意事项

- 保守估计资源配置，不确定时向用户确认
- skill 文件保存在全局 skills 目录，所有项目可复用
- agent 可在后续实践中通过自改进指令优化 skill 内容
