Skip to main content

Control AI coding agents from your phone via Discord

Project description

discoder

AIコーディングエージェント(Claude Code等)をスマホからDiscord経由で操作するツール。

特徴

  • Discordスレッド = セッション。スマホからコーディング指示が出せる
  • ターミナル↔Discord間でセッションの双方向引き継ぎ
  • ストリーミング応答(途中経過がリアルタイム表示、ツール実行状況も表示)
  • 返信候補ボタン(応答ごとに次のアクション候補をボタンで提示)
  • ポート開放不要(Discord Gateway、外向き接続のみ)
  • tmuxで常駐させるだけのシンプル運用

セットアップ

1. Discord Bot作成

1-1. アプリケーション作成

  1. Discord Developer Portal を開く
  2. 右上の「New Application」→ 名前を入力(例: discoder)→「Create」

1-2. Botトークン取得

  1. 左メニュー「Bot」を開く
  2. 「Reset Token」→ 表示されたトークンをコピーして控えておく(後で使う)
  3. 下にスクロールし「MESSAGE CONTENT INTENT」を ON にして「Save Changes」

1-3. 招待URLの生成

  1. 左メニュー「OAuth2」→「URL Generator」を開く
  2. SCOPES で以下にチェック:
    • bot
    • applications.commands
  3. 下に表示される BOTの権限 で以下にチェック:
    • メッセージを送信 (Send Messages)
    • 公開スレッドを作成 (Create Public Threads)
    • Threadsでメッセージを送る (Send Messages in Threads)
    • メッセージ履歴を読む (Read Message History)
  4. ページ最下部に生成されたURLをコピー

1-4. サーバーに招待

  1. コピーしたURLをブラウザで開く
  2. 「サーバーに追加」のドロップダウンから招待先のサーバーを選択
  3. 「はい」→「認証」で完了

Tips: Botを追加するにはそのサーバーの「サーバー管理」権限が必要です。自分専用のサーバーがなければ、Discordアプリの左下「+」→「オリジナルの作成」で無料で作れます。

2. インストール・起動

pip install discoder
discoder init     # 1-2で控えたBotトークンを入力
discoder start    # Bot起動(tmux内で実行推奨)

開発版を使いたい場合:

git clone https://github.com/fuumin621/discoder.git
cd discoder
pip install -e .

使い方

Discordコマンド

コマンド 場所 説明
/new <prompt> チャンネル 新規セッション作成(--dir /path でディレクトリ指定可)
/resume [session_id] チャンネル セッション引き継ぎ(ID省略で直近セッション)
/sessions どこでも アクティブセッション一覧
/handoff スレッド ターミナル引き継ぎ用のセッションIDとコマンドを表示
/compact スレッド コンテキスト圧縮
/model スレッド モデル切替(opus / sonnet / haiku)
/cost スレッド セッションコスト表示
/stop スレッド 実行中のタスクを中断
/clear どこでも 全セッション情報をクリア

スレッド内は返信するだけで会話が継続します。

セッション引き継ぎ

ターミナル → Discord(スマホで続きをやりたい時)

スマホでDiscordを開いて /resume するだけ。直近のターミナルセッションが引き継がれます。

Discord → ターミナル(PCに戻った時)

PCに戻ったらターミナルで claude --continue を実行するだけ。直近のセッション(=Discordで使っていたセッション)が再開されます。

cd /your/project && claude --continue

別のセッションを間に挟んだ場合など、特定セッションを再開したい時はスレッド内で /handoff → 表示されたコマンドをターミナルで実行。

CLIコマンド

コマンド 説明
discoder init Botトークンの初期設定
discoder start Discord Bot起動(常駐)

注意事項

  • --dangerously-skip-permissions が常に有効です。 Claude Codeの全ツール(ファイル編集、任意コマンド実行等)が確認なしで実行されます。Discordサーバーへのアクセス権 ≒ マシンの操作権限となるため、信頼できるメンバーだけのサーバーで使ってください
  • タイムアウトは15分です。 それを超えるとセッションが中断されます。長時間かかる処理(推論実行等)はtmux経由で実行するようプロンプトで指示してください
  • 画像・ファイルの添付には対応していません。 テキストメッセージのみ処理されます
  • メッセージはキューイングされます。 応答中に次のメッセージを送った場合、前の処理が完了してから順番に実行されます

動作要件

  • Python 3.10+
  • Claude Code CLI(claude コマンドがPATHに通っていて、API認証済みであること)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

discoder-0.1.0.tar.gz (12.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

discoder-0.1.0-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file discoder-0.1.0.tar.gz.

File metadata

  • Download URL: discoder-0.1.0.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for discoder-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7257d2242ed02ebb482a41dc8c0fb440ab2f772d06025108e094923c1de62ac9
MD5 4e82467c0edbedecf8aba321f9e8767a
BLAKE2b-256 ec434d0d73745568636188ee83378ae8cd4eece147c15dda6ecbedd9237f309e

See more details on using hashes here.

Provenance

The following attestation bundles were made for discoder-0.1.0.tar.gz:

Publisher: publish.yml on fuumin621/discoder

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file discoder-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: discoder-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for discoder-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b31af0ce0ed98a040c2d9a53cc49a45939764398de02229762c3510b75c6922f
MD5 27698c3760f49bca8183d085d08f803a
BLAKE2b-256 4e4569f880760c86670038aea8f6b150b0d2fa88cc9d8f646f3747a770cff056

See more details on using hashes here.

Provenance

The following attestation bundles were made for discoder-0.1.0-py3-none-any.whl:

Publisher: publish.yml on fuumin621/discoder

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page