VScode Dev Containers上のAuto-GTPで非推奨オプション(EXECUTE_LOCAL_COMMANDS)による環境構築を試行（でもダメだった）

# 概要

Auto-GTPで非推奨とされ、デフォルト無効になっているオプション`EXECUTE_LOCAL_COMMANDS`を有効化することで、「システムを作成する方法・コードの作成」だけでなく、「システムそのものの環境構築」まで出来ないか？と思ったので。
なので、Auto-gptで[AgentGPT](https://github.com/reworkd/AgentGPT)の導入を試行してみます。

しかし、どんなローカルコマンドが実行されるか影響不明なので、VScodeの[Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)を使い、コンテナ上でAuto-gptを実行します。

# 環境構築

## Docker・Dev Containersのセットアップ
- こちらを参考に実施します。

https://code.visualstudio.com/docs/devcontainers/tutorial


## Auto-gptをホストOSにGit Clone
- ホストOS上で以下コマンドを実行し、Auto-gptを展開します。

```
git clone -b stable https://github.com/Significant-Gravitas/Auto-GPT.git
```

https://significant-gravitas.github.io/Auto-GPT/

## Dev Containersでコンテナ起動


- VScodeで「ファイル」->「フォルダーを開く」を選択し、ホストOS上のクローンしたリポジトリの場所を開きます。
- ポップアップの「Reopen in Container」を選択します。
  - ポップアップ出なかった場合、左下の「><」アイコンをクリックし、コマンドパレットから選択出来ます。
- `\Auto-GPT\.devcontainer\devcontainer.json`の設定に従い、コンテナが起動します。
- VSCodeのターミナルを見ると、クローンしたリポジトリがコンテナ上で起動出来ているようです。


```
vscode ➜ /workspaces/Auto-GPT (stable-0.2.2) $ ls
AutoGpt.json         Dockerfile          autogpt              docs              run.bat             tests
BULLETIN.md          LICENSE             azure.yaml.template  logs              run.sh              tests.py
CODE_OF_CONDUCT.md   README.md           benchmark            main.py           run_continuous.bat
CONTRIBUTING.md      ai_settings.yaml    data_ingestion.py    pyproject.toml    run_continuous.sh
CURRENT_BULLETIN.md  auto_gpt_workspace  docker-compose.yml   requirements.txt  scripts
```

- `./run.sh`を実行することでAuto-gptを実行可能になりました。
  - `run.bat`や`run.sh`が提供されるようになってから`pip install -r requirements.txt`はスクリプトに内包されるようになっているため、不要です。




## .envの修正（非推奨オプションの有効化）

- `.env`から以下を変更し、ローカルでのコマンド実行を有効に変更します。

```
# EXECUTE_LOCAL_COMMANDS - Allow local command execution (Example: False)
EXECUTE_LOCAL_COMMANDS=true
```


# 実行
- オプションを`--continuous --continuous-limit 250`で実行します。

## パスがないエラー

AgentGPTのリポジトリのクローンを試みています。
ですが、パスがAuto-gptのWorkspace外だったのでエラー発生。

```
 THOUGHTS:  I think the first step should be to install AgentGPT in this container. I can use the 'clone_repository' command to clone the repository from the given URL and then install the agent using the instructions provided in the repository. Once the agent is installed, I can start it using the 'start_agent' command.
REASONING:  Installing AgentGPT is the first step in completing the task. Cloning the repository and following the instructions provided in the repository will ensure that the agent is installed correctly. Starting the agent using the 'start_agent' command will allow me to use it to complete the task.
PLAN: 
-  Clone the repository using the 'clone_repository' command
-  Follow the instructions provided in the repository to install the agent
-  Start the agent using the 'start_agent' command
CRITICISM:  I need to ensure that I follow the instructions provided in the repository carefully to ensure that the agent is installed correctly. I also need to make sure that I save any important information to files to avoid losing it due to my short-term memory limitations.
NEXT ACTION:  COMMAND = clone_repository ARGUMENTS = {'repository_url': 'https://github.com/AgentGPT/AgentGPT.git', 'clone_path': '/agentgpt'}
SYSTEM:  Command clone_repository returned: Error: Attempted to access path '/agentgpt' outside of workspace '/workspaces/Auto-GPT/auto_gpt_workspace'.
```

## ディレクトリ作成を試行するもエラー
その後、Workspace内にフォルダを作成するべくかんばりますが、そもそもディレクトリ操作を行うコマンドがありません。


```
PLAN: 
-  Use the 'pwd' command to check the current working directory
-  Use the 'cd' command to change to a different directory if necessary
CRITICISM:  I need to ensure that I am in the correct location to clone the repository and that I have the necessary permissions to access the directory and its contents. I also need to make sure that I save any important information to files to avoid losing it due to my short-term memory limitations.
NEXT ACTION:  COMMAND = pwd ARGUMENTS = {}
SYSTEM:  Command pwd returned: Unknown command 'pwd'. Please refer to the 'COMMANDS' list for available commands and only respond in the specified JSON format.
 THOUGHTS:  I need to clone the repository to a directory within the workspace. I can use the 'ls' command to check the contents of the current directory and the 'mkdir' command to create a new directory within the workspace. Once the directory is created, I can use the 'cd' command to change to the new directory and then use the 'clone_repository' command to clone the repository.
REASONING:  Cloning the repository to a directory within the workspace will allow me to access the files and follow the instructions provided in the repository. Creating a new directory within the workspace will ensure that I have the necessary permissions to access the directory and its contents.
```

# まとめ


- Dev Containers を利用するより、ゲストOS用意してやったほうがよさそう。
  - `devcontainer.json`で`features：`を修正すれば動きはするものの、全然自動化になっていないので。