
Harvest
io.github.The-Warl0ck由 GitHub 帳號 The-Warl0ck 發布v0.1.0更新於 Oct 24, 2026
Plain-English training-data scout: 12 experts sweep HuggingFace + GitHub, compose scored packs.
概覽
本機訓練資料偵察工具:用自然語言主題搜尋 Hugging Face 與 GitHub,組合帶評分的訓練包,並可下載或推送。
- 可以做什麼
- 依主題搜尋 Hugging Face 資料集與 GitHub 儲存庫,或執行 12 個領域專家之一,或列出熱門項目,結果會去重並短期快取。從目錄組合出均衡、具覆蓋度評分的選集,輸出訓練庫包或程式碼零件包。預覽某個包項目將抓取哪些檔案,而不實際下載。將整個包拉取到本機或下載資料夾,可只取程式碼與文件,並打包成含來源清單的壓縮檔。把打包結果以單次提交推送到 GitHub 新建的私有儲存庫。
- 適用情境
- 適合讓助理為訓練或程式碼重用尋找候選資料集與儲存庫、整理均衡候選清單,並在對話中完成抓取或發布。若只需要臨時網頁搜尋或已有成熟資料流程,則幫助不大。
- 執行需求
- 透過 npx 以 stdio 在本機執行,需要 Node.js 20 或更新版本。需要連線 Hugging Face 與 GitHub 公開 API 的網路。不需帳號或金鑰,但選用的 HF_TOKEN、GITHUB_TOKEN 環境變數或每次呼叫的 hf_token、gh_token、token 參數可提高速率上限並存取受限資料集;harvest.push 需要 GitHub 權杖。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Harvest,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
harvest-mcp
Plain-English topic in → 12 experts fan out over Hugging Face + GitHub in parallel → coverage-scored training pack JSON out in ~30 seconds.
No API keys. No Bridge. No account. Works out of the box once connected to any MCP host — no LLM inside; your agent brings the thinking.
Harvest is a training-data scout: you describe what you want to train on in plain English
("image classification", "medical question answering"), and 12 domain experts —
code, math, science, language, vision, audio, medical, law, knowledge, safety, affect, systems —
each sweep Hugging Face datasets and GitHub repos with their own curated queries. The local mixer
then composes the hits into a balanced, coverage-scored training library pack
(flare-harvest-library v1 JSON) you can hand to any training pipeline.
Install
Or add it to Claude Desktop (claude_desktop_config.json):
With optional tokens for higher rate limits:
Requirements: Node.js ≥ 20.
Example session
You: find me training data for a small vision-language model
harvest.search
{ "topic": "vision language instruction tuning" }→ ~40 hits: LLaVA-NeXT data, the Cauldron, DOCCI, LLaVA repo… plus the 12-expert atlas sweep for breadth (code, math, safety…)
harvest.compose
{ "goal": "small vision-language model", "catalog": […] }→{ "title": "small vision-language model", "picks": [ { "id": "lmms-lab/LLaVA-NeXT-Data", "expert": "vision", "why": "Anchor Vision on Hugging Face" }, … ], "rationale": "Local mixer staged 22 items across 12/12 experts. No mouth required.", "engine": "local" }
harvest.pack
{ "goal": "small vision-language model", "name": "VLM Mix v1", "catalog": […] }→flare-harvest-libraryv1 JSON withcoverage: { filled: 12, totalExperts: 12, balance: 0.94 }and per-itemingest: { type: "hf-dataset" | "github-repo", ref }pointers.
The second half — the hands. Packs start as pointers; pull turns them into files:
harvest.resolve
{ "item": { "id": "openai/gsm8k", "source": "huggingface" } }→ the loot preview: 4 parquet shards + README, each with a one-line reason, nothing stupid
harvest.pull
{ "pack": {…}, "destination": "download" }→ resolves + fetches every item, updates the pack'sindexstanza, and buildsVLM Mix v1.harvest.zip— one file with everything plusMANIFEST.jsonprovenance
harvest.push
{ "bundle": "/path/to/VLM Mix v1.harvest.zip", "owner": "you", "repo": "my-data", "token": "ghp_…", "create_if_missing": true }→ one commit on a new private repo: files + manifest, message says what it is and where it came from
The same loop works for code. Second session — the build pack:
You: I want the rate-limiting code from a few good repos, packaged so my agent can build with it
harvest.search
{ "topic": "express rate limiting middleware" }→ thecodeexpert surfaces the repos with the parts you want
harvest.pack
{ "goal": "add rate-limiting to my API", "name": "Rate Limit Parts v1", "catalog": […], "purpose": "code" }→flare-harvest-codepackv1 JSON — same item envelope, no training-coverage scoring
harvest.pull
{ "pack": {…}, "destination": "download", "kinds": ["code", "docs"] }→ pulls just the source files (skips weights/datasets), builds the.harvest.zip
harvest.push
{ "bundle": "…", "owner": "you", "repo": "rate-limit-parts", "create_if_missing": true }→ your agent pulls the repo and builds from the parts
Tools
catalog items are { id, source, expert, description? } — the objects harvest.search returns drop straight in.
Rate limits
Everything hits the public Hugging Face and GitHub APIs. Unauthenticated, you get:
- Hugging Face: generous anonymous quota on
/api/datasets(occasional 429s on bursts; results are cached 12 min in-process) - GitHub: 60 requests/hour per IP for search — the 12-expert sweep is the hungriest call
For real use, set HF_TOKEN / GITHUB_TOKEN (free accounts) via env or the per-call
hf_token / gh_token args. See .env.example.
Pack format
Packs are flare-harvest-library v1 JSON — see PACK-FORMAT.md.
Pointer vs. pulled
A fresh pack is pointers, not data: each item names its source and how to
ingest it, but no files. harvest.pull turns pointers into files and records
the result in an additive index stanza on the pack JSON:
v1 readers ignore the stanza safely; packs without it load as pointer-only.
destination: "download" additionally produces a .harvest.zip containing the
files plus MANIFEST.json (source, URL, license, SHA-256 per file — licenses
are reported as unknown when the pack doesn't state one, never guessed).
Token story
Tokens are passed per call, never stored:
harvest.search/harvest.expert/harvest.latest/harvest.resolve/harvest.pullaccepthf_token/gh_token(or theHF_TOKEN/GITHUB_TOKENenv vars) — used for higher rate limits and gated datasets, sent only as anAuthorizationheader.harvest.pushtakes a per-calltoken(GitHub PAT, orGITHUB_TOKENenv).- No token is ever written to disk, to logs, to a pack file, or to a manifest.
Fetch resume ledgers (
.harvest-fetch.json) hold only paths, byte counts, and hashes.
How it works
src/harvest/scan-core.ts— parallel HF/GitHub scanning, 12-min result cachesrc/experts.ts— the 12-expert atlas (curated queries + seed items)src/harvest/compose-local.ts— the local mixer ("No mouth required"): anchors one item per expert, then balances HF/GitHub sources, then fills for coveragesrc/coverage.ts— entropy-based coverage/balance scoring across the 12 expertssrc/harvest/compose-mouth.ts— opt-in: compose via any OpenAI-compatible/v1endpoint (LM Studio, etc.) instead of the local mixersrc/harvest/resolve.ts— the "which files" intelligence: HF Hub / GitHub tree listings classified into data, weights, config, code, docs (pure functions + thin API clients)src/harvest/fetch.ts— the hands: streaming downloads with resume, size guards, progress, SHA-256 per file; token arrives as a function arg, never storedsrc/harvest/bundle.ts— zips a fetched dir +MANIFEST.jsonprovenance into a.harvest.zipsrc/harvest/push.ts— pushes a bundle to GitHub via the Git Data API: one commit, private by default (// TODO(GitLab)seam sketched)src/harvest/index.ts— the agent side: additiveindexstanza +resolvePointer/getItemFiles/queryIndexmcp/server.ts— the MCP server (stdio, low-level SDK API, hand-written schemas)
License
Apache-2.0 — see LICENSE.
來源:README.md,提交 6645008
工具
0版本歷史
1- v0.1.0最新Sep 26, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分