407 lines
7.9 KiB
Markdown
407 lines
7.9 KiB
Markdown
---
|
||
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
|