Communitygithub.com

Walliiee/agent-harness

AIエージェント(OpenClaw / Hermes / Claude Code / Codex)向けのドロップイン型自己改善メモリ+操作ハーネス。階層化メモリ、自律的なドリフト修正ループ、評価、ワンコマンドDR。テンプレートとスクリプト付き、シークレット不要。

agent-harness とは?

Walliiee/agent-harnessは、AIエージェントのメモリと操作を管理するための包括的なフレームワークです。OpenClaw、Hermes、Claude Code、Codexなど複数のエージェントプラットフォームをサポートし、階層化メモリシステム、自律的なドリフト検出・修正ループ、評価機能、ワンコマンドでのディザスタリカバリを提供します。このハーネスはテンプレートとスクリプトを同梱しており、シークレットや外部依存なしにすぐに使い始められます。主な機能として、長期・短期メモリの階層管理、エージェントの行動ドリフトを自動検出して修正するセルフヒーリングループ、エージェントのパフォーマンスを定量的に評価するテストスイート、そしてクラッシュ時や設定ミス時に過去の正常状態に即座に戻せるワンコマンドDRが含まれます。開発者はこのハーネスを統合することで、エージェントの記憶保持力と自律運用の信頼性を劇的に向上させられます。

対応✓Claude Code✓Codex CLI~Cursor
npx skills add Walliiee/agent-harness

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

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

ドキュメント

QMD — ローカル知識ベース検索

QMDは、ユーザーのワークスペース上で動作するローカルなベクター+キーワード検索エンジンです。特に、人、プロジェクト、決定、過去の作業に関するコンテキストについて、すでに文書化されている可能性がある質問に答える前に使用してください。

ワークフロー

ワークフローは常に以下の通りです:

  1. 検索: 候補となる文書を検索します。
  2. 取得: qmd get または qmd multi-get で全文を取得します。
  3. 回答: 取得したテキストから回答し、パスやドキュメントIDを引用します。

ユーザーが事実、決定、引用、ニュアンスを必要とする場合、スニペットのみから回答しないでください。スニペットは手がかりにすぎません。

取得した内容を報告する際は、簡潔なメモで十分です。必要な場合を除き、ファイル全体を貼り付けないでください:

取得: #abc123 wiki/projects/GenAICategorizer.md, #def432 memory/2026-05-26.md

適切な検索モードを選択する

モードコマンド使用するタイミング
BM25 キーワードqmd search正確な単語、タイトル、名前、コードシンボル、レアフレーズ
ハイブリッド+リランクqmd query間接的な言い回し、概念的な想起、最高品質
構造化qmd query + lex:/vec:/hyde: フィールド正確なアンカー+意味的想起が必要な難しい検索

シンプルな検索:

qmd search "challenger crew project status" -n 10
qmd search '"GenAI Categorizer"' -c wiki-main -n 5

意味的概念検索:

qmd query "decision quality depends on surfacing assumptions and context" -n 10

構造化クエリ(難しい検索):

qmd query $'intent: OKRが判断を代替させずに、指標を計器として捉えるコンセプトノートを見つける。\nlex: cockpit instruments OKR Goodhart metrics judgment\nvec: data informed not metric driven product judgment\nhyde: メトリクスはコックピットの計器のように有用だが、リーダーはメトリクス主導ではなくデータインフォームドであるべきで、OKRやダッシュボードはプロダクト判断をグッドハート化させる可能性があるというコンセプトノート。'

構造化クエリのフィールド:

  • intent: 何を見つけようとしているか、何を避けるべきかを記述します。
  • lex: 正確な用語、エイリアス、タイトル、レアワード。
  • vec: アイデアを自然言語で言い換えます。
  • hyde: リクエストを満たす文書または回答を記述します。

ソースの取得

qmd get "#abc123"                        # 検索結果のドキュメントIDから
qmd get "wiki/projects/GenAICategorizer.md" --full  # パスから
qmd multi-get "#abc123,#def432" --md     # ドキュメントIDでバッチ取得
qmd multi-get 'memory/2026-05-*.md' -l 80  # グロブパターンでバッチ取得

複数のヒットを比較したり、ページ間でコンテキストを収集する場合は multi-get を使用してください。正確なソースが重要な場合は --full を使用してください。

エージェント別コレクション

各エージェントは独自のQMDインデックスを持ち、XDG分離された設定を使用します。エージェントリストは ${OPENCLAW_HOME}/config/agents.map にあります。CLIから検索する場合は、エージェントのXDGラッパーを使用してください:

# メインエージェント
XDG_CONFIG_HOME=${OPENCLAW_HOME}/agents/main/qmd/xdg-config XDG_CACHE_HOME=${OPENCLAW_HOME}/agents/main/qmd/xdg-cache qmd query "..."
# devエージェントおよびその他のエージェント — 同じパターンで、エージェント名を入れ替えてください

メインエージェントのコレクション

コレクション内容
identity-mainコアドキュメント — SOUL, IDENTITY, TOOLS, AGENTS, NETWORK, MEMORY インデックス
wiki-main永続的な知識皮質。 Wiki — エージェント行動(エージェント間ルール)、プロジェクト、ツール、コンセプト、人物。2026-05-28時点での主要な永続メモリの保管場所。
memory-main日次メモリファイル (YYYY-MM-DD.md) — 7日間のキャプチャレイヤー。コンテンツを wiki-main にプロモートします。
workspace-docs-mainワークスペース全体のマークダウン(リファレンス、タスク、ハンドオフ、学び)
skills-mainスキル定義 (SKILL.md ファイル)
agents-*-identity他のエージェントのルートID/設定ドキュメント(エージェント別ワークスペース)
agents-*-memory他のエージェントの日次メモリファイル(エージェント別ワークスペース)
agents-*-wiki他のエージェントの永続的Wiki(エージェント別ワークスペース) — メインエージェントは専門家の永続的知識を直接クエリできます。
handoffs-*エージェント別ハンドオフファイル(main、dev、およびその他のエージェント)

専門家エージェントコレクションヒント

以下のコレクション名は、各専門家エージェント独自のQMD設定に基づいています。メインエージェントからは、エージェント間の同等コレクション(agents-<agent>-wiki、agents-<agent>-memory)を使用してください。

探しているものエージェント主要コレクション(そのエージェント内)メインエージェントから
コードプロジェクト、ビルド設定、エンジニアリング上の決定devprojects-dev, identity-dev, wiki-devagents-dev-wiki, agents-dev-memory

コンテキストとコレクションのスコープ指定

QMDの context: メタデータ(index.yml または qmd context add で設定)は、各コレクションの内容を説明することで検索の関連性を向上させます。これは結果とともに返されます。

幅広いクエリが誤ったコーパスに流れるのを防ぐために、-c で検索範囲を指定してください:

qmd search "standup notes this week" -c agents-dev-memory -n 10
qmd query "GenAI project status" -c wiki-main -c projects-dev -n 10

-c を省略すると全てを検索します。

診断

qmd status     # コレクション数と保留中の埋め込み
qmd update     # 再インデックス(インデックス化されたパスにファイルを追加/編集した後に使用)
qmd embed      # 更新後にベクターを生成/再構築

qmd query または qmd vsearch が失敗した場合(モデル/GPUが利用不可)、より強力な語彙検索用語で qmd search にフォールバックしてください。

注意: 古いドキュメントでは qmd doctor に言及していましたが、そのサブコマンドは現在のCLIバージョンには存在しません。ヘルスチェックには qmd status を、修復には qmd update/qmd embed を使用してください。

MCPツール

MCPを使用する場合(OpenClawエージェントのデフォルト)、構造化クエリを推奨します:

{
  "searches": [
    { "type": "lex", "query": "challenger crew status" },
    { "type": "vec", "query": "what is the current state of the challenger crew project" }
  ],
  "intent": "Find project status, not general concepts about crew.",
  "limit": 10
}

落とし穴

  • スニペットで止まらないでください。 主張をする前にファイルを取得してください。
  • 意味的検索を使い過ぎないでください。 正確なタイトルや用語がわかっている場合、BM25の方が高速で、多くの場合より優れています。
  • 軽率にインデックスを変更しないでください。 qmd collection add、qmd update、qmd embed はローカル状態を変更し、コストがかかる可能性があります。
  • モデル駆動コマンドは環境に依存する場合があります。 qmd query またはリランクが失敗した場合は、より強力な語彙検索用語で qmd search にフォールバックしてください。
  • あいまいなユーザーの表現には意図が必要です。 クエリ拡張が適切なドメインを推測することを期待するのではなく、intent: を追加してください。
  • コレクション名は重要です。 クエリが複数のドメインに一致する可能性がある場合は、-c で範囲を指定してください。
  • 新しさ: QMDは古い結果を減衰させません。時間に敏感なメモリの場合は、ファイル名を確認してください — 今日に近いYYYY-MM-DDほど最新です。

セットアップとメンテナンス

指示があった場合のみ実行してください。検索と取得は安全ですが、インデックスの変更は軽率に行うべきではありません。

qmd collection add ~/notes --name notes   # index.ymlを編集する代わりのCLI
qmd context add qmd://notes "Description"  # index.ymlの context: の代わりのCLI
qmd update                                # コレクションの再インデックス
qmd embed                                 # ベクターの生成/再構築
qmd status                                # 変更後のヘルスチェック

関連スキル