开发环境安装与配置#
本书推荐使用 Visual Studio Code 作为主要的代码阅读和调试工具。推荐用 vscode container 。因为项目中已经有 .devcontainer.json ,在 container 中运行开发环境的好处是,每个开发环境一配置都是一致,减少了很多依赖问题、工具链问题、版本问题、沟通成本。
源码导航图链接到 vscode 源码#
正如我在 /ch0/index.md:互动图书 一节说的。书中的图带 ⚓ 图标,双击可链接到本地 vscode 的源码位置。读者拥有源码导航图与源码无缝切换的阅读体验。
因为 Draw.io vscode 插件 的限制,drawio 图文件必须放在 vscode workspace 里一个与本书开发环境相同的路径下,才能正确打开链接到本地源码的位置。我已经把书中的 drawio 图与一些资源文件,放在 https://github.com/labilezhu/pub-diy.git 仓库中。
需要安装 Draw.io vscode 插件
首先 clone
pub-diy仓库:
cd ~/
git clone https://github.com/labilezhu/pub-diy.git
可见本书的所有图与资源文件均在 pub-diy 仓库的 ai/agentgateway/ag-dev 目录下。
把 pub-diy 仓库挂载到开发容器
然后修改一下 agentgateway 源码库的 .devcontainer.json 文件:
{
"image": "mcr.microsoft.com/devcontainers/rust:latest",
"mounts": [
"source=/home/your_home/pub-diy,target=/workspaces/agentgateway/diy-log,type=bind,consistency=cached"
]
}
即把 pub-diy 仓库挂载到容器的 /workspaces/agentgateway/diy-log 目录下。然后在 vscode 下执行 Rebuild Container 重建开发容器。完成后,所有图与资源文件均在容器里的 /workspaces/agentgateway/diy-log/ai/agentgateway/ag-dev 目录下。
构建 agentgateway#
agentgateway 自带一个 web 管理界面项目: agentgateway/ui 。它需要单独构建。构建需要安装 npm 。 具体说明见:ui/README.md 。 如果你用的是 vscode container :
sudo apt update
sudo apt install npm
npm install
Debug agentgateway#
vscode 会生成 launch.json :
{
"type": "lldb",
"request": "launch",
"name": "Debug executable 'agentgateway'",
"cargo": {
"args": [
"build",
"--bin=agentgateway",
"--package=agentgateway-app",
"--features",
"agentgateway/ui"
],
"filter": {
"name": "agentgateway",
"kind": "bin"
}
},
"args": ["--file", "/workspaces/agentgateway/examples/basic/labile-config.yaml"],
"cwd": "${workspaceFolder}",
},
需要注意的是,我在 cargo 配置中加入了 --features 。 这相当于 C++ 项目的 MACRO 配置。要打开 agentgateway/ui 才有 ui 功能,以下 crates/agentgateway/src/app.rs 代码才生效:
#[cfg(feature = "ui")]
admin_server.set_admin_handler(Arc::new(crate::ui::UiHandler::new(config.clone())));
#[cfg(feature = "ui")]
info!("serving UI at http://{}/ui", config.admin_addr);