Hermes Agentでターミナルバックエンドの環境を変更したいよ

Artificial Intelligence

ターミナルバックエンドとは?

Hermes Agentを動かす際、ターミナルバックエンドを指定する必要があったりします。ターミナルバックエンドとは、例えばエージェントが実際にコーディングを行ったりそのアプリケーションをリリースしたりする際、実際に捜査対象となる環境のことを指します。

当初、私は「local」を指定していました。これは、自身の触れているまさにその環境そのものを操作することを示しています。これは私自身がそれほど大きなタスクを与えてないのでまだよいのですが、やがて互いに賢くなったときに、触れては困るシステムに触れられては非常に困ることもあり、少し変更を施すことにしました。

環境を「local」から「docker」へ

この変更自体は非常に簡単ではあります。まず、以下のコマンドを実行して編集画面を開きます。

$ hermes config edit

エディタがnanoなので、慣れてない人は苦労するかもしれないんですが、ひとまず Ctrl+W を駆使して以下の箇所を探してください。

$ terminal:
  backend: local
  modal_mode: auto
  cwd: .
  timeout: 360
  env_passthrough: []

上記の backend 部分を「docker」に変更するだけです。

$ terminal:
  backend: docker
  modal_mode: auto
  cwd: .
  timeout: 360
  env_passthrough: []

ぶっちゃけいえば、これだけで Agent は Docker を使ってコード作成・設置・試行をしてくれるようになります。

成果物は、どこに置けばいいん・・・・じゃろ?

しかしふと考えればわかるかと思うのですが、成果物・・・・・・・・どこに置けばよいのでしょう?
コードを置いたとして、Docker コンテナから取り出すのは面倒かなと思いますし。こういう時は Persistent Volume を構成してBindしてしまえばよいということになります。実はこの部分のYAMLはコンテナの環境設定も兼ねていて、私の場合はひとまずこうしました。

terminal:
  backend: docker
  modal_mode: auto
  cwd: .
  timeout: 360
  env_passthrough: []
  shell_init_files: []
  auto_source_bashrc: true
  docker_image: nikolaik/python-nodejs:python3.11-nodejs20
  docker_forward_env: []
  docker_env: {}
  singularity_image: docker://nikolaik/python-nodejs:python3.11-nodejs20
  modal_image: nikolaik/python-nodejs:python3.11-nodejs20
  daytona_image: nikolaik/python-nodejs:python3.11-nodejs20
  vercel_runtime: node24
  container_cpu: 2
  container_memory: 5120
  container_disk: 51200
  container_persistent: true
  docker_volumes:
    - "/home/aiuser/hermes-output:/home/aiuser/hermes-output"
  docker_mount_cwd_to_workspace: false
  docker_extra_args: []
  docker_run_as_host_user: false
  persistent_shell: true
  lifetime_seconds: 300

なぜこうしたかって、恥ずかしながら事前のセッションでパスをへたに設定してしまい、Agentに覚えられてしまったので、もうそれを修正するのがめんどくてこのような形にしてしまったんですけれども、いったんこのようにボリュームをバインドすることにより、ホスト側から直接コードを拾うことが可能になりました。

実際使いこんでる人たちであれば、もっと良いバインドの仕方があるかなと思いますので、そっちをむしろ参考にしたほうが良いかもです。とにかくその他 Environment も設定できそうなので、ユーザIDとかもホストのそれに合わせて構成するよういろいろ手入れしようかなーなんて思ってたりはします。

このあたりの考え方はどちらかというと開発環境の構成方法に基づくところが大きそうですね。

コメント

タイトルとURLをコピーしました