toby-bridges/api-relay-audit
toby-bridges/api-relay-audit从 DeepSeek Harness 对 AI API 中转站和 LLM 代理运行本地安全审计,生成 Markdown 报告,覆盖提示词注入、模型替换信号、工具调用改写、错误泄漏、流完整性和按 profile 启用的 Web3 风险。
面向 SonarQube Community Build 的只读工具:实例状态、分支或 PR 的项目质量阈、议题与安全热点搜索、单个热点详情,以及覆盖率、重复率或调用方指定的度量项。议题与热点结果附带标准化的位置信息,包含组件 key、文件路径、行号与文本范围。
dsh-sonarqube は、SonarQube Community Build Web API と連携する、無料かつオープン
ソースの読み取り専用 DeepSeek Harness plugin です。SonarQube の状態を変更せずに、agent
が Quality Gate、issues、Security Hotspots、coverage、重複コード、その他のプロジェクト
measures を確認できます。
API から情報が提供される場合、issue と hotspot の結果には正規化された location
オブジェクトが追加されます。このオブジェクトには SonarQube component key、ソースの
filePath、行番号、テキスト範囲が含まれます。
| ツール | 用途 |
|---|---|
sonarqube_system_status | instance の状態とバージョンを取得します。 |
sonarqube_quality_gate | プロジェクトのメイン解析、branch、または pull request の Quality Gate を取得します。 |
sonarqube_search_issues | 種類、severity、状態、branch、または pull request で issues を検索します。 |
sonarqube_search_hotspots | 状態、branch、または pull request で Security Hotspots を検索します。 |
sonarqube_get_hotspot | 1 件の Security Hotspot の完全な詳細を取得します。 |
sonarqube_get_measures | coverage、重複、issue 数、hotspots、または指定した metrics を取得します。 |
すべてのツールは読み取り専用です。v0.1 は issues や hotspots の割り当て、確認、解決、 再オープン、その他の変更を行いません。
@deepseek-ai/dsh-tools API を備えた DeepSeek Harness2026-08-24 に SonarQube Community Build 26.8.0.126808 と SonarScanner CLI
8.0.1.6346 を使用して手動で互換性を検証しました。すべての SonarQube リリースとの
互換性を意味するものではありません。CI で利用する前に、ご自身の instance で検証して
ください。
実機検証では system status、Quality Gate、ソースファイルと行番号のマッピングを含む
issue 検索、デフォルト measures、空の Security Hotspot 検索結果、安全な hotspot 404
処理を確認しました。Community Build 26.8.0.126808 には SECURITY_HOTSPOT ルールが
存在しなかったため、成功する sonarqube_get_hotspot レスポンスは、その実機検証では
なく mock API テストでカバーしています。
credential が profile patch に含まれないよう、環境変数の使用を推奨します。
export SONARQUBE_URL='https://sonarqube.example.com'
export SONARQUBE_TOKEN='your-token'
Plugin config は環境変数より優先されます。
| Config | 環境変数 fallback | デフォルト |
|---|---|---|
baseUrl | SONARQUBE_URL | 必須 |
token | SONARQUBE_TOKEN | 必須 |
requestTimeoutMs | なし | 30000 |
maxResponseBytes | なし | 5242880(5 MiB) |
token を cordis.patch.yml に記述しないでください。機密ではない設定を上書きする場合は、
後方に profile patch を追加します(後方の row は、その row の config 全体を置き換えます)。
- id: dsh-sonarqube
name: dsh-sonarqube
config:
baseUrl: 'https://sonarqube.example.com'
requestTimeoutMs: 30000
maxResponseBytes: 5242880
パッケージ付属の bundle は、credential を含めずに plugin をマウントします。
- insert:
- id: dsh-sonarqube
name: dsh-sonarqube
将来の npm release またはローカル tarball からインストールします。
dsh plugin --profile web add dsh-sonarqube
dsh plugin --profile web add ./dsh-sonarqube-0.1.1.tgz
GitHub source からインストールします。
dsh plugin --profile web add github:maxmilian/dsh-sonarqube#PINNED_COMMIT
Git からのインストールでは lib ではなく source を取得するため、このパッケージには Bun
で build する prepare script が含まれます。Profile installer では dependency の build
script を明示的に許可する必要がある場合があります。source を確認して commit を固定し、
信頼できる場合にのみ build を許可してください。
インストール後、選択した DSH profile を再起動してください。profile を起動せずに、合成後の 設定を確認できます。
dsh --profile web --dump-config
agent への依頼例:
Use sonarqube_quality_gate for project acme-api on branch main.
Search open CRITICAL issues in acme-api, 50 per page.
Get coverage and duplicated_lines_density for acme-api.
Show the full Security Hotspot with key AX_example.
branch と pull_request は同時に指定できません。1 ページの結果数は 1..100 に制限され、
page × page_size は最初の 10,000 件の範囲内である必要があります。Measures request は最大
20 個の metric keys を受け付け、各 key は最大 100 文字です。metric リストを省略すると、
次の項目を取得します。
coverage, duplicated_lines_density, bugs, vulnerabilities, code_smells, security_hotspots
Schemastery config の説明は、英語、繁体字中国語、簡体字中国語、日本語に対応しています。
Locale map には DSH の現在の en と zh ID に加え、一般的な地域 ID である en-US、
zh-CN、zh-TW、ja、ja-JP が含まれます。DSH host に登録されている locale のみ
選択できます。現在の core UI に組み込まれているのは en と zh です。
現在の @deepseek-ai/dsh-tools API は、tool と parameter ごとにモデル向け description
文字列を 1 つだけ受け付けるため、これらの説明は英語のままです。DSH がまだ利用できない
runtime localization をサポートしているとは表明しません。Repository のドキュメントは、
各 README 上部の言語リンクで切り替えられます。
Authorization: Bearer ... を使用し、token を返したりログに記録したりしません。AbortSignal、リクエストごとの timeout、最大 response size に従います。Retry-After と SonarQube-Authentication-Token-Expiration metadata を保持します。SonarQube Web API は段階的に API v2 へ移行しています。将来の migration を局所化するため、
endpoints は tool definitions に分散させず、意図的に src/client.ts に集約しています。
このプロジェクトは Bun のみを使用します。
bun install --frozen-lockfile
bun run lint
bun run typecheck
bun run test --coverage
bun run build
bun pm pack
テストでは Vitest と mocked fetch を使用し、実際の SonarQube server には依存しません。
Lines、statements、functions、branches の coverage gates はすべて 80% 以上です。
MIT