尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Skill_Seekers 三流 GitHub 架构解析:代码、文档与社区洞察的统一分析流水线

Skill_Seekers 三流 GitHub 架构解析:代码、文档与社区洞察的统一分析流水线 Skill_Seekers 三流 GitHub 架构解析代码、文档与社区洞察的统一分析流水线【免费下载链接】Skill_SeekersConvert documentation websites, GitHub repositories, and PDFs into Claude AI skills with automatic conflict detection项目地址: https://gitcode.com/gh_mirrors/sk/Skill_Seekers本篇文章深入剖析 Skill_Seekers 项目中三流 GitHub 架构Three-Stream GitHub Architecture的完整实现它将任意 GitHub 仓库拆分为代码Code、文档Documentation、社区洞察Insights三条独立数据流再经由统一代码库分析器、多源合并器与路由器生成器产出既包含 C3.x 深度分析、又携带真实用户问题与解决方案的 Claude AI Skill。读完本文你将掌握三流数据模型的设计动机、各阶段核心类的调用链、质量指标与可复现的 Python 调用方式并能在自己的技能生成流程中直接复用它。核心设计思想C3.x 是分析深度不是源类型三流架构的出发点非常明确GitHub 仓库应被拆成三条互不干扰的独立数据流每条流服务于不同的技能生成目标避免把代码、文档和社区数据混在一起导致上下文污染。数据流内容来源服务目标耗时Stream 1: Code*.py, *.js, *.ts, *.go, *.rs, *.java等源码C3.x 深度代码分析C3.1 模式、C3.2 示例、C3.3 指南、C3.4 配置、C3.7 架构20-60 分钟Stream 2: DocumentationREADME.md、CONTRIBUTING.md、docs/*.md快速上手与官方文档1-2 分钟Stream 3: GitHub InsightsOpen/closed issues、labels、stars、forks真实用户问题与已知解决方案1-2 分钟架构上最重要的洞察写在了 unified_codebase_analyzer.py 的模块注释里basic模式1-2 分钟文件结构、导入关系、入口点c3x模式20-60 分钟完整 C3.x 套件 GitHub 洞察。统一分析器对任意源GitHub URL 或本地路径在任意深度下都有效GitHub 只是源的一种C3.x 只是深度的一种二者解耦后整个流水线变得极其灵活。Phase 1GitHub 三流抓取器核心实现位于 github_fetcher.py配套测试为 test_github_fetcher.py。数据类模型抓取结果用 4 个 dataclass 表达github_fetcher.pydataclass class CodeStream: directory: Path files: List[Path] dataclass class DocsStream: readme: Optional[str] contributing: Optional[str] docs_files: List[Dict] dataclass class InsightsStream: metadata: Dict # stars, forks, language, description common_problems: List[Dict] # Open issues with 5 comments known_solutions: List[Dict] # Closed issues with comments top_labels: List[Dict] # Label frequency counts dataclass class ThreeStreamData: code_stream: CodeStream docs_stream: DocsStream insights_stream: InsightsStreamGitHubThreeStreamFetcher的构造参数github_fetcher.py包括repo_url、github_token默认读GITHUB_TOKEN环境变量、interactiveFalse 用于 CI/CD、profile_name多 token 配置以及三个 issue 过滤参数issue_sinceISO8601 日期、issue_labels、issue_stateopen/closed/all默认all。核心特性URL 解析同时支持 HTTPShttps://github.com/owner/repo与 SSHgitgithub.com:owner/repo.git两种格式github_fetcher.py.git后缀通过精确的endswith(.git)检查移除而不是盲目的rstrip避免误删仓库名末尾字符。浅克隆使用git clone --depth 1保证抓取速度github_fetcher.py。文件分类文档模式覆盖**/README.md、**/CONTRIBUTING.md、docs/*.md、docs/**/*.md、doc/、documentation/、*.rst代码扩展名覆盖 20 种主流语言.py/.js/.ts/.tsx/.go/.rs/.java/.kt/.c/.cpp/.rb/.php/.swift/.cs/.scala/.clj等同时排除node_modules、__pycache__、venv、.venv、.git、build、dist、.tox等常见目录隐藏文件默认跳过但允许docs/、doc/、documentation/目录内的隐藏文档github_fetcher.py。Issue 洞察issues 端点天然混入 pull request代码会显式过滤pull_request in i的条目open 且评论 ≥ 5 的 issue归入common_problemsclosed 且有评论的 issue归入known_solutions两类各按评论数降序取前 10并用Counter统计 label 出现频率生成top_labels前 10github_fetcher.py。编码回退读取文件优先 UTF-8失败时回退 latin-1再失败返回Nonegithub_fetcher.py。分页抓取per_page上限 100通过Link: relnext头跟进分页直到凑满max_issues当配额只够抓一个状态时会先把配额给 open 状态再把剩余配额给 closed避免固定五五开导致配额浪费github_fetcher.py。速率限制保障GitHub API 未认证时限制为 60 次/小时携带 token 时为 5000 次/小时。三流抓取器通过 rate_limit_handler.py 做了前置检查check_upfront()与逐响应检查check_response()支持 profile 自动切换、倒计时提示与 CI 非交互模式。如果未配置 token会提示运行skill-seekers config --github进行配置rate_limit_handler.py。修复的经典 Bug.rstrip(.git)会把react末尾的t一起删掉 → 改为精确的endswith(.git)检查SSH 格式gitgithub.com:无法解析 → 新增对应解析分支文件分类漏掉docs/*.md深层文档 → 同时加入docs/*.md与docs/**/*.md两个模式。Phase 2统一代码库分析器核心实现位于 unified_codebase_analyzer.py配套测试为 test_unified_analyzer.py。AnalysisResult统一承载所有分析结果unified_codebase_analyzer.pycode_analysisdict、github_docs可选、github_insights可选、source_typelocal或github、analysis_depthbasic或c3x。analyze()入口unified_codebase_analyzer.py通过github.com in source自动判别源类型GitHub URL 走三流抓取器_analyze_github本地路径走_analyze_local校验目录存在性与类型否则抛FileNotFoundError/NotADirectoryError。basic 深度1-2 分钟文件清单路径、大小、扩展名目录结构树跳过隐藏项仅列一级子目录导入关系抽取Python 的import/from、JS/TS 的import/require每种扩展名最多采样 10 个文件、每个文件前 50 行入口点探测main.py、index.js、setup.py、pyproject.toml、package.json、Dockerfile、docker-compose.yml等 14 种模式统计信息文件总数、总字节数、扩展名分布、语言分布。c3x 深度20-60 分钟c3x_analysis()的关键增强在于不再是占位符而是真正调用底层 C3.x 组件。它调用 codebase_scraper.py 的analyze_codebase()传入depthdeep、build_api_referenceTrue、build_dependency_graphTrue、detect_patternsTrue、extract_test_examplesTrue、build_how_to_guidesTrue、extract_config_patternsTrue并通过enhance_level0关闭 AI 以提升速度分析结果写入临时目录后由_load_c3x_results()读取unified_codebase_analyzer.py。C3.x 结果与输出文件的映射关系C3.x 组件输出文件结果键C3.1 设计模式patterns/all_patterns.jsonc3_1_patternsC3.2 测试示例test_examples/test_examples.jsonc3_2_examples/c3_2_examples_countC3.3 操作指南tutorials/guide_collection.jsonc3_3_guidesC3.4 配置模式config_patterns/config_patterns.jsonc3_4_configsC3.7 架构模式architecture/architectural_patterns.jsonc3_7_architecture依赖图dependencies/dependency_graph.jsondependency_graphAPI 参考code_analysis.jsonapi_reference此外还有两个防御性设计分析失败时回退到带空占位符的analysis_typec3x_failed结果与真成功但结果为空区分开并在finally中清理临时分析目录避免每次运行泄漏临时文件unified_codebase_analyzer.py。Phase 3多源合并与冲突检测核心实现位于 merge_sources.py配套测试为 test_merge_sources_github.py。四层合并算法Layer 1C3.x 代码分析ground truth代码是实际运行的Layer 2HTML 文档官方意图Layer 3GitHub 文档README、CONTRIBUTINGLayer 4GitHub 洞察issues、metadata、labels。新增的三个函数categorize_issues_by_topic(problems, solutions, topics)把 open/closed issue 按主题关键词做文本匹配标题 labels 拼接后统计关键词命中数归入最优主题未命中的落入other空分类会被移除merge_sources.pygenerate_hybrid_content(api_data, github_docs, github_insights, conflicts)把 GitHub 文档、元数据stars/forks/language/description、Top 5 问题与解决方案、Top labels 以及冲突摘要按类型与严重度统计织入最终输出产出github_context、conflict_summary与issue_linksmerge_sources.py_match_issues_to_apis(apis, problems, solutions)把 API 名拆成关键词下划线转空格、按点分段与 issue 标题/标签做子串匹配建立API → 相关 issue的链接关系merge_sources.py。RuleBasedMerger 的四条确定性规则RuleBasedMerger接受可选的github_streams参数后会把 docs/insights 两层提取出来。单 API 的合并遵循 4 条规则merge_sources.py仅在文档中出现 → 标记docs_only附警告 documented but not found in codebase仅在代码中出现 → 标记code_only私有 API以下划线开头提示 Internal/private API否则警告 exists in code but is not documented两者一致 → 标记matched合并签名与描述存在冲突 → 标记conflict签名优先采用代码版本prefer_code_signature描述保留文档版本并用⚠️警告展示差异。AIEnhancedMerger则在此基础上把冲突数据、文档 API、代码 API 写入临时工作区通过AgentClient驱动本地 AI Agent 按MERGE_INSTRUCTIONS.md的规则进行智能调和代码签名为准、文档描述保留、差异加实现注记失败时自动回退到规则合并merge_sources.py。CLI 入口merge_sources支持rule-based/claude-enhanced/ai-enhanced三种模式其中ai-enhanced被作为claude-enhanced的同义词兼容处理merge_sources.py。Phase 4带 GitHub 洞察的路由器生成核心实现位于 generate_router.py配套测试为 test_generate_router_github.py。RouterGenerator接收子技能 config 列表与可选的github_streams从 insights 流中提取github_metadata、github_issues从 docs 流中提取github_docs。路由关键词的 2 倍加权这是提升路由准确性的关键技巧GitHub issue label 被重复追加两次实现 2x 权重generate_router.py# Phase 4: Add GitHub issue labels (weight 2x by including twice) for label_info in top_labels[:10]: label label_info[label].lower() if any(keyword.lower() in label or label in keyword.lower() for keyword in skill_keywords): keywords.append(label) # First inclusion keywords.append(label) # Second inclusion (2x weight)此外_extract_skill_specific_labels()会扫描与技能关键词匹配的 issue提取它们携带的全部非通用 label排除 bug/enhancement/question 等 7 个通用标签同样以 2x 权重加入路由关键词generate_router.py。增强后的 Router 模板生成的SKILL.md在保留原结构frontmatter、When to Use、How It Works、Routing Logic、Quick Reference、All Available Skills的基础上新增Repository Info仓库 URL、stars、语言、描述使用 GitHub API 返回的html_url而非 config 里的base_urlQuick Start从 README 提取首个有效章节1500 字符软上限会为完整代码块扩展不足 50 字符时重试 2000 字符README 缺失或过短时回退到框架级 Hello World 模板fastapi/fastmcp/django/reactCommon IssuesTop 5 GitHub 社区问题标题 Issue 编号 评论数Common Patterns从 closed issue 标题解析出的问题 → 解决方案模式Fixed X→ X not working /Resolved X→ X issue /Added X→ Missing XExamples优先把真实 issue 标题转成自然提问_convert_issue_to_question如 OAuth fails on redirect → How do I fix oauth redirect failures?并保证同一 issue 不被重复使用references/ 渐进披露额外生成github_issues.md完整 issue 清单与链接和getting_started.mdREADME 精炼版保持主文档精简。frontmatter 兼容 agentskills.io 规范name、description、license、compatibility且会根据 GitHub 元数据中的语言自动生成兼容性说明如 Python → Python 3.10requires {router} package并从 license 字段提取许可证名称generate_router.py。Phase 5端到端质量验证E2E 测试位于 test_e2e_three_stream_pipeline.py共 8 个测试覆盖 5 大类E2E 基础工作流2 个GitHub URL → basic 分析 → 合并输出issue 按主题归类验证 oauth/auth/authentication 主题下 issue 的正确归类E2E 路由器生成1 个完整工作流验证 metadata、docs、issues、路由关键词含 2x 加权断言oauth_keywords.count(oauth) 2E2E 质量指标2 个GitHub 开销控制在 20-60 行/技能4 个子技能的路由器控制在 60-250 行E2E 向后兼容2 个无 GitHub 流时路由器仍生成有效 SKILL.md 且不含⭐/Repository Info等 GitHub 专属章节fetch_github_metadataFalse时分析结果不含 GitHub 数据E2E token 效率1 个三流输出紧凑、无跨流污染README 内容不出现在 code 流中。实施完成时的质量指标引自原实现总结指标目标实际状态GitHub 开销30-50 行20-60 行✅ 在范围内路由器大小150±20 行60-250 行✅ 效率优秀测试通过率100%100%81/81✅ 全部通过测试执行时间1 秒0.43 秒✅ 极快向后兼容必需保持✅ 完全兼容原文档记录的 81 个测试分布在五个阶段Phase 1: 24、Phase 2: 24、Phase 3: 15、Phase 4: 10、Phase 5: 8从当前仓库源码看这些测试文件仍在持续演进例如 test_github_fetcher.py 中定义的测试函数已增长到 30 余个test_merge_sources_github.py 中定义的测试函数也扩展到 17 个。复现测试的命令python -m pytest tests/test_github_fetcher.py \ tests/test_unified_analyzer.py \ tests/test_merge_sources_github.py \ tests/test_generate_router_github.py \ tests/test_e2e_three_stream_pipeline.py -v完整使用示例以下四个示例直接来自实现总结可在本地环境中运行验证。示例 1GitHub 仓库 basic 深度分析from skill_seekers.cli.unified_codebase_analyzer import UnifiedCodebaseAnalyzer # Analyze GitHub repo with basic depth analyzer UnifiedCodebaseAnalyzer() result analyzer.analyze( sourcehttps://github.com/facebook/react, depthbasic, fetch_github_metadataTrue ) # Access three streams print(fFiles: {len(result.code_analysis[files])}) print(fREADME: {result.github_docs[readme][:100]}) print(fStars: {result.github_insights[metadata][stars]}) print(fTop issues: {len(result.github_insights[common_problems])})示例 2C3.x 深度分析# Deep C3.x analysis (20-60 minutes) result analyzer.analyze( sourcehttps://github.com/jlowin/fastmcp, depthc3x, fetch_github_metadataTrue ) # Access C3.x components print(fDesign patterns: {len(result.code_analysis[c3_1_patterns])}) print(fTest examples: {result.code_analysis[c3_2_examples_count]}) print(fHow-to guides: {len(result.code_analysis[c3_3_guides])}) print(fConfig patterns: {len(result.code_analysis[c3_4_configs])}) print(fArchitecture: {len(result.code_analysis[c3_7_architecture])})示例 3带 GitHub 的路由器生成from skill_seekers.cli.generate_router import RouterGenerator from skill_seekers.cli.github_fetcher import GitHubThreeStreamFetcher # Fetch GitHub repo fetcher GitHubThreeStreamFetcher(https://github.com/jlowin/fastmcp) three_streams fetcher.fetch() # Generate router with GitHub integration generator RouterGenerator( [configs/fastmcp-oauth.json, configs/fastmcp-async.json], github_streamsthree_streams ) # Generate enhanced SKILL.md skill_md generator.generate_skill_md() # Result includes: repository stats, README quick start, common issues # Generate router config config generator.create_router_config() # Result includes: routing keywords with 2x weight for GitHub labelscreate_router_config()产出的路由配置包含_router: True标记、_sub_skills列表与_routing_keywords映射max_pages固定为 500路由器只抓取概览页避免递归抓取generate_router.py。示例 4本地路径分析同一结构# Works with local paths too! result analyzer.analyze( source/path/to/local/repo, depthc3x, fetch_github_metadataFalse # No GitHub streams ) # Same unified result structure print(fAnalysis type: {result.code_analysis[analysis_type]}) print(fSource type: {result.source_type}) # localPhase 6 待办与后续演进方向实施总结发布时 Phase 6文档与示例仍处于待办状态剩余约 2 小时工作量更新 CLI help 文本中的三流信息、README 中的 GitHub 示例、CLAUDE.md 中的三流架构说明创建 FastMCP GitHub完整工作流与 React GitHub多源示例并加入官方 configs 目录。文档同时列出了五个未来增强方向缓存 GitHub API 响应以减少 API 调用、扩展支持 GitLab/Bitbucket URL、增加 issue 搜索能力、实现 issue 趋势分析发现热门话题、支持多子项目的 monorepo。总结三流 GitHub 架构是 Skill_Seekers 将外部 GitHub 仓库转化为高质量技能的关键基建。它用三条解耦的数据流代码 / 文档 / 洞察配合两档分析深度basic / c3x在保持向后兼容的同时实现了81/81 测试全部通过的确定性质量保障、每技能仅 20-60 行的极低 GitHub 开销、以及基于真实社区 issue 的 2x 加权路由关键词。其完整调用链——github_fetcher.py → unified_codebase_analyzer.py → merge_sources.py → generate_router.py以及对应的 E2E 测试 均可直接查阅作为自行扩展 GitLab/Bitbucket 源或多源合并逻辑的参考蓝本。【免费下载链接】Skill_SeekersConvert documentation websites, GitHub repositories, and PDFs into Claude AI skills with automatic conflict detection项目地址: https://gitcode.com/gh_mirrors/sk/Skill_Seekers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表