コンテンツへスキップ
Jeff

Jeff

Gmail、Calendar、Tasks、Contacts向けAIターミナルアシスタント。5つのプロバイダーバックエンド、vimバインディング付きTUI、ローカルストレージ。

試す GitHub ← 全プロダクト

Jeffはコマンドラインを離れずにGmail、Calendar、Tasks、Contactsを操作できるターミナルベースのAIアシスタントだ。ストリーミングレスポンス、vimスタイルナビゲーション、会話メモリを備えたフルTUIとして動くか、手早いクエリ向けのワンショットCLIとして動く。Rustで書かれ、5つのLLMプロバイダーから好きなものを選べる。

インストール

brew install 2389-research/tap/jeff

何をするのか

ターミナルからGoogle Workspace。 メールの検索と送信、カレンダーイベントの管理、連絡先の確認、タスクの作成 — すべて自然言語で。JeffはOAuthで認証してトークンをローカルに保存する。パーソナライズウィザード(jeff init)が送信済みメールを読んであなたの文体を学習するので、下書きした返信はあなたが書いたように聞こえる。

インタラクティブTUIまたはプリントモード。 デフォルトはj/kナビゲーション、シンタックスハイライト、リアルタイムストリーミングを備えたフルスクリーンインターフェース。プリントモード(jeff -p 'summarize my inbox')はスクリプトやパイプ用に単一レスポンスを返す。組み込みの4カラーテーマ: Default、Dracula、Gruvbox、Nord。

マルチプロバイダー。 Anthropic(Claude)、OpenAI、Google Gemini、OpenRouter、Ollama。--providerで切り替えるかJEFF_PROVIDERを設定する。Ollamaでモデルをローカル実行するか、OpenRouter経由でルーティングする。

MCP拡張性。 Model Context Protocolで外部ツールサーバーを接続。jeff mcp addでサーバーを登録すると、ツールが自動的に会話に現れる。8つのライフサイクルフック(ツール使用、レスポンス、送信、セッションのpre/post)でログ、通知、ガードレール用のカスタムスクリプトを接続できる。

会話管理。 すべてがローカルSQLiteに永続化される。--continueまたは--resume <id>で会話を再開。markdown、JSON、HTMLにエクスポート。クイックアクセス用に会話をお気に入り登録。タイトルで履歴を検索。

ツール承認フロー。 危険なツール(bash、ファイル書き込み)はTUIで明示的な承認が必要。特定ツールを常に許可または決して許可しないルールを保存できる。モデルを完全に信頼するなら--dangerously-skip-permissionsでオーバーライド。

仕組み

JeffはGoogle APIツール定義にjeff-soma、コアツール(bash、ファイル操作、ウェブ検索、grep)にmux-rsを使っている。TUIはratatui + crossterm。会話はイベント駆動アーキテクチャでストリーム処理される — ランタイムがストリーミングテキストとツールリクエストをチャネル経由でUIに送り、UIが承認とメッセージを返す。コンテキスト管理がトークン使用量を追跡し、ウィンドウ上限に近づくと自動的に刈り込む。

必要要件

  • 少なくとも1つのプロバイダーのAPIキー(ANTHROPIC_API_KEYOPENAI_API_KEYなど)— またはOllamaがローカルで動作していること
  • メール・カレンダー機能にはGoogle OAuthクレデンシャルが必要(jeff auth googleで設定)
GitHub で見る →
31 ページ · hugo 0.148.2 · 1ee4278 · 構築済み Aug 10 22:58
2389 Radio
2389 RADIO ステーションを選択