このプロジェクトについて

tg-cli(コマンド名:tg)は、AIコーディングエージェントのためのTelegramブリッジです。このツールは2つのパートで構成されています。エージェントがアップデートをプッシュするための送信側CLIと、スマートフォンからの返信を実行中のエージェントセッションに戻す受信側デーモン「tg-ctl」です。 【送信機能】エージェントはテキスト、HTMLレポート、写真、ファイルを送信できます。HTMLタグは自動検出し、検出されたエージェントに応じたブランド絵文字のプレフィックスが付与されます。MarkdownファイルはpandocとヘッドレスChrome経由でPDFに変換されてアップロードされ、変換失敗時は元のファイルが送信されます。メッセージ内のファイルパスはワークツリーを再帰的に検索して自動的に添付され、パスはキャプションに残されます。 送信前には複数のガード機能が動作します。Telegramの送信回数が6回を超えるほど長いメッセージは、文字数と分割数と共に拒否されます。また、.envファイル、SSH秘密鍵、pem/key/p12/pfx/ppk、認証rcファイル、シェル履歴、tfvars、credentials.json、kubeconfigなどの機密ファイルは決して添付されません。自動検出されたメンションはスキップされ、明示的なファイル引数はハードエラーとなります。文字化けトークンガードは、ラテン文字やキリル文字の単語内に混入した単一のCJKコードポイントや、スクリプトが2回以上切り替わるトークンをブロックしつつ、正当なバイリンガルテキストは許可します。スクリーンショットガードは、写真が添付されていない状態でスクリーンショットに言及したメッセージを拒否します。辞書ゲートは、ユーザーが管理するJSONファイル内の禁止ワードをタイトル、本文、キャプションと照合し、設計上バイパスフラグは存在しません。不正なファイルがある場合はクローズ(拒否)されます。オートリンクはlinear CLIを通じてLinearチケットIDを、ghを通じてGitHubのPR/Issue番号を解決し、結果を1時間キャッシュして、失敗時はプレーンテキストにフォールバックします。個別の機能はno-featureフラグでオフにできます。 【受信機能】tg-ctlは、エージェントが検出されたtmuxペインから最初の送信が行われた際に自動的に起動します。Telegramからのプレーンテキストの返信はそのエージェントのペインに注入されます。引用による返信では、回答先メッセージを特定する引用アンカーが付与され、tg repliesコマンドで元の全文を呼び戻せます。/agentコマンドはメッセージを特定のエージェントにルーティングします。ウィンドウ名を曖昧検索(キリル文字対応)し、曖昧な場合はセッションごとにグループ化された選択ボタンを表示し、引数なしで実行するとエージェント一覧を表示します。 tmux外で起動したエージェントにはペインがないため、「到達不能」として理由と共にリストされ、代わりにStop-hookインボックスという第2のチャネルを通じて、各ターンの終了時にメッセージを読み取ります。READMEには、アイドル状態のエージェントは次のターンを終了するまでキューに溜まったメッセージを受信できないという制限が明記されています。tg-ctl inboxコマンドでキューの内容を確認できます。 「Question-to-buttons」機能は、エージェントの質問や権限リクエストをTelegramのインラインボタンとして転送します。これにより、タップするだけで回答をペインに直接注入できます。Claude Codeの質問・権限形式、CodexのPermissionRequest、opencodeのquestion.askedおよびpermission.askedイベントに対応しており、install-hooksコマンドによって既存の設定を保持したままべき等的にセットアップされます。質問待機中に送信されたメッセージは、プロンプトを中断させないよう後回しにされ、タイムアウトした質問カードにはプレーンテキストで回答可能です。 その他のコマンドには、stop(現在のターンを中断)、kill、status、limit(エージェントごとの最新利用テレメトリ)、tasks(フィルタ可能なタスクボード)、agent、daily(出荷済みワークレポート)、spend(トークンおよびコスト利用状況)があります。Telegramから送信された写真やドキュメントはローカルキャッシュディレクトリにダウンロードされ、そのパスがエージェントに注入されます。Claude CodeのstatusLine、Codexのトークン数、Piのセッション統計からパイプされた利用テレメトリは、制限の90%に達した際に重複排除された警告をトリガーできます。フォーラムトピックルーティングはオプトインの実験的機能であり、トピック作成時にエージェントが生成される点や、ライブトピックの再オープン時にエージェントが再アタッチされない点などの注意点がドキュメント化されています。制御機能は設定ファイルで無効化できます。 【インストール】1行のインストールスクリプトでBun経由で依存関係をインストールし、tgをPATHにリンクし、エージェントスキルを登録します。手動でのクローンとシンボリックリンクでも動作します。設定はconfigディレクトリ下のdotenvファイルにボットトークンとチャットIDを記述します。install-skillサブコマンドはスキルファイルを書き込み、検出されたハーネスファイルに短い指示を追記します。チェックアウトしたスクリプトがそのまま実行バイナリとなるためビルドステップはなく、デプロイスクリプトでチェックアウトを早送りします(ローカル変更がある場合はプルを拒否)。デーモンコードの変更には再起動が必要であり、スクリプトがこれを検知して報告します。Telegramでは1トークンにつきgetUpdatesコンシューマーが1つしか許可されないため、マシンごとに1つのボットトークンが必要です。