AI Runtime 工具装备系统 概述 工具装备是AI Runtime的 外置能力扩展系统 ,遵循" 整合 创造 "的核心理念,通过智能整合成熟的CLI工具和自主创建的专业工具,实现认知能力的有效扩展。 核心能力 双重工具体系 - 内部工具 : AI Runtime自主创建的专业工具(8个) - 外部工具 : 深度整合的成熟CLI工具(10+个) 智能发现系统 - 自动工具检测和注册 - 元数据驱动的管理机制 - 命令行和编程接口双重支持 快速开始 查看所有工具 使用工具 工具分类 内部工具(自主创建) - Python工具 : 依赖分析器、代码统计器、图形生成器、报告生成器 - Bash工具 : 服务健康检查器、日志分析器、磁盘健康检查器 - Node.js工具 : API测试工具 外部工具(深度整合) - 基础必备 : fzf、eza、bat、ripgrep、zoxide、jq - 搜索增强 : fd、ripgrep - 数据处理 : jq - 界面优化 : fzf、eza、bat、starship 渐进式披露文档架构 基于 anthropics/skills 设计,按需加载详细信息: 核心理念 - 工具哲学 - 设计理念、分类体系和发展策略 使用指南 - 快速开始 - 10分钟上手工具装备系统 详细参考 - 内部工具详解 - 8个自主创建工具的详细说明 - 外部工具集成…

\"\n - \"fd test\"\n\n检测状态:\n 已安装: true\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":504,"content_sha256":"2eb5f968873bc3bdb4f1444b0b1c91d5daa768448e59b02051047af059ddd95f"},{"filename":"external/file-viewer/bat.meta.yml","content":"tool_id: EXT-BAT-001\ntool_name: \"bat (cat with syntax)\"\n\n基本信息:\n 类型: external\n 命令: bat\n 类别: file-viewer\n\n功能描述:\n 简介: \"带语法高亮的cat替代品\"\n 详细: \"支持语法高亮和Git集成的文件查看工具。使用 'bat --help' 获取详细信息。\"\n\n使用场景:\n - 查看代码文件\n - 分页查看\n - Git修改查看\n\n快速开始:\n 安装: \"brew install bat\"\n 帮助命令: \"bat --help\"\n 常用示例:\n - \"bat file.py\"\n - \"bat -p file.txt\" # 纯文本模式(无分页)\n\n检测状态:\n 已安装: true\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":567,"content_sha256":"c883525fd61786482110cf8675395bf264f5422ec489bca215151b47def75322"},{"filename":"external/git-tools/delta.meta.yml","content":"tool_id: EXT-DELTA-001\ntool_name: \"delta (Git diff美化)\"\n\n基本信息:\n 类型: external\n 命令: delta\n 类别: git-tools\n\n功能描述:\n 简介: \"Git diff的美化工具\"\n 详细: \"为Git diff提供语法高亮和行号显示。使用 'delta --help' 获取详细信息。\"\n\n使用场景:\n - 查看Git diff\n - 语法高亮\n - 行号显示\n\n快速开始:\n 安装: \"brew install git-delta\"\n 帮助命令: \"delta --help\"\n 常用示例:\n - 配置到git: \"git config --global pager.diff delta\"\n - \"git diff\"\n\n检测状态:\n 已安装: true\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":557,"content_sha256":"014393f41ca99efaa09d0c0cda38bdcb37fedf7a9f2ea9a4953d10e75d2fe348"},{"filename":"external/navigation/zoxide.meta.yml","content":"tool_id: EXT-ZOXIDE-001\ntool_name: \"zoxide (Smart cd)\"\n\n基本信息:\n 类型: external\n 命令: zoxide\n 类别: navigation\n\n功能描述:\n 简介: \"智能目录跳转工具,学习访问习惯\"\n 详细: \"AI驱动的cd命令替代品。使用 'zoxide --help' 获取详细信息。\"\n\n使用场景:\n - 快速跳转目录\n - 访问频率学习\n - 路径自动补全\n\n快速开始:\n 安装: \"curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh\"\n 帮助命令: \"zoxide --help\"\n 常用示例:\n - \"z myproject\"\n - \"z foo bar\" # 匹配包含foo和bar的路径\n\n检测状态:\n 已安装: true\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":637,"content_sha256":"f22ab43620f4231fc5cdb916b5f580506f0e3a053e14457359b631fbc573ed48"},{"filename":"external/README.md","content":"# 外部工具装备目录 (External Toolkit)\n\n## 目录结构\n\n```\nexternal/\n├── search/ # 搜索工具\n│ └── fzf.meta.yml # 模糊查找器\n├── navigation/ # 导航工具\n│ └── zoxide.meta.yml # 智能目录跳转\n├── file-search/ # 文件搜索工具\n│ └── fd.meta.yml # find替代品\n├── code-search/ # 代码搜索工具\n│ └── ripgrep.meta.yml # 极速代码搜索\n├── file-listing/ # 文件列表工具\n│ └── eza.meta.yml # 现代化ls\n├── file-viewer/ # 文件查看工具\n│ └── bat.meta.yml # 语法高亮cat\n├── data-processing/ # 数据处理工具\n│ └── jq.meta.yml # JSON处理器\n├── api-testing/ # API测试工具\n│ └── xh.meta.yml # HTTP客户端\n├── git-tools/ # Git工具\n│ └── delta.meta.yml # diff美化\n└── shell-enhancement/ # Shell增强工具\n └── starship.meta.yml # Shell提示符\n```\n\n## 设计理念\n\n### 简化元数据\n\n外部工具(如fzf, ripgrep, bat等)是广为人知的CLI工具,它们:\n\n1. **已预训练** - 大语言模型通常已了解这些常用工具,无需详细文档\n2. **动态帮助** - 可使用 `command --help` 或 `man command` 获取最新信息\n3. **避免重复** - 不重复官方文档,保持元数据简洁\n\n### 元数据结构\n\n每个外部工具仅需一个 `.meta.yml` 文件,包含:\n\n```yaml\ntool_id: EXT-FZF-001\ntool_name: \"fzf (Fuzzy Finder)\"\n\n基本信息:\n 类型: external\n 命令: fzf\n 类别: search\n\n功能描述:\n 简介: \"命令行模糊查找器,用于交互式选择\"\n 详细: \"常用工具,支持交互式模糊搜索。使用 'fzf --help' 获取详细信息。\"\n\n使用场景:\n - 文件名模糊查找\n - 历史命令搜索\n\n快速开始:\n 安装: \"brew install fzf\"\n 帮助命令: \"fzf --help\"\n 常用示例:\n - \"find . -type f | fzf\"\n\n检测状态:\n 已安装: true\n```\n\n## 与内部工具的区别\n\n| 特性 | 内部工具 (Internal) | 外部工具 (External) |\n|------|-------------------|-------------------|\n| 位置 | `bash/`, `python/`, `node/` | `external/` |\n| 实现 | AI Runtime创建的工具脚本 | 系统级CLI工具 |\n| 元数据 | 详细(包含完整描述、参数、示例) | 简化(模型已知工具) |\n| 检测 | 检查工具文件exists | 使用 `shutil.which()` |\n| 示例 | `dependency-analyzer.py` | `fzf`, `ripgrep`, `bat` |\n\n## 检测机制\n\n`ExternalToolDetector` 扫描 `external/` 目录:\n\n1. **递归扫描** - 查找所有 `.meta.yml` 文件\n2. **类型过滤** - 只处理 `基本信息.类型 == \"external\"`\n3. **安装检测** - 使用 `shutil.which()` 检查命令是否可用\n4. **运行时检测** - 每次运行都重新检测,获取最新状态\n\n## 使用方式\n\n```bash\ncd .ai-runtime/toolkit\n\n# 列出所有外部工具\npython3 discover-toolkit.py list --external\n\n# 显示外部工具详情\npython3 discover-toolkit.py show fzf\n\n# 搜索包含'search'的外部工具\npython3 discover-toolkit.py search search --external\n\n# 查看所有工具(内部 + 外部)\npython3 discover-toolkit.py list\n```\n\n## 新增外部工具\n\n添加新外部工具只需:\n\n1. 在 `external/\u003ccategory>/` 创建 `tool-name.meta.yml`\n2. 填写基本信息(ID、名称、命令、类别)\n3. 提供使用场景和快速开始\n4. (可选)添加检测状态占位符\n\n无需修改代码,自动检测加载。\n\n## 已安装的外部工具\n\n当前检测到的外部CLI工具(9个):\n\n- ✅ **fzf** - 模糊查找\n- ✅ **eza** - 现代化ls\n- ✅ **zoxide** - 智能cd\n- ✅ **fd** - 文件搜索\n- ✅ **ripgrep (rg)** - 代码搜索\n- ✅ **bat** - 语法高亮查看器\n- ✅ **jq** - JSON处理器\n- ✅ **xh** - HTTP客户端\n- ✅ **delta** - Git diff美化\n- ❌ **starship** - Shell提示符(未安装)\n\n## 优势\n\n✅ **统一结构** - 内部/外部工具都使用 `.meta.yml` 文件\n✅ **简化维护** - 外部工具不重复文档\n✅ **动态检测** - 实时检测安装状态\n✅ **分类清晰** - 按功能分类,便于查找\n✅ **易于扩展** - 添加新工具只需创建元文件\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":4233,"content_sha256":"1f76df936700ee756087b7f1c91215059ab9464d0095597257aac6b33faf7658"},{"filename":"external/search/fzf.meta.yml","content":"tool_id: EXT-FZF-001\ntool_name: \"fzf (Fuzzy Finder)\"\n\n基本信息:\n 类型: external\n 命令: fzf\n 类别: search\n\n功能描述:\n 简介: \"命令行模糊查找器,用于交互式选择\"\n 详细: \"常用工具,支持交互式模糊搜索。使用 'fzf --help' 获取详细信息。\"\n\n使用场景:\n - 文件名模糊查找\n - 历史命令搜索\n - Git分支切换\n - 交互式选择\n\n快速开始:\n 安装: \"brew install fzf (macOS) / apt-get install fzf (Ubuntu)\"\n 帮助命令: \"fzf --help\"\n 常用示例:\n - \"find . -type f | fzf\"\n - \"history | fzf\"\n - \"git branch | fzf\"\n\n检测状态:\n 已安装: true # 根据discover-toolkit.py检测结果\n 版本: \"0.45\"\n 路径: \"/opt/homebrew/bin/fzf\"\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":726,"content_sha256":"5f0b0b282e2418c33e827a00d523b64d5b91366beb6d5e098c12de5e1debae56"},{"filename":"external/shell-enhancement/starship.meta.yml","content":"tool_id: EXT-STEAMSHIP-001\ntool_name: \"starship (Shell提示符)\"\n\n基本信息:\n 类型: external\n 命令: starship\n 类别: shell-enhancement\n\n功能描述:\n 简介: \"快速、可定制、智能的Shell提示符\"\n 详细: \"跨Shell的提示符增强工具。使用 'starship --help' 获取详细信息。\"\n\n使用场景:\n - 显示Git状态\n - 显示Python版本\n - 显示目录\n - Shell美化\n\n快速开始:\n 安装: \"curl -sS https://starship.rs/install.sh | sh\"\n 帮助命令: \"starship --help\"\n 常用示例:\n - \"starship prompt\"\n - 配置到Shell配置文件\n\n检测状态:\n 已安装: true\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":616,"content_sha256":"953de8d0f3f6f5ae1fb63d407c6a44cbbeb24f368360890212a983e68a1fac4b"},{"filename":"python/analysis/code-stats.meta.yml","content":"tool_id: PY-CODE-STATS-004\ntool_name: \"代码统计器\"\n\n基本信息:\n 语言: python\n 文件: code-stats.py\n 复杂度: level-3\n 创建日期: 2025-11-14\n 作者: CodeConscious\n\n用途分类:\n - CODE # 代码分析\n - DATA # 数据统计\n\n功能描述:\n 简介: \"分析代码库统计信息,包括行数、函数、类、注释率和代码健康度评分\"\n 详细: |\n 支持功能:\n - 多语言支持(Python, JavaScript, TypeScript, Java, C/C++, Shell)\n - 统计行数、代码行、注释行、空行\n - 统计函数、类、导入语句数量\n - 按文件类型分组统计\n - 代码复杂度评分(0-100)\n - 代码健康度评分(基于注释率、文件大小、函数密度)\n - 生成详细分析报告和建议\n - 支持JSON格式输出\n - 支持报告保存到文件\n\n使用场景:\n - \"评估新项目代码库规模和复杂度\"\n - \"代码审查前了解整体质量状况\"\n - \"重构前识别需要改进的模块(大文件、低注释率)\"\n - \"定期监控代码健康度变化趋势\"\n - \"技术债务评估和量化\"\n - \"团队间代码质量对比\"\n\n使用方法:\n 命令: \"python3 code-stats.py [项目路径] [选项]\"\n 参数:\n project_path: \"项目路径(默认:当前目录)\"\n --json: \"JSON格式输出\"\n -o, --output: \"输出报告到文件\"\n 示例:\n - \"分析当前目录: python3 code-stats.py .\"\n - \"分析指定项目: python3 code-stats.py /path/to/project\"\n - \"JSON格式输出: python3 code-stats.py . --json\"\n - \"保存报告: python3 code-stats.py . -o report.md\"\n\n依赖要求:\n python版本: \">=3.8\"\n 依赖包: # 无第三方依赖,只使用标准库\n - argparse: \"标准库\"\n - json: \"标准库\"\n - pathlib: \"标准库\"\n - re: \"标准库\"\n\n输入输出:\n 输入:\n - 类型: 目录(递归扫描)\n - 格式: 源代码文件\n - 忽略: .git, __pycache__, node_modules, venv等\n 输出:\n - stdout: 详细统计报告(按文件类型、健康度评分、建议)\n - JSON: 结构化数据(使用--json参数)\n - 文件: Markdown报告(使用-o参数)\n\n上次使用:\n 时间: 2025-11-14 11:45:00\n 用途: \"分析ai-runtime项目代码库,评估项目规模和质量\"\n 结果: |\n 识别出25个文件,总代码行数约50000行\n 注释率12%(符合质量标准>10%)\n 代码复杂度评分:中等\n 识别出3个较大文件(>500行,建议拆分)\n 满意度: 0.94\n\n相关工具:\n - 前置工具: 无\n - 互补工具:\n - toolkit/python/analysis/dependency-analyzer.py(依赖分析)\n - toolkit/bash/analysis/analyze-logs.sh(日志分析)\n - 替代工具:\n - cloc(专业代码统计工具)\n - wc -l(简单行数统计)\n\n维护记录:\n 2025-11-14:\n - 初始创建\n - 支持多语言(Python, JavaScript, Java, C/C++, Shell)\n - 实现复杂度评分和健康度评分\n TODO:\n - 支持更多语言(Go, Rust, Ruby)\n - 添加复杂度圈数(Cyclomatic Complexity)计算\n - 支持代码重复率检测\n - 添加与上次统计的对比功能\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":3117,"content_sha256":"09018917a4a5f5526e53c3c28e136e3c146ea81f558c9c095cbbf50750624c1f"},{"filename":"python/analysis/code-stats.py","content":"#!/usr/bin/env python3\n\"\"\"\n代码统计器 - 分析代码库统计信息,包括行数、函数、类、注释率等\n\"\"\"\n\nimport os\nimport sys\nimport re\nfrom pathlib import Path\nfrom typing import Dict, List, Any\nimport argparse\n\n\nclass CodeStats:\n def __init__(self, project_path: Path):\n self.project_path = Path(project_path)\n self.stats: Dict[str, Any] = {\n 'files': 0,\n 'total_lines': 0,\n 'code_lines': 0,\n 'comment_lines': 0,\n 'blank_lines': 0,\n 'functions': 0,\n 'classes': 0,\n 'imports': 0,\n 'by_extension': {}\n }\n\n def analyze_file(self, file_path: Path) -> Dict[str, Any]:\n \"\"\"分析单个文件\"\"\"\n file_stats = {\n 'lines': 0,\n 'code': 0,\n 'comments': 0,\n 'blank': 0,\n 'functions': 0,\n 'classes': 0,\n 'imports': 0\n }\n\n try:\n content = file_path.read_text(encoding='utf-8')\n lines = content.splitlines()\n\n in_block_comment = False\n\n for line in lines:\n file_stats['lines'] += 1\n stripped = line.strip()\n\n # 空行\n if not stripped:\n file_stats['blank'] += 1\n continue\n\n # 块注释检测\n if '/*' in stripped and not in_block_comment:\n in_block_comment = True\n file_stats['comments'] += 1\n continue\n\n if in_block_comment:\n file_stats['comments'] += 1\n if '*/' in stripped:\n in_block_comment = False\n continue\n\n # 行注释\n if stripped.startswith('#') or stripped.startswith('//'):\n file_stats['comments'] += 1\n continue\n\n if '#' in stripped and not stripped.startswith('\"') and not stripped.startswith(\"'\"):\n file_stats['comments'] += 1\n file_stats['code'] += 1\n continue\n\n # 代码行\n file_stats['code'] += 1\n\n # 函数/类检测\n if 'def ' in line and 'class ' not in line:\n file_stats['functions'] += 1\n elif 'class ' in line:\n file_stats['classes'] += 1\n elif 'import ' in line or 'from ' in line:\n file_stats['imports'] += 1\n\n return file_stats\n\n except Exception as e:\n print(f\"⚠️ 警告: 无法读取文件 {file_path}: {e}\", file=sys.stderr)\n return file_stats\n\n def analyze_directory(self, directory: Path):\n \"\"\"递归分析目录\"\"\"\n ignore_patterns = {\n '.git', '.svn', '.hg', '__pycache__', 'node_modules',\n 'venv', 'env', '.venv', 'dist', 'build', '*.egg-info'\n }\n\n for item in directory.iterdir():\n # 忽略模式\n if any(pattern in str(item) for pattern in ignore_patterns):\n continue\n\n if item.is_dir():\n self.analyze_directory(item)\n elif item.is_file():\n # 支持的文件类型\n supported_ext = {'.py', '.js', '.ts', '.java', '.cpp', '.c', '.h', '.sh'}\n ext = item.suffix.lower()\n\n if ext in supported_ext:\n file_stats = self.analyze_file(item)\n\n # 更新全局统计\n self.stats['files'] += 1\n self.stats['total_lines'] += file_stats['lines']\n self.stats['code_lines'] += file_stats['code']\n self.stats['comment_lines'] += file_stats['comments']\n self.stats['blank_lines'] += file_stats['blank']\n self.stats['functions'] += file_stats['functions']\n self.stats['classes'] += file_stats['classes']\n self.stats['imports'] += file_stats['imports']\n\n # 按扩展名分组\n if ext not in self.stats['by_extension']:\n self.stats['by_extension'][ext] = {\n 'files': 0,\n 'lines': 0,\n 'code': 0,\n 'comments': 0,\n 'blank': 0,\n 'functions': 0,\n 'classes': 0,\n 'imports': 0\n }\n\n ext_stats = self.stats['by_extension'][ext]\n ext_stats['files'] += 1\n ext_stats['lines'] += file_stats['lines']\n ext_stats['code'] += file_stats['code']\n ext_stats['comments'] += file_stats['comments']\n ext_stats['blank'] += file_stats['blank']\n ext_stats['functions'] += file_stats['functions']\n ext_stats['classes'] += file_stats['classes']\n ext_stats['imports'] += file_stats['imports']\n\n def calculate_complexity_score(self) -> float:\n \"\"\"计算代码复杂度分数\"\"\"\n if self.stats['files'] == 0:\n return 0.0\n\n # 基于以下几个因素:\n # 1. 平均文件大小\n avg_file_size = self.stats['total_lines'] / self.stats['files']\n size_score = min(avg_file_size / 500, 1.0) # 超过500行/文件扣分\n\n # 2. 注释率\n comment_ratio = self.stats['comment_lines'] / max(self.stats['total_lines'], 1)\n comment_score = 1.0 if comment_ratio > 0.1 else 0.5 # 注释率过低扣分\n\n # 3. 函数密度\n func_density = self.stats['functions'] / max(self.stats['files'], 1)\n func_score = min(func_density / 20, 1.0) # 函数过多扣分\n\n # 综合评分(0-100)\n complexity = (size_score + comment_score + func_score) / 3 * 100\n return min(complexity, 100.0)\n\n def print_report(self):\n \"\"\"打印分析报告\"\"\"\n print(\"📊 代码统计报告\")\n print(\"=\" * 60)\n print(f\"项目路径: {self.project_path}\")\n print(\"=\" * 60)\n print()\n\n if self.stats['files'] == 0:\n print(\"⚠️ 未找到支持的代码文件\")\n return\n\n # 总体统计\n print(\"📁 总体统计:\")\n print(\"-\" * 60)\n print(f\"文件总数: {self.stats['files']:,}\")\n print(f\"总行数: {self.stats['total_lines']:,}\")\n print(f\"代码行数: {self.stats['code_lines']:,} ({self.stats['code_lines']/self.stats['total_lines']*100:.1f}%)\")\n print(f\"注释行数: {self.stats['comment_lines']:,} ({self.stats['comment_lines']/self.stats['total_lines']*100:.1f}%)\")\n print(f\"空行行数: {self.stats['blank_lines']:,} ({self.stats['blank_lines']/self.stats['total_lines']*100:.1f}%)\")\n print()\n print(f\"函数总数: {self.stats['functions']:,}\")\n print(f\"类总数: {self.stats['classes']:,}\")\n print(f\"导入语句: {self.stats['imports']:,}\")\n print()\n\n # 复杂度评分\n complexity = self.calculate_complexity_score()\n if complexity \u003c 50:\n complexity_color = \"\\033[92m\" # 绿色\n complexity_level = \"低\"\n elif complexity \u003c 75:\n complexity_color = \"\\033[93m\" # 黄色\n complexity_level = \"中等\"\n else:\n complexity_color = \"\\033[91m\" # 红色\n complexity_level = \"高\"\n\n print(f\"代码复杂度: {complexity_color}{complexity:.1f} ({complexity_level})\\033[0m\")\n print()\n\n # 按文件类型统计\n if self.stats['by_extension']:\n print(\"📂 按文件类型统计:\")\n print(\"-\" * 60)\n print(f\"{'类型':\u003c10} {'文件数':>10} {'总行数':>12} {'代码行':>12} {'注释':>10} {'函数':>10} {'类':>8}\")\n print(\"-\" * 60)\n\n for ext, stats in sorted(self.stats['by_extension'].items()):\n print(f\"{ext:\u003c10} {stats['files']:>10,} {stats['lines']:>12,} {stats['code']:>12,} \"\n f\"{stats['comments']:>10,} {stats['functions']:>10,} {stats['classes']:>8,}\")\n\n print()\n\n # 健康评分\n health_score = 0\n health_issues = []\n\n # 注释率健康度\n comment_ratio = self.stats['comment_lines'] / max(self.stats['total_lines'], 1)\n if comment_ratio >= 0.1:\n health_score += 25\n else:\n health_issues.append(f\"注释率偏低 ({comment_ratio*100:.1f}%,建议>10%)\")\n\n # 文件大小健康度\n avg_file_size = self.stats['total_lines'] / self.stats['files']\n if avg_file_size \u003c= 300:\n health_score += 25\n elif avg_file_size \u003c= 500:\n health_score += 15\n else:\n health_issues.append(f\"平均文件大小偏大 ({avg_file_size:.0f}行,建议\u003c300)\")\n\n # 空白行健康度\n blank_ratio = self.stats['blank_lines'] / max(self.stats['total_lines'], 1)\n if 0.05 \u003c= blank_ratio \u003c= 0.2:\n health_score += 25\n else:\n health_issues.append(f\"空白行比例异常 ({blank_ratio*100:.1f}%)\")\n\n # 函数分布健康度\n avg_funcs_per_file = self.stats['functions'] / self.stats['files']\n if avg_funcs_per_file \u003c= 15:\n health_score += 25\n else:\n health_issues.append(f\"平均函数数偏高 ({avg_funcs_per_file:.1f}个/文件)\")\n\n print(\"🏥 代码健康度:\")\n print(\"-\" * 60)\n print(f\"健康评分: {health_score}/100\")\n\n if health_issues:\n print()\n print(\"⚠️ 发现的问题:\")\n for issue in health_issues:\n print(f\" - {issue}\")\n else:\n print(\"✅ 代码健康状况良好\")\n\n print()\n\n # 建议\n print(\"💡 建议:\")\n print(\"-\" * 60)\n\n if comment_ratio \u003c 0.1:\n print(\" - 增加代码注释,提高可维护性\")\n\n if avg_file_size > 500:\n print(\" - 考虑拆分大文件,遵循单一职责原则\")\n\n if len(self.stats['by_extension']) > 5:\n print(\" - 项目包含多种语言,注意依赖管理\")\n elif len(self.stats['by_extension']) == 1:\n print(\" - 单一语言项目,结构清晰\")\n\n if self.stats['classes'] > 0:\n avg_methods_per_class = self.stats['functions'] / max(self.stats['classes'], 1)\n if avg_methods_per_class > 20:\n print(\" - 类的职责可能过重,考虑拆分类\")\n\n if health_score >= 80:\n print(\" - ✅ 代码质量良好,继续保持\")\n\n print()\n print(\"=\" * 60)\n print(\"代码统计完成\")\n print(\"=\" * 60)\n\n\ndef main():\n parser = argparse.ArgumentParser(\n description='代码统计器 - 分析代码库统计信息',\n formatter_class=argparse.RawDescriptionHelpFormatter,\n epilog=\"\"\"\n示例:\n python3 code-stats.py . # 分析当前目录\n python3 code-stats.py /path/to/project # 分析指定项目\n python3 code-stats.py . --json # JSON格式输出\n python3 code-stats.py . --output report.md # 保存报告\n \"\"\"\n )\n\n parser.add_argument(\n 'project_path',\n nargs='?',\n default='.',\n help='项目路径(默认:当前目录)'\n )\n\n parser.add_argument(\n '--json',\n action='store_true',\n help='JSON格式输出'\n )\n\n parser.add_argument(\n '-o', '--output',\n help='输出报告到文件'\n )\n\n args = parser.parse_args()\n\n if not os.path.exists(args.project_path):\n print(f\"❌ 错误: 路径不存在: {args.project_path}\")\n sys.exit(1)\n\n analyzer = CodeStats(args.project_path)\n analyzer.analyze_directory(Path(args.project_path))\n\n if args.json:\n import json\n print(json.dumps(analyzer.stats, indent=2))\n elif args.output:\n # 重定向输出到文件\n with open(args.output, 'w', encoding='utf-8') as f:\n old_stdout = sys.stdout\n sys.stdout = f\n try:\n analyzer.print_report()\n finally:\n sys.stdout = old_stdout\n print(f\"✅ 报告已保存: {args.output}\")\n else:\n analyzer.print_report()\n\n sys.exit(0)\n\n\nif __name__ == '__main__':\n main()\n","content_type":"text/x-python; charset=utf-8","language":"python","size":12632,"content_sha256":"86faa62352ebde4b8673f0e8a379b82847074f3d475d6938731f9d3625b6aadb"},{"filename":"python/analysis/dependency-analyzer.meta.yml","content":"tool_id: PY-DEPENDENCY-ANALYZER-001\ntool_name: \"依赖关系分析器\"\n\n基本信息:\n 语言: python\n 文件: dependency-analyzer.py\n 复杂度: level-3\n 创建日期: 2025-11-14\n 作者: CodeConscious\n\n用途分类:\n - CODE # 代码分析\n - DATA # 数据提取\n\n功能描述:\n 简介: \"分析Python/JavaScript项目的依赖关系,生成可视化报告\"\n 详细: |\n 支持功能:\n - Python: 解析requirements.txt,提取依赖包和版本约束\n - JavaScript: 解析package.json,提取dependencies/devDependencies\n - 问题检测: 识别安全风险和已知漏洞\n - 可视化报告: Markdown格式的人类可读报告\n - JSON导出: 结构化数据,便于后续处理\n\n使用场景:\n - \"分析新项目的依赖复杂度\"\n - \"检查依赖安全风险\"\n - \"生成项目依赖文档\"\n - \"重构前评估依赖影响\"\n - \"团队间共享依赖清单\"\n\n使用方法:\n 命令: \"python3 dependency-analyzer.py [项目目录] [选项]\"\n 参数:\n project_dir: \"项目目录路径(默认:当前目录)\"\n -o, --output: \"输出JSON报告到指定文件\"\n -v, --verbose: \"详细输出\"\n 示例:\n - \"分析当前目录: python3 dependency-analyzer.py\"\n - \"分析指定项目: python3 dependency-analyzer.py /path/to/project\"\n - \"保存JSON报告: python3 dependency-analyzer.py . -o report.json\"\n - \"详细输出: python3 dependency-analyzer.py -v\"\n\n依赖要求:\n python版本: \">=3.8\"\n 依赖包: # 无第三方依赖,只使用标准库\n - json: \"标准库\"\n - argparse: \"标准库\"\n - pathlib: \"标准库\"\n - typing: \"标准库\"\n\n输入输出:\n 输入:\n - requirements.txt: \"Python依赖列表\"\n - package.json: \"Node.js依赖配置\"\n 输出:\n - stdout: \"Markdown格式的可视化报告\"\n - JSON文件: \"结构化数据\"\n\n上次使用:\n 时间: 2025-11-14 10:30:00\n 用途: \"分析ai-runtime项目依赖\"\n 结果: |\n 发现项目使用Node.js + Python混合技术栈\n 识别出3个潜在安全风险\n 生成了详细的依赖报告\n 满意度: 0.92\n\n相关工具:\n - 前置工具: 无\n - 互补工具:\n - toolkit/python/analysis/analyze_logs.py(日志分析)\n - toolkit/python/report/generate-report.py(报告生成)\n - 替代工具:\n - npm audit(仅JS)\n - pip check(仅Python)\n\n维护记录:\n 2025-11-14:\n - 初始创建\n - 支持Python requirements.txt解析\n - 支持Node.js package.json解析\n - 实现JSON和Markdown输出\n 2025-11-15:\n - 添加安全问题检查(常见漏洞)\n - 优化报告格式\n TODO:\n - 支持Go mod分析\n - 支持Rust Cargo.toml分析\n - 添加依赖图可视化(Graphviz)\n","content_type":"application/yaml; charset=utf-8","language":"yaml","size":2693,"content_sha256":"0995c7096cf0d1155dfee60e6b8a8337badc8748a8cc7e85f527151fa3b63562"},{"filename":"python/analysis/dependency-analyzer.py","content":"#!/usr/bin/env python3\n\"\"\"\n依赖关系分析器\n分析Python/JavaScript项目的依赖关系,生成可视化报告\n\"\"\"\n\nimport json\nimport sys\nfrom pathlib import Path\nfrom typing import Dict, List, Set, Any\nimport argparse\n\nclass DependencyAnalyzer:\n def __init__(self, project_root: Path):\n self.root = project_root\n self.dependencies: Dict[str, Any] = {}\n self.issues: List[str] = []\n\n def analyze_python(self) -> Dict[str, Any]:\n \"\"\"分析Python项目依赖\"\"\"\n try:\n if not (self.root / \"requirements.txt\").exists():\n return {}\n\n result = {\n \"language\": \"python\",\n \"dependencies\": [],\n \"issues\": []\n }\n\n # 读取requirements.txt\n req_file = self.root / \"requirements.txt\"\n lines = req_file.read_text().splitlines()\n\n for line in lines:\n line = line.strip()\n if line and not line.startswith(\"#\"):\n # 简单解析:django>=3.0, pandas==1.5.0\n if \"==\" in line:\n name, version = line.split(\"==\", 1)\n result[\"dependencies\"].append({\n \"name\": name,\n \"constraint\": \"==\",\n \"version\": version,\n \"type\": \"exact\"\n })\n elif \">=\" in line:\n name, version = line.split(\">=\", 1)\n result[\"dependencies\"].append({\n \"name\": name,\n \"constraint\": \">=\",\n \"version\": version,\n \"type\": \"minimum\"\n })\n else:\n result[\"dependencies\"].append({\n \"name\": line,\n \"constraint\": None,\n \"version\": None,\n \"type\": \"any\"\n })\n\n # 检查常见安全问题\n for dep in result[\"dependencies\"]:\n name = dep[\"name\"].lower()\n if name in [\"django\", \"flask\"]:\n result[\"issues\"].append(f\"⚠️ Web框架: {name},建议检查是否为最新版本\")\n if name == \"requests\":\n result[\"issues\"].append(f\"ℹ️ HTTP库: {name},考虑使用内置的httpx\")\n\n return result\n\n except Exception as e:\n return {\n \"language\": \"python\",\n \"error\": str(e),\n \"dependencies\": []\n }\n\n def analyze_javascript(self) -> Dict[str, Any]:\n \"\"\"分析JavaScript/Node.js项目依赖\"\"\"\n try:\n if not (self.root / \"package.json\").exists():\n return {}\n\n result = {\n \"language\": \"javascript\",\n \"dependencies\": [],\n \"issues\": []\n }\n\n # 读取package.json\n package_file = self.root / \"package.json\"\n package = json.loads(package_file.read_text())\n\n # 合并dependencies和devDependencies\n all_deps = {}\n all_deps.update(package.get(\"dependencies\", {}))\n all_deps.update(package.get(\"devDependencies\", {}))\n\n for name, version in all_deps.items():\n result[\"dependencies\"].append({\n \"name\": name,\n \"version\": version,\n \"type\": \"exact\" if version.startswith(\"^\") or version.startswith(\"~\") else \"range\"\n })\n\n # 检查常见安全问题\n for dep in result[\"dependencies\"]:\n name = dep[\"name\"].lower()\n if name == \"lodash\":\n result[\"issues\"].append(f\"⚠️ lodash有已知漏洞,建议使用原生JS方法\")\n if name == \"express\":\n result[\"issues\"].append(f\"⚠️ Express: {name},建议使用helmet增强安全\")\n\n return result\n\n except Exception as e:\n return {\n \"language\": \"javascript\",\n \"error\": str(e),\n \"dependencies\": []\n }\n\n def visualize_report(self, results: Dict[str, Any]):\n \"\"\"生成可视化报告\"\"\"\n print(\"# 📦 依赖关系分析报告\")\n print(\"=\" * 60)\n\n for lang, data in results.items():\n if not data or \"error\" in data:\n continue\n\n print(f\"\\n## {lang.upper()} 项目\")\n print(\"-\" * 60)\n\n deps = data.get(\"dependencies\", [])\n print(f\"\\n依赖总数: {len(deps)}\")\n\n if deps:\n print(\"\\n### 依赖清单\")\n print(\"| 包名 | 版本 | 类型 |\")\n print(\"|------|------|------|\")\n for dep in deps[:20]: # 只显示前20个\n name = dep.get(\"name\", \"unknown\")\n version = dep.get(\"version\", \"latest\")\n dep_type = dep.get(\"type\", \"unknown\")\n print(f\"| {name} | {version} | {dep_type} |\")\n\n if len(deps) > 20:\n print(f\"| ... | ... | ... |\")\n print(f\"| \u003cfont color='gray'>共 {len(deps)} 个依赖\u003c/font> | | |\")\n\n issues = data.get(\"issues\", [])\n if issues:\n print(\"\\n### ⚠️ 发现的问题\")\n for issue in issues:\n print(f\"- {issue}\")\n else:\n print(\"\\n### ✅ 未发现明显问题\")\n\n def save_json(self, results: Dict[str, Any], output_path: Path):\n \"\"\"保存JSON格式的详细报告\"\"\"\n output_path.write_text(json.dumps(results, indent=2, ensure_ascii=False))\n print(f\"\\n💾 JSON报告已保存: {output_path}\")\n\ndef main():\n parser = argparse.ArgumentParser(description=\"依赖关系分析器\")\n parser.add_argument(\"project_dir\", nargs=\"?\", default=\".\", help=\"项目目录路径\")\n parser.add_argument(\"-o\", \"--output\", help=\"输出JSON报告到文件\")\n parser.add_argument(\"-v\", \"--verbose\", action=\"store_true\", help=\"详细输出\")\n\n args = parser.parse_args()\n\n project_path = Path(args.project_dir)\n if not project_path.exists():\n print(f\"❌ 错误: 目录不存在: {project_path}\")\n sys.exit(1)\n\n print(\"🔍 分析项目依赖关系...\")\n print(f\"项目路径: {project_path.absolute()}\")\n print(\"=\" * 60)\n\n analyzer = DependencyAnalyzer(project_path)\n\n # 分析Python\n python_results = analyzer.analyze_python()\n\n # 分析JavaScript\n js_results = analyzer.analyze_javascript()\n\n # 生成报告\n all_results = {\n \"python\": python_results,\n \"javascript\": js_results,\n \"metadata\": {\n \"analyzed_at\": \"2025-11-14T10:00:00Z\",\n \"tool_version\": \"1.0.0\",\n \"analyzer\": \"CodeConscious\"\n }\n }\n\n analyzer.visualize_report(all_results)\n\n # 保存JSON报告\n if args.output:\n output_path = Path(args.output)\n analyzer.save_json(all_results, output_path)\n else:\n # 默认保存到报告目录\n report_dir = project_path / \"reports\"\n report_dir.mkdir(exist_ok=True)\n analyzer.save_json(all_results, report_dir / \"dependency-report.json\")\n\n print(\"\\n✅ 分析完成!\")\n\nif __name__ == \"__main__\":\n main()\n","content_type":"text/x-python; charset=utf-8","language":"python","size":7541,"content_sha256":"71f52653661b2e1aab3ba8809fe5be47ee0ad731804f958f12cb3340fb3833f2"},{"filename":"references/core/toolkit-philosophy.md","content":"# 工具装备系统设计哲学\n\n## 核心理念\n\n### 整合优于创造 (Integration over Creation)\n\n**为什么选择整合?**\n1. **成熟稳定**: 经过数千小时的社区打磨和实际使用验证\n2. **社区支持**: 庞大的用户群、完善的文档和活跃的维护\n3. **专注专业**: 每个工具只做一件事,并做到极致\n4. **认知卸载**: 无需重复实现,直接使用成熟解决方案\n\n**实际案例**:\n- 使用 `ripgrep` 而非重新实现代码搜索\n- 使用 `jq` 而非创建自定义JSON处理器\n- 使用 `fzf` 而非开发模糊查找界面\n\n### 元数据驱动架构\n\n**设计原则**:\n- **声明式配置**: 通过 `.meta.yml` 文件描述工具能力\n- **自动发现**: 基于文件系统结构自动注册工具\n- **类型安全**: 明确的工具分类、版本和依赖管理\n\n**元数据标准**:\n```yaml\nname: SERVICE-CHECK-001\ndescription: HTTP服务健康检查工具\nlanguage: bash\ncategory: MONITOR\ncomplexity: level-2\ndependencies: [curl]\nparameters:\n - name: url\n type: string\n required: true\n description: 要检查的服务URL\n```\n\n### 渐进式披露设计\n\n受 anthropics/skills 项目启发,采用分层文档结构:\n\n1. **SKILL.md**: 核心入口,包含基本概念和快速开始\n2. **references/**: 详细参考文档,按需加载\n3. **README.md**: 索引和导航,指向具体文档\n\n## 工具分类体系\n\n### 复杂度分层\n\n| 级别 | 代码行数 | 特点 | 示例 |\n|-----|---------|------|------|\n| Level-1 | 1-5行 | 简单命令封装 | 基础系统调用 |\n| Level-2 | 6-20行 | 参数处理和错误处理 | 服务检查、文件操作 |\n| Level-3 | 21-50行 | 复杂逻辑和数据处理 | 依赖分析、报告生成 |\n| Level-4 | 50+行 | 完整应用程序 | API测试框架 |\n\n### 功能分类\n\n| 分类 | 用途 | 示例工具 |\n|-----|-----|---------|\n| **CODE** | 代码处理和分析 | 依赖分析器、代码统计器 |\n| **DATA** | 数据处理和转换 | 依赖分析器、JSON处理器 |\n| **TEST** | 测试和验证 | API测试工具、数据验证器 |\n| **BUILD** | 构建和部署 | 构建脚本、部署检查器 |\n| **MONITOR** | 监控和诊断 | 服务检查器、日志分析器 |\n| **DOC** | 文档处理 | 文档生成器、格式转换器 |\n\n### 语言选择策略\n\n**Bash工具**:\n- 系统级操作(文件、进程、网络)\n- 轻量级文本处理\n- 调用现有CLI工具的胶水代码\n\n**Python工具**:\n- 复杂数据处理和分析\n- 需要丰富标准库的功能\n- 跨平台兼容性要求\n\n**Node.js工具**:\n- Web/API相关操作\n- 需要npm生态系统的工具\n- 现代JavaScript开发栈集成\n\n## 开发工作流\n\n### 工具创建流程\n\n1. **需求识别**: 识别重复3次以上的任务\n2. **复杂度评估**: 确定合适的复杂度级别\n3. **语言选择**: 根据任务特点选择编程语言\n4. **模板应用**: 使用相应模板快速创建\n5. **元数据编写**: 创建 `.meta.yml` 描述文件\n6. **测试验证**: 通过 `discover-toolkit.py` 测试\n7. **文档编写**: 添加使用说明和示例\n\n### 质量保证\n\n**代码质量**:\n- 错误处理和边界情况覆盖\n- 输入验证和参数检查\n- 清晰的错误消息和退出码\n\n**文档质量**:\n- 完整的参数说明\n- 实际使用示例\n- 常见问题和故障排除\n\n**集成质量**:\n- 正确的元数据格式\n- 合理的依赖声明\n- 向后兼容性保证\n\n## 生态系统扩展\n\n### 外部工具整合策略\n\n**选择标准**:\n- **社区活跃度**: GitHub stars、最近提交频率\n- **跨平台支持**: 支持主流操作系统\n- **许可证兼容**: MIT/BSD/Apache等宽松许可证\n- **维护状态**: 积极维护,无重大安全问题\n\n**整合深度**:\n- **Level-1**: 简单命令别名和参数传递\n- **Level-2**: 错误处理和输出格式化\n- **Level-3**: 高级功能封装和定制选项\n\n### 版本管理和兼容性\n\n**语义版本**: 遵循 SemVer 规范\n- **MAJOR**: 不兼容的API变更\n- **MINOR**: 向后兼容的新功能\n- **PATCH**: 向后兼容的bug修复\n\n**兼容性保证**:\n- 工具接口的向后兼容\n- 元数据格式的稳定性\n- 升级路径的明确说明\n\n## 性能和效率\n\n### 资源使用优化\n\n**启动时间**: 工具应该在2秒内启动\n**内存使用**: 避免不必要的内存占用\n**磁盘I/O**: 合理使用缓存和临时文件\n\n### 并发和并行\n\n**设计考虑**:\n- 工具是否支持并发执行\n- 共享资源的正确处理\n- 输出的线程安全性\n\n**实现策略**:\n- 无状态设计优先\n- 显式的并发控制\n- 资源锁的合理使用\n\n## 监控和维护\n\n### 健康检查\n\n**自动监控**:\n- 工具可用性检查\n- 性能指标收集\n- 错误率统计\n\n**维护任务**:\n- 定期更新外部工具\n- 清理过时工具\n- 优化性能瓶颈\n\n### 演进策略\n\n**持续改进**:\n- 用户反馈收集和分析\n- 性能指标监控\n- 新需求和功能的评估\n\n**弃用管理**:\n- 明确的弃用时间表\n- 迁移路径说明\n- 向后兼容性保证\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":4969,"content_sha256":"24d4cd3c4f150a0a8d5148ec09fe32c2c37e214f255cac184ca47bea1e9f29de"},{"filename":"references/guides/quickstart.md","content":"# 工具装备系统快速开始指南\n\n## 10分钟上手工具装备系统\n\n### 前置条件\n\n**系统要求**:\n- Python 3.8+\n- Bash shell\n- 基本CLI工具(curl, grep, find等)\n\n**推荐安装**:\n```bash\n# macOS\nbrew install fzf eza zoxide fd bat ripgrep jq\n\n# Ubuntu/Debian\nsudo apt-get install fzf ripgrep jq bat\n```\n\n### 第一步:环境检查\n\n```bash\n# 进入工具装备目录\ncd .ai-runtime/toolkit\n\n# 检查Python环境\npython3 --version\n\n# 检查discover-toolkit工具\npython3 discover-toolkit.py --help\n```\n\n### 第二步:查看可用工具\n\n```bash\n# 查看所有工具概览\npython3 discover-toolkit.py list\n\n# 查看内部工具\npython3 discover-toolkit.py list --internal\n\n# 查看外部工具\npython3 discover-toolkit.py list --external\n```\n\n### 第三步:使用工具\n\n#### 基础用法\n\n```bash\n# 查看工具详情\npython3 discover-toolkit.py show SERVICE-CHECK-001\n\n# 运行服务健康检查\npython3 discover-toolkit.py run service-check http://localhost:3000\n\n# 运行依赖分析\npython3 discover-toolkit.py run dependency-analyzer . -o deps.json\n```\n\n#### 实际场景示例\n\n**场景1: 项目代码分析**\n```bash\n# 分析当前项目的依赖关系\npython3 discover-toolkit.py run dependency-analyzer . -o project-deps.json\n\n# 查看结果\ncat project-deps.json | jq '.summary'\n```\n\n**场景2: 日志文件分析**\n```bash\n# 分析应用日志,查找错误\npython3 discover-toolkit.py run log-analyzer /var/log/app.log --level ERROR --since \"1 hour ago\"\n\n# 生成错误统计报告\npython3 discover-toolkit.py run log-analyzer /var/log/app.log --stats --output error-stats.json\n```\n\n**场景3: API测试**\n```bash\n# 测试REST API端点\npython3 discover-toolkit.py run api-test http://api.example.com/users --method GET\n\n# 测试POST请求\npython3 discover-toolkit.py run api-test http://api.example.com/users \\\n --method POST \\\n --data '{\"name\": \"test user\"}' \\\n --headers \"Content-Type: application/json\"\n```\n\n### 第四步:外部工具集成\n\n#### 安装检查\n\n```bash\n# 检查外部工具安装状态\npython3 discover-toolkit.py check-external\n\n# 安装缺失的工具(macOS示例)\nbrew install fzf eza bat ripgrep\n```\n\n#### 实际使用\n\n```bash\n# 使用ripgrep搜索代码(比grep快10倍以上)\nrg \"TODO|FIXME\" src/\n\n# 使用fzf进行交互式选择\nfind src/ -name \"*.py\" | fzf\n\n# 使用bat查看带语法高亮的代码\nbat src/main.py\n\n# 使用eza美化文件列表\neza -la src/\n\n# 使用jq处理JSON数据\ncat package.json | jq '.dependencies'\n```\n\n### 第五步:创建自定义工具\n\n#### 快速创建Bash工具\n\n```bash\n# 使用模板创建新工具\ncp templates/tool-template.sh bash/custom/my-tool.sh\ncp templates/meta-template.yml bash/custom/my-tool.meta.yml\n\n# 编辑工具脚本\nnano bash/custom/my-tool.sh\n\n# 编辑元数据\nnano bash/custom/my-tool.meta.yml\n```\n\n#### 元数据示例\n\n```yaml\nname: MY-TOOL-001\ndescription: 我的自定义工具\nlanguage: bash\ncategory: UTILITY\ncomplexity: level-2\nversion: 1.0.0\n\nparameters:\n - name: input\n type: string\n required: true\n description: 输入文件路径\n\n - name: output\n type: string\n required: false\n description: 输出文件路径(可选)\n\nexamples:\n - description: 基本用法\n command: python3 discover-toolkit.py run my-tool input.txt\n\n - description: 指定输出\n command: python3 discover-toolkit.py run my-tool input.txt -o output.txt\n```\n\n#### 测试新工具\n\n```bash\n# 验证工具注册\npython3 discover-toolkit.py show MY-TOOL-001\n\n# 测试运行\npython3 discover-toolkit.py run my-tool test-input.txt\n\n# 查看帮助\npython3 discover-toolkit.py help MY-TOOL-001\n```\n\n### 第六步:高级用法\n\n#### 批量操作\n\n```bash\n# 批量检查多个服务\necho \"http://api1.example.com\nhttp://api2.example.com\nhttp://db.example.com:5432\" | \\\nwhile read url; do\n echo \"Checking $url...\"\n python3 discover-toolkit.py run service-check \"$url\"\ndone\n```\n\n#### 脚本集成\n\n```bash\n#!/bin/bash\n# CI/CD 集成脚本示例\n\nPROJECT_ROOT=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")/..\" && pwd)\"\nTOOLKIT_DIR=\"$PROJECT_ROOT/.ai-runtime/toolkit\"\n\ncd \"$TOOLKIT_DIR\"\n\n# 代码质量检查\necho \"=== 代码质量检查 ===\"\npython3 discover-toolkit.py run code-stats src/ --format json > code-stats.json\n\n# 依赖安全检查\necho \"=== 依赖安全检查 ===\"\npython3 discover-toolkit.py run dependency-analyzer . --security-check > security-report.json\n\n# 生成综合报告\necho \"=== 生成报告 ===\"\npython3 discover-toolkit.py run report-generator \\\n --code-stats code-stats.json \\\n --security security-report.json \\\n --output ci-report.html\n```\n\n#### 监控和告警\n\n```bash\n# 定期健康检查\nwhile true; do\n echo \"$(date): Health check...\"\n python3 discover-toolkit.py run service-check http://localhost:3000 > /dev/null\n if [ $? -ne 0 ]; then\n echo \"Service down! Sending alert...\"\n # 发送告警逻辑\n fi\n sleep 300 # 5分钟检查一次\ndone\n```\n\n## 故障排除\n\n### 常见问题\n\n**工具未找到**\n```bash\n# 检查工具是否存在\npython3 discover-toolkit.py list | grep \u003ctool-name>\n\n# 检查元数据文件\nfind . -name \"*.meta.yml\" | xargs grep \u003ctool-name>\n```\n\n**运行时错误**\n```bash\n# 查看详细错误信息\npython3 discover-toolkit.py run \u003ctool-name> --verbose\n\n# 检查依赖\npython3 discover-toolkit.py show \u003ctool-name>\n```\n\n**外部工具不可用**\n```bash\n# 检查安装\nwhich \u003cexternal-tool>\n\n# 重新检测\npython3 discover-toolkit.py check-external\n```\n\n### 获取帮助\n\n```bash\n# 通用帮助\npython3 discover-toolkit.py --help\n\n# 工具特定帮助\npython3 discover-toolkit.py help \u003ctool-name>\n\n# 搜索相关工具\npython3 discover-toolkit.py search \u003ckeyword>\n```\n\n## 下一步\n\n完成这个快速开始指南后,你可以:\n\n1. **深入学习**: 查看 [references/internal-tools.md](internal-tools.md) 了解所有内部工具\n2. **扩展技能**: 阅读 [references/external-tools.md](external-tools.md) 掌握更多CLI工具\n3. **开发工具**: 参考 [references/creating-tools.md](creating-tools.md) 创建自己的工具\n4. **优化工作流**: 将工具集成到你的开发和部署流程中\n\n---\n\n*这个指南应该在10分钟内完成。如果遇到问题,请查看详细文档或寻求帮助。*\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":6232,"content_sha256":"18d05457a492169beebe64114253b1945ec7faa99958f4054500450189259d0d"},{"filename":"registry.md","content":"---\nname: toolkit-registry\ndescription: AI Runtime工具装备系统主索引和注册表\ncategory: registry\nversion: 2.0.0\nlast_updated: 2025-11-14\n---\n\n# AI Runtime 工具装备系统 - 主索引\n\n[![Skill](https://img.shields.io/badge/Skill-AI%20Runtime%20Toolkit-blue)](SKILL.md)\n\n## 快速导航\n\n### 🎯 核心功能\n- **8个内部工具**: Python/Bash/Node.js专业工具\n- **10+个外部工具**: 深度整合的成熟CLI工具\n- **智能发现**: 自动工具检测和元数据管理\n\n### 🚀 快速开始\n新手从这里开始,10分钟上手:\n**[快速开始指南](references/guides/quickstart.md)**\n\n### 🛠️ 工具分类\n\n#### 内部工具(自主创建)\n按语言分类的专业工具:\n\n**[Python工具详解](../docs/references/internal-tools.md)**\n- 依赖分析器、代码统计器、图形生成器、报告生成器\n\n**[Bash工具详解](../docs/references/internal-tools.md)**\n- 服务健康检查器、日志分析器、磁盘健康检查器\n\n**[Node.js工具详解](../docs/references/internal-tools.md)**\n- API测试工具\n\n#### 外部工具(深度整合)\n推荐的CLI工具生态:\n\n**[外部工具详解](../docs/references/external-tools.md)**\n- fzf、eza、bat、ripgrep、zoxide、jq等\n\n### 📖 开发指南\n\n#### 工具开发\n**[创建新工具](../docs/guides/creating-tools.md)**\n- 工具开发流程和最佳实践\n\n#### 外部整合\n**[外部工具整合](../docs/guides/external-integration.md)**\n- 如何整合第三方CLI工具\n\n### 📚 设计理念\n**[工具哲学](references/core/toolkit-philosophy.md)**\n- 设计原则、分类体系和发展策略\n\n## 基本用法\n\n```bash\n# 进入工具装备目录\ncd .ai-runtime/toolkit\n\n# 查看所有工具\npython3 discover-toolkit.py list\n\n# 查看工具详情\npython3 discover-toolkit.py show SERVICE-CHECK-001\n\n# 运行工具\npython3 discover-toolkit.py run dependency-analyzer . -o deps.json\n```\n\n## 系统状态\n\n**版本**: 2.0.0\n**内部工具**: 8个\n**外部工具**: 10+个\n**文档**: 6个核心文档\n**最后更新**: 2025-11-14\n\n## 详细文档\n\n**[SKILL.md](SKILL.md)** - 工具装备系统核心功能\n**[EXTERNAL-TOOLS-SKILL.md](EXTERNAL-TOOLS-SKILL.md)** - 外部工具专项技能\n**[references/core/toolkit-philosophy.md](references/core/toolkit-philosophy.md)** - 工具哲学和设计理念\n**[references/guides/quickstart.md](references/guides/quickstart.md)** - 快速开始指南\n\n---\n\n*基于 anthropics/skills 渐进式披露架构设计 | 整合优于创造*","content_type":"text/markdown; charset=utf-8","language":"markdown","size":2489,"content_sha256":"6a0074dc2ef48e2ead010f45dd68269e07d87fe8b7f988e524a57c3a67c33b10"},{"filename":"skill-report.json","content":"{\n \"schema_version\": \"2.0\",\n \"meta\": {\n \"generated_at\": \"2026-01-17T04:30:26.124Z\",\n \"slug\": \"dwsy-ai-runtime-toolkit\",\n \"source_url\": \"https://github.com/Dwsy/ai-runtime/tree/main/toolkit\",\n \"source_ref\": \"main\",\n \"model\": \"claude\",\n \"analysis_version\": \"3.0.0\",\n \"source_type\": \"community\",\n \"content_hash\": \"f380d908a681949f947b2545228a03cbfd25e236d770964f63a55a2e54bc8093\",\n \"tree_hash\": \"de49700d95463c4a207dcd3eec43ef38010e102a78c78dc00182148cf4e6d0c4\"\n },\n \"skill\": {\n \"name\": \"ai-runtime-toolkit\",\n \"description\": \"AI Runtime工具装备系统,支持8个内部专业工具和10+个外部CLI工具的整合管理,提供工具发现、执行和配置功能,遵循整合优于创造的设计理念\",\n \"summary\": \"AI Runtime工具装备系统,支持8个内部专业工具和10+个外部CLI工具的整合管理,提供工具发现、执行和配置功能,遵循整合优于创造的设计理念\",\n \"icon\": \"🛠️\",\n \"version\": \"2.0.0\",\n \"author\": \"Dwsy\",\n \"license\": \"MIT\",\n \"category\": \"coding\",\n \"tags\": [\n \"toolkit\",\n \"cli\",\n \"automation\",\n \"development\",\n \"integration\"\n ],\n \"supported_tools\": [\n \"claude\",\n \"claude-code\"\n ],\n \"risk_factors\": [\n \"external_commands\",\n \"filesystem\",\n \"network\",\n \"scripts\"\n ]\n },\n \"security_audit\": {\n \"risk_level\": \"medium\",\n \"is_blocked\": false,\n \"safe_to_publish\": true,\n \"summary\": \"The toolkit provides legitimate development utilities with tool discovery and management capabilities. Several input validation issues were identified in bash scripts and Python CLI that require user awareness. No malicious behavior or credential exfiltration detected. Risk level set to medium due to command injection potential in tool execution paths.\",\n \"risk_factor_evidence\": [\n {\n \"factor\": \"external_commands\",\n \"evidence\": [\n {\n \"file\": \"discover/cli.py\",\n \"line_start\": 177,\n \"line_end\": 178\n },\n {\n \"file\": \"bash/analysis/analyze-logs.sh\",\n \"line_start\": 84,\n \"line_end\": 88\n }\n ]\n },\n {\n \"factor\": \"filesystem\",\n \"evidence\": [\n {\n \"file\": \"python/analysis/code-stats.py\",\n \"line_start\": 95,\n \"line_end\": 108\n },\n {\n \"file\": \"python/analysis/dependency-analyzer.py\",\n \"line_start\": 32,\n \"line_end\": 40\n }\n ]\n },\n {\n \"factor\": \"network\",\n \"evidence\": [\n {\n \"file\": \"node/api/test-api.js\",\n \"line_start\": 28,\n \"line_end\": 36\n },\n {\n \"file\": \"bash/system/check-service.sh\",\n \"line_start\": 20,\n \"line_end\": 21\n }\n ]\n },\n {\n \"factor\": \"scripts\",\n \"evidence\": [\n {\n \"file\": \"bash/analysis/analyze-logs.sh\",\n \"line_start\": 84,\n \"line_end\": 88\n },\n {\n \"file\": \"bash/system/check-service.sh\",\n \"line_start\": 34,\n \"line_end\": 35\n }\n ]\n }\n ],\n \"critical_findings\": [],\n \"high_findings\": [\n {\n \"title\": \"Command Injection in CLI Runner\",\n \"description\": \"discover/cli.py:177-178 passes unsanitized user arguments to subprocess.run\",\n \"locations\": [\n {\n \"file\": \"discover/cli.py\",\n \"line_start\": 177,\n \"line_end\": 178\n }\n ]\n },\n {\n \"title\": \"Command Injection in Log Analyzer\",\n \"description\": \"bash/analysis/analyze-logs.sh:84,88 uses unsanitized user input in grep patterns\",\n \"locations\": [\n {\n \"file\": \"bash/analysis/analyze-logs.sh\",\n \"line_start\": 84,\n \"line_end\": 88\n }\n ]\n },\n {\n \"title\": \"Unsourced Environment Loading\",\n \"description\": \"bash/system/check-service.sh:34-35 sources .env without validation\",\n \"locations\": [\n {\n \"file\": \"bash/system/check-service.sh\",\n \"line_start\": 34,\n \"line_end\": 35\n }\n ]\n }\n ],\n \"medium_findings\": [\n {\n \"title\": \"Path Traversal Potential\",\n \"description\": \"Python tools traverse directories without strict path validation\",\n \"locations\": [\n {\n \"file\": \"python/analysis/code-stats.py\",\n \"line_start\": 95,\n \"line_end\": 108\n }\n ]\n }\n ],\n \"low_findings\": [\n {\n \"title\": \"File Reading Without Strict Validation\",\n \"description\": \"Dependency analyzer reads package files without path validation\",\n \"locations\": [\n {\n \"file\": \"python/analysis/dependency-analyzer.py\",\n \"line_start\": 32,\n \"line_end\": 40\n }\n ]\n }\n ],\n \"dangerous_patterns\": [\n {\n \"title\": \"Direct Shell Command Execution with User Input\",\n \"description\": \"Multiple scripts use shell execution patterns with user-controlled data\",\n \"locations\": [\n {\n \"file\": \"discover/cli.py\",\n \"line_start\": 177,\n \"line_end\": 178\n },\n {\n \"file\": \"bash/analysis/analyze-logs.sh\",\n \"line_start\": 84,\n \"line_end\": 88\n }\n ]\n }\n ],\n \"files_scanned\": 59,\n \"total_lines\": 7409,\n \"audit_model\": \"claude\",\n \"audited_at\": \"2026-01-17T04:30:26.124Z\"\n },\n \"content\": {\n \"user_title\": \"Integrate 18 CLI tools with intelligent discovery\",\n \"value_statement\": \"Developers waste time switching between disconnected development tools. This toolkit seamlessly integrates 8 custom AI tools with 10+ popular CLI utilities like ripgrep and jq through a unified discovery system.\",\n \"seo_keywords\": [\n \"AI toolkit\",\n \"CLI integration\",\n \"Claude Code tools\",\n \"developer productivity\",\n \"command line utilities\",\n \"tool discovery\",\n \"automation\",\n \"ripgrep\",\n \"jq\",\n \"fzf\"\n ],\n \"actual_capabilities\": [\n \"Auto-detects and manages 18+ development tools\",\n \"Runs dependency analysis for Python and JavaScript projects\",\n \"Performs code statistics and complexity analysis\",\n \"Tests APIs with configurable endpoints\",\n \"Analyzes log files with pattern matching\",\n \"Checks system and service health status\"\n ],\n \"limitations\": [\n \"Requires Python 3.6+ and Node.js for full functionality\",\n \"Some tools need external CLI utilities installed separately\",\n \"User-provided arguments to tools are not sanitized\",\n \"Bash-based tools have limited support on Windows\"\n ],\n \"use_cases\": [\n {\n \"target_user\": \"Software Developer\",\n \"title\": \"Analyze project dependencies\",\n \"description\": \"Quickly understand your project's dependency tree and identify outdated packages across Python and JavaScript codebases.\"\n },\n {\n \"target_user\": \"DevOps Engineer\",\n \"title\": \"Monitor system health\",\n \"description\": \"Check service availability, disk usage, and analyze logs from multiple servers through a single interface.\"\n },\n {\n \"target_user\": \"QA Tester\",\n \"title\": \"Test REST APIs\",\n \"description\": \"Validate API endpoints with customizable test scenarios and generate detailed response reports.\"\n }\n ],\n \"prompt_templates\": [\n {\n \"title\": \"Quick tool discovery\",\n \"scenario\": \"Find available tools\",\n \"prompt\": \"List all available tools in my toolkit and show their basic functions\"\n },\n {\n \"title\": \"Dependency analysis\",\n \"scenario\": \"Analyze project dependencies\",\n \"prompt\": \"Run dependency analyzer on current directory and show outdated packages\"\n },\n {\n \"title\": \"Log analysis\",\n \"scenario\": \"Debug application errors\",\n \"prompt\": \"Analyze app.log for ERROR patterns and show common error types\"\n },\n {\n \"title\": \"Service monitoring\",\n \"scenario\": \"Check system health\",\n \"prompt\": \"Check if all services are running and disk usage is below 80 percent\"\n }\n ],\n \"output_examples\": [\n {\n \"input\": \"Analyze my Python project dependencies\",\n \"output\": [\n \"Found 12 Python dependencies in requirements.txt\",\n \"Outdated packages:\",\n \" - requests: 2.25.1 → 2.28.2\",\n \" - django: 3.2.0 → 4.1.7\",\n \"Security vulnerabilities:\",\n \" - urllib3 (CVE-2021-33503)\",\n \"Recommendations:\",\n \" - Update requests for performance improvements\",\n \" - Upgrade django for security patches\"\n ]\n },\n {\n \"input\": \"Check my service health\",\n \"output\": [\n \"Checking auth-service (HTTP):\",\n \" - URL: http://localhost:3000/health\",\n \" - Status: 200 OK\",\n \" - Response time: 45ms\",\n \"Service is healthy and responding correctly\"\n ]\n },\n {\n \"input\": \"Show me all available tools\",\n \"output\": [\n \"Available tools (8 internal, 10+ external):\",\n \" INTERNAL TOOLS:\",\n \" - dependency-analyzer: Analyze project dependencies\",\n \" - code-stats: Calculate code statistics\",\n \" - service-check: Check service health\",\n \" - log-analyzer: Analyze log files\",\n \" EXTERNAL TOOLS:\",\n \" - fzf: Fuzzy file finder\",\n \" - ripgrep: Fast code search\",\n \" - jq: JSON processor\",\n \" - eza: Modern file listing\"\n ]\n }\n ],\n \"best_practices\": [\n \"Validate all user inputs before passing them to tools\",\n \"Install external CLI tools (fzf, ripgrep, jq) separately for full functionality\",\n \"Run tools in test environments before using on production systems\"\n ],\n \"anti_patterns\": [\n \"Running tools with root privileges without understanding their function\",\n \"Using unvalidated user input in tool parameters or file paths\",\n \"Ignoring security warnings about command injection vulnerabilities\"\n ],\n \"faq\": [\n {\n \"question\": \"Is this compatible with Claude Code?\",\n \"answer\": \"Yes, the toolkit integrates seamlessly with Claude Code and provides enhanced tool discovery.\"\n },\n {\n \"question\": \"What is the maximum file size for analysis?\",\n \"answer\": \"Individual tools handle files up to 100MB efficiently. Larger files may require streaming approaches.\"\n },\n {\n \"question\": \"Can I add my own tools?\",\n \"answer\": \"Yes, create a .meta.yml file following the standard format to register custom tools.\"\n },\n {\n \"question\": \"How is my data protected?\",\n \"answer\": \"Tools process data locally. No information is sent to external servers except for API testing tools.\"\n },\n {\n \"question\": \"Why does tool execution fail?\",\n \"answer\": \"Check that external dependencies are installed and verify file permissions for the tools.\"\n },\n {\n \"question\": \"How does this compare to native CLI tools?\",\n \"answer\": \"The toolkit provides unified discovery and metadata management while preserving the full power of native CLI tools.\"\n }\n ]\n },\n \"file_structure\": [\n {\n \"name\": \"bash\",\n \"type\": \"dir\",\n \"path\": \"bash\",\n \"children\": [\n {\n \"name\": \"analysis\",\n \"type\": \"dir\",\n \"path\": \"bash/analysis\",\n \"children\": [\n {\n \"name\": \"analyze-logs.meta.yml\",\n \"type\": \"file\",\n \"path\": \"bash/analysis/analyze-logs.meta.yml\",\n \"lines\": 89\n },\n {\n \"name\": \"analyze-logs.sh\",\n \"type\": \"file\",\n \"path\": \"bash/analysis/analyze-logs.sh\",\n \"lines\": 172\n }\n ]\n },\n {\n \"name\": \"system\",\n \"type\": \"dir\",\n \"path\": \"bash/system\",\n \"children\": [\n {\n \"name\": \"check-disk.meta.yml\",\n \"type\": \"file\",\n \"path\": \"bash/system/check-disk.meta.yml\",\n \"lines\": 87\n },\n {\n \"name\": \"check-disk.sh\",\n \"type\": \"file\",\n \"path\": \"bash/system/check-disk.sh\",\n \"lines\": 247\n },\n {\n \"name\": \"check-service.meta.yml\",\n \"type\": \"file\",\n \"path\": \"bash/system/check-service.meta.yml\",\n \"lines\": 81\n },\n {\n \"name\": \"check-service.sh\",\n \"type\": \"file\",\n \"path\": \"bash/system/check-service.sh\",\n \"lines\": 77\n }\n ]\n }\n ]\n },\n {\n \"name\": \"discover\",\n \"type\": \"dir\",\n \"path\": \"discover\",\n \"children\": [\n {\n \"name\": \"config\",\n \"type\": \"dir\",\n \"path\": \"discover/config\",\n \"children\": [\n {\n \"name\": \"__init__.py\",\n \"type\": \"file\",\n \"path\": \"discover/config/__init__.py\",\n \"lines\": 14\n },\n {\n \"name\": \"external_tools.yaml\",\n \"type\": \"file\",\n \"path\": \"discover/config/external_tools.yaml\",\n \"lines\": 114\n }\n ]\n },\n {\n \"name\": \"detectors\",\n \"type\": \"dir\",\n \"path\": \"discover/detectors\",\n \"children\": [\n {\n \"name\": \"__init__.py\",\n \"type\": \"file\",\n \"path\": \"discover/detectors/__init__.py\",\n \"lines\": 14\n },\n {\n \"name\": \"base.py\",\n \"type\": \"file\",\n \"path\": \"discover/detectors/base.py\",\n \"lines\": 52\n },\n {\n \"name\": \"external.py\",\n \"type\": \"file\",\n \"path\": \"discover/detectors/external.py\",\n \"lines\": 130\n },\n {\n \"name\": \"internal.py\",\n \"type\": \"file\",\n \"path\": \"discover/detectors/internal.py\",\n \"lines\": 138\n }\n ]\n },\n {\n \"name\": \"formatters\",\n \"type\": \"dir\",\n \"path\": \"discover/formatters\",\n \"children\": [\n {\n \"name\": \"__init__.py\",\n \"type\": \"file\",\n \"path\": \"discover/formatters/__init__.py\",\n \"lines\": 14\n },\n {\n \"name\": \"base.py\",\n \"type\": \"file\",\n \"path\": \"discover/formatters/base.py\",\n \"lines\": 38\n },\n {\n \"name\": \"json.py\",\n \"type\": \"file\",\n \"path\": \"discover/formatters/json.py\",\n \"lines\": 68\n },\n {\n \"name\": \"table.py\",\n \"type\": \"file\",\n \"path\": \"discover/formatters/table.py\",\n \"lines\": 179\n }\n ]\n },\n {\n \"name\": \"models\",\n \"type\": \"dir\",\n \"path\": \"discover/models\",\n \"children\": [\n {\n \"name\": \"__init__.py\",\n \"type\": \"file\",\n \"path\": \"discover/models/__init__.py\",\n \"lines\": 14\n },\n {\n \"name\": \"tool.py\",\n \"type\": \"file\",\n \"path\": \"discover/models/tool.py\",\n \"lines\": 108\n }\n ]\n },\n {\n \"name\": \"__init__.py\",\n \"type\": \"file\",\n \"path\": \"discover/__init__.py\",\n \"lines\": 37\n },\n {\n \"name\": \"__main__.py\",\n \"type\": \"file\",\n \"path\": \"discover/__main__.py\",\n \"lines\": 9\n },\n {\n \"name\": \"cli.py\",\n \"type\": \"file\",\n \"path\": \"discover/cli.py\",\n \"lines\": 231\n },\n {\n \"name\": \"discovery.py\",\n \"type\": \"file\",\n \"path\": \"discover/discovery.py\",\n \"lines\": 223\n }\n ]\n },\n {\n \"name\": \"docs\",\n \"type\": \"dir\",\n \"path\": \"docs\",\n \"children\": [\n {\n \"name\": \"concepts\",\n \"type\": \"dir\",\n \"path\": \"docs/concepts\",\n \"children\": [\n {\n \"name\": \"toolkit-philosophy.md\",\n \"type\": \"file\",\n \"path\": \"docs/concepts/toolkit-philosophy.md\",\n \"lines\": 79\n }\n ]\n },\n {\n \"name\": \"guides\",\n \"type\": \"dir\",\n \"path\": \"docs/guides\",\n \"children\": [\n {\n \"name\": \"creating-tools.md\",\n \"type\": \"file\",\n \"path\": \"docs/guides/creating-tools.md\",\n \"lines\": 407\n },\n {\n \"name\": \"external-integration.md\",\n \"type\": \"file\",\n \"path\": \"docs/guides/external-integration.md\",\n \"lines\": 262\n },\n {\n \"name\": \"quickstart.md\",\n \"type\": \"file\",\n \"path\": \"docs/guides/quickstart.md\",\n \"lines\": 128\n }\n ]\n },\n {\n \"name\": \"references\",\n \"type\": \"dir\",\n \"path\": \"docs/references\",\n \"children\": [\n {\n \"name\": \"external-tools.md\",\n \"type\": \"file\",\n \"path\": \"docs/references/external-tools.md\",\n \"lines\": 195\n },\n {\n \"name\": \"internal-tools.md\",\n \"type\": \"file\",\n \"path\": \"docs/references/internal-tools.md\",\n \"lines\": 299\n }\n ]\n },\n {\n \"name\": \"tools\",\n \"type\": \"dir\",\n \"path\": \"docs/tools\",\n \"children\": [\n {\n \"name\": \"external\",\n \"type\": \"dir\",\n \"path\": \"docs/tools/external\",\n \"children\": [\n {\n \"name\": \"bat.md\",\n \"type\": \"file\",\n \"path\": \"docs/tools/external/bat.md\",\n \"lines\": 65\n },\n {\n \"name\": \"eza.md\",\n \"type\": \"file\",\n \"path\": \"docs/tools/external/eza.md\",\n \"lines\": 61\n },\n {\n \"name\": \"fzf.md\",\n \"type\": \"file\",\n \"path\": \"docs/tools/external/fzf.md\",\n \"lines\": 82\n },\n {\n \"name\": \"jq.md\",\n \"type\": \"file\",\n \"path\": \"docs/tools/external/jq.md\",\n \"lines\": 95\n },\n {\n \"name\": \"ripgrep.md\",\n \"type\": \"file\",\n \"path\": \"docs/tools/external/ripgrep.md\",\n \"lines\": 69\n },\n {\n \"name\": \"zoxide.md\",\n \"type\": \"file\",\n \"path\": \"docs/tools/external/zoxide.md\",\n \"lines\": 76\n }\n ]\n }\n ]\n },\n {\n \"name\": \"STRUCTURE-REFACTORING.md\",\n \"type\": \"file\",\n \"path\": \"docs/STRUCTURE-REFACTORING.md\",\n \"lines\": 87\n }\n ]\n },\n {\n \"name\": \"external\",\n \"type\": \"dir\",\n \"path\": \"external\",\n \"children\": [\n {\n \"name\": \"api-testing\",\n \"type\": \"dir\",\n \"path\": \"external/api-testing\",\n \"children\": [\n {\n \"name\": \"xh.meta.yml\",\n \"type\": \"file\",\n \"path\": \"external/api-testing/xh.meta.yml\",\n \"lines\": 27\n }\n ]\n },\n {\n \"name\": \"code-search\",\n \"type\": \"dir\",\n \"path\": \"external/code-search\",\n \"children\": [\n {\n \"name\": \"ripgrep.meta.yml\",\n \"type\": \"file\",\n \"path\": \"external/code-search/ripgrep.meta.yml\",\n \"lines\": 29\n }\n ]\n },\n {\n \"name\": \"data-processing\",\n \"type\": \"dir\",\n \"path\": \"external/data-processing\",\n \"children\": [\n {\n \"name\": \"jq.meta.yml\",\n \"type\": \"file\",\n \"path\": \"external/data-processing/jq.meta.yml\",\n \"lines\": 28\n }\n ]\n },\n {\n \"name\": \"file-listing\",\n \"type\": \"dir\",\n \"path\": \"external/file-listing\",\n \"children\": [\n {\n \"name\": \"eza.meta.yml\",\n \"type\": \"file\",\n \"path\": \"external/file-listing/eza.meta.yml\",\n \"lines\": 29\n }\n ]\n },\n {\n \"name\": \"file-search\",\n \"type\": \"dir\",\n \"path\": \"external/file-search\",\n \"children\": [\n {\n \"name\": \"fd.meta.yml\",\n \"type\": \"file\",\n \"path\": \"external/file-search/fd.meta.yml\",\n \"lines\": 27\n }\n ]\n },\n {\n \"name\": \"file-viewer\",\n \"type\": \"dir\",\n \"path\": \"external/file-viewer\",\n \"children\": [\n {\n \"name\": \"bat.meta.yml\",\n \"type\": \"file\",\n \"path\": \"external/file-viewer/bat.meta.yml\",\n \"lines\": 27\n }\n ]\n },\n {\n \"name\": \"git-tools\",\n \"type\": \"dir\",\n \"path\": \"external/git-tools\",\n \"children\": [\n {\n \"name\": \"delta.meta.yml\",\n \"type\": \"file\",\n \"path\": \"external/git-tools/delta.meta.yml\",\n \"lines\": 27\n }\n ]\n },\n {\n \"name\": \"navigation\",\n \"type\": \"dir\",\n \"path\": \"external/navigation\",\n \"children\": [\n {\n \"name\": \"zoxide.meta.yml\",\n \"type\": \"file\",\n \"path\": \"external/navigation/zoxide.meta.yml\",\n \"lines\": 27\n }\n ]\n },\n {\n \"name\": \"search\",\n \"type\": \"dir\",\n \"path\": \"external/search\",\n \"children\": [\n {\n \"name\": \"fzf.meta.yml\",\n \"type\": \"file\",\n \"path\": \"external/search/fzf.meta.yml\",\n \"lines\": 31\n }\n ]\n },\n {\n \"name\": \"shell-enhancement\",\n \"type\": \"dir\",\n \"path\": \"external/shell-enhancement\",\n \"children\": [\n {\n \"name\": \"starship.meta.yml\",\n \"type\": \"file\",\n \"path\": \"external/shell-enhancement/starship.meta.yml\",\n \"lines\": 28\n }\n ]\n },\n {\n \"name\": \"README.md\",\n \"type\": \"file\",\n \"path\": \"external/README.md\",\n \"lines\": 140\n }\n ]\n },\n {\n \"name\": \"node\",\n \"type\": \"dir\",\n \"path\": \"node\",\n \"children\": [\n {\n \"name\": \"api\",\n \"type\": \"dir\",\n \"path\": \"node/api\",\n \"children\": [\n {\n \"name\": \"test-api.js\",\n \"type\": \"file\",\n \"path\": \"node/api/test-api.js\",\n \"lines\": 313\n }\n ]\n }\n ]\n },\n {\n \"name\": \"python\",\n \"type\": \"dir\",\n \"path\": \"python\",\n \"children\": [\n {\n \"name\": \"analysis\",\n \"type\": \"dir\",\n \"path\": \"python/analysis\",\n \"children\": [\n {\n \"name\": \"code-stats.meta.yml\",\n \"type\": \"file\",\n \"path\": \"python/analysis/code-stats.meta.yml\",\n \"lines\": 96\n },\n {\n \"name\": \"code-stats.py\",\n \"type\": \"file\",\n \"path\": \"python/analysis/code-stats.py\",\n \"lines\": 364\n },\n {\n \"name\": \"dependency-analyzer.meta.yml\",\n \"type\": \"file\",\n \"path\": \"python/analysis/dependency-analyzer.meta.yml\",\n \"lines\": 91\n },\n {\n \"name\": \"dependency-analyzer.py\",\n \"type\": \"file\",\n \"path\": \"python/analysis/dependency-analyzer.py\",\n \"lines\": 219\n }\n ]\n }\n ]\n },\n {\n \"name\": \"references\",\n \"type\": \"dir\",\n \"path\": \"references\",\n \"children\": [\n {\n \"name\": \"core\",\n \"type\": \"dir\",\n \"path\": \"references/core\",\n \"children\": [\n {\n \"name\": \"toolkit-philosophy.md\",\n \"type\": \"file\",\n \"path\": \"references/core/toolkit-philosophy.md\",\n \"lines\": 188\n }\n ]\n },\n {\n \"name\": \"guides\",\n \"type\": \"dir\",\n \"path\": \"references/guides\",\n \"children\": [\n {\n \"name\": \"quickstart.md\",\n \"type\": \"file\",\n \"path\": \"references/guides/quickstart.md\",\n \"lines\": 296\n }\n ]\n }\n ]\n },\n {\n \"name\": \"discover-toolkit.py\",\n \"type\": \"file\",\n \"path\": \"discover-toolkit.py\",\n \"lines\": 53\n },\n {\n \"name\": \"EXTERNAL-TOOLS-SKILL.md\",\n \"type\": \"file\",\n \"path\": \"EXTERNAL-TOOLS-SKILL.md\",\n \"lines\": 175\n },\n {\n \"name\": \"EXTERNAL-TOOLS.md\",\n \"type\": \"file\",\n \"path\": \"EXTERNAL-TOOLS.md\",\n \"lines\": 70\n },\n {\n \"name\": \"registry.md\",\n \"type\": \"file\",\n \"path\": \"registry.md\",\n \"lines\": 91\n },\n {\n \"name\": \"SKILL.md\",\n \"type\": \"file\",\n \"path\": \"SKILL.md\",\n \"lines\": 140\n }\n ]\n}\n","content_type":"application/json; charset=utf-8","language":"json","size":26297,"content_sha256":"2c86677fc5beab8a6b65bc5e53db9658254b7028b51f35c10dd90cc1f729c3d5"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"AI Runtime 工具装备系统","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"概述","type":"text"}]},{"type":"paragraph","content":[{"text":"工具装备是AI Runtime的","type":"text"},{"text":"外置能力扩展系统","type":"text","marks":[{"type":"strong"}]},{"text":",遵循\"","type":"text"},{"text":"整合 > 创造","type":"text","marks":[{"type":"strong"}]},{"text":"\"的核心理念,通过智能整合成熟的CLI工具和自主创建的专业工具,实现认知能力的有效扩展。","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"核心能力","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"双重工具体系","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"内部工具","type":"text","marks":[{"type":"strong"}]},{"text":": AI Runtime自主创建的专业工具(8个)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"外部工具","type":"text","marks":[{"type":"strong"}]},{"text":": 深度整合的成熟CLI工具(10+个)","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"智能发现系统","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"自动工具检测和注册","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"元数据驱动的管理机制","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"命令行和编程接口双重支持","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"快速开始","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"查看所有工具","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# 进入工具装备目录\ncd toolkit\n\n# 查看所有工具\npython3 discover-toolkit.py list\n\n# 查看外部工具\npython3 discover-toolkit.py list --external","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"使用工具","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# 查看工具详情\npython3 discover-toolkit.py show SERVICE-CHECK-001\n\n# 运行工具\npython3 discover-toolkit.py run dependency-analyzer . -o deps.json\n\n# 搜索工具\npython3 discover-toolkit.py search monitor","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"工具分类","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"内部工具(自主创建)","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Python工具","type":"text","marks":[{"type":"strong"}]},{"text":": 依赖分析器、代码统计器、图形生成器、报告生成器","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Bash工具","type":"text","marks":[{"type":"strong"}]},{"text":": 服务健康检查器、日志分析器、磁盘健康检查器","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Node.js工具","type":"text","marks":[{"type":"strong"}]},{"text":": API测试工具","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"外部工具(深度整合)","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"基础必备","type":"text","marks":[{"type":"strong"}]},{"text":": fzf、eza、bat、ripgrep、zoxide、jq","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"搜索增强","type":"text","marks":[{"type":"strong"}]},{"text":": fd、ripgrep","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"数据处理","type":"text","marks":[{"type":"strong"}]},{"text":": jq","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"界面优化","type":"text","marks":[{"type":"strong"}]},{"text":": fzf、eza、bat、starship","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"渐进式披露文档架构","type":"text"}]},{"type":"paragraph","content":[{"text":"基于 anthropics/skills 设计,按需加载详细信息:","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"核心理念","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"工具哲学","type":"text","marks":[{"type":"link","attrs":{"href":"references/core/toolkit-philosophy.md","title":null}},{"type":"strong"}]},{"text":" - 设计理念、分类体系和发展策略","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"使用指南","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"快速开始","type":"text","marks":[{"type":"link","attrs":{"href":"references/guides/quickstart.md","title":null}},{"type":"strong"}]},{"text":" - 10分钟上手工具装备系统","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"详细参考","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"内部工具详解","type":"text","marks":[{"type":"link","attrs":{"href":"../docs/references/internal-tools.md","title":null}},{"type":"strong"}]},{"text":" - 8个自主创建工具的详细说明","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"外部工具集成","type":"text","marks":[{"type":"link","attrs":{"href":"../docs/references/external-tools.md","title":null}},{"type":"strong"}]},{"text":" - 10+个CLI工具的整合指南","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"开发指南","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"创建新工具","type":"text","marks":[{"type":"link","attrs":{"href":"../docs/guides/creating-tools.md","title":null}},{"type":"strong"}]},{"text":" - 工具开发流程和最佳实践","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"外部工具整合","type":"text","marks":[{"type":"link","attrs":{"href":"../docs/guides/external-integration.md","title":null}},{"type":"strong"}]},{"text":" - 整合第三方CLI工具","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"设计理念","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"整合优于创造","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"成熟工具","type":"text","marks":[{"type":"strong"}]},{"text":": 使用经过社区验证的CLI工具","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"专注专业","type":"text","marks":[{"type":"strong"}]},{"text":": 每个工具只做一件事,做到极致","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"认知卸载","type":"text","marks":[{"type":"strong"}]},{"text":": 直接使用,无需重复开发","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"元数据驱动","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":".meta.yml","type":"text","marks":[{"type":"strong"}]},{"text":": 工具元数据标准格式","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"自动发现","type":"text","marks":[{"type":"strong"}]},{"text":": 基于文件系统结构自动注册","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"类型安全","type":"text","marks":[{"type":"strong"}]},{"text":": 明确的工具分类和版本管理","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"使用场景","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"代码分析","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# 分析项目依赖\npython3 discover-toolkit.py run dependency-analyzer . -o deps.json\n\n# 生成代码统计\npython3 discover-toolkit.py run code-stats src/ -o stats.json","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"系统监控","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# 检查服务健康\npython3 discover-toolkit.py run service-check http://localhost:3000\n\n# 分析日志文件\npython3 discover-toolkit.py run log-analyzer /var/log/app.log --level ERROR","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"数据处理","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# 处理JSON数据\ncat data.json | jq '.items[] | select(.status == \"active\")'\n\n# 搜索代码\nrg \"TODO|FIXME\" src/","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"相关系统","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"宪法文档","type":"text","marks":[{"type":"link","attrs":{"href":"../.ai-runtime/constitution.md","title":null}},{"type":"strong"}]},{"text":" - 治理原则和约束","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"记忆系统","type":"text","marks":[{"type":"link","attrs":{"href":"../memory/","title":null}},{"type":"strong"}]},{"text":" - 分层记忆管理","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"认知记录","type":"text","marks":[{"type":"link","attrs":{"href":"../cognition/","title":null}},{"type":"strong"}]},{"text":" - 分析洞察和探索报告","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"命令系统","type":"text","marks":[{"type":"link","attrs":{"href":"../commands/","title":null}},{"type":"strong"}]},{"text":" - 运行时命令和交互","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"版本信息","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"版本","type":"text","marks":[{"type":"strong"}]},{"text":": 2.0.0","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"内部工具","type":"text","marks":[{"type":"strong"}]},{"text":": 8个","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"外部工具","type":"text","marks":[{"type":"strong"}]},{"text":": 10+个","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"最后更新","type":"text","marks":[{"type":"strong"}]},{"text":": 2025-11-14","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"基于 anthropics/skills 渐进式披露架构设计","type":"text","marks":[{"type":"em"}]}]}]},"metadata":{"date":"2026-06-05","name":"ai-runtime-toolkit","author":"@skillopedia","source":{"stars":336,"repo_name":"marketplace","origin_url":"https://github.com/aiskillstore/marketplace/blob/HEAD/skills/dwsy/ai-runtime-toolkit/SKILL.md","repo_owner":"aiskillstore","body_sha256":"f4e957f79ea77af2a94111f90ffd52a14ccec83701d46c46073b5259b2b13052","cluster_key":"ff3e682870f388329ff418c117a7a4241fd3af23f5923bc7cdbc35a8e870c45c","clean_bundle":{"format":"clean-skill-bundle-v1","source":"aiskillstore/marketplace/skills/dwsy/ai-runtime-toolkit/SKILL.md","attachments":[{"id":"58d45b1e-d58f-5fdc-9dab-5441b807e839","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/58d45b1e-d58f-5fdc-9dab-5441b807e839/attachment.md","path":"EXTERNAL-TOOLS-SKILL.md","size":3868,"sha256":"bf86b0d0d8bd4d80806f9f74b73de264201750174673356980acfb4fc1bcf2f6","contentType":"text/markdown; charset=utf-8"},{"id":"de1939d2-703c-5b47-bf08-b9583cf52762","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/de1939d2-703c-5b47-bf08-b9583cf52762/attachment.md","path":"EXTERNAL-TOOLS.md","size":2067,"sha256":"3f475448e26ff9fe66616c1d0f54f685ab9056d9477c193e1c2cf14a7505cbcf","contentType":"text/markdown; charset=utf-8"},{"id":"48701817-fd38-50a7-b24d-39c4d1cbf68c","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/48701817-fd38-50a7-b24d-39c4d1cbf68c/attachment.yml","path":"bash/analysis/analyze-logs.meta.yml","size":2976,"sha256":"716ed357901f1688fc8bc0b151f26e740e9c1d441a420a30e69927104ff953fe","contentType":"application/yaml; charset=utf-8"},{"id":"0ecf725a-5081-5ec6-942e-9d2f791748f9","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0ecf725a-5081-5ec6-942e-9d2f791748f9/attachment.sh","path":"bash/analysis/analyze-logs.sh","size":5014,"sha256":"59faf1c5703f0f05edca756c6a13476368265a9cede2d55ef5c33f8def3f5562","contentType":"application/x-sh; charset=utf-8"},{"id":"020ceeba-fc78-57a3-92e3-6ba3819f72df","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/020ceeba-fc78-57a3-92e3-6ba3819f72df/attachment.yml","path":"bash/system/check-disk.meta.yml","size":2708,"sha256":"45bf55131155467eaa91e2c88ac149fd2d88d64a41d15c6d7a14057d2ab84900","contentType":"application/yaml; charset=utf-8"},{"id":"183b5951-2541-5ecf-a14c-9acd5165e8a6","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/183b5951-2541-5ecf-a14c-9acd5165e8a6/attachment.sh","path":"bash/system/check-disk.sh","size":6990,"sha256":"2f686303b1c77de50c29c20e2b34b10e0c3ddeff7a029c33a14898e1bcad408c","contentType":"application/x-sh; charset=utf-8"},{"id":"9be81774-b302-5871-bb72-a6575bd40790","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/9be81774-b302-5871-bb72-a6575bd40790/attachment.yml","path":"bash/system/check-service.meta.yml","size":2263,"sha256":"8466c3857221be287b0303f4fea3607b69be5ddb9efb795fd899ece7163c933b","contentType":"application/yaml; charset=utf-8"},{"id":"2e317e86-8422-5d51-8229-1a9231eb2cc4","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/2e317e86-8422-5d51-8229-1a9231eb2cc4/attachment.sh","path":"bash/system/check-service.sh","size":1914,"sha256":"fc4964db0ab04ff11569b481606e0361bde48f787dcc70e850ea627fb1cec005","contentType":"application/x-sh; charset=utf-8"},{"id":"f2ecd1a1-640c-56d2-aa69-10f5241671dc","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/f2ecd1a1-640c-56d2-aa69-10f5241671dc/attachment.py","path":"discover-toolkit.py","size":1665,"sha256":"9ab0385a396c38d191a49a95dfb43c2f7c3ff320f6e3a57e18c9a448788ac837","contentType":"text/x-python; charset=utf-8"},{"id":"16bfb6e0-de5d-5068-810b-9d79c61fa617","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/16bfb6e0-de5d-5068-810b-9d79c61fa617/attachment.py","path":"discover/__init__.py","size":777,"sha256":"4a32fa1e95335246e5ea37c6764584308313470a6c4b7265aa949ba225d46d42","contentType":"text/x-python; charset=utf-8"},{"id":"857b44fd-7c95-591f-b8aa-012c694edce2","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/857b44fd-7c95-591f-b8aa-012c694edce2/attachment.py","path":"discover/__main__.py","size":105,"sha256":"fe0edead9a7015205645310fdc4c058be7875e7575314329db6d7ba35a3e967f","contentType":"text/x-python; charset=utf-8"},{"id":"8e2cf630-55ec-5c43-8bdc-2e48daea59f9","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/8e2cf630-55ec-5c43-8bdc-2e48daea59f9/attachment.py","path":"discover/cli.py","size":7797,"sha256":"ee033a3039e2348a02cbf431dff772d04d6b645bd19160c703d978a6ec4a490f","contentType":"text/x-python; charset=utf-8"},{"id":"88e4dcff-0b5b-5b78-815b-12c54786ea79","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/88e4dcff-0b5b-5b78-815b-12c54786ea79/attachment.py","path":"discover/config/__init__.py","size":240,"sha256":"b05e9f58b2ecda1175d24178320a93c31fbf6ed9bed01f25d1348b25ab541c70","contentType":"text/x-python; charset=utf-8"},{"id":"ddaaf27f-c062-5d0d-b9cb-4e9113b273d5","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/ddaaf27f-c062-5d0d-b9cb-4e9113b273d5/attachment.yaml","path":"discover/config/external_tools.yaml","size":3217,"sha256":"600fb1a05b9c168e6590180bf38851d4a2f49f8184dd15b7926bda71567f0a7c","contentType":"application/yaml; charset=utf-8"},{"id":"c3884522-27b5-5843-a75d-d4e8ff28f8f6","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/c3884522-27b5-5843-a75d-d4e8ff28f8f6/attachment.py","path":"discover/detectors/__init__.py","size":238,"sha256":"8a9b3b536b9e79bfd2ae4344b94114f56e0e8bd3d09d0ef81b17263cb699d822","contentType":"text/x-python; charset=utf-8"},{"id":"85fc32a6-6765-5e3e-b167-a937ae8f266f","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/85fc32a6-6765-5e3e-b167-a937ae8f266f/attachment.py","path":"discover/detectors/base.py","size":1041,"sha256":"6d2556e21b5ee9062f721e64f4268472678e00bb648e9660c08ea6ca19a5f5c3","contentType":"text/x-python; charset=utf-8"},{"id":"404a429d-8175-5a73-bb1c-2e7d5ec46fe9","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/404a429d-8175-5a73-bb1c-2e7d5ec46fe9/attachment.py","path":"discover/detectors/external.py","size":4067,"sha256":"fc6cb9ab6ada22531d3a9e1368912a24aa5e99144477518742acd265abb4807f","contentType":"text/x-python; charset=utf-8"},{"id":"5487f485-e374-572d-9806-2fcd88593138","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/5487f485-e374-572d-9806-2fcd88593138/attachment.py","path":"discover/detectors/internal.py","size":4781,"sha256":"e23ae22474c1fa6bf2b3dd4751531699303a4eca2ae198bd21d88145aa4e12e0","contentType":"text/x-python; charset=utf-8"},{"id":"6a71fabc-276b-5338-ae39-bc4017e7990c","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/6a71fabc-276b-5338-ae39-bc4017e7990c/attachment.py","path":"discover/discovery.py","size":6169,"sha256":"00d47b6163191ebbe2810a9e44ec096f6573b9acdd34e83655add295232f612e","contentType":"text/x-python; charset=utf-8"},{"id":"74c62618-aa19-5179-8149-3c22f415d1c6","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/74c62618-aa19-5179-8149-3c22f415d1c6/attachment.py","path":"discover/formatters/__init__.py","size":210,"sha256":"02b4f277506cf1eb097f27311847fa815672192d2cff30cb1106ead9f57b44ca","contentType":"text/x-python; charset=utf-8"},{"id":"40753183-d937-5f31-bc6d-09992e0fa145","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/40753183-d937-5f31-bc6d-09992e0fa145/attachment.py","path":"discover/formatters/base.py","size":698,"sha256":"574330b61747299c600b341fda14e7303efa78ac7047d3370a026fcaca1418e6","contentType":"text/x-python; charset=utf-8"},{"id":"8f9c8d9b-46e4-5fbd-9d5e-1532ea85ac91","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/8f9c8d9b-46e4-5fbd-9d5e-1532ea85ac91/attachment.py","path":"discover/formatters/json.py","size":2076,"sha256":"86ef938c68f2e58d1e4a12198df074dcbc57c65a0d41ee902618477911715705","contentType":"text/x-python; charset=utf-8"},{"id":"180704f0-c5db-52c0-894a-82c2df4f1281","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/180704f0-c5db-52c0-894a-82c2df4f1281/attachment.py","path":"discover/formatters/table.py","size":5532,"sha256":"03414d296f37f4774ff7d7106a4b963cbd63b84f276b64d1132a308c415d0d13","contentType":"text/x-python; charset=utf-8"},{"id":"56047eb0-e73a-58ef-b4d7-15d35572349e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/56047eb0-e73a-58ef-b4d7-15d35572349e/attachment.py","path":"discover/models/__init__.py","size":229,"sha256":"23b839d8080e92ddd79397a2ae7c03fbd3abf9ebbfe6148cac737ed4555cbd78","contentType":"text/x-python; charset=utf-8"},{"id":"40ee865f-6c76-527e-afa0-fe1f2dc99872","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/40ee865f-6c76-527e-afa0-fe1f2dc99872/attachment.py","path":"discover/models/tool.py","size":2588,"sha256":"74b20e242780a9145ca4e46dee096a6279a1a0b8657408135aaf7b4ac54e802d","contentType":"text/x-python; charset=utf-8"},{"id":"5dfe70f4-10b1-55ca-a868-c053f99441e4","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/5dfe70f4-10b1-55ca-a868-c053f99441e4/attachment.md","path":"docs/STRUCTURE-REFACTORING.md","size":2887,"sha256":"db5ac5f1dfe1aea45c499ded7c27b5d6ee1b7a1a353afeea46f0f091769a35f9","contentType":"text/markdown; charset=utf-8"},{"id":"39f18cf2-5f10-5eda-8827-949e2a0bd151","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/39f18cf2-5f10-5eda-8827-949e2a0bd151/attachment.md","path":"docs/concepts/toolkit-philosophy.md","size":2186,"sha256":"cecfb1f90fe9156bd64a75e258569b94d3f7893674e284b1ac3ac478eb006ae6","contentType":"text/markdown; charset=utf-8"},{"id":"9583ef2b-8b4b-5b0b-9766-7487af3ae7a9","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/9583ef2b-8b4b-5b0b-9766-7487af3ae7a9/attachment.md","path":"docs/guides/creating-tools.md","size":8113,"sha256":"b6b2a9dce58874d9833a0f4a7733a8f19405b49c31384ef1f38e853a44e6d49b","contentType":"text/markdown; charset=utf-8"},{"id":"90a338e9-946b-5a6b-9cee-2e6f19fb1633","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/90a338e9-946b-5a6b-9cee-2e6f19fb1633/attachment.md","path":"docs/guides/external-integration.md","size":6784,"sha256":"3c6160680003884eb09bd52b9eeaa0285470e1c73515cc22a2f9158c5915a4af","contentType":"text/markdown; charset=utf-8"},{"id":"bde30abb-0fed-5115-9a50-21c036f69b96","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/bde30abb-0fed-5115-9a50-21c036f69b96/attachment.md","path":"docs/guides/quickstart.md","size":3630,"sha256":"ec4fe6f220ce63163bcbfbaa9985f80331995ac914b459aaee84002840135855","contentType":"text/markdown; charset=utf-8"},{"id":"fdd15199-e7a2-5d94-80bc-84cd843c90a1","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/fdd15199-e7a2-5d94-80bc-84cd843c90a1/attachment.md","path":"docs/references/external-tools.md","size":5778,"sha256":"b9b652b55a088685abc872f13006b70dce66c1f855d47c5f54f72d0740936630","contentType":"text/markdown; charset=utf-8"},{"id":"db01c1a4-9ec9-5199-ba52-1f80a5ca7f44","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/db01c1a4-9ec9-5199-ba52-1f80a5ca7f44/attachment.md","path":"docs/references/internal-tools.md","size":7837,"sha256":"09f092eca8b34c4532249022f4fd436d56960166a3b9ecebeb0af36e143f2f47","contentType":"text/markdown; charset=utf-8"},{"id":"205bde77-2521-5cbd-8bb6-453cc1520436","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/205bde77-2521-5cbd-8bb6-453cc1520436/attachment.md","path":"docs/tools/external/bat.md","size":863,"sha256":"e6b14424adbbc0609655f320a4ccf0f71e3e5a0e9f3c8667a3c2b18f2a18be3e","contentType":"text/markdown; charset=utf-8"},{"id":"426af048-b4c9-5b2d-a858-4129af32d409","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/426af048-b4c9-5b2d-a858-4129af32d409/attachment.md","path":"docs/tools/external/eza.md","size":1012,"sha256":"6405e70192fc49abd1ed2db70eb77f5fc90f2ea0c0c202c5dd9c6eede7719443","contentType":"text/markdown; charset=utf-8"},{"id":"48d97ed0-726c-5cd4-b654-cfcf48707565","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/48d97ed0-726c-5cd4-b654-cfcf48707565/attachment.md","path":"docs/tools/external/fzf.md","size":1453,"sha256":"1c9abb63ca4bf7b0ff8f22ad06d03f143ebbc8e361f22a5509c55c1642a17752","contentType":"text/markdown; charset=utf-8"},{"id":"8bed4b8a-c78e-5b27-ba85-dfddbeedf208","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/8bed4b8a-c78e-5b27-ba85-dfddbeedf208/attachment.md","path":"docs/tools/external/jq.md","size":1724,"sha256":"f480e1354588de70f4c95aea5d70637597a7548def90530f82b9be07ec498919","contentType":"text/markdown; charset=utf-8"},{"id":"24452d0a-fe20-5366-8ed5-6da4bc123883","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/24452d0a-fe20-5366-8ed5-6da4bc123883/attachment.md","path":"docs/tools/external/ripgrep.md","size":1171,"sha256":"374bcb296780eb0f2a500415208f0402a2c0a9a5c884a774bf3d8368eb9e5b82","contentType":"text/markdown; charset=utf-8"},{"id":"f9b189c7-6fb5-503a-8ed9-87b9920a4f48","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/f9b189c7-6fb5-503a-8ed9-87b9920a4f48/attachment.md","path":"docs/tools/external/zoxide.md","size":1308,"sha256":"b95dd76aab08d899f63aeeca124db001371286085a54b843924c3168d17031b3","contentType":"text/markdown; charset=utf-8"},{"id":"f9c67420-9f24-52be-aa5d-081ec1b6474e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/f9c67420-9f24-52be-aa5d-081ec1b6474e/attachment.md","path":"external/README.md","size":4233,"sha256":"1f76df936700ee756087b7f1c91215059ab9464d0095597257aac6b33faf7658","contentType":"text/markdown; charset=utf-8"},{"id":"9ed9aa3f-9be7-5142-b427-ecec80078115","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/9ed9aa3f-9be7-5142-b427-ecec80078115/attachment.yml","path":"external/api-testing/xh.meta.yml","size":562,"sha256":"4999f7e9157953bd5e533f5d04f4f05aa876d6c7e14d67944469c3f80532b8cd","contentType":"application/yaml; charset=utf-8"},{"id":"51edce6a-a9be-56f4-9a87-c5115a6c9a52","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/51edce6a-a9be-56f4-9a87-c5115a6c9a52/attachment.yml","path":"external/code-search/ripgrep.meta.yml","size":571,"sha256":"2144b6c1d0875d1287178377d3612a9227f7985a0d4427e5c18eb7a3d0a4d380","contentType":"application/yaml; charset=utf-8"},{"id":"4894a276-07e2-5c91-a64c-417fd82748e0","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/4894a276-07e2-5c91-a64c-417fd82748e0/attachment.yml","path":"external/data-processing/jq.meta.yml","size":540,"sha256":"af718ac48a1f77a66ff9f255ffccf5292cddb78edcc9c83f8803f382e63a473a","contentType":"application/yaml; charset=utf-8"},{"id":"885020b2-7e4f-54c6-aeab-de2e33447343","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/885020b2-7e4f-54c6-aeab-de2e33447343/attachment.yml","path":"external/file-listing/eza.meta.yml","size":598,"sha256":"47471057614816a28bafa0ca5c467ba4950d3c71d9f226ecb4813bcb3102356a","contentType":"application/yaml; charset=utf-8"},{"id":"d3267b7f-aa9e-5581-98f3-362843c63d79","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/d3267b7f-aa9e-5581-98f3-362843c63d79/attachment.yml","path":"external/file-search/fd.meta.yml","size":504,"sha256":"2eb5f968873bc3bdb4f1444b0b1c91d5daa768448e59b02051047af059ddd95f","contentType":"application/yaml; charset=utf-8"},{"id":"3c0e2cb9-22e1-5b59-ac20-61abd5fd3f93","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/3c0e2cb9-22e1-5b59-ac20-61abd5fd3f93/attachment.yml","path":"external/file-viewer/bat.meta.yml","size":567,"sha256":"c883525fd61786482110cf8675395bf264f5422ec489bca215151b47def75322","contentType":"application/yaml; charset=utf-8"},{"id":"eef484c6-a5d4-55f3-a4c2-3918c40e97c4","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/eef484c6-a5d4-55f3-a4c2-3918c40e97c4/attachment.yml","path":"external/git-tools/delta.meta.yml","size":557,"sha256":"014393f41ca99efaa09d0c0cda38bdcb37fedf7a9f2ea9a4953d10e75d2fe348","contentType":"application/yaml; charset=utf-8"},{"id":"72a3bc4d-e459-51b9-a1c9-50d4079f9f06","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/72a3bc4d-e459-51b9-a1c9-50d4079f9f06/attachment.yml","path":"external/navigation/zoxide.meta.yml","size":637,"sha256":"f22ab43620f4231fc5cdb916b5f580506f0e3a053e14457359b631fbc573ed48","contentType":"application/yaml; charset=utf-8"},{"id":"21daaa1f-34e5-59f3-ae03-1678dd927841","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/21daaa1f-34e5-59f3-ae03-1678dd927841/attachment.yml","path":"external/search/fzf.meta.yml","size":726,"sha256":"5f0b0b282e2418c33e827a00d523b64d5b91366beb6d5e098c12de5e1debae56","contentType":"application/yaml; charset=utf-8"},{"id":"02054ee8-5a6f-5a44-958e-de30e7137348","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/02054ee8-5a6f-5a44-958e-de30e7137348/attachment.yml","path":"external/shell-enhancement/starship.meta.yml","size":616,"sha256":"953de8d0f3f6f5ae1fb63d407c6a44cbbeb24f368360890212a983e68a1fac4b","contentType":"application/yaml; charset=utf-8"},{"id":"be87cd4f-0fed-5c68-87bb-683ff6e7c30e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/be87cd4f-0fed-5c68-87bb-683ff6e7c30e/attachment.js","path":"node/api/test-api.js","size":8014,"sha256":"64b796eb0d97d310c4ea2b3cfcaa57efce47dceeb94d68e634ba2806bf36a6bb","contentType":"application/javascript; charset=utf-8"},{"id":"114323ca-d6dd-565f-ab62-075a545c4320","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/114323ca-d6dd-565f-ab62-075a545c4320/attachment.yml","path":"python/analysis/code-stats.meta.yml","size":3117,"sha256":"09018917a4a5f5526e53c3c28e136e3c146ea81f558c9c095cbbf50750624c1f","contentType":"application/yaml; charset=utf-8"},{"id":"52c47822-2149-5ac8-b086-4f8532f9d484","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/52c47822-2149-5ac8-b086-4f8532f9d484/attachment.py","path":"python/analysis/code-stats.py","size":12632,"sha256":"86faa62352ebde4b8673f0e8a379b82847074f3d475d6938731f9d3625b6aadb","contentType":"text/x-python; charset=utf-8"},{"id":"96160cbb-0241-57f1-bbf3-d0fb973b36df","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/96160cbb-0241-57f1-bbf3-d0fb973b36df/attachment.yml","path":"python/analysis/dependency-analyzer.meta.yml","size":2693,"sha256":"0995c7096cf0d1155dfee60e6b8a8337badc8748a8cc7e85f527151fa3b63562","contentType":"application/yaml; charset=utf-8"},{"id":"1720b96b-25d9-5b73-a41a-d44fa1184f94","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/1720b96b-25d9-5b73-a41a-d44fa1184f94/attachment.py","path":"python/analysis/dependency-analyzer.py","size":7541,"sha256":"71f52653661b2e1aab3ba8809fe5be47ee0ad731804f958f12cb3340fb3833f2","contentType":"text/x-python; charset=utf-8"},{"id":"cf96f647-28c3-56a9-a68f-793a2334583a","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/cf96f647-28c3-56a9-a68f-793a2334583a/attachment.md","path":"references/core/toolkit-philosophy.md","size":4969,"sha256":"24d4cd3c4f150a0a8d5148ec09fe32c2c37e214f255cac184ca47bea1e9f29de","contentType":"text/markdown; charset=utf-8"},{"id":"1df41708-10bd-5e3f-95f0-011e3bf1c934","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/1df41708-10bd-5e3f-95f0-011e3bf1c934/attachment.md","path":"references/guides/quickstart.md","size":6232,"sha256":"18d05457a492169beebe64114253b1945ec7faa99958f4054500450189259d0d","contentType":"text/markdown; charset=utf-8"},{"id":"ab5f282e-d47c-5285-bd18-eb9addc19157","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/ab5f282e-d47c-5285-bd18-eb9addc19157/attachment.md","path":"registry.md","size":2489,"sha256":"6a0074dc2ef48e2ead010f45dd68269e07d87fe8b7f988e524a57c3a67c33b10","contentType":"text/markdown; charset=utf-8"},{"id":"a491fd2c-502b-5a9f-a095-7023247e1c54","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/a491fd2c-502b-5a9f-a095-7023247e1c54/attachment.json","path":"skill-report.json","size":26297,"sha256":"2c86677fc5beab8a6b65bc5e53db9658254b7028b51f35c10dd90cc1f729c3d5","contentType":"application/json; charset=utf-8"}],"bundle_sha256":"6bbe8e4681f6d6e9379676f68903ec0761c3e42a82650e3a1b78ce4c44f763cb","attachment_count":58,"text_attachments":58,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":0,"excluded_attachments":[]},"cluster_size":1,"skill_md_path":"skills/dwsy/ai-runtime-toolkit/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"general","category_label":"General"},"exact_dupes_collapsed_into_this":0},"license":"MIT","version":"v1","category":"general","import_tag":"clean-skills-v1","description":"AI Runtime工具装备系统,支持8个内部专业工具和10+个外部CLI工具的整合管理,提供工具发现、执行和配置功能,遵循整合优于创造的设计理念"}},"renderedAt":1782986984905}

AI Runtime 工具装备系统 概述 工具装备是AI Runtime的 外置能力扩展系统 ,遵循" 整合 创造 "的核心理念,通过智能整合成熟的CLI工具和自主创建的专业工具,实现认知能力的有效扩展。 核心能力 双重工具体系 - 内部工具 : AI Runtime自主创建的专业工具(8个) - 外部工具 : 深度整合的成熟CLI工具(10+个) 智能发现系统 - 自动工具检测和注册 - 元数据驱动的管理机制 - 命令行和编程接口双重支持 快速开始 查看所有工具 使用工具 工具分类 内部工具(自主创建) - Python工具 : 依赖分析器、代码统计器、图形生成器、报告生成器 - Bash工具 : 服务健康检查器、日志分析器、磁盘健康检查器 - Node.js工具 : API测试工具 外部工具(深度整合) - 基础必备 : fzf、eza、bat、ripgrep、zoxide、jq - 搜索增强 : fd、ripgrep - 数据处理 : jq - 界面优化 : fzf、eza、bat、starship 渐进式披露文档架构 基于 anthropics/skills 设计,按需加载详细信息: 核心理念 - 工具哲学 - 设计理念、分类体系和发展策略 使用指南 - 快速开始 - 10分钟上手工具装备系统 详细参考 - 内部工具详解 - 8个自主创建工具的详细说明 - 外部工具集成…