sudo-tee/opencode.nvim

neovim frontend for opencode - a terminal-based AI coding agent

🤖 opencode.nvim – Opencode AI コーディングエージェント用 Neovim フロントエンド

何ができるか

  • opencode CLI(ターミナルベースのAIコーディングアシスタント)と通信する Neovim プラグインです。エディタ内にチャットスタイルのUIを開き、現在のファイル、選択範囲、診断情報などを自動でAIに送信することで、Neovimから離れることなくコードの提案、編集、またはファイル全体の生成を依頼できます。

主な機能

機能 得られる利点
チャットパネル 永続的な会話ウィンドウで、会話履歴を表示し、エディタのコードに集中したままプロンプトを送信できます。
クイックバッファチャット (<leader>o/) ビジュアルモードでは選択したテキストがコンテキストになります。ノーマルモードでは現在の行が使用されます。AIの返答はバッファに直接適用されます。
セッション管理 セッションはワークスペースに関連付けられ、ディスク上に保存されます($XDG_DATA_HOME/opencode/snapshot/...)。キーマップでセッションの切り替え、名前の変更、フォーク、または元に戻すことができます。
コンテキストの自動取得 現在のファイル、選択テキスト、診断情報、カーソル周辺、Gitのdiffなど、オプションで自動的に含めることができます。
モデル/プロバイダの切り替え 1クリックでLLMモデルやプロバイダ(例:OpenAI、Anthropic)を変更でき、モデルバリアントも選べます。
差分表示と復元ツール 最後のプロンプト以降の変更を差分で表示し、個別のファイルや全体のセッションを元に戻す、スナップショットの復元が可能です。
豊富なUI スプリット位置(右/左/現在)をカスタマイズ可能、TreesitterによるMarkdownレンダリング、コスト・トークンカウンター、オプションのアイコン(nerdfontsまたはテキスト)が利用可能。
拡張可能なフック on_file_editedon_session_loadedなどのコールバックにより、キーポイントでカスタムLuaコードを実行できます。
外部サーバー対応 リモートのOpencodeサーバーに接続可能。オプションで起動、認証、パスマッピングのロジックも設定できます。

インストール方法(例:lazy.nvim

{ "sudo-tee/opencode.nvim",
  config = function()
    require("opencode").setup({})
  end,
  dependencies = {
    { "MeanderingProgrammer/render-markdown.nvim", opts = { anti_conceal = {enabled = false}, file_types = {'markdown','opencode_output'} }, ft = {'markdown','Avante','copilot-chat','opencode_output'} },
    "saghen/blink.cmp",          -- オプションの補完ソース
    "folke/snacks.nvim",        -- オプションのピッカーUI
  },
}

また、Opencode CLIopencode ≥ v0.6.3)が $PATH にインストールされている必要があります。

通常のワークフロー

  1. プロジェクトディレクトリで Neovim を起動します。
  2. <leader>og(または設定したキー)を押して Opencode UI を開きます。
  3. 入力パネルにプロンプトを入力します。プラグインが自動的に現在のファイル、選択範囲、診断情報をコンテキストとして追加します。
  4. AIの返答は出力パネルに表示されます。ファイルリンク(gf)をクリックして参照されたコードにジャンプできます。
  5. 差分ショートカット(<leader>od, <leader>orA など)を使って変更内容を確認または元に戻します。
  6. セッションを切り替え(<leader>os)、名前を変更(<leader>oR)、または過去のメッセージから新しいブランチをフォーク(<leader>oT)します。

設定のハイライト

  • preferred_picker / preferred_completion で、ファイル参照や補完に最適なUIを選択できます。
  • ui.positionright/left/current)と ui.input_positionbottom/top)でパネルの表示位置を制御できます。
  • context.enabled で自動コンテキスト取得をオン/オフ;diagnostics.warningselection.enabled などのサブオプションも微調整可能。
  • server テーブルでリモートのOpencodeサーバーを実行(カスタムURL、認証、自動終了、パスマッピング)。
  • prompt_guard はLua関数として設定でき、条件を満たさないプロンプトをブロックできます。

対象ユーザー

  • エディタから離れずにAI支援コーディングループを実現したいNeovimの熟練ユーザー。
  • Opencode CLI(または互換性のあるセルフホストサーバー)を使用しているチームで、よりIDEに近い体験を求める人。
  • Luaプラグインの設定に慣れており、コンテキスト、モデル選択、セッション履歴に対して細かい制御をしたい人。

注意点

  • プラグインは初期段階です。READMEにはバグや破壊的変更の可能性について警告されています。
  • 外部の opencode バイナリに依存しており、それ自体も開発中です。
  • 一部の機能(例:クイックバッファチャット)は 実験的 とマークされています。

上記のすべての詳細はリポジトリのREADMEから直接引用;追加の機能は推測されていません。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト