# Skill管理

DevKit AI支持管理Skills资源包，可以列出已下载的Skills、下载更新Skills及清理本地缓存Skills。

#### 命令格式

```
./devkitai skills [-h] [list | update | clean]
```


#### 参数说明


**表1 参数说明**

| 参数 | 参数说明 |
| --- | --- |
| \-h/\-\-help | 获取帮助信息。 |
| list | 列出已下载的Skills。 |
| update | 下载并更新配置的Skills。 |
| clean | 清理本地缓存Skills。 |


#### 使用示例

- 下载更新Skills。

```
./devkitai skills update
```


  返回信息如下：

```
准备更新所有配置的skills...
当前配置的skills存放目录/home/skills不存在，努力创建中。
当前配置的skills存放目录/home/skills创建成功。
准备更新Skill DevkitAI
开始检测skillDevkitAI下载地址的网络连通性，请耐心等待。
网络连接成功，开始下载Skill: DevkitAI
100%[======================================================================]    0.81M   3.9MB/s eta  0m 00s
解压进度 [==================================================] 301/301
DevkitAI skill更新完成
更新完成: 1/1 个 skills 成功
[OK] DevkitAI (1.0.0)
```


  文档向量入库时间依赖词嵌入模型能力性能，模型能力较弱时可能会花费较长时间，请耐心等待几秒到几十分钟。 DevKit AI提供了默认的Skills配置，若有需要可以在工具目录“config/config.yaml”文件中自定义增加需要下载的Skills。

  配置示例如下：

```
remote_skills:
# embedding_model: "bge-m3:latest"  # skill embedding model
load_child_skills: false    # true: 加载所有子 skill；false: 只加载顶层 skill
candidate_k: 20    # 两路统一召回条数（正整数）
weight_vector: 0.7    # 向量检索权重（0-1）
similarity_threshold: 0.45   # 意图召回相似度阈值（0-1），阈值越高，意图识别越精确
skills:
- name: DevkitAI
version: "1.0.0"
url: "https://raw.gitcode.com/openeuler/kunpeng-devkit/archive/refs/heads/master.zip"
checksum: ""      # 可留空，校验会跳过
channel: api      # api: http方式下载/git： git clone方式下载/local：加载本地文件目录
enable: true
force_update: false      # 是否强制下载（忽略版本检测）
local_filename: "DevkitAI.zip"      # 可选：指定下载文件名，不填则从URL自动解析，local方式不需要设置
format: "auto"      # auto/tar.gz/zip/file/directory，如果选择auto且无法辨识具体文件包结构时，默认为directory
downloader:
default_timeout: 60  # 默认超时时间（秒）
retry_times: 2       # 重试次数
http:
ssl_verify: true           # 是否验证SSL证书（生产环境建议true）
chunk_size: 5242880        # 1MB - 分块大小
max_parallel: 3            # 最大并行下载数
min_file_size: 10485760    # 10MB - 大于这个才使用分块并行下载
git:
default_branch: "main"     # 默认分支
clone_depth: 1             # clone 深度
verification:
enable: true              # 是否启用校验 (false 则跳过所有校验，安全风险！)
signature:
enable: false             # 是否启用签名验证 (需要配套 .p7s/.sig 签名文件)
signature_format: "DER"    # DER 或 PEM
verify_chain: true         # 是否验证证书链
root_ca: ""                # 根证书路径
backend:
config:
root_dir: "/home/skills"  # skills根目录，local方式禁止设置url与此目录相同
security:
signature_verify_enable: false  # 是否启用签名验证（默认关闭）
hash_algorithm: "sha256"         # 默认hash算法
zip_bomb_threshold: 1000.0       # 压缩比阈值
max_single_file_size: 104857600  # 100MB - 单文件大小限制
max_total_file_size: 524288000   # 500MB - 总大小限制
max_file_count: 30000            # 文件数量限制
malicious_code_scan_enable: true  # 是否扫描恶意代码
text_file_max_size: 10485760     # 10MB - 文本文件大小限制
max_pax_header_size: 10485760    # 10MB - PAX header 最大字节数
allow_sparse_files: false        # 是否允许稀疏文件（默认拒绝）
max_compression_depth: 3         # 嵌套压缩包解压深度限制
magic_numbers:                   # 文件头魔数配置（十六进制字符串）
"zip": "504b0304"
"tar.gz": "1f8b0800"
"tgz": "1f8b0800"
"gzip": "1f8b0800"
"pdf": "25504446"
"png": "89504e47"
"jpg": "ffd8ffe0"
"jpeg": "ffd8ffe0"
```


**表2 remote_skills全局配置**

| 参数 | 默认值 | 参数说明 |
| --- | --- | --- |
| embedding\_model | \- | 词嵌入模型名称，用于对Skills进行向量化和检索。 |
| load\_child\_skills | True | 是否加载子Skills： true：开启。 false：关闭。 |
| candidate\_k | 20 | 检索候选数量（最小值1）。 |
| weight\_vector | 0.7 | 向量权重（0.0 ~ 1.0）。 |
| similarity\_threshold | 0.45 | 相似度阈值（0.0 ~ 1.0）。 |
| skills | \- | Skills配置列表(具体配置请参见表3)。 |


**表3 单个Skill配置**

| 参数 | 参数选项 | 参数说明 |
| --- | --- | --- |
| name | \- | Skill名称。 |
| version | \- | Skill版本号。默认 "1.0.0"。 |
| url | \- | 下载Skills的URL地址。 说明： 当channel设置为local时（即本地下载），url填写本地Skills目录路径：“/path/to/Skill\-dir”（本地Skills放置目录，请根据实际进行替换）。 |
| checksum | \- | 文件校验和（用于验证下载完整性）。 |
| auth\_token | \- | 认证Token（用于私有仓库访问）。 |
| file\_checksums | \- | 多个文件的校验和映射。 |
| channel | api/git/local | 下载渠道：api（API下载）、git（Git克隆）、local（本地）。 |
| enable | true/false | 是否启用该Skill： true：开启。 false：关闭。 |
| force\_update | true/false | 是否启用强制更新。 true：开启。 false：关闭。 |
| local\_filename | \- | 指定下载本地文件名，不填则从URL自动解析，local方式不需要设置。 |
| format | "auto"/"tar.gz"/"zip"/"file"/"directory" | 下载文件格式，默认为"auto"。 |


**表4 downloader配置**

| 参数 | 参数 | 参数选项 | 参数说明 |
| --- | --- | --- | --- |
| default\_timeout | default\_timeout | \- | 默认超时时间，默认60秒。 |
| retry\_times | retry\_times | \- | 重试次数，默认失败重试2次。 |
| http | ssl\_verify | true/false | 是否验证SSL证书（生产环境建议true）： true：开启。 false：关闭。 |
| http | chunk\_size | \- | 分块大小，默认为5MB。 |
| http | max\_parallel | \- | 最大并行下载数，默认为3。 |
| http | min\_file\_size | \- | 文件启用分块并行下载阈值，文件大于此配置才使用分块并行下载。 |
| git | default\_branch | \- | 默认拉取的分支名称。默认为"main"。 |
| git | clone\_depth | \- | Git克隆深度，默认为1。 |
| verification | enable | true/false | 是否启用校验(false跳过所有校验，可能存在安全风险，请谨慎关闭)： true：开启。 false：关闭。 |
| signature | enable | true/false | 是否启用签名验证(需要配套.p7s/.sig签名文件使用)： true：开启。 false：关闭。 |
| signature | signature\_format | "DER"/"PEM" | 签名格式，可选“DER”或“PEM”。 |
| signature | verify\_chain | true/false | 是否验证证书链： true：开启。 false：关闭。 |
| signature | root\_ca | \- | 根证书路径。 |


**表5 backend配置**

| 参数 | 参数 | 参数说明 |
| --- | --- | --- |
| config | root\_dir | Skills根目录，默认为“/home/skills”。 说明： 如果表3中参数中使用local方式进行Skills下载，那么“url”(下载Skills的URL地址)配置目录禁止与此目录配置相同。 |


**表6 security配置**

| 参数 | 参数选项 | 参数说明 |
| --- | --- | --- |
| signature\_verify\_enable | true/false | 是否启用签名验证（默认关闭）： true：开启。 false：关闭。 |
| hash\_algorithm | \- | hash算法配置，默认为"sha256"。 |
| zip\_bomb\_threshold | \- | 压缩比阈值，解压后体积与压缩后体积的比值上限，默认为1000.0。 |
| max\_single\_file\_size | \- | 单文件大小限制，默认100MB。 |
| max\_total\_file\_size | \- | 总文件大小限制，默认500MB。 |
| max\_file\_count | \- | 文件数量限制，默认30000。 |
| malicious\_code\_scan\_enable | true/false | 是否扫描恶意代码（默认开启）： true：开启。 false：关闭。 |
| text\_file\_max\_size | \- | 文本文件大小限制，默认10MB。 |
| max\_pax\_header\_size | \- | PAX header最大字节数，默认10MB。 |
| allow\_sparse\_files | true/false | 是否允许稀疏文件（默认拒绝）： true：允许。 false：拒绝。 |
| max\_compression\_depth | \- | 嵌套压缩包解压深度限制，默认值为3。 |
| magic\_numbers | "zip"/"tar.gz"/"tgz"/"gzip"/"pdf"/"png"/"jpg"/"jpeg" | 文件头魔数（magic number）配置。通过读取文件头部的前几个字节（十六进制序列），验证文件实际类型是否与后缀名一致，防止通过修改后缀名绕过安全检测。 |


- 列出已下载的Skills。

```
./devkitai skills list
```


  返回信息如下：

```
当前skills（共 16 个）：
名称                             路径
--------------------------------------------------------------------------------
check-64k-page-size            /home/skills/DevkitAI/check-64k-page-size
cpp-kunpeng-migration          /home/skills/DevkitAI/cpp-kunpeng-migration
crc-opt                        /home/skills/DevkitAI/crc-opt
devkit-kspect-analysis         /home/skills/DevkitAI/devkit-kspect-analysis
devkit-numafast-analysis       /home/skills/DevkitAI/devkit-numafast-analysis
devkit-topdown-analysis        /home/skills/DevkitAI/devkit-topdown-analysis
devkit-turbostat-analysis      /home/skills/DevkitAI/devkit-turbostat-analysis
docker-image-migration         /home/skills/DevkitAI/docker-image-migration
false-sharing-analysis         /home/skills/DevkitAI/false-sharing-analysis
java-arm-migration             /home/skills/DevkitAI/java-arm-migration
kunpeng-java-tuning            /home/skills/DevkitAI/kunpeng-java-tuning
migration-source-collector     /home/skills/DevkitAI/migration-source-collector
migration-target-execution     /home/skills/DevkitAI/migration-target-execution
opentunex-scenario-bottleneck  /home/skills/DevkitAI/opentunex-scenario-bottleneck
sql-migration                  /home/skills/DevkitAI/sql-migration
tuning-recommendation-generator /home/skills/DevkitAI/tuning-recommendation-generator
```


  DevKit AI支持本地模式直接加载Skills：直接将本地Skill文档放到“/home/skills”目录下，该方式无需执行./devkitai skills update，且支持扫描二级目录Skill加载多个Skills，新开对话即可直接加载。

- 清理本地缓存Skills。

```
./devkitai skills clean
```


  返回信息如下：

```
准备skill清理前环境检查...
即将删除/home/skills目录下skill相关的所有文件
请输入Y或N确认清理? (Y/y:清理， N/n：不清理): y
清理完成
```
