Communityコーディング&開発github.com

grahama1970/assistant-lab

自己改善型ワークベンチ for /assistant。診断、トレーニング、評価、モデル昇格の全ツールを備え、継続的なループでモデルを進化させます。「温かい池」のように、/assistant が自身の推論スタックを進化させる場です。

assistant-lab とは?

assistant-labは、/assistant エージェントの自己改善ループを実現するための包括的なワークベンチです。このスキルは、監視スキル(/monitor-skills)によって検出された問題を診断し、新たなモデルをトレーニングし、教師モデル(scillm)と比較評価し、合格したモデルを本番レジストリに昇格させることで、/assistantの性能を継続的に向上させます。 主な機能として、QLoRA/SFT GPTモデル、DistilBERT/sklearn分類器、XGBoost回帰器などのトレーニングと評価をサポートし、RunPod Flashを利用したリモートGPUトレーニングにも対応します。トレーニングデータの質と量を重視し、最低サンプル数(GPT: 1000以上、分類器: クラスあたり200以上)を厳格に守ることで、不十分なデータでの早期トレーニングによる性能低下を防ぎます。 自己改善ループは、教師との合意率に基づいて最適なアクションを選択します。合意率90%以上で昇格、80-90%でプロンプト再設計、70-80%で再トレーニング、70%未満でアーキテクチャ変更と積極的な再トレーニングを行います。このループにより、/assistantは常に最高のモデルを推論に使用できます。

対応~Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/grahama1970/agent-skills/tree/main/skills/assistant-lab

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

assistant-lab は何をしますか?

/assistant の自己改善ワークベンチです。これはラボであり、 /assistant が問題を診断し、新しいモデルをトレーニングし、評価し、 合格したモデルを本番レジストリに昇格させます。

/monitor-skills と混同しないでください。これは、すべてのスキルの ヘルス、ドリフト、同期の問題を監視する可観測性デーモンです。 /assistant-lab は、特に自己改善のためのツールボックスです。

自己改善ループ

/monitor-skills が問題を検出    ← 可観測性
    ↓
/assistant-lab が根本原因を診断 ← このスキル
    ↓
シャドウモード: 教師 (scillm) がラベルを付け、shadow.jsonl に保存
    ↓
ModelFactory.auto_improve(task)
  ├─ シャドウ合意率を読み取り
  ├─ >= 90%: 昇格 → model_registry.json を更新
  ├─ 80-90%: 停滞 → /prompt-lab で再設計
  ├─ 70-80%: 再トレーニング → /create-gpt または /create-classifier
  └─ < 70%: 積極的再トレーニング + アーキテクチャ変更
    ↓
/gpt-lab ベンチマーク または /classifier-lab 評価
    ↓ 合格? → 本番レジストリに昇格
    ↓
/assistant が推論時に改善されたモデルを使用

利用可能なツール

ツール目的使用タイミング
/create-gptQLoRA/SFT/GRPO GPT をトレーニング (Tier 1.5)合意率 < 80% またはモデルが存在しない場合
/create-classifierDistilBERT/sklearn 分類器をトレーニング (Tier 0.5)テキスト分類タスク
/create-regressorsklearn/XGB 回帰器をトレーニング (Tier 0.75)連続値予測タスク
RunPod FlashPython SDK を使用したサーバーレス GPU トレーニング (7B–70B)モデルがローカル A5000 に大きすぎる場合 — トレーニングに /ops-runpod を置き換え
/gpt-labGPT を教師ベースラインと比較ベンチマークトレーニング後、昇格前
/classifier-lab分類器の精度/F1 を評価分類器トレーニング後
/prompt-lab停滞が検出された場合にプロンプトを再設計合意率が 80-90% で停滞
/scillmTier 2 教師 — ラベルを作成常時 (教師は正解基準)

使用方法

CLI

# タスクに必要なものを診断
./run.sh diagnose --task stress-test-grader

# 完全自律改善ループ
./run.sh auto-improve --task stress-test-grader

# 特定のモデルタイプをトレーニング
./run.sh train --task stress-test-grader --type gpt
./run.sh train --task sparta-ambiguity --type classifier

# モデルを評価
./run.sh evaluate --task stress-test-grader --type gpt

# 合格モデルを昇格 (シャドウモードを無効化)
./run.sh promote --task stress-test-grader --type gpt

# shadow.jsonl から教師ラベルを収集
./run.sh harvest --task stress-test-grader --since 24h

# すべてのタスクのシャドウ合意統計を表示
./run.sh status

# 完全セルフテストを実行 (テストデータでトレーニング → 評価 → 昇格のサイクル)
./run.sh self-test

Python API

from assistant_lab import AssistantLab

lab = AssistantLab()

# 診断: このタスクには何が必要か?
diagnosis = lab.diagnose("stress-test-grader")
# → {"has_gpt": False, "has_classifier": False, "shadow_agreement": 0.0, ...}

# 自動改善: 判断 + トレーニング + 評価 + 昇格
result = lab.auto_improve("stress-test-grader")
# → {"actions": ["trained gpt", "evaluated (passing=True)", "promoted"]}

# 手動ステップ
lab.train("stress-test-grader", model_type="gpt")
lab.evaluate("stress-test-grader", model_type="gpt")
lab.promote("stress-test-grader", model_type="gpt")

モデルファクトリー

コアエンジンは ModelFactory ( /common/model_factory.py より) です。 /assistant-lab は CLI + 診断 + レポート機能でそれをラップします。

シャドウ合意率しきい値

合意率アクション根拠
>= 90%昇格生徒モデルが教師を確実に模倣
80-90%/prompt-lab 再設計停滞 — プロンプトが上限になっている可能性
70-80%より多くのラベルで再トレーニングデータ追加で改善の見込み
< 70%積極的再トレーニングアーキテクチャまたはベースモデルを変更
< 50 サンプル待機判断するデータ不足

最小トレーニングデータ (交渉不可)

十分なデータがない状態で /create-gpt train や /create-classifier train を呼び出さないでください。

モデルタイプ最小サンプル数ルール
GPT (QLoRA SFT)合計1,000 以上< 1,000 → Tier 2 教師のまま維持
分類器 (sklearn/SetFit)クラスあたり200n_samples / n_classes >= 200
回帰器合計100 以上標準的な sklearn ガイドライン

証拠: sparta_stress_grading は 246 サンプルでトレーニングされ、合意率 33.7% でした。 これは、モデルが時期尚早にトレーニングされたために4ヶ月分のシャドウラベルが無駄になったことを意味します。 最初に収集し、準備ができてからトレーニングしてください。

トレーニングデータフロー

Tier 2 教師 (ペルソナ経由の scillm)
    ↓ ラベルを shadow.jsonl に保存
    ↓
/assistant-lab harvest --task X
    ↓ 入力+出力ペアを抽出
    ↓
/create-gpt train --task X --data labels.jsonl
    ↓ Qwen2.5-1.5B で QLoRA (デフォルト)
    ↓
/gpt-lab benchmark --task X
    ↓ 生徒 vs 教師を比較
    ↓
/assistant-lab promote --task X --type gpt
    ↓ model_registry.json を更新、shadow_mode=false

リモートトレーニング (RunPod Flash)

ローカルの RTX A5000 (24GB VRAM、LoRA で最大 ~1.7B) には大きすぎるモデルの場合、 assistant-lab は RunPod Flash を使用します。これは、Docker、SSH、rsync の オーバーヘッドがないサーバーレス Python SDK です。Flash はすべてのトレーニングパスで /ops-runpod を置き換えます。/ops-runpod は永続的な推論サーバーにのみ残されます。

Flash を使用するタイミング

モデルサイズローカル A5000Flash の必要性GPU
0.5–1.7BLoRA 適合不要./run.sh train (ローカル)
3–7B適合不可必要B200 (推奨) または H200
8–13B不可能必要B200 (推奨) または H200

Flash GPU タイプ

GPUVRAM備考
B200192 GB HBM3e最速; MoE / 長文脈で H200 の 3–5 倍
H200192 GB HBM3可用性良好; 安定したベースライン

課金: 秒単位、ジョブあたり最大7日実行。

Flash コスト見積もり (概算)

モデルサイズGPU推定トレーニング時間推定コスト
7B QLoRA SFTB200~1–2 時間~$5–15
7B QLoRA SFTH200~2–3 時間~$8–20
13B QLoRA SFTB200~2–4 時間~$10–25
13B QLoRA SFTH200~3–5 時間~$12–30

コマンド

# ステップ 1: 常に最初にコストを見積もる
./run.sh estimate --task taxonomy-assessor --target flash --gpu B200 --size 7B

# ステップ 2: Flash B200 でトレーニング (安全性のため --confirm が必要)
./run.sh train --task taxonomy-assessor --target flash --gpu B200 --size 7B --confirm

# Flash H200 でトレーニング
./run.sh train --task taxonomy-assessor --target flash --gpu H200 --size 13B --confirm

# カスタムベースモデルで
./run.sh train --task taxonomy-assessor --target flash --gpu B200 --size 8B \
  --base-model meta-llama/Llama-3.1-8B-Instruct --confirm

# 異なる量子化で
./run.sh train --task qra-validator --target flash --gpu B200 --size 7B \
  --quantize Q5_K_M --confirm

Flash トレーニングパイプライン

estimate --target flash --gpu B200 --size 7B
    ↓
train --target flash --gpu B200 --confirm
  ├─ 1. コスト見積もり + 予算ゲート
  ├─ 2. Flash サーバーレスジョブ送信 (Python SDK — Docker/SSH 不要)
  ├─ 3. データセットを Flash ワーカーにストリーミング
  ├─ 4. B200/H200 (192GB VRAM) で QLoRA / SFT トレーニング実行
  ├─ 5. モデル重みを /mnt/storage12tb/models/ にプル
  ├─ 6. create-gpt export --quantize Q4_K_M (GGUF)
  └─ 7. 評価 + 合格なら自動昇格

安全装置

  • 予算上限: --max-cost (デフォルト $15.00) で見積もりが制限を超える場合、トレーニングをブロック
  • 確認: --confirm を必須 — なければコストを表示して終了
  • 自動後片付け: 終了時に Flash ジョブをキャンセル (エラー時も trap 経由)
  • メトリクスログ: すべての Flash トレーニング実行を lab_metrics.jsonl に記録

自己改善ループとの統合

リモートトレーニングされたモデルは、ローカルモデルと同じカスケードに統合されます:

Tier 0:   ヒューリスティック (無料、即時)
Tier 0.5: 分類器 (ローカル、無料)
Tier 1.5: ローカル GPT ≤1.7B (create-gpt、トレーニング後無料)
Tier 1.5: リモート GPT 3-13B (train-remote、トレーニング後無料)  ← 新規
Tier 2:   scillm/DeepSeek V3 (Chutes、$0.12/1K 呼び出し)

Tier 1.5 の 7-13B モデルは、Tier 2 (Chutes) へのエスカレーションを大幅に削減でき、 トレーニングコストを超過料金の削減で相殺できる可能性があります。

他のスキルとの関係

/monitor-skills ──→ "スキル X が異常です"
                         ↓
/assistant-lab ──→ 診断 → トレーニング → 評価 → 昇格
                         ↓
/assistant ──────→ 推論時に昇格モデルを使用
  • /monitor-skills: すべてのスキルを監視。問題を検出。ヘルスを報告。
  • /assistant-lab: /assistant のモデルを修正。トレーニング、評価、昇格。
  • /assistant: 推論を実行。ラボが生成したモデルを使用。

契約

  • 入力: タスク名 + オプションのモデルタイプ
  • 出力: 診断結果、トレーニング結果、評価結果、昇格ステータス
  • 依存関係: model_factory.py (/common より)、create-* スキルおよび *-lab スキル
  • メトリクス: ~/.pi/assistant/lab_metrics.jsonl に追記

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

grahama1970/acceptance-contract

Turn a client brief, zip bundle, directory, or single requirements file into a typed acceptance-contract bundle with extracted requirements, acceptance checks, open questions, an immutable-goal draft, and a create-report-backed decision report. Use when users say acceptance contract, brief to requirements, freeze the goal, create immutable goal, amend immutable goal, build a Battle requirements bundle, or extract requirements from this bundle.

grahama1970/agent-ecosystem

Canonical map and shared contracts for the agent-governance ecosystem: the pi.receipt_envelope.v1 boundary envelope, the component graph, and the rules for which component owns which schema. Use when wiring a skill or extension into the shared receipt world, when asking how shame, triage-error, tau, ask, project-watchdog, ops-herdr, ponytail, and Memory fit together, or when validating an envelope.

grahama1970/agentic-evals

Agentic evaluation of skills using multi-trial fixtures, deterministic command assertions, trajectory checks, safety constraints, and evidence-backed readiness scoring. Use when users ask for agentic evals, multi-trial skill evaluation, skill trajectory validation, or readiness scoring for a skill workflow.

grahama1970/agent-inbox

File-based inter-agent messaging with headless dispatch. Check inbox, send bugs/requests to other projects, automatically spawn headless agents to fix bugs, and track progress via task-monitor.

grahama1970/agents-registry

Generate and query the centralized agent identity registry. Scans .pi/agents/*/AGENTS.md, parses frontmatter, outputs agents-registry.json and optionally syncs to /memory for semantic search.

grahama1970/agent-status

Artifact-driven status surfaces for long-running project-agent work. Maintains status.json, events.jsonl, proof manifests, and a stale-aware STATUS.html so humans can tell where the agent is, what passed, what is still unproven, and what decision or action is next — without dashboard theater.

grahama1970/align

Round-based context alignment before execution. Use when the human, project agent, WebGPT, scillm, ask, dogpile, memory, or project-knowledge may each hold different facts about a task; especially before ambiguous design, infographic, product workflow, high-stakes implementation, plan-iterate, project-infographic, or multi-review work.

grahama1970/analytics

Flexible data science analytics for any dataset. Auto-discovers schema, recommends charts, exports to create-figure. Works with JSONL, JSON, CSV from any source.

grahama1970/analyze-chatterbox-emotions

Evaluate generated Chatterbox voice files as voice-quality artifacts: affect match, arousal/valence proxies, pause placement, intelligibility inputs, clipping, loudness, and discontinuity flags. Use when reviewing Chatterbox emotional tags, pauses, Turbo/base affect delivery, Persona Dream utterance renders, or whether generated speech matches an intended product-facing affect.

grahama1970/analyze-elf

Reverse-engineer features from ELF binaries. Extracts CLI commands, state machines, protocols, Zod schemas, and data models. Automatically generates a /create-walkthrough prosecution brief with Mermaid diagrams. Uses /treesitter for AST analysis of bundled JS/TS source.

grahama1970/animation-vocabulary

Reverse-lookup glossary that turns a vague description of a web animation or motion effect into its exact term ("the bouncy thing when a popover opens" → Pop in; "the iOS rubber-band scroll" → Rubber-banding). Use when the user asks "what's it called when…", or describes a motion effect without knowing its name and wants the right word to prompt an AI or designer with. For naming an effect, not designing or building one.

grahama1970/anonymize-data

Anonymize supported CSV, JSON, UTF-8 text, and SQLite files using an explicit policy through the oai-trial project. Use for anonymize data, pseudonymize exports, redact policy literals, or discover and explicitly approve fuzzy name aliases. The skill is a thin CLI/Docker interface, not another engine.

grahama1970/anvil

Heavy-duty "No-Vibes" debugging and hardening orchestrator. Use this for complex, stubborn bugs where `review-code` has failed, or for "Red Teaming" (hardening) a codebase. Runs multiple agents in parallel (Thunderdome) using git worktree isolation.

grahama1970/apple-design

Apple's approach to interface design and fluid, physical motion, translated for the web. Use when building or reviewing gesture-driven UI, spring animations, drag/swipe/sheet interactions, momentum and interruptible transitions, translucent materials and depth, typography (optical sizing, tracking, leading), reduced-motion, or the design foundations (feedback, spatial consistency, restraint) behind Apple-style interfaces.

grahama1970/argue

Multi-persona structured debate orchestrator. Personas research via /dogpile, consult colleagues via /ask, and argue toward nuanced synthesis on complex questions.

grahama1970/arxiv

Search arXiv for papers and extract knowledge into memory. Use `search` to find papers, `learn` to extract knowledge.

grahama1970/ask

Use when the user asks to query project memory, ask an oracle, use supported browser-backed reviewers, run Tau roundtable/single-handler workflows, ask Pi-native subagents from within Pi, run persona/deep-review workflows, generate image prompts, check OS/project health through composed skills, or run an ask DAG. This skill is the executable /ask runtime; do not replace it with an informal subagent, plain web search, or hand-written review; inside Pi, explicit Pi-native subagent targets are routed through the pi-subagents tool as an Ask target type.

grahama1970/assess

Step back and critically reassess project state. Use when asked to "assess", "step back", "fresh eyes", "check alignment", "sanity check", "health check", "prune documentation", or "evaluate what's working". Offers documentation pruning and doc-code alignment analysis. Offer to run after major changes (don't auto-run).

grahama1970/assistant

Shared GPT + classifier inference gateway for persona monitor tasks. Routes validation and classification through a 4-tier cascade: heuristic → classifier → local GPT → scillm.

grahama1970/batch-quality

Pre-flight validation and quality gates for batch LLM operations. ACTUALLY tests samples through LLM before burning tokens. Uses SPARTA contracts for DuckDB validation queries. Integrates with task-monitor for enforced quality gates.

関連スキル