Dropstone CLI

設定

Dropstone JSON設定の使用方法。

JSON設定ファイルを使用してDropstoneを設定できます。


形式

DropstoneはJSONJSONC(コメント付きJSON)の両方の形式をサポートしています。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "dropstone/dropstone-pro",
  "autoupdate": true,
  "server": {
    "port": 4096,
  },
}

場所

設定ファイルは複数の場所に配置でき、それぞれに異なる優先順位があります。

Note

設定ファイルは置き換えられるのではなく、**マージ(統合)**されます。以下の設定場所からの設定が組み合わされます。競合するキーについてのみ、後の設定が前の設定を上書きします。競合しない設定はすべての設定ファイルから保持されます。

例えば、グローバル設定でautoupdate: trueが設定され、プロジェクト設定でmodel: "dropstone/dropstone-pro"が設定されている場合、最終的な設定には両方の設定が含まれます。


優先順位

設定ソースは次の順序で読み込まれます(後のソースが前のソースを上書きします):

  1. リモート設定.well-known/dropstoneから)- 組織のデフォルト
  2. グローバル設定~/.config/dropstone/dropstone.json)- ユーザー設定
  3. カスタム設定DROPSTONE_CONFIG環境変数)- カスタム上書き
  4. プロジェクト設定(プロジェクト内のdropstone.json)- プロジェクト固有の設定
  5. .dropstoneディレクトリ - エージェント、コマンド、プラグイン
  6. 管理設定ファイル(macOSでは/Library/Application Support/dropstone/)- 管理者制御
  7. macOS管理対象の環境設定(MDM経由の.mobileconfig)- 最優先、ユーザーによる上書き不可

つまり、プロジェクト設定はグローバルのデフォルトを上書きでき、グローバル設定はリモートの組織デフォルトを上書きできます。管理設定はすべてを上書きします。

Note

.dropstoneディレクトリと~/.config/dropstoneディレクトリは、サブディレクトリに複数形の名前を使用します:agents/commands/modes/plugins/skills/tools/。単数形の名前(例:agent/)も後方互換性のためにサポートされています。


リモート

組織は自社ドメインの.well-known/dropstoneエンドポイントを介してデフォルト設定を提供できます。Dropstoneは、その組織に登録されたアカウントを持つユーザーが初回サインインしたときに、これを自動的に取得します。

リモート設定が最初に読み込まれ、基本レイヤーとして機能します。他のすべての設定ソース(グローバル、プロジェクト)はこれらのデフォルトを上書きできます。

例えば、組織がデフォルトで無効になっているMCPサーバーを提供している場合:

{
  "mcp": {
    "jira": {
      "type": "remote",
      "url": "https://jira.example.com/mcp",
      "enabled": false
    }
  }
}

ローカル設定で特定のサーバーを有効にできます:

{
  "mcp": {
    "jira": {
      "type": "remote",
      "url": "https://jira.example.com/mcp",
      "enabled": true
    }
  }
}

グローバル

グローバルなDropstone設定は~/.config/dropstone/dropstone.jsonに配置します。モデルや権限などのユーザー全体の設定にはグローバル設定を使用します。

セッションレベルの設定(キーバインド、スクロール、マウスキャプチャ)には、~/.config/dropstone/tui.jsonを使用します。

グローバル設定はリモートの組織デフォルトを上書きします。


プロジェクトごと

プロジェクトのルートにdropstone.jsonを追加します。プロジェクト設定は標準の設定ファイルの中で最も優先順位が高く、グローバル設定とリモート設定の両方を上書きします。

プロジェクト固有のセッション設定には、その隣にtui.jsonを追加します。

Tip

プロジェクト固有の設定はプロジェクトのルートに配置してください。

Dropstoneは起動時に、現在のディレクトリまたは最も近いGitディレクトリまで遡って設定ファイルを探します。

これはGitにチェックインしても安全で、グローバル設定と同じスキーマを使用します。


カスタムパス

DROPSTONE_CONFIG環境変数を使用して、カスタム設定ファイルのパスを指定します。

export DROPSTONE_CONFIG=/path/to/my/custom-config.json
dropstone run "Hello world"

カスタム設定は、優先順位においてグローバル設定とプロジェクト設定の間に読み込まれます。


管理設定

組織はユーザーが上書きできない設定を強制できます。管理設定は最優先の階層で読み込まれます。

ファイルベース

システムの管理設定ディレクトリにdropstone.jsonまたはdropstone.jsoncファイルを配置します:

プラットフォームパス
macOS/Library/Application Support/dropstone/
Linux/etc/dropstone/
Windows%ProgramData%\dropstone

これらのディレクトリへの書き込みには管理者/root権限が必要なため、ユーザーは変更できません。

macOS管理対象の環境設定

macOSでは、Dropstoneはai.dropstone.managed設定ドメインから管理対象の環境設定を読み取ります。MDM(Jamf、Kandji、FleetDM)を介して.mobileconfigを展開すると、設定が自動的に適用されます。

Dropstoneは次のパスを確認します:

  1. /Library/Managed Preferences/<user>/ai.dropstone.managed.plist
  2. /Library/Managed Preferences/ai.dropstone.managed.plist

plistキーはdropstone.jsonのフィールドに直接マッピングされます。MDMメタデータキー(PayloadUUIDPayloadTypeなど)は自動的に削除されます。

.mobileconfigの作成

ai.dropstone.managedのPayloadTypeを使用します。Dropstoneの設定キーはペイロード辞書に直接配置します:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>PayloadContent</key>
  <array>
    <dict>
      <key>PayloadType</key>
      <string>ai.dropstone.managed</string>
      <key>PayloadIdentifier</key>
      <string>com.example.dropstone.config</string>
      <key>PayloadUUID</key>
      <string>GENERATE-YOUR-OWN-UUID</string>
      <key>PayloadVersion</key>
      <integer>1</integer>
      <key>share</key>
      <string>disabled</string>
      <key>server</key>
      <dict>
        <key>hostname</key>
        <string>127.0.0.1</string>
      </dict>
      <key>permission</key>
      <dict>
        <key>*</key>
        <string>ask</string>
        <key>bash</key>
        <dict>
          <key>*</key>
          <string>ask</string>
          <key>rm -rf *</key>
          <string>deny</string>
        </dict>
      </dict>
    </dict>
  </array>
  <key>PayloadType</key>
  <string>Configuration</string>
  <key>PayloadIdentifier</key>
  <string>com.example.dropstone</string>
  <key>PayloadUUID</key>
  <string>GENERATE-YOUR-OWN-UUID</string>
  <key>PayloadVersion</key>
  <integer>1</integer>
</dict>
</plist>

uuidgenで一意のUUIDを生成します。組織の要件に合わせて設定をカスタマイズします。

MDMを介した展開

  • Jamf Pro: Computers > Configuration Profiles > Upload > 対象デバイスまたはスマートグループにスコープ
  • FleetDM: .mobileconfigをgitopsリポジトリのmdm.macos_settings.custom_settingsに追加し、fleetctl applyを実行

デバイスでの確認

テスト用に.mobileconfigをダブルクリックしてローカルにインストールし(システム設定 > プライバシーとセキュリティ > プロファイルに表示されます)、次に以下を実行します:

dropstone debug config

すべての管理対象の環境設定キーが解決された設定に表示され、ユーザーまたはプロジェクトの設定で上書きすることはできません。


スキーマ

メインの設定スキーマはdropstone.io/config.jsonで定義されています。

セッションレベルの設定(tui.json)はdropstone.io/tui.jsonを使用します。

エディタはスキーマに基づいて検証と自動補完ができるはずです。


セッション設定

セッションレベルの設定(スクロール動作、マウスキャプチャ、差分レンダリングなど)には、専用のtui.json(またはtui.jsonc)ファイルを使用します。

{
  "$schema": "https://dropstone.io/schema/tui.json",
  "scroll_speed": 3,
  "scroll_acceleration": {
    "enabled": true
  },
  "diff_style": "auto",
  "mouse": true
}

dropstone.jsonのレガシーなthemekeybinds、およびセッション関連キーは非推奨であり、可能な場合は自動的に移行されます。


サーバー

serverオプションを使用して、dropstone serveおよびdropstone webコマンドのサーバー設定を構成できます。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "server": {
    "port": 4096,
    "hostname": "0.0.0.0",
    "mdns": true,
    "mdnsDomain": "myproject.local",
    "cors": ["http://localhost:5173"]
  }
}

利用可能なオプション:

  • port - リッスンするポート。
  • hostname - リッスンするホスト名。mdnsが有効でホスト名が設定されていない場合、デフォルトで0.0.0.0になります。
  • mdns - mDNSサービスディスカバリを有効にします。これにより、ネットワーク上の他のデバイスがDropstoneサーバーを発見できるようになります。
  • mdnsDomain - mDNSサービスのカスタムドメイン名。デフォルトはdropstone.localです。同じネットワーク上で複数のインスタンスを実行する場合に便利です。
  • cors - ブラウザベースのクライアントからHTTPサーバーを使用する際にCORSで許可する追加のオリジン。値は完全なオリジン(スキーム + ホスト + オプションのポート)である必要があります。例:https://app.example.com

サーバーの詳細はこちら


シェル

shellオプションを使用して、対話型ターミナルに使用するシェルを構成できます。互換性のあるシェルはエージェントのツール呼び出しにも使用されます。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "shell": "pwsh"
}

指定しない場合、Dropstoneはオペレーティングシステムに基づいて適切なデフォルトを自動的に検出して使用します(例:Windowsではpwshまたはcmd.exe、macOS/Linuxでは/bin/zshまたは/bin/bash)。絶対パスまたは短い名前を指定できます。


ツール

toolsオプションを使用して、LLMが使用できるツールを管理できます。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "tools": {
    "write": false,
    "bash": false
  }
}

ツールの詳細はこちら


モデル

modelオプションでデフォルトのモデルを設定します。Dropstoneには3つのティアがあります:

ティアモデルID
Fastdropstone/dropstone-fast
Prodropstone/dropstone-pro
Heavydropstone/dropstone-heavy
{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "dropstone/dropstone-pro"
}

variantでデフォルトの推論深度を固定します:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "dropstone/dropstone-pro",
  "variant": "high"
}

有効なvariant値はlowmediumhighxhighです。完全な内訳はモデルを参照してください。

small_modelオプションは、タイトル生成などの軽量タスク用に別のモデルを構成します。デフォルトではDropstoneが適切なティアを選択しますが、明示的に上書きできます:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "dropstone/dropstone-pro",
  "small_model": "dropstone/dropstone-fast"
}

エージェント

agentオプションを使用して、特定のタスク用の専門エージェントを構成できます。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "agent": {
    "code-reviewer": {
      "description": "コードをベストプラクティスと潜在的な問題についてレビューします",
      "model": "dropstone/dropstone-pro",
      "prompt": "あなたはコードレビュアーです。セキュリティ、パフォーマンス、保守性に焦点を当ててください。",
      "tools": {
        // レビュー専用エージェントのファイル変更ツールを無効化
        "write": false,
        "edit": false,
      },
    },
  },
}

また、~/.config/dropstone/agents/または.dropstone/agents/のマークダウンファイルを使用してエージェントを定義することもできます。詳細はこちら


デフォルトエージェント

default_agentオプションを使用してデフォルトのエージェントを設定できます。これにより、明示的に指定されていない場合に使用されるエージェントが決まります。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "default_agent": "plan"
}

デフォルトのエージェントはプライマリエージェント(サブエージェントではない)である必要があります。これは"build""plan"のような組み込みエージェント、または定義したカスタムエージェントにすることができます。指定されたエージェントが存在しない場合やサブエージェントの場合、Dropstoneは警告とともに"build"にフォールバックします。

この設定は、対話型セッション、ワンショット実行(dropstone run)、GitHub Actionなど、すべてのインターフェースに適用されます。


コマンド

commandオプションを使用して、繰り返しのタスク用のカスタムコマンドを構成できます。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "command": {
    "test": {
      "template": "カバレッジレポート付きで完全なテストスイートを実行し、失敗を表示します。\n失敗したテストに焦点を当てて修正を提案してください。",
      "description": "カバレッジ付きでテストを実行",
      "agent": "build",
      "model": "dropstone/dropstone-fast",
    },
    "component": {
      "template": "TypeScriptサポート付きで$ARGUMENTSという名前の新しいReactコンポーネントを作成します。\n適切な型付けと基本構造を含めてください。",
      "description": "新しいコンポーネントを作成",
    },
  },
}

また、~/.config/dropstone/commands/または.dropstone/commands/のマークダウンファイルを使用してコマンドを定義することもできます。詳細はこちら


キーマップ

tui.jsonkeymapでキーボードショートカットをカスタマイズします。

{
  "$schema": "https://dropstone.io/schema/tui.json",
  "keymap": {
    "sections": {
      "global": {
        "command.palette.show": "ctrl+p"
      }
    }
  }
}

keymapは組み込みのデフォルトとマージされるため、変更したいショートカットのみを構成すればよいです。

古いkeybindsフィールドは非推奨であり、keymapが存在しない場合にのみ適用されます。

詳細はこちら


スナップショット

Dropstoneはスナップショットを使用してエージェント操作中のファイル変更を追跡し、セッション内で変更を元に戻したり取り消したりできるようにします。スナップショットはデフォルトで有効です。

大規模なリポジトリや多くのサブモジュールを含むプロジェクトでは、スナップショットシステムによってインデックス作成が遅くなり、ディスク使用量が大幅に増加する可能性があります。snapshotオプションを使用してスナップショットを無効にできます。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "snapshot": false
}

スナップショットを無効にすると、エージェントによる変更をUIからロールバックできなくなることに注意してください。


自動更新

Dropstoneは起動時に新しいアップデートを自動的にダウンロードします。autoupdateオプションでこれを無効にできます。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "autoupdate": false
}

アップデートを適用したくないが、新しいバージョンが利用可能になったときに通知を受け取りたい場合は、autoupdate"notify"に設定します。 これはHomebrewなどのパッケージマネージャーを使用してインストールされていない場合にのみ機能することに注意してください。


フォーマッタ

formatterオプションを使用して、コードフォーマッタを有効にして構成できます。省略するとフォーマッタは無効のままになります。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "formatter": true
}

オブジェクトを使用すると、組み込みを有効にしたまま、上書きやカスタムフォーマッタを構成できます。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "formatter": {
    "prettier": {
      "disabled": true
    },
    "custom-prettier": {
      "command": ["npx", "prettier", "--write", "$FILE"],
      "environment": {
        "NODE_ENV": "development"
      },
      "extensions": [".js", ".ts", ".jsx", ".tsx"]
    }
  }
}

フォーマッタの詳細はこちら


LSPサーバー

lspオプションを使用して、LSPサーバーを有効にして構成できます。省略するとLSPは無効のままになります。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": true
}

オブジェクトを使用すると、組み込みを有効にしたまま、上書きやカスタムLSPサーバーを構成できます。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": {
    "typescript": {
      "disabled": true
    }
  }
}

LSPサーバーの詳細はこちら


権限

デフォルトでは、Dropstoneは明示的な承認なしにすべての操作を許可します。permissionオプションを使用してこれを変更できます。

例えば、editツールとbashツールにユーザーの承認が必要になるようにするには:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "edit": "ask",
    "bash": "ask"
  }
}

権限の詳細はこちら


コンパクション

compactionオプションを使用して、コンテキストのコンパクション動作を制御できます。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "compaction": {
    "auto": true,
    "prune": true,
    "reserved": 10000
  }
}
  • auto - コンテキストがいっぱいになったときにセッションを自動的にコンパクションします(デフォルト:true)。
  • prune - トークンを節約するために古いツール出力を削除します(デフォルト:true)。
  • reserved - コンパクション用のトークンバッファ。コンパクション中のオーバーフローを避けるために十分なウィンドウを残します。

ウォッチャー

watcherオプションを使用して、ファイルウォッチャーの無視パターンを構成できます。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "watcher": {
    "ignore": ["node_modules/**", "dist/**", ".git/**"]
  }
}

パターンはglob構文に従います。ファイル監視からノイズの多いディレクトリを除外するために使用します。


MCPサーバー

mcpオプションを使用して、使用したいMCPサーバーを構成できます。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "mcp": {}
}

詳細はこちら


プラグイン

プラグインは、カスタムツール、フック、統合でDropstoneを拡張します。

プラグインファイルを.dropstone/plugins/または~/.config/dropstone/plugins/に配置します。pluginオプションを使用してnpmからプラグインを読み込むこともできます。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "plugin": ["@my-org/custom-plugin", "./local-plugin.ts"]
}

詳細はこちら


指示

instructionsオプションを使用して、使用しているモデルの指示を構成できます。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}

これは指示ファイルへのパスとglobパターンの配列を受け取ります。ルールの詳細はこちら


実験的

experimentalキーには、活発に開発中のオプションが含まれています。

{
  "$schema": "https://dropstone.io/schema/config.json",
  "experimental": {}
}

不安定

実験的オプションは安定していません。予告なく変更または削除される可能性があります。


変数

設定ファイルで変数置換を使用して、環境変数やファイルの内容を参照できます。


環境変数

{env:VARIABLE_NAME}を使用して環境変数を置換します:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "model": "{env:DROPSTONE_MODEL}"
}

環境変数が設定されていない場合、空の文字列に置き換えられます。


ファイル

{file:path/to/file}を使用してファイルの内容を置換します:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "instructions": ["./custom-instructions.md"]
}

ファイルパスは次のいずれかになります:

  • 設定ファイルのディレクトリからの相対パス
  • /または~で始まる絶対パス

これらは以下の場合に便利です:

  • 設定を散らかさずに大きな指示ファイルを含める。
  • 複数の設定ファイル間で共通の設定スニペットを共有する。
Ctrl+I