ターミナルバックエンドとは?
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とかもホストのそれに合わせて構成するよういろいろ手入れしようかなーなんて思ってたりはします。
このあたりの考え方はどちらかというと開発環境の構成方法に基づくところが大きそうですね。



コメント