AI・機械学習
qm
要約
qmは、スタートアップ向けに設計されたマルチプレイヤーAIエージェントハーネスです。各従業員は独立したワークスペースを持ち、エージェントとチャネル、グループメッセージ、プロジェクトで協力できます。各ユーザーとルームには、スコープ化されたメモリ、ファイル、権限、サンドボックスなどが備わっています。Pi、OpenCode、Codex、Claude Codeなど、複数のモデルやハーネスを切り替え可能で、ベンダーに依存しない設計です。
全文翻訳
qm 仕事のためのマルチプレイヤーエージェントハーネス。SlackとWeb上で利用できます。
QMとは何か?
ほとんどのエージェントはパーソナルアシスタントのように設計されています。会社全体で機能するようにすることもできますが、すぐに複雑になります。QMはスタートアップ向けに設計されています。従業員はそれぞれ独立したワークスペースを持ち、互いに影響を与えることなく独立して作業できます。また、チャネル、グループメッセージ、プロジェクトでエージェントと協力することもできます。各個人と各ルームには、独自のスコープ化されたメモリ、ファイル、キーチェーンビュー、権限、cron、Webアプリ、および永続的なサンドボックスがあります。オープンソースを念頭に置いて構築されています。独自のハーネスとモデルを選択し、それらを切り替えることができます — Pi、OpenCode、Codex、Claude Codeはすべて同じコアを駆動するため、デプロイメントは単一のベンダーに縛られません。
機能
パーソナルスコープと共有スコープ。
ユーザーはエージェントを自分用にカスタマイズし、Slackチャネルやプロジェクトで協力して使用できます。
SlackとWeb。
同じIDと設定がSlackとWebアプリの間で引き継がれます。
管理者コントロール。
組織レベルの設定、セキュリティ体制、利用可能なハーネスとモデルを設定できます。
Webアプリ。
カスタムの内部アプリを起動し、適切なユーザーに公開できます。
共有スキル。
スキルはスコープごとに所有され、付与によって共有可能であり、管理者によって組織全体に昇格させることができます。また、gitリポジトリからスキルパックをインポートすることもできます。
バックグラウンドワーク。
cronとウォッチは、誰も見ていない間も作業を実行します。
これで何ができるか
内部メモ、メール、ドキュメント、データベース、Webをまとめて検索する
会社のナレッジベースから情報を取得する
内部アプリを構築し、適切なユーザーに公開し、データを最新の状態に保つ
過去の送信からライティングスタイルを学習し、スケジュールに基づいて受信トレイをトリアージする — ラベルと返信ドラフトを含む
既存のリポジトリで作業する:テストを実行する、PRを開く、CIを監視する、システムログを確認する
共有チャネルでプロジェクトを追跡し、更新とフォローアップを投稿する
アーキテクチャ
フローチャート
LR
DB[("Postgres\nセッション・メモリ・キュー")]
サブグラフ CORE["ヘッドレスコア"]
API["API・ID・ポリシー・スケジューラ"]
LOOP["エージェントループ\n(Pi, OpenCode, Claude Code)"]
API <--> LOOP
end
SBX["スコープごとのサンドボックス\nファイル・ツール・ログイン済みサービス"]
DB <--> API
LOOP <--> SBX
ローディング
すべてのターンは中央コアを通過し、さまざまなモデルとハーネスを使用して応答を生成できます。Postgres永続化レイヤーは、ユーザーデータ、セッション履歴、その他の永続的な状態を保持します。エージェントは小さく固定されたツールセットを持っています。そのツールの1つがexecuteで、スコープ固有の独立したサンドボックス(ツールがインストールされたままになる永続的なコンピューター)でコマンドを実行します。Web UI、管理者パネル、パブリックポータルは、コアのHTTP API上のオプションのプラグインです。Slackは、コアが直接サービスクライアントを通じて開始および監視するオプションのインプロセスプラグインです。コアはNodeでTypeScriptを直接実行し、HTTPにはFastifyを使用します。SlackプラグインはBoltを使用し、Web UIはViteで構築され、Litでレンダリングされます。コア自体は汎用的です。1つの会社に固有のすべて — 組織設定、カスタムツールとスキル、サンドボックスイメージ、インフラ — は、qm CLIが検証およびデプロイするデプロイメントディレクトリに格納されます。すべての基盤(ハーネス、セッションストア、サンドボックス、メモリ)はインターフェースの後ろに配置されているため、本番実装は1つの配線ファイルを通じて切り替わります。
セキュリティとシークレット
QMのアプローチは、OpenCode、Codex、Claude Codeのようなローカルコーディングエージェントに従います。エージェントは、その資格情報と権限を持って、作業している人物として機能し、そのすべての操作が監査されます。組織は1つのセキュリティ体制を選択し、より狭いスコープはそれを強化することしかできません。
Strict — 2つの効果のないターミネーターを除き、すべてのハーネスツールの呼び出しは人間の承認のために一時停止されます。
Auto (デフォルト) — 分類器が、プロビナンスラベル付きの外部データとツールの結果をモデルに到達する前にスクリーニングします。デプロイメントはそのスクリーニングプロキシを指すことができます。
Dangerous — コンテンツスクリーニングなし、ツール呼び出し間のポーズなし。
事前に宣言されたコマンドポリシー — 再帰的削除や破壊的なSQLなどの承認ルールとハード拒否 — は、Dangerousを含むすべての体制で適用されます。SECURITY.mdには、脅威モデル、オペレーターの想定、既知の制限事項が記載されています。
組織のためにデプロイする
@yc-software/qmに依存する組織所有のデプロイメントリポジトリを作成します。
npm exec --yes --package=@yc-software/qm@latest -- \
qm init . --org <slug> --target <fly-or-aws>
npm install
初期化により、エージェント用のデプロイメントスキルが生成され、インフラ、Webサインイン、コネクタ資格情報、オプションのSlackアクセス、デプロイメント、ライブ検証が順を追って説明されます — ソースチェックアウトは不要です。各デプロイメントはオペレーター自身のクラウドアカウントで実行されます。初期化はデプロイメントCIを生成または有効化せず、このリポジトリには本番デプロイメントワークフローがありません。詳細はdeployment.mdを参照してください。
貢献
コードではなく、人間が書いたテキストとして貢献を受け付けます — CONTRIBUTING.mdを参照してください。adrs/内の.txtまたは.mdファイルで、非公式に希望する変更を記述してください。合意が得られれば、実装を行います。脆弱性は、公開された問題ではなく、SECURITY.mdに従ってプライベートに報告してください。
インスタンスをカスタマイズする
上記のデプロイメントリポジトリは、設定とサンドボックスレイヤーを保持し、ソースチェックアウトを必要としません。一部の組織は反対のトレードオフを望みます。コードベース全体を1か所にまとめ、エンジニアとコーディングエージェントがコアとカスタマイズを一緒に読み、カスタマイズ自体はプライベートに保ちます。そのためには、プライベートフォークを維持してください。これは、historyがqmのクローンとして始まり、コアがupstreamと同一であるスタンドアロンのプライベートリポジトリです。一度入力したら、作業のためにクローンしてください。
gh repo create <org>/qm-private --private
git clone --bare git@github.com:yc-software/qm qm-seed.git
git -C qm-seed.git push --mirror git@github.com:<org>/qm-private
rm -rf qm-seed.git
git clone git@github.com:<org>/qm-private
git -C qm-private remote add upstream git@github.com:yc-software/qm
上記のようにプレーンクローンでプライベートフォークを作成し、GitHubのフォーク機能は絶対に使用しないでください。ここでの「フォーク」という言葉は、意図的に分岐し、upstreamからマージする下流のコピーという概念を指し、GitHubのForkボタンを指すものではありません。GitHubのフォークは、それが由来するリポジトリの可視性を継承するため、公開リポジトリのフォークをプライベートにすることはできません。また、GitHubのフォークは、それが由来するリポジトリと1つのオブジェクトネットワークを共有するため、フォークにプッシュされたコミットはSHAから公開側で取得可能です。多くの組織はプライベートリポジトリのフォークも禁止しています。プレーンクローンにはこれらの問題はありませんが、1つのコストがかかります。クローンは通常のレポジトリであるため、upstreamのCIワークフローはあなたのアカウントでライブ実行されます。それらのワークフローが必要とするシークレットを提供するか、実行したくないものを無効にする必要があります。組織固有のすべては、deploy/layers/<org>/ に格納されます — 設定、サンドボックスツールとスキル、プラグインイメージ、インフラ — qm initが生成するのと同じ形式で。deploy/layers/README.mdを参照してください。コアはupstreamとバイト単位で同一であり、マージを小さく保ちます。2つのスキルが両方向の境界を維持します。update-qmはupstream qmをプライベートフォークにマージし、sync PRを開きます。upstream-prは、組織に依存しない修正をqmに送り返し、upstream/mainからブランチを切り取り、送信される差分、コミットメッセージ、スクリーンショットを組織識別子についてチェックしてからプッシュします。deploy/layers/の下にあるものは決してupstreamに移動しません。
さらに深く
docs/getting-started.md — 初回実行、エンドツーエンド
cli/README.md — qm CLIとデプロイメントディレクトリの契約
docs/deploy-directory.md — デプロイメントディレクトリの詳細
.env.example — すべてのノブ、その場で文書化
plugins/ — インターフェース(Slack、Web UI、管理者、ポータル)
ライセンス
特に記載がない限り、QMはMITライセンスの下で利用可能です。