庫(kù)蒸餾術(shù):從代碼倉(cāng)庫(kù)到 OpenClaw 虛擬人-蒸餾工具鏈)
10 蒸餾工具鏈自動(dòng)化蒸餾流水線這是《Git 倉(cāng)庫(kù)蒸餾術(shù)從代碼倉(cāng)庫(kù)到 OpenClaw 虛擬人》系列的第 10 篇。前 9 篇我們手工完成了蒸餾的每一步盤點(diǎn)、挖掘、分析、提煉、建模。這一篇把這些步驟固化成一條自動(dòng)化流水線——蒸餾工具鏈。手工蒸餾一次可以但倉(cāng)庫(kù)會(huì)持續(xù)演進(jìn)蒸餾必須能重復(fù)執(zhí)行。一、工具鏈架構(gòu)采集、分析、提煉、輸出蒸餾工具鏈分四層對(duì)應(yīng)蒸餾流程的四個(gè)階段┌─────────────────────────────────────────────┐ │ 輸出層知識(shí)產(chǎn)物畫像/報(bào)告/文檔/圖譜 │ ├─────────────────────────────────────────────┤ │ 提煉層模式提煉 / ADR 生成 / 圖譜構(gòu)建 │ ├─────────────────────────────────────────────┤ │ 分析層結(jié)構(gòu)分析 / 歷史挖掘 / 依賴分析 │ ├─────────────────────────────────────────────┤ │ 采集層git 數(shù)據(jù) / issue / PR / 代碼 │ └─────────────────────────────────────────────┘層級(jí)職責(zé)對(duì)應(yīng)前篇工具采集層拉取原始數(shù)據(jù)03 盤點(diǎn)、06 文檔git、gh CLI、cloc分析層分析結(jié)構(gòu)/歷史/依賴04 挖掘、05 分析madge、jscpd、git log提煉層提煉模式/決策/圖譜07 模式、08 決策、09 圖譜自研腳本輸出層生成知識(shí)產(chǎn)物各篇產(chǎn)出物模板引擎核心設(shè)計(jì)原則每一層只依賴下一層層與層之間通過標(biāo)準(zhǔn)數(shù)據(jù)格式解耦。二、流水線設(shè)計(jì)從倉(cāng)庫(kù)到知識(shí)產(chǎn)物的自動(dòng)化流程2.1 流水線階段[倉(cāng)庫(kù)] → [采集] → [分析] → [提煉] → [輸出] → [知識(shí)產(chǎn)物] ↑ │ └────────────── 倉(cāng)庫(kù)演進(jìn)后重新執(zhí)行 ──────────────┘每個(gè)階段有明確的輸入輸出階段輸入處理輸出采集倉(cāng)庫(kù)git/gh/cloc 拉取原始數(shù)據(jù)JSON分析原始數(shù)據(jù)madge/jscpd/git log分析結(jié)果JSON提煉分析結(jié)果模式/ADR/圖譜腳本知識(shí)單元JSON輸出知識(shí)單元模板渲染知識(shí)產(chǎn)物MD/圖譜2.2 流水線編排用 Makefile 或腳本編排各階段# Makefile .PHONY: all collect analyze refine output all: output # 采集層 collect: bash scripts/collect.sh data/raw.json # 分析層 analyze: collect python scripts/analyze.py data/raw.json data/analysis.json # 提煉層 refine: analyze python scripts/refine.py data/analysis.json data/knowledge.json # 輸出層 output: refine python scripts/render.py data/knowledge.json output/# 一鍵執(zhí)行整條流水線makeall2.3 流水線狀態(tài)管理流水線要支持?jǐn)帱c(diǎn)續(xù)跑——某一步失敗不用重跑全部// pipeline-state.json{last_run:2026-08-17T10:00:00,stages:{collect:{status:done,output:data/raw.json},analyze:{status:done,output:data/analysis.json},refine:{status:failed,error:ADR-004 缺少理由},output:{status:pending}}}三、常用工具集成3.1 工具清單把前幾篇用到的工具統(tǒng)一集成工具用途階段安裝git歷史/元信息采集采集內(nèi)置ghissue/PR 拉取采集brew install ghcloc代碼量統(tǒng)計(jì)采集brew install cloctree目錄結(jié)構(gòu)采集brew install treemadge依賴分析分析npm i -g madgejscpd重復(fù)檢測(cè)分析npm i -g jscpddependency-cruiser架構(gòu)規(guī)則分析npm i -g dependency-cruisernetworkx圖譜構(gòu)建提煉pip install networkx3.2 統(tǒng)一配置用一份配置文件管理所有工具參數(shù)# config.yamlrepo:path:.exclude_dirs:[node_modules,.git,dist,build]collect:cloc:truetree_depth:3gh_org:myorggh_repo:myrepoanalyze:madge_extensions:[ts,tsx,vue]jscpd_min_lines:5jscpd_min_tokens:50refine:adr_dir:docs/adrpattern_dir:patternsgraph_output:knowledge-graph.jsonoutput:template_dir:templatesoutput_dir:output3.3 采集腳本示例#!/bin/bash# scripts/collect.sh# 采集層拉取所有原始數(shù)據(jù)REPO_DIR${1:-.}cd$REPO_DIRecho 采集 git 元信息 {echo{\total_commits\:$(gitrev-list--countHEAD),echo\first_commit\:\$(gitlog--reverse--format%ai|head-1)\,echo\last_commit\:\$(gitlog-1--format%ai)\,echo\contributors\:$(gitshortlog-sne|wc-l|tr-d ),echo\branches\:$(gitbranch-r|wc-l|tr-d ),echo\tags\:$(gittag|wc-l|tr-d )}}data/git-meta.jsonecho 采集代碼規(guī)模 cloc.--exclude-dirnode_modules,.git,dist,build--jsondata/cloc.json2/dev/nullecho 采集 issue/PR gh issue list--stateall--limit500--jsonnumber,title,body,labelsdata/issues.json ghprlist--statemerged--limit500--jsonnumber,title,bodydata/prs.jsonecho采集完成四、輸出工具鏈方案4.1 工具鏈方案文檔# 蒸餾工具鏈方案 ## 目標(biāo) 將倉(cāng)庫(kù)蒸餾流程固化為可重復(fù)執(zhí)行的自動(dòng)化流水線。 ## 架構(gòu) 四層架構(gòu)采集 → 分析 → 提煉 → 輸出 ## 流水線 make all 一鍵執(zhí)行支持?jǐn)帱c(diǎn)續(xù)跑。 ## 工具清單 見上文工具清單表 ## 配置 統(tǒng)一 config.yaml 管理所有參數(shù)。 ## 目錄結(jié)構(gòu) distill-toolchain/ ├── Makefile ├── config.yaml ├── scripts/ │ ├── collect.sh │ ├── analyze.py │ ├── refine.py │ └── render.py ├── templates/ │ ├── adr.md.j2 │ ├── pattern.md.j2 │ └── report.md.j2 ├── data/ # 中間數(shù)據(jù)raw/analysis/knowledge └── output/ # 最終知識(shí)產(chǎn)物 ## 使用方式 1. 配置 config.yaml倉(cāng)庫(kù)路徑、工具參數(shù) 2. 運(yùn)行 make all 3. 查看 output/ 下的知識(shí)產(chǎn)物 ## 擴(kuò)展性 - 新增分析工具在 analyze.py 中注冊(cè) - 新增輸出模板在 templates/ 中添加 - 支持多倉(cāng)庫(kù)config.yaml 支持多倉(cāng)庫(kù)配置4.2 工具鏈的用途工具鏈?zhǔn)钦麴s流程的工程化底座給 11 虛擬人機(jī)制工具鏈產(chǎn)出的知識(shí)產(chǎn)物是虛擬人 memory 的輸入給 12 蒸餾產(chǎn)物→虛擬人工具鏈讓倉(cāng)庫(kù)→虛擬人的轉(zhuǎn)化可重復(fù)執(zhí)行給 13 落地倉(cāng)庫(kù)演進(jìn)后重新運(yùn)行工具鏈即可更新虛擬人知識(shí)五、小結(jié)這一篇的核心收獲四層架構(gòu)采集、分析、提煉、輸出層間用標(biāo)準(zhǔn)數(shù)據(jù)格式解耦。流水線設(shè)計(jì)Makefile 編排 斷點(diǎn)續(xù)跑倉(cāng)庫(kù)演進(jìn)后可重復(fù)執(zhí)行。工具集成統(tǒng)一 config.yaml 管理 git/gh/cloc/madge/jscpd 等工具。輸出工具鏈方案一份可落地的自動(dòng)化蒸餾流水線方案。下一篇我們進(jìn)入虛擬人世界[11 OpenClaw 虛擬人機(jī)制persona、memory、skills](11-Git 倉(cāng)庫(kù)蒸餾術(shù)從代碼倉(cāng)庫(kù)到 OpenClaw 虛擬人-OpenClaw虛擬人機(jī)制.md)——了解虛擬人的三要素為把蒸餾產(chǎn)物變成虛擬人做準(zhǔn)備。上一篇[09 知識(shí)圖譜構(gòu)建連接知識(shí)節(jié)點(diǎn)](09-Git 倉(cāng)庫(kù)蒸餾術(shù)從代碼倉(cāng)庫(kù)到 OpenClaw 虛擬人-知識(shí)圖譜構(gòu)建.md)下一篇[11 OpenClaw 虛擬人機(jī)制persona、memory、skills](11-Git 倉(cāng)庫(kù)蒸餾術(shù)從代碼倉(cāng)庫(kù)到 OpenClaw 虛擬人-OpenClaw虛擬人機(jī)制.md)