Skip to main content
Glama

Deadwax

CI

個人のリスニング履歴に対するエージェント型ミュージックライブラリアンです。何を聴いたかについての自然言語の質問に答え、厳格な制約に基づいてプレイリストを構築します。決定的なバリデーター、修復ループ、そして合格/不合格ではなく合格を報告する評価スイートを備えています。

ツール使用、検索、トレーシング、評価、MCPといった本番レベルのLLMエンジニアリング実践を示すポートフォリオ作品として構築されました。

面白い部分

ほとんどのLLMデモは、2回実行するまでは機能します。Deadwaxは、2回目の実行で何が起こるかを中心に構築されています。

システムは一線で分割されています。モデルは決して計算しません。 モデルは言語を解釈し、ツールを選択し、散文を構成します。すべての算術演算、閾値チェック、制約の判定は、LLMの存在を知らない素のPythonで行われます。プレイリストが制約に違反した場合、バリデーターはFalseを返すのではなく、違反コード、問題のトラックID、具体的な修正方法を返します。これこそが、自動修復ループが機能する唯一の理由です。

実現可能性は生成の前にチェックされます。ブリーフを満たせない場合、システムはその旨を明言します。パディング、代替、黙っての劣化は決して行いません。status="infeasible"は、独自の評価ケースを持つ正しい結果です。

Related MCP server: Navidrome-MCP

アーキテクチャのルール

スタイル上の好みではありません。これらに違反すると、プロジェクトの目的が損なわれます。

  1. モデルは決して計算しない。

  2. ツールの説明は動作の制御です。プロンプトであり、ドキュメントではありません。変更は動作の変更であり、マージ前に再評価されます。

  3. 違反は機械が実行可能な形で示されます。コード、問題のID、修正方法。裸のブール値や散文だけでは不十分です。

  4. 実現可能性は生成前にチェックされます。

  5. 失敗は有効な結果です。

  6. ハード制約は測定され、強制されます。ソフト制約は推論され、スコア化され、それについてのメッセージは必ず開示しなければならないprovenanceフィールドを持ちます。

  7. トレースなしのモデル呼び出しはありません。

決定とそのトレードオフはdocs/adrに記録されています。

スタック

すべて無料枠で動作します。これは好みではなく、厳格な制約です。

選択肢

言語

Python 3.13

ツールチェーン

uv(依存関係とPython自体の管理)、ruff(lintとフォーマット)、pytest

エージェント

LangChain(ステージ3で導入、それ以前ではない)

モデル

Google Gemini Flash(OpenRouterフォールバック付き)

ストア

sqlite3標準ライブラリモジュールによるSQLite

検索

ビルド時の埋め込み、素のPythonでのコサイン類似度 — ベクトルデータベースなし

トレーシング

Langfuse

相互運用

Model Context Protocolサーバー

フロントエンド

Cloudflare Pages上のAstro — 唯一のJavaScriptコンポーネント

ステージ0から2までは標準ライブラリのみを使用します。フレームワーク、SDK、依存関係はありません。生のHTTP呼び出しは、抽象化が導入される前に手書きで行われます。これにより、フレームワークが実際の動作を誤って表現した場合に、その違いが明確になります。

ビルドの進捗

12のステージ、4つのフェーズ。各ステージにつき1つのブランチと1つのスカッシュマージPRがあり、履歴は実際のビルドの進行を反映しています。

フェーズ

ステージ

ステータス

A · 基盤

0 · 生の呼び出し1回

🔨 進行中

A · 基盤

1 · フィクスチャデータ

A · 基盤

2 · 決定的コア

B · エージェント

3 · 最初のツールループ

B · エージェント

4 · 揺らぎの測定

B · エージェント

5 · 評価ハーネス

v0.5

C · 品質向上

6 · 修復ループ

C · 品質向上

7 · 敵対的ケース

C · 品質向上

8 · トレーシング

C · 品質向上

9 · 検索

v0.9

D · 出荷

10 · 実データ

D · 出荷

11 · MCPサーバー

D · 出荷

12 · サイトと解説

v1.0

実行方法

uvが必要です。uvはPython自体をインストールおよび管理するため、唯一の前提条件です。

winget install --id=astral-sh.uv -e

次に、リポジトリのルートから:

uv sync

これにより仮想環境が作成され、.python-versionから固定されたPythonバージョンがインストールされ、プロジェクトがインストールされます。

Google AI Studioから無料のGemini APIキーを追加します:

copy .env.example .env

GEMINI_API_KEY=の後にキーを貼り付けます。次に、無料枠のカタログは予告なく変更されるため、キーがアクセスできるモデルを確認します:

uv run scripts/raw_call.py --list

そのIDのいずれかを.envGEMINI_MODELとして設定し、呼び出しを実行します:

uv run scripts/raw_call.py

このスクリプトは、回答を抽出する前に完全なリクエストと完全なレスポンスを出力します。これがスクリプトの要点です。フレームワークがそれらを隠す前に、その形状を知っておく価値があります。

アカウントの実際のレート制限はaistudio.google.com/rate-limitに表示されます。GoogleはAPIドキュメントでモデルごとの無料枠テーブルを公開しなくなりました。

評価

評価スイートはステージ5で導入されます。ケースは手書きであり、決して生成されません。同じツールがコードと採点の両方を書く場合、スコアは意味を持ちません。スコアは繰り返し実行の合格率として報告されます。非決定的システムでの1回の合格は逸話に過ぎないからです。

プロンプト、ツールの説明、またはモデルを変更するコミットには、そのメッセージに変更前後の評価スコアが含まれます。

ライセンス

MIT。 LICENSE を参照してください。

David Koen によって構築されました。

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    Enables music management through search, playlist creation, and intelligent recommendations. Supports searching by song, artist, or album, creating and managing playlists, and getting music recommendations based on genre and mood.
    7
    13
  • A
    license
    Not graded
    quality
    A
    maintenance
    Analyze listening patterns, create custom playlists, discover missing albums, validate radio streams, and provide personalized recommendations through natural language.
    267
    83
    AGPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Spotify through natural language for music discovery, playback control, library management, and playlist creation. Supports searching for music, controlling playback, managing saved tracks, and getting personalized recommendations based on mood and preferences.
    109
    5
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TheDavidKoen/deadwax'

If you have feedback or need assistance with the MCP directory API, please join our Discord server