Skip to content

ClassCat® AI Research

クラスキャット – Hermes Agent, assistant-ui, AG-UI, Agno, LangChain/LangGraph

Menu
  • ホーム
    • ClassCat® AI Research ホーム
    • クラスキャット・ホーム
  • OpenAI API
    • OpenAI Python ライブラリ 1.x : 概要
    • OpenAI ブログ
      • GPT の紹介
      • GPT ストアの紹介
      • ChatGPT Team の紹介
    • OpenAI platform 1.x
      • Get Started : イントロダクション
      • Get Started : クイックスタート (Python)
      • Get Started : クイックスタート (Node.js)
      • Get Started : モデル
      • 機能 : 埋め込み
      • 機能 : 埋め込み (ユースケース)
      • ChatGPT : アクション – イントロダクション
      • ChatGPT : アクション – Getting started
      • ChatGPT : アクション – アクション認証
    • OpenAI ヘルプ : ChatGPT
      • ChatGPTとは何ですか?
      • ChatGPT は真実を語っていますか?
      • GPT の作成
      • GPT FAQ
      • GPT vs アシスタント
      • GPT ビルダー
    • OpenAI ヘルプ : ChatGPT > メモリ
      • FAQ
    • OpenAI ヘルプ : GPT ストア
      • 貴方の GPT をフィーチャーする
    • OpenAI Python ライブラリ 0.27 : 概要
    • OpenAI platform
      • Get Started : イントロダクション
      • Get Started : クイックスタート
      • Get Started : モデル
      • ガイド : GPT モデル
      • ガイド : 画像生成 (DALL·E)
      • ガイド : GPT-3.5 Turbo 対応 微調整
      • ガイド : 微調整 1.イントロダクション
      • ガイド : 微調整 2. データセットの準備 / ケーススタディ
      • ガイド : 埋め込み
      • ガイド : 音声テキスト変換
      • ガイド : モデレーション
      • ChatGPT プラグイン : イントロダクション
    • OpenAI Cookbook
      • 概要
      • API 使用方法 : レート制限の操作
      • API 使用方法 : tiktoken でトークンを数える方法
      • GPT : ChatGPT モデルへの入力をフォーマットする方法
      • GPT : 補完をストリームする方法
      • GPT : 大規模言語モデルを扱う方法
      • 埋め込み : 埋め込みの取得
      • GPT-3 の微調整 : 分類サンプルの微調整
      • DALL-E : DALL·E で 画像を生成して編集する方法
      • DALL·E と Segment Anything で動的マスクを作成する方法
      • Whisper プロンプティング・ガイド
  • Gemini API
    • Tutorials : クイックスタート with Python (1) テキスト-to-テキスト生成
    • (2) マルチモーダル入力 / 日本語チャット
    • (3) 埋め込みの使用
    • (4) 高度なユースケース
    • クイックスタート with Node.js
    • クイックスタート with Dart or Flutter (1) 日本語動作確認
    • Gemma
      • 概要 (README)
      • Tutorials : サンプリング
      • Tutorials : KerasNLP による Getting Started
  • Keras 3
    • 新しいマルチバックエンド Keras
    • Keras 3 について
    • Getting Started : エンジニアのための Keras 入門
    • Google Colab 上のインストールと Stable Diffusion デモ
    • コンピュータビジョン – ゼロからの画像分類
    • コンピュータビジョン – 単純な MNIST convnet
    • コンピュータビジョン – EfficientNet を使用した微調整による画像分類
    • コンピュータビジョン – Vision Transformer による画像分類
    • コンピュータビジョン – 最新の MLPモデルによる画像分類
    • コンピュータビジョン – コンパクトな畳込み Transformer
    • Keras Core
      • Keras Core 0.1
        • 新しいマルチバックエンド Keras (README)
        • Keras for TensorFlow, JAX, & PyTorch
        • 開発者ガイド : Getting started with Keras Core
        • 開発者ガイド : 関数型 API
        • 開発者ガイド : シーケンシャル・モデル
        • 開発者ガイド : サブクラス化で新しい層とモデルを作成する
        • 開発者ガイド : 独自のコールバックを書く
      • Keras Core 0.1.1 & 0.1.2 : リリースノート
      • 開発者ガイド
      • Code examples
      • Keras Stable Diffusion
        • 概要
        • 基本的な使い方 (テキスト-to-画像 / 画像-to-画像変換)
        • 混合精度のパフォーマンス
        • インペインティングの簡易アプリケーション
        • (参考) KerasCV – Stable Diffusion を使用した高性能画像生成
  • TensorFlow
    • TF 2 : 初級チュートリアル
    • TF 2 : 上級チュートリアル
    • TF 2 : ガイド
    • TF 1 : チュートリアル
    • TF 1 : ガイド
  • その他
    • 🦜️🔗 LangChain ドキュメント / ユースケース
    • Stable Diffusion WebUI
      • Google Colab で Stable Diffusion WebUI 入門
      • HuggingFace モデル / VAE の導入
      • LoRA の利用
    • Diffusion Models / 拡散モデル
  • クラスキャット
    • 会社案内
    • お問合せ
    • Facebook
    • ClassCat® Blog
Menu

Hermes エージェント☤ 入門 : 言語サーバー・プロトコル (LSP)

Posted on 07/29/2026 by Masashi Okumura

Hermes は、完全な言語サーバーをバックグラウンドのサブプロセスとして実行し、それらのセマンティック診断結果を write_file と patch で使用される post-write リント・チェックに提供します。エージェントがファイルを編集すると、構文エラーだけでなく、型エラー、未定義の名前、インポートの欠落、(言語サーバが検出する) プロジェクト全体のセマンティックな問題 など、編集によって発生したエラーを正確に確認できます。

Hermes エージェント☤ 入門 : 機能 – コア : 言語サーバー・プロトコル (LSP)

作成 : Masashi Okumura (@classcat.com)
作成日時 : 07/29/2026
バージョン : Hermes Agent v0.19.0 (2026.7.20) — The Quicksilver Release

* 本記事は hermes-agent.nousresearch.com/docs の以下のページを参考にしています :

  • Features – Core : Language Server Protocol (LSP)

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。

 

 

Hermes エージェント☤ 入門 : 機能 – コア : 言語サーバー・プロトコル (LSP)

Hermes は、完全な言語サーバー – pyright, gopls, rust-analyzer, typescript-language-server, clangd, 更に ~20 – をバックグラウンドのサブプロセスとして実行し、それらのセマンティック診断結果を write_file と patch で使用される post-write リント・チェックに提供します。エージェントがファイルを編集すると、構文エラーだけでなく、型エラー、未定義の名前、インポートの欠落、(言語サーバが検出する) プロジェクト全体のセマンティックな問題 など、編集によって発生したエラーを正確に確認できます。

これは、最高水準のコーディングエージェントが使用するのと同じアーキテクチャです。Hermes は自己完結型で提供されます: エディタホストは不要で、プラグインのインストールも不要、別途デーモンの管理も必要ありません。

 

When LSP runs

LSP は Git ワークスペースが検出 された場合のみ有効化されます。LSPは Git ワークスペースの検出に基づいて動作します。エージェントの作業ディレクトリ (または編集中のファイル) が git リポジトリ内にある場合、LSP はそのワークスペースに対して実行されます。どちらも git リポジトリ内にない場合、LSP は休止状態 (dormant) になります – これは、現在の作業ディレクトリ (cwd) がユーザーのホームディレクトリであり、診断対象のプロジェクトが存在しないような、メッセージング・ゲートウェイのために役立ちます。

チェックは段階的に行われます: まずプロセス内で構文チェック (数マイクロ秒) が行われ、構文に問題がなければ次に LSP 診断が行われます。不安定な言語サーバーや言語サーバーが存在しない場合でも、書き込み処理が中断されることはありません – LSP の障害発生時には、構文のみの結果に警告なしにフォールバックします。

具体的には、write_file または patch が正常に実行されるたびに、以下の処理が行われます :

  1. Hermes は、ファイルの現在の診断情報のベースラインを取得・記録します。

  2. 書き込みを実行します。

  3. 言語サーバーに再度問い合わせを行い、ベースラインに既に存在する診断情報を除外し、新しい診断情報のみを表示します。

The agent sees output like:

{
  "bytes_written": 42,
  "dirs_created": false,
  "lint": {"status": "ok", "output": ""},
  "lsp_diagnostics": "LSP diagnostics introduced by this edit:\n\nERROR [42:5] Cannot find name 'foo' [reportUndefinedVariable] (Pyright)\nERROR [50:1] Argument of type \"str\" is not assignable to \"int\" [reportArgumentType] (Pyright)\n"
}

lint フィールドには構文チェックの結果 (ast.parse、json.loads などを介したマイクロ秒単位のプロセス内解析) が格納されます; lsp_diagnostics フィールドには実際の言語サーバーからの意味診断情報が格納されます。2 つのチャネル、独立した信号です – エージェントは、構文的にクリーンなファイルで意味的な問題がある場合、`lint: ok` と入力済みの lsp_diagnostics として認識します。

 

サポートされる言語

言語 サーバ 自動インストール
Python pyright-langserver npm
TypeScript / JavaScript / JSX / TSX typescript-language-server npm
Vue @vue/language-server npm
Svelte svelte-language-server npm
Astro @astrojs/language-server npm
Go gopls go install
Rust rust-analyzer 手動 (rustup)
C / C++ clangd 手動 (LLVM)
Bash / Zsh bash-language-server npm
YAML yaml-language-server npm
Lua lua-language-server 手動 (GitHub releases)
PHP intelephense npm
OCaml ocaml-lsp 手動 (opam)
Dockerfile dockerfile-language-server-nodejs npm
Terraform terraform-ls 手動
Dart dart language-server 手動 (dart sdk)
Haskell haskell-language-server 手動 (ghcup)
Julia julia + LanguageServer.jl 手動
Clojure clojure-lsp 手動
Nix nixd 手動
Zig zls 手動
Gleam gleam lsp 手動 (gleam install)
Elixir elixir-ls 手動
Prisma prisma language-server 手動
Kotlin kotlin-language-server 手動
Java jdtls 手動
PowerShell PowerShellEditorServices (pwsh host) 手動 (release zip)

「手動」のエントリについては、その言語に適したツールチェーン・マネージャ (rustup、ghcup、opam、brew 等) を使用してサーバーをインストールしてください。Hermes は PATH または <HERMES_HOME>/lsp/bin/ にあるバイナリを自動的に検出します。

 

CLI

hermes lsp status          # service state + per-server install status
hermes lsp list            # registry, optionally --installed-only
hermes lsp install     # eagerly install one server
hermes lsp install-all     # try every server with a known recipe
hermes lsp restart         # tear down running clients
hermes lsp which       # print resolved binary path

出力例

% hermes lsp list
pyright                  [installed  ] .py,.pyi
typescript               [missing    ] .ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts
vue-language-server      [missing    ] .vue
svelte-language-server   [missing    ] .svelte
astro-language-server    [missing    ] .astro
gopls                    [missing    ] .go
rust-analyzer            [manual-only] .rs
clangd                   [installed  ] .c,.cpp,.cc,.cxx,.h,.hh,.hpp,.hxx
bash-language-server     [missing    ] .sh,.bash,.zsh,.ksh
yaml-language-server     [missing    ] .yaml,.yml
lua-language-server      [manual-only] .lua
intelephense             [missing    ] .php
ocaml-lsp                [missing    ] .ml,.mli
dockerfile-ls            [missing    ] .dockerfile,Dockerfile
terraform-ls             [missing    ] .tf,.tfvars
dart                     [installed  ] .dart
haskell-language-server  [missing    ] .hs,.lhs
julia                    [missing    ] .jl
clojure-lsp              [missing    ] .clj,.cljs,.cljc,.edn
nixd                     [missing    ] .nix
zls                      [missing    ] .zig,.zon
gleam                    [missing    ] .gleam
elixir-ls                [missing    ] .ex,.exs
prisma                   [missing    ] .prisma
kotlin-language-server   [missing    ] .kt,.kts
jdtls                    [missing    ] .java
powershell               [manual-only] .ps1,.psm1,.psd1

 

設定

デフォルト設定は通常のセットアップでは問題なく動作します; バイナリが PATH 環境変数にある場合は、何も設定する必要はありません。

# config.yaml
lsp:
  # Master toggle. Disabling skips the entire subsystem — no servers
  # spawn, no background event loop runs.
  enabled: true

  # How long to wait for diagnostics after each write.
  wait_mode: document      # "document" or "full"
  # Max seconds to wait for the server to re-check the file after an
  # edit. Only *fresh* diagnostics (produced for the post-edit
  # content) are ever reported; if the server doesn't finish within
  # this budget, the edit reports "no LSP data" rather than stale
  # errors from before the edit. Raise this for slow servers on big
  # projects (tsserver, rust-analyzer mid-indexing).
  wait_timeout: 5.0

  # How to handle missing server binaries.
  #   auto    — install via npm/pip/go install into /lsp/bin
  #   manual  — only use binaries already on PATH
  install_strategy: auto

  # Per-server overrides (all optional).
  servers:
    pyright:
      disabled: false
      command: ["/abs/path/to/pyright-langserver", "--stdio"]
      env: { PYRIGHT_LOG_LEVEL: "info" }
      initialization_options:
        python:
          analysis:
            typeCheckingMode: "strict"
    typescript:
      disabled: true       # skip TS even when its extensions match

 

サーバーごとのキー

  • disabled: true — 拡張子がファイルと一致しても、このサーバーを完全にスキップします。

  • command: [bin, ...args] — カスタム・バイナリパスを固定します。自動インストールをバイパスします。

  • env: {KEY: value} — 生成されたプロセスに渡される追加の環境変数。

  • initialization_options: {...} — initialize ハンドシェイクで送信される LSP の initializationOptions ペイロードにマージされます。サーバー固有です; consult the language server’s docs.

 

インストール場所

install_strategy: auto の場合、Hermes はバイナリを `<HERMES_HOME>/lsp/bin/` にインストールします。NPM パッケージは `<HERMES_HOME>/lsp/node_modules/` にインストールされ、bin シンボリックリンクは 1 つ上の階層に作成されます。Go のバイナリは、GOBIN が staging ディレクトリを指した状態で `go install` でインストールされます。

/usr/local/, ~/.local/, またはその他の共有ディレクトリには何もインストールされません – staging ディレクトリは完全に Hermes が所有しており、プロファイルをリセットすると削除されます。

 

パフォーマンス特性

LSP サーバーは初回起動時に 遅延起動 (lazy-spawned) されます。.py ファイルが使用されたことのないプロジェクトで Python ファイルを編集すると、pyright が起動します; ほとんどのサーバーでは起動に 1~3 秒かかります (rust-analyzer は、コールドプロジェクトでは10+ 秒かかる場合があります)。同じワークスペース内でのその後の編集では、実行中のサーバーが再利用されます。

LSP レイヤーは、診断情報が出力されない場合、クリーンな書き込みに数ミリ秒を追加します。診断情報が出力される場合、待機時間は wait_timeout 秒となります – 通常、pyright/tsserver の場合は数十ミリ秒、rust-analyzer のインデックス作成中は数秒でサーバーが応答します。

診断機能の実行は、データの最新度 (freshness) に基づいて制御されています: サーバーが現在の編集内容に対して結果を生成した場合 (変更時または変更後に publishDiagnostics がプッシュされた場合、あるいは変更後にプルリクエストが応答された場合) のみ、結果が有効となります。再チェックがまだ行われていない低速なサーバーでは、その編集に対して “no data” という結果になります – 昨日のエラーが現在のエラーとして再報告されることは決してありません。

サーバーは Hermes プロセスの存続期間中、稼働状態を維持します。アイドルタイムアウトによるリーパー (回収機能) は存在しません – 書き込みのたびにサーバーのインデックスを再起動するコストは、デーモンを稼働させ続けるコストよりもはるかに高くなるためです。

 

無効化

config.yaml で lsp.enabled: false を設定すると、サブシステム全体が無効になります。書き込み後のチェックは、以前のバージョンから変更されていないインプロセス構文チェック (Python の場合は ast.parse、JSON の場合は json.loads 等) にフォールバックします。

レイヤー全体を無効にせずに、単一の言語のみを無効にするには :

lsp:
  servers:
    rust-analyzer:
      disabled: true

 

以上





クラスキャット

最近の投稿

  • Hermes エージェント☤ 入門 : 言語サーバー・プロトコル (LSP)
  • Hermes エージェント☤ 入門 : 機能 – スキル・システム
  • Hermes エージェント☤ 入門 : 機能 – ツール & ツールセット
  • Hermes エージェント☤ 入門 : 機能概要 & Nous ツールゲートウェイ
  • Hermes エージェント☤ 入門 : ユーザガイド – モデル設定

タグ

AG2 (14) Agno (46) Agno 2.x (22) assistant-ui (19) AutoGen (13) ClassCat Press Release (20) ClassCat TF/ONNX Hub (11) Cursor (20) DGL 0.5 (14) Edward (17) FLUX.1 (16) Gemini (20) Hermes Agent (10) HuggingFace Transformers 4.5 (10) HuggingFace Transformers 4.29 (9) Keras 2 Examples (98) Keras 2 Guide (16) Keras 3 (10) Keras Release Note (17) Kubeflow 1.0 (10) LangChain (45) LangChain v1.0 (10) LangGraph (24) MediaPipe 0.8 (11) Model Context Protocol (16) NNI 1.5 (16) OpenAI Cookbook (13) OpenAI platform (10) OpenAI platform 1.x (10) TensorFlow 2.0 Advanced Tutorials (33) TensorFlow 2.0 Advanced Tutorials (Alpha) (15) TensorFlow 2.0 Advanced Tutorials (Beta) (16) TensorFlow 2.0 Guide (10) TensorFlow 2.0 Guide (Alpha) (16) TensorFlow 2.0 Guide (Beta) (9) TensorFlow 2.0 Release Note (12) TensorFlow 2.0 Tutorials (20) TensorFlow 2.0 Tutorials (Alpha) (14) TensorFlow 2.0 Tutorials (Beta) (12) TensorFlow 2.4 Guide (24) TensorFlow Probability (9) TensorFlow Programmer's Guide (22) TensorFlow Release Note (18) TensorFlow Tutorials (33) TF-Agents 0.4 (11)
2026年7月
月 火 水 木 金 土 日
 12345
6789101112
13141516171819
20212223242526
2728293031  
« 6月    
© 2026 ClassCat® AI Research | Powered by Minimalist Blog WordPress Theme