前言¶
在 DeepSeek Harness(DSH)裏跑智能體時,常見做法是讓用戶自己搜 GitHub,或者指望模型在需要時纔去讀某條 Skill。問題是:Skill 只有模型「決定加載」纔會執行,新對話裏未必會先做開源方案摸底;臨時再搜又容易打亂回答節奏,還容易撞上 GitHub Search API 的匿名限頻。
dsh-github-oss-radar(npm 包名 dsh-github-oss-radar,0.1.0,MIT)由 Otto883 維護,屬於 DSH 社區的「聯網工具」類插件。它把「GitHub 優先的開源檢查」寫進系統提示策略:每條新請求裏,模型先抽 1–4 個英文關鍵詞,至多調用一次 github_search,在正式作答前列出可能可複用的倉庫(星標、語言、許可證、最近推送、topics 等),再寫答案。下面介紹它裝什麼、怎麼用、以及配置與限頻要注意什麼。
這是什麼¶
一句話:dsh-github-oss-radar 是一個持久化的 DSH bundle,給 profile 裏每個 agent 掛上固定的策略段和宿主工具,讓「搜 GitHub 倉庫」成爲新請求上的默認前置步驟,而不是可選 Skill。
與 Skill 的差異(README 原文要點):
- Skill 僅在模型選擇加載時運行;本插件安裝的是 system-prompt 策略,無需再決策,每條新請求都會走檢查流程。
- 策略有意做預算:每請求最多一次
github_search;相同併發請求會合並;響應在內存中緩存 10 分鐘。 - 列出的倉庫是起點,不能替代完整回答;策略要求檢索不得拖慢響應,不能代替閱讀用戶本地文件;同一主題內的追問不會重複搜索。
技術約束(資料已寫明):ESM、零運行時依賴;在 dsh 0.1.7-rc.2 上驗證;Host 需 Node.js 22.19.0 或更新(使用全局 fetch 與 Node 內建模塊)。
安裝後會註冊什麼¶
兩部分都會註冊到 profile 的每個 agent:
| 類型 | 名稱 | 作用 |
|---|---|---|
| System-prompt 段落 | github-oss-radar:policy |
順序 1990,緊挨內置 web-search 指引之前。要求從新請求中提取 1–4 個英文關鍵詞,作答前調用 github_search 一次,列出最多 5 個(可配置)真正相關的 owner/repo(★ 數量)、一行說明及 URL;無相關結果時一行說明。 |
| Host 工具 | github_search |
請求 https://api.github.com/search/repositories,返回緊湊、便於模型閱讀的倉庫列表。 |
卸載時會一併移除上述策略段與工具。
github_search 工具行爲¶
參數¶
| 參數 | 類型 | 說明 |
|---|---|---|
keywords |
1–4 個字符串數組 | 英文技術關鍵詞;與空格拼接,語義上相當於 AND。未提供 query 時必填。 |
query |
字符串 | 精確的 GitHub 倉庫搜索 query;存在時覆蓋 keywords。 |
language |
字符串 | 可選語言過濾,例如 Python、TypeScript。 |
min_stars |
整數 | 最低星標;默認取插件配置 minStars。 |
limit |
1–10 | 返回條數;默認取插件配置 maxResults。 |
sort |
stars / updated / best-match |
排序;默認 stars。 |
查詢由關鍵詞(或 query)與可選的 stars:>=N、language:X 組成;除非開啓 includeArchived,否則帶 archived:false。若完整關鍵詞集無匹配且未顯式給 query,工具會用第一個關鍵詞放寬再試一次。
每條結果包含:owner/repo、緊湊星標(如 24.1k)、URL、一行描述、語言、GitHub 報告的 SPDX 許可證、最近 push 日期、fork 數、最多 6 個 topics。輸出末尾註明數據來自當時刻的 GitHub Search API,並提醒採納前自行覈實許可證與維護狀態。零結果返回 No repositories matched,而非拋錯。
結果示例(節選)¶
下面示例來自 README,僅展示三條;真實輸出會打印完整 query、總匹配數與展示條數。
GitHub open-source matches for "markdown parser"
Query: markdown parser archived:false
Matches: 1284 total, showing 5 — sorted by stars
1. markdown-it/markdown-it ★19.2k (JavaScript, pushed 2026-10-30, 1.8k forks, MIT)
https://github.com/markdown-it/markdown-it
Markdown parser done right. Fast and easy to extend.
topics: markdown, commonmark, parser, javascript
2. remarkjs/remark ★7.9k (JavaScript, pushed 2026-10-28, 512 forks, MIT)
https://github.com/remarkjs/remark
Markdown processor powered by plugins.
topics: markdown, syntax-tree, plugins
3. comrak/comrak ★1.9k (Rust, pushed 2026-10-27, 121 forks, MIT)
https://github.com/comrak/comrak
CommonMark + GFM compatible Markdown parser and renderer.
topics: markdown, commonmark, gfm, rust
Metadata from the GitHub Search API at request time. Verify license and maintenance status before adopting a project.
安裝與啓用¶
從 GitHub 安裝(README 原文命令):
dsh plugin --profile <profile> add github:Otto883/dsh-github-oss-radar
插件市場上架後,也可在卡片頁添加 bundle。
npm 發佈後可用包名安裝:
dsh plugin --profile <profile> add dsh-github-oss-radar
安裝後重啓 dsh。bundle 會在 profile 根插入 github-oss-radar loader 行,策略段與工具對所有 agent 生效。
卸載:
dsh plugin --profile <profile> remove dsh-github-oss-radar
或在插件市場卡片中移除。
配置¶
配置寫在 profile 裏 github-oss-radar loader 行,例如 cordis.patch.yml:
- id: github-oss-radar
config:
maxResults: 5
minStars: 1000
language: TypeScript
cacheTtlMs: 600000
| 鍵 | 默認 | 範圍 | 說明 |
|---|---|---|---|
enabled |
true |
boolean | false 時跳過策略段與工具。 |
maxResults |
5 |
1–10 | 列表上限,也限制模型可請求的 limit。 |
minStars |
0 |
0–1000000 | 搜索最低星標。 |
language |
'' |
string | 默認語言過濾;空表示不設默認。 |
includeArchived |
false |
boolean | 爲 false 時查詢帶 archived:false。 |
cacheTtlMs |
600000 |
0–3600000 | 內存緩存 TTL(毫秒),默認 10 分鐘。 |
timeoutMs |
15000 |
1000–60000 | 單次 GitHub API 超時(毫秒)。 |
tokenEnv |
'GITHUB_TOKEN' |
string | 讀取可選 token 的環境變量名。 |
可選 token:Host 環境可讀 GITHUB_TOKEN 或 GH_TOKEN;tokenEnv 指定優先讀取的變量名。配置裏也可有 token 鍵,但文檔建議用環境變量。無 token 時適用匿名限頻(見下節)。
限頻與失敗時的策略¶
未認證訪問 GitHub Search API 爲每分鐘 10 次。插件通過「每新請求至多一次搜索、併發合併、10 分鐘緩存」儘量留在預算內。
若 GitHub 因限頻拒絕,工具會報告 reset 時間並建議設置 GITHUB_TOKEN;策略要求模型不帶列表繼續作答,而不是反覆重試。
適用場景與注意¶
適合誰:希望在 DSH profile 裏穩定做「回答前先掃一圈 GitHub 可複用倉庫」的團隊或個人;技術選型、實現路徑討論、對比既有開源方案時,模型會更早看到結構化倉庫列表。
注意:
- 列表是輔助信息,不能替代讀用戶倉庫裏的代碼與文檔;同一主題的追問不會重複搜。
- 插件以當前 dsh 進程權限運行,會向 GitHub API 發起網絡請求;安裝前應閱讀 源碼倉庫 與 MIT 許可證,自行判斷是否滿足合規與安全要求。
- DSH 生態強調「一切皆插件」;社區目錄站點(如 SkillHub 插件頁)爲獨立社區資源,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
經過上面的步驟,你可以在 profile 裏獲得一條有預算、可緩存、感知 GitHub 限頻的常駐開源檢索鏈路:github-oss-radar:policy 規定何時搜、github_search 負責怎麼搜。需要關閉時設 enabled: false 或卸載 bundle 即可。