mcpField
D
dsh-baton

dsh-baton

ローカル
github.com/JialaoLiuAI・エージェント80今日更新

dsh-baton について

dsh-batonは、Claude CodeやCodexなどのMCPクライアントをDeepSeek Harnessに接続し、Harnessのセッションでコーディングタスクを委任・調整します。ワークスペースやセッションの操作機能とCLIを備え、Harnessのヘッドレスモードにも切り替えられます。

主な機能

  1. 01Harnessワークスペースの一覧表示と作成
  2. 02タスクの送信と実行中タスクの調整
  3. 03セッション、実行、アクティビティの確認
  4. 04結果待ちと作業のキャンセル
  5. 05ワークスペースとセッションを操作するCLI

活用シーン

  1. 01CodexからHarnessにコーディングタスクを委任
  2. 02別のクライアントから実行中のセッションを継続・調整
  3. 03進行状況を確認してセッションの作業を停止

MCP 対応

MCPサーバーは、Harnessのワークスペース、セッション、タスク、状態確認、待機、キャンセルのツールをMCPクライアントに公開します。プラグインはClaude CodeとCodexにサーバーを登録します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"jialaoliu-dsh-baton": {
"command": "npx",
"args": [
"-y",
"dsh-baton-mcp"
]
}
}
}
起動コマンドnpx -y dsh-baton-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmdsh-baton-mcp0.6.2

ツール

12

掲載時のツール一覧 · 今日に更新

このツールにパラメーターはありません。

詳細

dsh-baton:Claude Code または Codex から DeepSeek Harness にバトンを渡し、実行中の様子をリアルタイムで確認して、完了したら返してもらえます

English | 中文

macOS · Windows(ガイド) · Node.js 不要 · 依存関係なし · MIT

Claude Code と Codex からそれぞれ DeepSeek Harness にタスクを渡すと、サブエージェントが 1 時間 41 分でこの雨の夜の街を作り上げます(40 秒、音声あり):

https://github.com/user-attachments/assets/72e2fdff-275e-48bc-8e5a-39ffb025a0a8

ワークスペースやセッションの作成、セッションの続行、送信者名付きで Harness UI 上の実行状況をリアルタイム表示、完了時の通知、追加の API キー不要、依存関係なしで macOS と Windows に対応

一般的な流れ:ワークスペースを作成し、タスクを送信してバックグラウンドで待ち、同じセッションで追加の指示を送ります

実行の様子を見る

1 つの Codex チャットからタスクを開始し、追加のタスクをキューに入れ、実行中のターンに指示を出し、3 つすべての完了を待ちます:

左側の Codex が DeepSeek タスクを開始し、追加のタスクをキューに入れ、実行中のターンに指示を出して完了を待ちます。右側の DeepSeek Harness がそれぞれをリアルタイムで実行します

Codex と Claude が同じ Harness セッションで交互にやり取りし、各メッセージには送信者が表示されます:

Harness チャットで Codex と Claude のメッセージが交互に表示され、それぞれ別のチャットからの ChatGPT または Claude による送信とラベル付けされています

その他のデモ →

クイックスタート

手順 1:Harness で Plugins を開き、Add plugin を選択して dsh-baton-host と入力し、Install、Enable now の順にクリックします。これにより Claude Code と Codex 用に dsh-baton が登録されます。手順 2:新しいチャットで dsh_list_workspaces を呼び出すよう依頼します

DeepSeek Harness ≥ 0.2.1-rc.2(サインイン済み)と Claude Code または Codex が必要です。それ以外は不要です。Node.js もターミナルも必要ありません。手順は macOS と Windows で同じです。

1. Harness にプラグインを追加: Plugins(插件) → Add plugin(添加插件) → dsh-baton-host と入力 → Install(安装) → Enable now(立即启用)。

有効にすると、このプラグインはすべてのフォルダーで使えるよう Claude Code と Codex 用に dsh-baton を登録し、Harness がその旨を通知します。

2. 確認: Claude Code または Codex の新しい会話で、dsh_list_workspaces を呼び出すよう依頼します。Harness のワークスペースが一覧表示されます。

これで完了です。Harness が登録できなかったと表示した場合は、ターミナルで npx -y dsh-baton-mcp setup を実行してください(Node.js ≥ 22.15 が必要です)。同じ登録処理を行います。更新、削除、Windows の詳細については下記をご覧ください。

仕組み

MCP クライアントは stdio 経由で dsh-baton-mcp を呼び出します。dsh-baton-mcp は、所有者のみがアクセスできるローカルソケットを通じて Harness 内の dsh-baton-host プラグインに接続します。このプラグインは Harness のセッションをリアルタイムで操作し、フォールバックとして dsh headless を使用します

プラグインと headless の比較:Harness UI で実行をリアルタイム表示し、デスクトップセッションを継続し、デスクトップエージェントのプリセットを使えるのはプラグインだけです。どちらもデスクトップのサインイン情報を再利用します

各クライアントの待機方法(設定は不要です):

  • Claude Code はバックグラウンドで実行を待機します(dsh_send が返す wait_command)。実行が終了すると、一度だけ呼び出しが再開されます。
  • Codex は dsh_wait 内で、呼び出しごとに最大 270 秒待機します。これはツールのタイムアウトである 300 秒をわずかに下回る時間です。待機中に実行が完了しなかった場合、状態だけが返されるため、Codex は要約せずに再度呼び出します。Codex には wait_command は返されません。Codex のターミナルからは呼び出しを再開できないため、ポーリングすることになります。
  • Codex では MCP ツール呼び出しの承認が求められます。dsh-baton ツールを承認してください。無人の codex exec 実行には、--approve-for-me を追加してください。

ツール

ワークスペース:一覧表示、作成、名前変更。セッション:一覧表示、読み取り、アクティビティ、名前変更。実行:送信、状態確認、待機、キャンセル、実行一覧

実行状態:queued、running、waiting、completed、failed、cancelled、および実行中に Harness が再起動した場合の interrupted。ビジー状態のセッションには、followup(キューに追加)または steer(割り込み)メッセージを送信できます

ツールの詳細
ツール機能
dsh_list_workspacesHarness のサイドバーにあるワークスペースを一覧表示します
dsh_create_workspaceフォルダーをワークスペースとして登録します(存在しない場合はフォルダーを作成します)。すでに登録済みの場合は既存のワークスペースを返します
dsh_list_sessions新しい順にセッションを一覧表示し、タイトル、フォルダー、実行状態を表示します。フォルダーまたはテキストで絞り込めます。アーカイブ済みのセッションは表示されません
dsh_read_session1 つのセッションの最近のプロンプトと返信を読み取ります(ツール名を含みます)。アーカイブ済みのセッションには archived: true を指定します
dsh_sendメッセージを送信します。session_id を指定するとそのセッションを継続し、cwd または workspace_id を指定すると新しいセッションを開始します(ワークスペースに未登録の cwd は先に登録されます)。すぐに run_id を返します。Harness では、メッセージに「Claude / ChatGPT from another chat による送信」と表示されます。アーカイブ済みのセッションには送信できません。Harness でアーカイブを解除するか、新しいセッションを開始してください
dsh_status実行の進行状況を返します。状態、最近のテキストとツール呼び出し、最終返信が含まれます。ターンが終了していてもサブエージェントやジョブがまだ実行中の場合は waiting_on、実行中に Harness UI で人が入力した場合は human_interjections を返します。Harness の再起動で中断された実行の状態は interrupted です
dsh_wait実行の終了を待機します。Codex では呼び出しごとに最大 270 秒、その他のクライアントでは 50 秒です。実行が続いている場合は、状態だけを含む timed_out を返します。再度呼び出してください。バックグラウンドで待機できるクライアントは、代わりに dsh_send の wait_command を使用します。dsh_status はその時点の状態を確認するものであり、待機には使えません
dsh_session_activityセッションの現在のアクティビティを返します。実行中のターン、サブエージェント(深さは問いません)、バックグラウンドジョブが含まれます。アーカイブ済みのセッションには archived: true を指定します
dsh_cancelrun_id または session_id を指定して、セッションのすべてのアクティビティを停止します。ターン、サブエージェント、ジョブが対象です(キューに入っているメッセージはそのまま残ります)
dsh_rename_sessionセッションの名前を変更します
dsh_rename_workspaceワークスペースの名前を変更します(サイドバーのタイトルのみ。フォルダーは移動しません)
dsh_list_runs最近の実行を一覧表示します

CLI

dsh-baton workspaces
dsh-baton new-workspace ~/code/new-app --title "New App"
dsh-baton sessions --cwd ~/code/new-app
dsh-baton send --cwd ~/code/new-app "Scaffold the project"
dsh-baton send --session session-xxxx "Next: add tests"
dsh-baton send --session session-xxxx --mode steer "Interjection: don't change the API"
dsh-baton wait hrun-xxxx              # blocks, prints the final reply; exit 0 on success
dsh-baton status hrun-xxxx
dsh-baton activity session-xxxx       # running turn, sub-agents, background jobs
dsh-baton cancel --session session-xxxx
dsh-baton rename session-xxxx "New title"
dsh-baton rename-workspace ~/code/new-app "New name"

設定

変数デフォルト意味
DSH_BATON_BACKENDautoauto、host、または headless
DSH_BATON_HOME~/.dsh-batonソケットとヘッドレス実行記録
DSH_BATON_SOCKET$DSH_BATON_HOME/host.sockプラグインのソケットパス(両側で一致させる必要があります)。Windows ではユーザーごとの名前付きパイプにマッピングされます
DSH_BATON_WAIT_SCodex の場合は 270、それ以外は 501 回の dsh_wait 呼び出しで待機する時間です。クライアントのツールタイムアウトを延長した場合にのみ設定し、その値より短くしてください
DSH_BINmacOS アプリ内の dsh。それ以外は PATHヘッドレスモード用のハーネス CLI
DSH_HOME~/.dshハーネスのデータフォルダー(ヘッドレスセッションの読み取り先)
DSH_BATON_ACCOUNT10 にすると、ヘッドレスモードで API キー経由のルートを使用します
DSH_BATON_PATCHES空ヘッドレスモードの追加 --patch オーバーレイ(: 区切り)
ヘッドレスフォールバックの詳細

プラグインに接続できない場合、MCP サーバーは Harness の dsh headless コマンドにフォールバックします。継続できるのは、自身が作成したセッションのみです(ヘッドレスモードでは standard などのエージェントプリセットは読み込まれません)。また、新しいセッションはデスクトップのサイドバーに表示されません。デフォルトでは patches/account.patch.yml がデスクトップアプリの DeepSeek アカウントのサインイン情報を再利用するため、API キーは不要です。

## インストールの詳細

プラグインを有効にしたときの動作。 MCP サーバーをそのまま保持されるフォルダー ~/.dsh-baton/app にコピーし、~/.claude.json と ~/.codex/config.toml に MCP エントリーを直接書き込み、それぞれのバックアップとして *.bak-dsh-baton を作成します。PATH 上に Node.js ≥ 22.15 が見つかった場合はそれを使ってサーバーを起動し、見つからない場合は Harness 独自のランタイム(Node モードの Harness アプリ、ELECTRON_RUN_AS_NODE=1)を使うため、ほかに何かをインストールする必要はありません。いずれの場合も、claude / codex が PATH 上になくても、デスクトップアプリだけがインストールされていれば動作します。Harness の起動ごとに再度実行されますが、すでに正しいエントリーや、dsh-baton の別コピーを起動する動作中のエントリーはそのまま維持されます。Harness では、パッケージ名を入力するとソースが自動的に npm レジストリ(「公式 npm レジストリ」、「npm 官方源」)に切り替わり、再起動は不要です。登録を無効にするには、Harness に DSH_BATON_AUTO_REGISTER=0 を設定します。

npx -y dsh-baton-mcp setup は、ターミナルから同じ登録を行います。プラグインが登録できなかった場合や、MCP ディレクトリから利用する場合に使います。プラグインがすでに登録されていれば何も変更せず、プラグインが見つからない場合はその追加方法を案内します。

更新。 Harness では公式プラグインのみ更新ボタンを利用できるため、Plugins → dsh-baton-host → Uninstall、続いて Add plugin → dsh-baton-host の順に操作します。リリース直後は Harness が以前のバージョンをインストールすることがあります(pnpm の minimumReleaseAge が公開直後のバージョンを保留し、インストールダイアログにもその旨が表示されます)。すぐに新しいバージョンを使うには、バージョンを指定して [email protected] と入力します。再び有効にすると、プラグインが MCP サーバーを同じバージョンに更新します。新しい会話ではそのバージョンが使われます。バージョンが一致しない場合は、それに気づいた最初のツール呼び出しで通知されます。

削除。 Harness → Plugins → dsh-baton-host → Uninstall の順に操作してから、npx -y dsh-baton-mcp setup --remove を実行します。プラグインはアンインストールと Harness の終了を判別できないため、MCP エントリーはこのコマンドが削除できるよう残します。このコマンドは ~/.dsh-baton/app も削除します。実行記録は ~/.dsh-baton に残るため、不要な場合は削除してください。

dsh-bridge からのアップグレード。 Harness で dsh-bridge-host をアンインストールしてから dsh-baton-host を追加します。有効にすると、古い dsh-bridge の MCP エントリーが置き換えられます。DSH_BRIDGE_* 変数と既存の ~/.dsh-bridge フォルダーは、今のところ引き続き使えます。ツールのプレフィックスが新しくなる(mcp__dsh-baton__…)ため、権限の許可リストを更新してください。0.4 より前に ~/.dsh-baton/app/host を貼り付けて追加したプラグインも引き続き動作しますが、npm では更新されません。これをアンインストールし、名前を指定して dsh-baton-host を追加してください。

ソースから利用する場合(main を追跡する、またはコードを変更する場合):git clone https://github.com/JialaoLiu/dsh-baton.git を実行し、Harness でクローンの host フォルダーからプラグインを追加します(Add plugin → パスを貼り付け)。有効にすると、クローン自体が登録されるため、変更は公開前に実行できます。git pull で更新します。node dsh-baton/src/cli.mjs setup を実行すると、ターミナルからクローンを登録できます。

Windows。 手順は同じです。異なる点(ソケットファイルの代わりに名前付きパイプを使用)と、プラグインのインストールやアンインストールができない場合の解決方法については、WINDOWS.md を参照してください。

手動登録と Claude デスクトップアプリ

プラグインと setup は、これらのコマンドと同じエントリーを書き込みます(デスクトップアプリはシェルの PATH を使わずに MCP サーバーを起動するため、node の絶対パスを使用します)。

claude mcp add dsh-baton -s user -- "$(command -v node)" "$PWD/dsh-baton/src/server.mjs"
codex mcp add dsh-baton -- "$(command -v node)" "$PWD/dsh-baton/src/server.mjs"

-s user は重要です。指定しないと、Claude Code は現在のプロジェクトフォルダーにのみサーバーを登録します。

Claude デスクトップアプリ(任意):チャットアプリのコネクター(Claude Code とは別)を使うには、これを ~/Library/Application Support/Claude/claude_desktop_config.json に追加して、アプリを再起動してください。「Local dev」コネクターとして表示されます。

{ "mcpServers": { "dsh-baton": { "command": "/absolute/path/to/node", "args": ["/absolute/path/to/dsh-baton/src/server.mjs"] } } }
## セキュリティと制限

所有者のみが利用できるチャネル(macOS と Linux ではソケット 0600、Windows ではユーザーごとの名前付きパイプ)。ネットワークポートはなく、Harness のサンドボックスと承認が適用されます

知っておくと便利なこと:実行中に UI で入力されたメッセージは、実行記録上で人間による割り込みとして扱われます。実行記録は Harness の再起動後も保持されます(途中で終了した実行は中断として表示されます)。実行終了時に Claude Code は一度だけ起動され、Codex は呼び出しごとに最大 270 s 待機します

OS ユーザーとして実行されているプロセスであれば、dsh を直接実行する場合と同じように、ソケット経由で Harness を操作できます。dsh-baton は Harness 0.2.1 系列の内部サービス API に依存するため、Harness のメジャーアップデート後に追随リリースが必要になる場合があります。

その他のデモ →

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。