Initial commit
This commit is contained in:
406
skills/toolkit/docs/guides/creating-tools.md
Normal file
406
skills/toolkit/docs/guides/creating-tools.md
Normal file
@@ -0,0 +1,406 @@
|
||||
---
|
||||
name: creating-tools-guide
|
||||
description: 在AI Runtime工具装备系统中创建新工具的完整指南
|
||||
category: guide
|
||||
version: 1.0.0
|
||||
---
|
||||
|
||||
# 如何创造新工具 - 完整指南
|
||||
|
||||
## 创造新工具的流程
|
||||
|
||||
### 步骤1: 识别需求
|
||||
|
||||
在创造新工具之前,先问自己:
|
||||
|
||||
```markdown
|
||||
✅ 这个需求是否真实存在?
|
||||
- 是否已经重复执行某个任务超过3次?
|
||||
- 是否花费了超过1小时的手动操作?
|
||||
|
||||
✅ 是否有现有工具可以解决?
|
||||
- 检查: python3 discover-toolkit.py search "关键词"
|
||||
- 检查: 外部工具是否可用?
|
||||
|
||||
✅ 这个工具是否对其他人也有价值?
|
||||
- 不只是解决一次性问题
|
||||
- 可能是可复用的模式
|
||||
|
||||
✅ 复杂度是否适合工具化?
|
||||
- level-1 (1-5行): 简单命令别名
|
||||
- level-2 (6-20行): 简单脚本
|
||||
- level-3 (21-50行): 中等复杂度
|
||||
- level-4 (50+行): 系统级工具
|
||||
```
|
||||
|
||||
### 步骤2: 选择工具类型
|
||||
|
||||
根据需求选择合适的工具类型:
|
||||
|
||||
#### 选项A: Shell脚本工具 (bash/)
|
||||
|
||||
**适用场景**:
|
||||
- 系统管理任务
|
||||
- 文件操作
|
||||
- 命令编排
|
||||
- 快速原型
|
||||
|
||||
**优点**:
|
||||
- 无需额外依赖
|
||||
- 启动速度快
|
||||
- 与系统紧密集成
|
||||
|
||||
**示例**:
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# bash/monitor/check-disk.sh
|
||||
echo "检查磁盘空间..."
|
||||
df -h | grep -E '^/dev/' | awk '$5 > 80 {print "警告: " $0}'
|
||||
```
|
||||
|
||||
#### 选项B: Python工具 (python/)
|
||||
|
||||
**适用场景**:
|
||||
- 复杂逻辑
|
||||
- 数据处理
|
||||
- 结构化输出
|
||||
- 需要库支持
|
||||
|
||||
**优点**:
|
||||
- 强大的标准库
|
||||
- 跨平台
|
||||
- 易于测试
|
||||
- 类型安全(可选)
|
||||
|
||||
**示例**:
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
# python/analysis/dependency-analyzer.py
|
||||
"""
|
||||
分析项目依赖关系
|
||||
"""
|
||||
import json
|
||||
import sys
|
||||
|
||||
def analyze_dependencies(project_path):
|
||||
"""分析依赖"""
|
||||
# 实现逻辑
|
||||
pass
|
||||
|
||||
if __name__ == '__main__':
|
||||
analyze_dependencies(sys.argv[1])
|
||||
```
|
||||
|
||||
#### 选项C: Node.js工具 (node/)
|
||||
|
||||
**适用场景**:
|
||||
- API测试
|
||||
- Web相关工具
|
||||
- JavaScript生态
|
||||
|
||||
**优点**:
|
||||
- 丰富的npm包
|
||||
- 异步I/O
|
||||
- 适合网络操作
|
||||
|
||||
**示例**:
|
||||
```javascript
|
||||
// node/api/test-api.js
|
||||
const http = require('http');
|
||||
|
||||
function testApi(baseUrl) {
|
||||
http.get(`${baseUrl}/health`, (res) => {
|
||||
console.log('API响应:', res.statusCode);
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
### 步骤3: 创建工具和元数据
|
||||
|
||||
#### 示例:创建一个日志分析工具
|
||||
|
||||
**1. 创建工具脚本**
|
||||
|
||||
```bash
|
||||
# bash/analysis/analyze-logs-v2.sh
|
||||
#!/bin/bash
|
||||
# 分析日志文件,提取错误和警告
|
||||
|
||||
LOG_FILE="$1"
|
||||
echo "=== 日志分析开始 ==="
|
||||
echo "分析文件: $LOG_FILE"
|
||||
|
||||
# 统计ERROR数量
|
||||
echo "ERROR数量:"
|
||||
grep -c "ERROR" "$LOG_FILE" || echo "0"
|
||||
|
||||
# 统计WARN数量
|
||||
echo "WARN数量:"
|
||||
grep -c "WARN" "$LOG_FILE" || echo "0"
|
||||
|
||||
echo "=== 日志分析完成 ==="
|
||||
```
|
||||
|
||||
**2. 创建元数据文件**
|
||||
|
||||
在相同目录创建 `.meta.yml`:
|
||||
|
||||
```yaml
|
||||
# bash/analysis/analyze-logs-v2.meta.yml
|
||||
tool_id: BASH-ANALYZE-LOGS-V2-001
|
||||
tool_name: "日志分析器V2"
|
||||
|
||||
基本信息:
|
||||
语言: bash
|
||||
文件: analyze-logs-v2.sh
|
||||
复杂度: level-2
|
||||
创建日期: 2025-11-14
|
||||
作者: YourName
|
||||
|
||||
用途分类:
|
||||
- DATA # 数据分析
|
||||
- MONITOR # 监控诊断
|
||||
|
||||
功能描述:
|
||||
简介: "分析日志文件,提取错误和警告统计"
|
||||
详细: |
|
||||
支持功能:
|
||||
- 统计ERROR数量
|
||||
- 统计WARN数量
|
||||
- 显示分析摘要
|
||||
|
||||
使用场景:
|
||||
- "分析应用日志,识别错误模式"
|
||||
- "监控日志文件,统计错误频率"
|
||||
- "生成日志分析报告"
|
||||
|
||||
使用方法:
|
||||
命令: "bash analyze-logs-v2.sh <日志文件>"
|
||||
参数:
|
||||
日志文件: "要分析的日志文件路径"
|
||||
示例:
|
||||
- "分析单个日志: bash analyze-logs-v2.sh app.log"
|
||||
|
||||
依赖要求:
|
||||
系统命令:
|
||||
- grep: "用于搜索日志内容"
|
||||
- wc: "用于统计行数"
|
||||
环境变量: 无
|
||||
|
||||
输入输出:
|
||||
输入:
|
||||
- 日志文件(纯文本格式)
|
||||
输出:
|
||||
- stdout: 分析结果
|
||||
- 退出码: 0(成功),非0(错误)
|
||||
|
||||
维护记录:
|
||||
2025-11-14:
|
||||
- 初始创建
|
||||
- 实现ERROR和WARN统计
|
||||
```
|
||||
|
||||
### 步骤4: 测试工具
|
||||
|
||||
```bash
|
||||
# 1. 赋予执行权限
|
||||
chmod +x bash/analysis/analyze-logs-v2.sh
|
||||
|
||||
# 2. 创建测试日志
|
||||
cat > test.log << 'EOF'
|
||||
INFO: Starting application
|
||||
INFO: Processing request #1
|
||||
WARN: Timeout on request #1
|
||||
ERROR: Failed to connect to database
|
||||
INFO: Retrying...
|
||||
ERROR: Database connection failed
|
||||
EOF
|
||||
|
||||
# 3. 运行工具测试
|
||||
bash bash/analysis/analyze-logs-v2.sh test.log
|
||||
|
||||
# 期望输出:
|
||||
# === 日志分析开始 ===
|
||||
# 分析文件: test.log
|
||||
# ERROR数量: 2
|
||||
# WARN数量: 1
|
||||
# === 日志分析完成 ===
|
||||
|
||||
# 4. 删除测试文件
|
||||
rm test.log
|
||||
```
|
||||
|
||||
### 步骤5: 注册和验证
|
||||
|
||||
```bash
|
||||
# 验证工具被检测到
|
||||
python3 discover-toolkit.py list | grep LOGS-V2
|
||||
|
||||
# 查看工具详细信息
|
||||
python3 discover-toolkit.py show BASH-ANALYZE-LOGS-V2-001
|
||||
|
||||
# 搜索相关工具
|
||||
python3 discover-toolkit.py search log
|
||||
|
||||
# 推荐工具(应该推荐我们的新工具)
|
||||
python3 discover-toolkit.py recommend "分析日志"
|
||||
```
|
||||
|
||||
### 步骤6: 文档和分享
|
||||
|
||||
**1. 创建工具文档**
|
||||
|
||||
```markdown
|
||||
# docs/tools/internal/analyze-logs-v2.md
|
||||
---
|
||||
name: analyze-logs-v2
|
||||
description: 分析日志文件,统计错误和警告
|
||||
---
|
||||
|
||||
# 日志分析器V2
|
||||
|
||||
## 用途
|
||||
快速分析日志文件,统计错误和警告数量
|
||||
|
||||
## 使用
|
||||
```bash
|
||||
bash bash/analysis/analyze-logs-v2.sh <日志文件>
|
||||
```
|
||||
|
||||
## 示例
|
||||
```bash
|
||||
bash bash/analysis/analyze-logs-v2.sh app.log
|
||||
```
|
||||
|
||||
## 输出
|
||||
```
|
||||
=== 日志分析开始 ===
|
||||
分析文件: app.log
|
||||
ERROR数量: 5
|
||||
WARN数量: 12
|
||||
=== 日志分析完成 ===
|
||||
```
|
||||
```
|
||||
|
||||
**2. 更新主文档**
|
||||
|
||||
如果这是重要工具,考虑添加到 `@docs/guides/quickstart.md`
|
||||
|
||||
## 工具质量检查清单
|
||||
|
||||
在发布工具之前,请检查:
|
||||
|
||||
### 功能检查
|
||||
- [ ] 工具完成预期任务
|
||||
- [ ] 处理边界情况(空输入、错误输入)
|
||||
- [ ] 错误处理友好
|
||||
- [ ] 输出清晰可读
|
||||
|
||||
### 代码质量
|
||||
- [ ] 代码有注释
|
||||
- [ ] 遵循语言规范
|
||||
- [ ] 变量命名清晰
|
||||
- [ ] 没有重复代码
|
||||
|
||||
### 元数据检查
|
||||
- [ ] 填写完整的.meta.yml
|
||||
- [ ] ID格式正确(LANG-CATEGORY-NAME-001)
|
||||
- [ ] 包含使用示例
|
||||
- [ ] 标记了依赖项
|
||||
|
||||
### 测试验证
|
||||
- [ ] 本地测试通过
|
||||
- [ ] discover-toolkit能检测到
|
||||
- [ ] show命令显示正确
|
||||
- [ ] 搜索能找到
|
||||
|
||||
### 文档检查
|
||||
- [ ] 创建了工具文档
|
||||
- [ ] 更新相关索引
|
||||
- [ ] 添加了使用示例
|
||||
|
||||
## 常见错误
|
||||
|
||||
### 1. 权限错误
|
||||
```bash
|
||||
chmod +x script.sh # 记得添加执行权限
|
||||
```
|
||||
|
||||
### 2. 缺少shebang
|
||||
```bash
|
||||
#!/bin/bash # Bash脚本
|
||||
#!/usr/bin/env python3 # Python脚本
|
||||
#!/usr/bin/env node # Node.js脚本
|
||||
```
|
||||
|
||||
### 3. 路径错误
|
||||
使用相对路径(相对于toolkit根目录):
|
||||
```yaml
|
||||
# 正确
|
||||
文件: python/analysis/my-tool.py
|
||||
|
||||
# 错误(绝对路径)
|
||||
文件: /Users/.../toolkit/python/analysis/my-tool.py
|
||||
```
|
||||
|
||||
### 4. YAML格式错误
|
||||
```bash
|
||||
# 验证YAML语法
|
||||
python3 -c "import yaml; yaml.safe_load(open('meta.yml'))"
|
||||
```
|
||||
|
||||
## 高级:工具模板
|
||||
|
||||
可以使用工具模板快速创建新工具:
|
||||
|
||||
```bash
|
||||
# 复制模板
|
||||
cp templates/tool-template.sh bash/category/my-tool.sh
|
||||
cp templates/template.meta.yml bash/category/my-tool.meta.yml
|
||||
|
||||
# 修改内容
|
||||
nano bash/category/my-tool.sh
|
||||
nano bash/category/my-tool.meta.yml
|
||||
|
||||
# 测试
|
||||
bash bash/category/my-tool.sh
|
||||
python3 discover-toolkit.py show MY-TOOL-001
|
||||
```
|
||||
|
||||
## 获取帮助
|
||||
|
||||
如果遇到困难:
|
||||
|
||||
1. **查看现有工具**: `python3 discover-toolkit.py list`
|
||||
2. **查看示例元文件**: `cat bash/*/*.meta.yml`
|
||||
3. **查看创建指南**: `@docs/guides/creating-tools.md`
|
||||
4. **检查外部工具**: `@docs/guides/external-integration.md`
|
||||
|
||||
## 贡献工具
|
||||
|
||||
如果想贡献工具到AI Runtime:
|
||||
|
||||
1. **Fork仓库**: 创建自己的分支
|
||||
2. **创建工具**: 按照本指南
|
||||
3. **测试验证**: 确保工具正常工作
|
||||
4. **提交PR**: 包含工具说明和使用场景
|
||||
5. **审查合并**: 等待review和merge
|
||||
|
||||
## 工具版本管理
|
||||
|
||||
为工具添加版本信息:
|
||||
|
||||
```yaml
|
||||
# 在.meta.yml中添加
|
||||
版本信息:
|
||||
当前版本: "1.0.0"
|
||||
发布日期: "2025-11-14"
|
||||
更新日志:
|
||||
- "1.0.0: 初始发布"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**最后更新**: 2025-11-14
|
||||
**指南版本**: 1.0.0
|
||||
**维护者**: CodeConscious
|
||||
Reference in New Issue
Block a user