Deskhand について
Deskhandは、KDE Plasma 6のWaylandデスクトップをAIエージェントから操作するツールです。画面上または分離したバックグラウンドデスクトップで動作し、OCRによる操作、重要操作の人間による承認、使用中の検知、即時停止を備えます。
主な機能
- 01OCRで画面上の文字を探してクリック
- 02重要ボタンや決済ページで承認を要求
- 03ウィンドウタイトルの固定とユーザー操作の検知
- 04アプリごとのセッション方針を備えた背景デスクトップ
- 05操作記録・プレビュー・引き継ぎ・停止パネル
活用シーン
- 01エージェントに画面上の文字をクリックさせる
- 02決済や削除の操作に人間の承認を求める
- 03画面を中断せず背景デスクトップでタスクを実行
- 04操作履歴を確認し、停止または操作を引き継ぐ
MCP 対応
状態、デスクトップ選択、スクリーンショット、OCRテキスト、クリック、入力、アプリ起動などのツールを備えたstdio MCPサーバーを提供します。重要操作はDeskhandパネルで必ず承認し、MCPインターフェースから承認を迂回することはできません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Deskhand — AI エージェントが KDE デスクトップを安全に使えるようにします
Türkçe: README.tr.md
Deskhand を使うと、AI エージェント(Claude Code やその他の MCP クライアント)が KDE Plasma デスクトップを安全に使えます。画面上でも、映画を見ている間に見えない第 2 デスクトップ上でも利用できます。
エージェントはウィンドウを読み取り、画面に見えているテキストをクリックし、文字を入力してアプリを開けます。すべての入力は、その時点で実際に画面に表示されている内容と照合されます。購入/支払いボタンや決済ページでは、エージェントが操作できないダイアログであなたの回答を待ちます。マウスに触れた瞬間に動作を停止し、STOPを 1 回クリックすればすべてが停止します。手が離せないときは、一部のログイン済みセッションを再利用できる隠しデスクトップに作業を移せるため、映画やゲームが中断されることはありません。
これは、善意のエージェントのための安全レイヤーであり、サンドボックスではありません(脅威モデルを参照)。
スクリーンショットはサンプルデータから生成されています。現在、パネルの言語はトルコ語です。英語 UI は今後対応予定です。
機能
安全レイヤー
エージェントやその権限モードの設定にかかわらず、いずれのデスクトップでも、これらの制約はツール自体によって適用されます。
- 禁止ウィンドウ。 タイトルまたはクラスが
~/.config/deskhand/yasak-pencereler.txtのパターンに一致するウィンドウには、入力が送信されません。また、そのアプリが起動されることもありません(たとえば、自動操作がルールで禁止されているオンラインゲームやパスワードマネージャーなど)。 MCP 経由では、スクリーンショット上で黒塗りにされ、OCR の対象からも除外されます。 - 機密性の高いボタンや決済ページでは、人間の承認が必要です。 購入、支払い、注文する、承認、許可、アカウント削除(トルコ語と英語の表現)、およびチェックアウト/決済のようなタイトルのページ上でのクリックや Enter キー操作を検出すると、Deskhand パネルに承認ダイアログが表示されます。対象の小さな画像とともに、今回のみ許可または拒否を選択できます。回答を書き込めるのはパネルだけです。ダイアログ自体も禁止ウィンドウのため、エージェントはクリックできません。回答がない場合、タイムアウトした場合、またはパネルが起動していない場合は、拒否されます。
- ウィンドウ/タブのタイトルロック。
-b PATTERN(CLI)またはウィンドウパターン(MCP)を指定すると、入力の直前にタイトルが再確認されます。ブラウザーのタブが切り替わると、入力は単語の途中でも停止します。 - 人間を優先。 あなたがマウスまたはキーボードを使用している場合(Wayland のアイドル通知を利用し、追加の権限は不要)、Deskhand は最大 8 秒間、操作が 1.5 秒間途切れるのを待ちます。それでも操作が途切れなければ、あきらめます。Deskhand が押さえているキーは、あなたが何かに触れた時点ですぐに離されます。
- STOP スイッチ。 パネルのボタン、トレイメニュー、またはオプションのグローバルショートカットから操作できます。有効になっている間は、入力は一切送信されず、押さえられているキーも離されます。エージェント自身が STOP を有効にすることはできますが、あなたが有効にした STOP を解除することはできません。解除できるのはパネルだけです。
- アクティビティログ。 すべての入力が記録され(
~/.local/state/deskhandに 7 日間保存)、パネルにリアルタイムで表示されます。
バックグラウンドデスクトップ
deskhand desktop start は、セッションとは別に、デフォルトで 1920×1080 の不可視デスクトップ(Xvfb + openbox)を起動します。
- 画面には何も表示されません。 入力が画面に送られることはありません(バックグラウンドのバックエンドが操作できるのは、自身の X ディスプレイだけです)。そこで起動するアプリには専用の D-Bus が用意されるため、通知はポップアップせずログに記録され、音声は無音の出力先に送られます。アプリが画面に表示されないよう、Wayland 関連の環境変数は削除されます。
- 軽量です。 CPU と I/O の優先度が低く、メモリ上限があります(systemd スコープ、デフォルトは 4 GB)。起動にかかる時間は約 0.2 秒で、何も起動していないデスクトップの使用量は約 30 MiB です。
- アプリごとにセッションポリシーが適用されます。 一部のアプリは、すでにログインした状態で起動できます。
- Firefox: プロファイル(Cookie、ログイン情報、タスク対象サイトのサイトストレージ)の一貫した一方向のスナップショットコピーです。コピー元に書き戻されることはありません。同期 ID は含まれません。銀行・決済・政府機関のサイト(トルコの銀行や e-Devlet を含む)および中央ログインページ(Google、Microsoft)の Cookie と保存済みパスワードはコピーされないため、そこで Google/YouTube にログインした状態にはなりません。カメラ、マイク、位置情報、通知の権限はコピーから削除されます。
- キーリングを使用しない Flatpak アプリ(Discord、Spotify など):スナップショットコピーです。
- キーリングが必要なアプリ(Chromium 系、VS Code)と、実ファイルに書き込むアプリ(Obsidian の保管庫)は、画面上でのみ実行されます。
- 2 つのクライアントで問題が起きるアプリ(Telegram、Signal、WhatsApp のラッパー、Element、Steam、Thunderbird など)は、決して複製されず、バックグラウンドで起動されることもありません。エージェントにはユーザーの対応を待つよう指示されます。メール/同期デーモン(KMail/Akonadi、Nextcloud)も起動されません。
- ポリシーは解決済みアプリ(デスクトップエントリー、実行ファイル、Flatpak ID)に基づいて照合されるため、名前やパスを変えても回避できません。最も厳しいルールが優先されます。パスワードマネージャーは起動されません。
- 未知のアプリは、ユーザーが確実に起動していない場合にのみ通常どおり起動します(そうでなければ、シングルインスタンスロックによってウィンドウが画面上に開く可能性があります)。起動していないと確認できない場合、エージェントは待機します。ポリシーファイル:
~/.config/deskhand/oturum.toml
- 監視して、操作を引き継げます。 パネルにはライブプレビューが表示されます。操作を引き継ぐと、マウスとキーボードの入力がバックグラウンドデスクトップに送られ、エージェントは待機します。
ビジー状態の検出:「バックグラウンド/画面上/後で」
deskhand busy は、全画面ウィンドウ、再生中のメディアプレーヤー(MPRIS)、最近のキーボード/マウス入力、ゲームや禁止対象のウィンドウ、画面ロックの有無を読み取り専用で確認し、ユーザーがビジー状態かどうかを判定します。
deskhand decide "task summary" は、その結果をもとに判断します。ビジー状態でなければ、回答は画面上になります。ビジー状態の場合、デフォルトでは通知でバックグラウンド/画面上/後での選択を求めます(45 秒以内に応答がなければバックグラウンドになります)。全画面の映画やゲームを見ている場合は、まったく中断せず、そのままバックグラウンドで実行します。これらはすべてパネルで設定できます。
テキストによるクリック(まず OCR)
エージェントは座標を推測するのではなく、読み取れるものをクリックします。例:click-text <window> "Save"。Tesseract はトルコ語と英語を読み取ります。グラフィックカードがある場合は、2 つ目のリーダー(GPU 上の EasyOCR)も自動的に加わり、Tesseract が見落とす色付きのウェブボタンや薄い文字、小さい文字を検出します(測定値:テスト用フレーズは 55 件中 55 件を検出、Tesseract 単体では 55 件中 49 件、読み取りあたり約 0.15 秒)。追加されるのは行だけで、Tesseract の読み取り結果は保持されます。ゲームのプレイ中や全画面のコンテンツを視聴中には起動されず、5 分間アイドル状態が続くとグラフィックメモリを解放します。トルコ語の文字は柔軟に照合され(ş/s、ı/i など)、一致候補が複数ある場合は推測せずに停止します。ほかに、アクセシビリティツリー(AT-SPI、ボタン名でクリック)、保存済みアイコンテンプレート、色領域、繰り返し作業向けの画面認識フローも利用できます。
MCP サーバー(12 個のツール)
deskhand mcp は stdio MCP サーバーです:get_status、choose_desktop、manage_desktop、
screenshot、read_text、find、click、type_text、press_key、scroll、open_app、
run_flow。スクリーンショットは長辺が 1280 px になるように拡大縮小されます。座標は
shot_id に照合されるため、古いスクリーンショット上でのクリックは拒否されます。MCP の
インターフェースに「承認済み」フラグはありません。機微な操作は常にパネルを経由します。
モニタリングパネルとトレイ
アクティビティ(ライブログ、フィルター)、バックグラウンドデスクトップ(プレビュー、停止、 引き継ぎ)、承認(保留中+履歴)、設定(ビジー時の動作、禁止ウィンドウ、STOP ショートカット)、 保存済みアイコン、すべての依存関係のヘルスチェックを備えています。トレイアイコンは待機中/ 画面上で操作中/バックグラウンドで操作中/STOP を表示し、承認待ちがある場合はバッジが付きます。
比較
この分野には優れたプロジェクトがあります。用途に合ったものを選んでください。
- agent-sh/agent-workspace-linux が最も近い プロジェクトです。6 種類のバックエンド(ネイティブの KWin Wayland 仮想コンポジターを含む) に対応した隠しデスクトップ、キーリングと Chrome プロファイルのインポート、アプリの許可リスト、 ライブビューアー、82 個のツールを備えています。Deskhand よりも対象範囲が広く、移植性に優れています。
- ahmetadakli/kde-desktop-mcp は KDE で最も近い 安全モデルを備えています。レベル分けされたアプリの許可リスト、確認リスト、パスワードフィールドの 保護、ユーザーへの操作引き継ぎ時の一時停止、停止用ショートカットに対応しています。アクセシビリティ ツリーを通じて動作します。
- agent-sh/computer-use-linux(GNOME を優先し、 多数のバックエンドに対応)、Samthesurf/kwin-mcp(KDE Wayland)、 alex-oleshkevich/wayland-mcp (niri/wlroots、ネストされたサンドボックス、ローカル OCR)も選択肢です。
Deskhand が組み合わせている、ほかでは見たことのない機能:
- アプリだけでなく、画面上の状態に基づくチェック:禁止ウィンドウ、機微なボタン、 決済ページの検出、タイトル/クラスのロック。
- ビジー状態の検出と、バックグラウンド/自分の画面/後で のループ。
- バックグラウンドデスクトップ用のアプリごとのセッションポリシー(コピー/待機/禁止)。 2 つ同時に起動してはならないアプリも含まれます。
- トルコ語 OCR による表示テキストでのクリック。アクセシビリティツリーがない場合にも対応します。
- Plasma パネル:トレイ、STOP、ライブプレビュー、操作の引き継ぎ、人間のみが行う承認。
対象範囲はより限定的です。KDE Plasma のみ、バックグラウンドデスクトップは 1 つで、GPU はありません。
要件
- 前景(自分の画面)には Wayland 上の KDE Plasma 6 が必要です。背景デスクトップは X サーバー(Xvfb)なので、X11 に対応しているアプリ(ほとんどのアプリ)を実行できます。
- Python 3.11+
- 前景:
kdotool、dotool、spectacle、/dev/uinputへのアクセス - 両方:トルコ語と英語のデータを含む
tesseract - 背景:
Xvfb、openbox、python-xlib。推奨:xdotool、pactl(無音のオーディオシンク。これがないと背景アプリから音声は一切出ません)、systemd-run(メモリ上限) - Python モジュール:PyQt6、python-xlib、numpy、scipy、pillow、jeepney、mcp ≥ 2.3
- キーボードアクティビティ用ヘルパーをビルドするには、C コンパイラー、
make、pkg-config、waylandが必要です(これがない場合、人間優先の監視対象はマウスのみです) - AMD または NVIDIA のグラフィックカードで、GPU によるテキスト認識を行う場合:使用するカード向けの PyTorch、torchvision、OpenCV、scikit-image、shapely、pyclipper、およびモデル(約 100 MB)を含む小さな venv にインストールした EasyOCR が必要です。GPU がなければ追加のものは不要です。
install.shがすべてを確認して、コマンドを表示します - スクリーンショット用ヘルパー(KWin のスクリーンショットインターフェース。1 枚あたり約 8 ms)をビルドするには、同じツールと
libsystemd(systemd の一部)が必要です。install.shがビルドし、デスクトップエントリーを登録します
Arch / CachyOS:
sudo pacman -S --needed spectacle tesseract tesseract-data-tur tesseract-data-eng \
xorg-server-xvfb openbox xdotool libpulse python-pyqt6 python-xlib python-numpy \
python-scipy python-pillow python-jeepney python-mcp base-devel wayland
paru -S kdotool-bin dotool # AUR (or yay, or by hand)
# with a graphics card (NVIDIA: python-pytorch-opt-cuda instead of -rocm)
sudo pacman -S --needed python-pytorch-opt-rocm python-torchvision python-opencv \
python-scikit-image python-shapely python-pyclipper
python3 -m venv --system-site-packages ~/.local/share/deskhand/ocr-venv
~/.local/share/deskhand/ocr-venv/bin/python -m pip install --no-deps easyocr python-bidi
cd ~/.local/src/deskhand && ~/.local/share/deskhand/ocr-venv/bin/python -m deskhand.ocr_gpu indir # models
dotool が /dev/uinput に書き込める必要があります。パッケージは input
グループ用の udev ルールをインストールするため、次のようにします:
sudo usermod -aG input "$USER" # then log out and back in
sudo modprobe uinput # if /dev/uinput does not exist
echo uinput | sudo tee /etc/modules-load.d/uinput.conf # load it at boot
CachyOS(Arch)+ KDE Plasma 6 で開発・テストしました。同等のパッケージがあれば、ほかのディストリビューションでも動作するはずですが、テストはしていません。
インストール
任意の場所にクローンし、通常のユーザーとして(sudo を使わずに)インストーラーを実行します:
git clone https://github.com/sobelendimm/deskhand.git ~/.local/src/deskhand
cd ~/.local/src/deskhand
./install.sh --dry-run # see what it will do
./install.sh # install (safe to re-run)
インストーラーはパッケージをインストールしません。不足しているものを一覧表示し、コマンドを表示します。その後、アクティビティヘルパーをビルドし、次のものをインストールします:
~/.local/binのdeskhandコマンド(このフォルダーを参照します。フォルダーを移動した場合は、もう一度./install.shを実行してください)、- メニュー項目とアイコン、
- ログイン時のパネル自動起動(トレイのみ)。承認にはパネルが起動している必要があるためです(スキップするには
./install.sh --no-autostartを実行します)。
システム全体には何もインストールされません。更新:git pull && ./install.sh。アンインストール:
./uninstall.sh(設定、保存したアイコン、フローは保持します)または ./uninstall.sh --purge。
クイックスタート
deskhand panel # monitoring panel + tray
deskhand busy # are you busy? (read-only)
deskhand windows firefox # find windows: id | title | geometry
deskhand read firefox # read the window's text with coordinates (OCR)
deskhand -b "Example" click-text firefox "Sign in" # click visible text, title locked
deskhand --background open firefox --site github.com # signed-in Firefox on the invisible desktop
deskhand stop # STOP: no input from now on
deskhand resume # lift a STOP set from the CLI
チートシート(deskhand help ですべて表示):
| コマンド | 説明 |
|---|---|
windows <pattern> | ウィンドウを検索 |
screenshot <window> | スクリーンショットを撮影(ウィンドウ、または ekran = 画面全体) |
read <window> [pattern] | テキストと座標を読み取る(OCR) |
click-text <window> <text> | 表示されているテキストをクリック |
click <window> <x> <y> | ウィンドウ座標をクリック |
type <window> <text> | テキストを入力(--secret:ログに記録しません) |
key <window> <keys> | キーまたはショートカット(例:ctrl+s) |
scroll <window> [down|up] | スクロール |
wait <window> <text> | テキストが表示されるまで待機(--gone:消えるまで待機) |
open <app> / open --command "CMD" | アプリを起動し、新しいウィンドウが開くまで待機 |
tree / click-element | アクセシビリティツリー/名前で要素をクリック |
desktop start|stop|status | 背景デスクトップ |
sessions status|policy|clear | 背景デスクトップでサインイン済みの状態で開くアプリ |
busy · decide "<task>" | ビジー状態の確認 · 作業場所を決定 |
stop · resume · status | STOP のオン · オフ · 表示 |
panel [--tepsi] · mcp | パネル(トレイのみ) · MCP サーバー |
共通オプション:タイトルロック用の -b/--title PATTERN、クラスロック用の -s/--class PATTERN、不可視のデスクトップで実行する --background、ゲームや映画の再生中でも自分の画面で作業する --on-my-screen(自分が指示した場合のみ)。元のトルコ語のコマンド名(bul、metin、metne-tikla など)と ekran コマンドも、エイリアスとして引き続き使用できます。
Claude Code(MCP)での使用
user スコープに 2 つのエントリーを登録してください(project スコープは使用しないでください。デスクトップの制御をリポジトリと一緒に移動させるべきではありません)。Claude Code の権限ルールではツールのパラメーターを照合できないため、デスクトップの分割はサーバー名で行います。
claude mcp add --scope user --transport stdio deskhand -- ~/.local/bin/deskhand mcp
claude mcp add --scope user --transport stdio deskhand-bg -- ~/.local/bin/deskhand mcp --desktop background
claude mcp get deskhand # inside a session: /mcp
| 名前 | 操作できる対象 | 推奨される権限 |
|---|---|---|
deskhand | 画面とバックグラウンドデスクトップ(デフォルトでは desktop=auto) | ask |
deskhand-bg | バックグラウンドデスクトップのみ(フォアグラウンドのリクエストは拒否されます) | より緩やかな設定でも構いません |
~/.claude/settings.json の例:
{
"permissions": {
"allow": ["mcp__deskhand__get_status", "mcp__deskhand__read_text", "mcp__deskhand__find",
"mcp__deskhand-bg__get_status", "mcp__deskhand-bg__read_text", "mcp__deskhand-bg__screenshot"],
"ask": ["mcp__deskhand__screenshot", "mcp__deskhand__click", "mcp__deskhand__type_text",
"mcp__deskhand__press_key", "mcp__deskhand__scroll", "mcp__deskhand__open_app",
"mcp__deskhand__run_flow", "mcp__deskhand__manage_desktop"]
}
}
権限の確認プロンプトは第 2 の保護層です。Deskhand 自身のチェックは、どの権限モードでも実行されます。
フォアグラウンドで動作させるには、サーバーに WAYLAND_DISPLAY、DBUS_SESSION_BUS_ADDRESS、XDG_RUNTIME_DIR が必要です。クライアントが空の環境変数でサーバーを起動する場合は、--env で渡してください。
一般的なセッションの流れ:get_status →(ビジー状態ですか?)choose_desktop → manage_desktop start →
open_app → read_text → click(text="Save", verify=true) → type_text → 確認のために
read_text → manage_desktop stop。
エージェントの使用パターン(CLI)
まず確認してから、選択したデスクトップですべてのコマンドを実行してください。
deskhand decide "Save the invoice as PDF"
case $? in
0) WHERE="" ;; # my screen
20) WHERE="--background" ;; # background desktop
21) exit 0 ;; # later: tell the user, do nothing now
esac
deskhand $WHERE open --command "okular ~/invoice.pdf"
エージェント向けルール:終了コード 10、12、13、15、16 が返されたら処理を停止してユーザーに伝えてください。クリックする前に読み取り、クリック後に確認してください。ユーザーがチャットでその手順を明確に承認した場合に限り、--approved を指定してください。指定しない場合、Deskhand はパネルでユーザーに確認を求めます。
設定
| パス | 内容 |
|---|---|
~/.config/deskhand/yasak-pencereler.txt | 禁止ウィンドウ(1 行につき正規表現 1 つ。タイトルまたはクラス) |
~/.config/deskhand/ayarlar.toml | ビジー状態時の動作([karar]:確認/バックグラウンド/待機、タイムアウト、全画面表示時に確認するかどうか) |
~/.config/deskhand/oturum.toml | バックグラウンドデスクトップでのアプリごとのセッションポリシー(デフォルトに重ねて適用) |
~/.local/share/deskhand/ | 保存されたアイコン(simgeler/)、フロー(akislar/) |
~/.local/state/deskhand/ | 入力ログ(7 日間)、キャプチャされたバックグラウンド通知 |
~/.cache/deskhand/ | スクリーンショット、OCR キャッシュ(5 日間) |
$XDG_RUNTIME_DIR/deskhand/ | STOP スイッチ、承認リクエスト、バックグラウンドデスクトップの状態、セッションのコピー(tmpfs、0700) |
すべてのディレクトリは、DESKHAND_CONFIG_DIR、DESKHAND_STATE_DIR、
DESKHAND_CACHE_DIR、DESKHAND_DATA_DIR、DESKHAND_RUNTIME_DIR で移動できます。その他の変数:
DESKHAND_HEDEF=on|arka|oto(デフォルトのデスクトップ)、DESKHAND_SANAL_BOYUT=1920x1080(バックグラウンドの
サイズ)、DESKHAND_SANAL_BELLEK=4G(メモリ上限。0 = 無効)。
終了コード
| コード | 意味 |
|---|---|
| 0 | 完了 |
| 1 | 使用方法のエラー |
| 2 | ウィンドウ/画面の範囲外の位置 |
| 3 | ウィンドウがアクティブではない/別のウィンドウが前面にある |
| 4 | タイトルまたはクラスのロックが一致しなかった |
| 5 | 複数の一致(--sira N を指定してください) |
| 6 | テキストが見つからない |
| 7 | タイムアウト |
| 8 | ウィンドウが閉じた、または移動した |
| 9 | 必要なツールが実行されなかった(dotool、tesseract、Xvfb…) |
| 10 | 禁止ウィンドウ、または承認なしでの機密操作 |
| 11 | フローがエラー画面に到達した |
| 12 | コンピューターを使用中です(人間を優先) |
| 13 | STOP がオン |
| 14 | バックグラウンドデスクトップを利用できない |
| 15 | ゲームのプレイ中、または動画の視聴中です。画面には触れません |
| 16 | アプリをバックグラウンドデスクトップで開けない(画面上で開くか、キーリングのみで使用) |
| 20 / 21 | decide:バックグラウンド/後で(0 = 画面) |
MCP 経由では、同じコードが [code] name: detail 形式のエラーとして表示されます。
既知の制限事項
- バックグラウンドデスクトップでは GPU を使用できません。 Xvfb はソフトウェアで描画するため、WebGL、ゲーム、動画のデコードは遅くなります。
- Wayland 専用アプリはバックグラウンドで実行できません(X11 です)。
- キーリングを使用するアプリはフォアグラウンドでのみ実行できます。 Chromium 系ブラウザー、VS Code、KWallet/Secret Service にシークレットを保存するアプリは、バックグラウンドデスクトップではログインした状態で開きません。
- バックグラウンドデスクトップは一度に 1 つだけです。
- Xvfb にはまだ認証クッキーがありません。 ローカルソケットのみで待ち受けますが、別のローカルユーザーが接続できる可能性があります。
-authクッキーを導入する予定です。 - OCR は読み間違えることがあります。 あいまいな一致は推測せずに停止し、クリックを検証できますが、小さな文字やコントラストの低い文字は読み間違えたり、見つからなかったりする場合があります。単独の Web ボタンが
readの全件一覧に表示されないことがあります。そのテキストを検索すると(read <window> "<text>"、click-text)、追加の読み取りが行われ、見つかります。 - 承認にはパネルの起動が必要です。 パネルが閉じている場合、機密性の高い操作はすべて拒否されます。
- フォアグラウンド操作には、Wayland 上の Plasma 6 が必要です(kdotool + KWin スクリプト)。
- アクティビティログはトルコ語で書き込まれます(パネル上では翻訳されます)。メッセージ、ヘルプ、パネルは、システム言語(トルコ語または英語)または設定で選択した言語に従います。
脅威モデル
Deskhand は、エージェントの ミス や プロンプトインジェクション(Web ページやドキュメントが、何かを購入したりアカウントを削除したりするようエージェントに指示すること)からユーザーを保護します。エージェントには、自分の要求を承認したり、STOP を解除したりするツールやコマンドはありません。これは サンドボックスではありません。ユーザー権限で任意のシェルコマンドを実行できるエージェントは、ファイルの編集、パネルの終了、Deskhand を介さないデスクトップ操作が可能です。シェルへのアクセスは、クライアントの権限確認プロンプトで制限してください。
開発
for t in tests/test_*.py; do python3 "$t" || break; done
test_mantik、test_ocr、test_ocr_gpu、test_onay、test_oturum、test_entegrasyon、test_mesgul、test_guvenlik、test_i18n、test_gui(オフスクリーン Qt)は画面を必要としません(test_ocr_gpu は、GPU リーダーがインストールされており、ゲーム中でない場合、実際の GPU リーダーも実行します)。test_sanal と test_mcp はそれぞれ専用のバックグラウンドデスクトップを起動します。画面には何も表示されません。
テストでは Deskhand のすべてのディレクトリを一時フォルダーにリダイレクトするため、実際の設定には一切触れません。tests/ekranli/ のテストは 実際の画面 を操作します。コンピューターを使用していないときにのみ実行してください。tests/ekranli/hepsi.sh を実行すると、すべてのテストが実行されます(約 15 分。独自の一時プロファイルで Firefox を開き、あなたのプロファイルは使用しません。--insansiz を指定すると、承認ダイアログでクリックするよう求める 2 つの手順をスキップします)。CONTRIBUTING.md を参照してください。
ライセンス
GPL-3.0-or-later © 2026 sobelendimm。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。