- 新增 MCP client 配置加载,支持 CLI/chat 通过配置文件接入 MCP - 完善 chat 交互命令,支持参数查看、事件查看、checkpoint 列表与加载 - 增加 LLM action 后诊断能力,支持真实 LLM 和本地规则兜底 - 将 chat 人工确认点接入 LangGraph interrupt/checkpointer - 更新 README、流程图、待办文档和打包说明 - 补充相关单元测试
205 lines
5.5 KiB
Markdown
205 lines
5.5 KiB
Markdown
# PAM 部署 Agent 解压即用包
|
||
|
||
这是打包后的 PAM 部署 Agent 使用说明。该包已包含 Python 运行时和 Python 依赖,目标 Linux 机器解压后即可运行。
|
||
|
||
## 目录说明
|
||
|
||
```text
|
||
pam-deploy-agent-linux-x86_64/
|
||
run.sh # 推荐入口,带中文帮助
|
||
pam-deploy-agent # PyInstaller 生成的可执行程序
|
||
doc_scripts/
|
||
deploy.sh # Linux 脚本 action 入口
|
||
config.txt.example # 参数配置示例
|
||
PAM_AUTO_DEPLY_SKILL.md
|
||
mcp_client.example.json
|
||
README.md # 当前说明
|
||
LICENSE
|
||
```
|
||
|
||
`doc_scripts` 只保留运行必需文件,不包含项目设计文档、测试脚本或 Windows 脚本。
|
||
|
||
## 查看帮助
|
||
|
||
```bash
|
||
./run.sh --help
|
||
```
|
||
|
||
查看某个子命令的原始参数:
|
||
|
||
```bash
|
||
./run.sh chat --help
|
||
./run.sh run-deploy --help
|
||
```
|
||
|
||
发布包默认包含 `rich` 和 `prompt_toolkit`。如果终端支持,chat 会自动启用更清晰的输出、命令补全和输入历史;不可用时会自动降级为普通文本输入输出。
|
||
chat 内的失败回滚确认由 LangGraph interrupt 托管;执行停在确认点后,输入 `approve` 或 `reject [原因]` 会恢复同一个图线程继续处理。
|
||
|
||
## 交互式使用
|
||
|
||
推荐先用 fake 策略验证流程:
|
||
|
||
```bash
|
||
./run.sh chat --config doc_scripts/config.txt.example --strategy fake --checkpoint runtime/checkpoints/demo.json
|
||
```
|
||
|
||
如果要启用 MCP,先按真实 MCP server 修改 `mcp_client.example.json`,再使用 `hybrid_node_mcp`:
|
||
|
||
```bash
|
||
./run.sh chat \
|
||
--config doc_scripts/config.txt.example \
|
||
--strategy hybrid_node_mcp \
|
||
--mcp-config mcp_client.example.json \
|
||
--checkpoint runtime/checkpoints/demo.json
|
||
```
|
||
|
||
进入对话框后可输入:
|
||
|
||
```text
|
||
PAM> 请用 MCP 预演部署 HET PAM Node 版本 2.0.5,不要动环境
|
||
PAM> preview
|
||
PAM> set VERSION_NUMBER=2.0.6
|
||
PAM> run
|
||
即将执行真实 action;确认执行请输入 yes: yes
|
||
PAM> status
|
||
PAM> params
|
||
PAM> events 5
|
||
PAM> llm action-analysis on
|
||
PAM> mcp config mcp_client.example.json
|
||
PAM> list checkpoints
|
||
PAM> load checkpoint runtime/checkpoints/demo.json
|
||
PAM> approve
|
||
PAM> resume
|
||
PAM> exit
|
||
```
|
||
|
||
## 一次性命令
|
||
|
||
只做理解和计划生成,不执行:
|
||
|
||
```bash
|
||
./run.sh analyze --config doc_scripts/config.txt.example --text "请用 MCP 预演部署 HET PAM Node 版本 2.0.5,不要动环境"
|
||
```
|
||
|
||
预演 action 路由:
|
||
|
||
```bash
|
||
./run.sh preview --config doc_scripts/config.txt.example --strategy fake
|
||
```
|
||
|
||
执行 fake 完整部署流程:
|
||
|
||
```bash
|
||
./run.sh run-deploy --config doc_scripts/config.txt.example --strategy fake --checkpoint runtime/checkpoints/demo.json --confirm
|
||
```
|
||
|
||
执行时开启 action 后诊断:
|
||
|
||
```bash
|
||
./run.sh run-deploy \
|
||
--config doc_scripts/config.txt.example \
|
||
--strategy fake \
|
||
--checkpoint runtime/checkpoints/demo.json \
|
||
--analyze-actions \
|
||
--confirm
|
||
```
|
||
|
||
使用 MCP 的完整部署:
|
||
|
||
```bash
|
||
./run.sh run-deploy \
|
||
--config doc_scripts/config.txt.example \
|
||
--strategy hybrid_node_mcp \
|
||
--mcp-config mcp_client.example.json \
|
||
--checkpoint runtime/checkpoints/demo.json \
|
||
--confirm
|
||
```
|
||
|
||
处理失败后的回滚确认:
|
||
|
||
```bash
|
||
./run.sh confirm --checkpoint runtime/checkpoints/demo.json --decision approve --confirm
|
||
./run.sh resume --checkpoint runtime/checkpoints/demo.json --confirm
|
||
```
|
||
|
||
拒绝回滚:
|
||
|
||
```bash
|
||
./run.sh confirm --checkpoint runtime/checkpoints/demo.json --decision reject --note "人工决定暂不回滚" --confirm
|
||
```
|
||
|
||
## LLM 配置
|
||
|
||
不配置 LLM 时会使用本地规则 fallback。真实 LLM 使用 OpenAI-compatible `/chat/completions`:
|
||
|
||
```bash
|
||
export PAM_LLM_BASE_URL="https://your-llm.example.com/v1"
|
||
export PAM_LLM_API_KEY="your-api-key"
|
||
export PAM_LLM_MODEL="your-model-name"
|
||
|
||
./run.sh analyze --config doc_scripts/config.txt.example --text "请分析这次部署"
|
||
```
|
||
|
||
也可以用 CLI 参数:
|
||
|
||
```bash
|
||
./run.sh analyze \
|
||
--config doc_scripts/config.txt.example \
|
||
--text "请分析这次部署" \
|
||
--llm-base-url https://your-llm.example.com/v1 \
|
||
--llm-api-key your-api-key \
|
||
--llm-model your-model-name
|
||
```
|
||
|
||
chat 内也可以热加载 LLM:
|
||
|
||
```text
|
||
PAM> llm config base_url=https://your-llm.example.com/v1 api_key=your-api-key model=your-model-name
|
||
PAM> llm action-analysis on
|
||
PAM> llm fallback
|
||
```
|
||
|
||
## 策略说明
|
||
|
||
- `fake`:全部使用 fake runner,不访问真实环境。
|
||
- `script_only`:全部 action 走脚本。
|
||
- `hybrid_node_mcp`:PAM_HOME 走脚本,PAM_NODE 走 MCP。
|
||
|
||
## MCP 配置
|
||
|
||
`--mcp-config` 指向 MCP client JSON 配置文件。当前支持 stdio transport:
|
||
|
||
```json
|
||
{
|
||
"server_name": "pam-node-prod",
|
||
"transport": "stdio",
|
||
"command": "/opt/pam-node-mcp/server",
|
||
"args": ["--stdio"],
|
||
"cwd": "/opt/pam-node-mcp",
|
||
"env": {
|
||
"PAM_NODE_ENV": "prod"
|
||
},
|
||
"timeout_seconds": 60,
|
||
"tool_names": {
|
||
"get-online-ips": "pam_get_online_ips",
|
||
"verify-ip": "pam_verify_ip",
|
||
"rollback-ip": "pam_rollback_ip"
|
||
}
|
||
}
|
||
```
|
||
|
||
字段说明:
|
||
|
||
- `command`:MCP server 启动命令。
|
||
- `args`:MCP server 启动参数。
|
||
- `cwd`:MCP server 工作目录,可为空。
|
||
- `env`:传给 MCP server 的环境变量,可为空。
|
||
- `timeout_seconds`:单次 tool 调用超时时间。
|
||
- `tool_names`:Agent action 到 MCP tool name 的映射。
|
||
|
||
## 注意事项
|
||
|
||
- 执行真实 action 前请确认配置文件中的 `HOME_BASE_URL`、`CLIENT_ID`、`CLIENT_SECRET`、`AIRPORT_CODE`、`APP_NAME`、`MODULE_NAME`、`VERSION_NUMBER`、`ZIP_FILE_PATH`。
|
||
- `checkpoint` 会保存完整运行参数,请放在受控目录。
|
||
- `hybrid_node_mcp`、`resume`、`confirm` 如果需要执行 MCP action,请同时传入 `--mcp-config`。
|