9.1 KiB
PAM 部署 Agent 解压即用包
这是打包后的 PAM 部署 Agent 使用说明。该包已包含 Python 运行时和 Python 依赖,目标 Linux 机器解压后即可运行。
目录说明
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
prompts/
action_review.txt # 当前默认 action 审核提示词基线
mcp_client.example.json
README.md # 当前说明
LICENSE
doc_scripts 只保留运行必需文件,不包含项目设计文档、测试脚本或 Windows 脚本。prompts/action_review.txt 是当前默认 action 审核提示词的落地副本,便于复制后按需修改。
查看帮助
./run.sh --help
查看某个子命令的原始参数:
./run.sh chat --help
./run.sh run-deploy --help
发布包默认会优先使用 prompt_toolkit 增强输入,支持更稳定的退格、历史记录和补全;如果增强输入初始化失败,会自动降级到普通 input()。输出仍会在可用时使用 rich 做更清晰的文本展示。
action 失败或审核阻断后会保存 checkpoint 并暂停;修复外部环境后输入 resume 会从当前 action 重试。回滚不再属于主 workflow 自动分支,需要时在 chat 内输入 rollback [IP] 显式执行。
chat 会在执行前归一化并展示实际写入脚本配置的参数;script_only / hybrid_node_mcp 会先检查 ZIP_FILE_PATH 是否存在,避免脚本运行后才用默认路径失败。执行过程中每个 action 都会输出开始、完成或失败状态;每个 action 完成后还会自动进入一次 LLM/规则审核,并播报审核开始和审核结果;只有审核通过才会把 action 记为 completed。
交互式使用
推荐先用 fake 策略验证流程:
./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:
./run.sh chat \
--config doc_scripts/config.txt.example \
--strategy hybrid_node_mcp \
--mcp-config mcp_client.example.json \
--checkpoint runtime/checkpoints/demo.json
进入对话框后可输入:
PAM> 请用 MCP 预演部署 HET PAM Node 版本 2.0.5,不要动环境
PAM> preview
PAM> set VERSION_NUMBER=2.0.6
PAM> load params runtime/override.txt
PAM> run
即将执行真实 action;确认执行请输入 yes: yes
开始执行 action: get-token [backend=fake]
开始分析 action 结果: get-token [backend=fake]
完成 action: get-token [backend=fake]
PAM> status
PAM> params
PAM> events 5
PAM> llm test
PAM> llm action-analysis on
PAM> llm config action_analysis_prompt_file=prompts/action_review.txt
PAM> mcp config mcp_client.example.json
PAM> list checkpoints
PAM> load checkpoint runtime/checkpoints/demo.json
PAM> rollback
PAM> resume
PAM> exit
一次性命令
只做理解和计划生成,不执行:
./run.sh analyze --config doc_scripts/config.txt.example --text "请用 MCP 预演部署 HET PAM Node 版本 2.0.5,不要动环境"
预演 action 路由:
./run.sh preview --config doc_scripts/config.txt.example --strategy fake
执行 fake 完整部署流程:
./run.sh run-deploy --config doc_scripts/config.txt.example --strategy fake --checkpoint runtime/checkpoints/demo.json --confirm
执行时把详细 action 审核结果写入 events:
./run.sh run-deploy \
--config doc_scripts/config.txt.example \
--strategy fake \
--checkpoint runtime/checkpoints/demo.json \
--analyze-actions \
--confirm
使用 MCP 的完整部署:
./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
失败后从断点重试:
./run.sh resume --checkpoint runtime/checkpoints/demo.json --confirm
需要回滚失败 IP 时显式执行 rollback,未指定 --ip 时会使用当前失败 IP:
./run.sh rollback --checkpoint runtime/checkpoints/demo.json --confirm
./run.sh resume --checkpoint runtime/checkpoints/demo.json --confirm
也可以指定 IP 和停机策略:
./run.sh rollback --checkpoint runtime/checkpoints/demo.json --ip 192.168.1.10 --stop-first --note "人工决定回滚该 IP" --confirm
LLM 配置
不配置 LLM 时会使用本地规则 fallback。真实 LLM 使用 OpenAI-compatible /chat/completions:
export PAM_LLM_BASE_URL="https://your-llm.example.com/v1"
export PAM_LLM_MODEL="your-model-name"
./run.sh analyze --config doc_scripts/config.txt.example --text "请分析这次部署"
如果服务需要鉴权,再补 PAM_LLM_API_KEY;如果不需要鉴权,可以不配置,程序不会发送 Authorization 请求头。
也可以用 CLI 参数:
./run.sh analyze \
--config doc_scripts/config.txt.example \
--text "请分析这次部署" \
--llm-base-url https://your-llm.example.com/v1 \
--llm-model your-model-name
如需自定义 action 审核提示词:
./run.sh analyze \
--config doc_scripts/config.txt.example \
--text "请分析这次部署" \
--llm-base-url https://your-llm.example.com/v1 \
--llm-model your-model-name \
--llm-action-analysis-prompt-file prompts/action_review.txt
chat 内也可以热加载 LLM:
PAM> llm config base_url=https://your-llm.example.com/v1 api_key=your-api-key model=your-model-name
PAM> llm config action_analysis_prompt_file=prompts/action_review.txt
PAM> llm test 请返回一次连通性测试结果
PAM> llm action-analysis on
PAM> llm fallback
llm test [文本] 会使用当前 LLM client 做一次轻量意图识别调用,并输出 client 类型、intent、strategy 和 confidence,便于确认真实 LLM 或规则 fallback 是否正常加载。
日志
Agent 默认写入运行日志到 logs/pam_deploy_agent.log。日志覆盖 chat/CLI 输入、LLM 请求和响应摘要、action 路由、脚本/MCP 调用、LangGraph 节点、checkpoint 保存、暂停/续跑等关键流程。
可通过环境变量调整日志位置和级别:
export PAM_AGENT_LOG_FILE=logs/pam_deploy_agent.log
export PAM_AGENT_LOG_LEVEL=INFO
日志会递归脱敏 CLIENT_SECRET、MCP_CLIENT_SECRET、token、Authorization、api_key、password 等字段,并截断长文本。checkpoint 仍会保存完整运行参数,请放在受控目录。
策略说明
fake:全部使用 fake runner,不访问真实环境。script_only:全部 action 走脚本。hybrid_node_mcp:PAM_HOME 走脚本,PAM_NODE 走 MCP。
MCP 配置
--mcp-config 指向 MCP client JSON 配置文件。一般只需要配置 MCP server 地址和独立鉴权信息;Agent 会从 MCP server list_tools 自动发现可用 tool,不需要手写所有 action。
MCP token 获取方式与 HOME 一致,默认按 client_credentials POST 到 token 地址;但 MCP 使用独立的 token_url、client_id、client_secret。
{
"server_name": "pam-node-prod",
"transport": "streamable_http",
"server_url": "https://pam-node-mcp.example.com/mcp",
"auth": {
"token_url": "https://pam-node-auth.example.com/oauth/token",
"client_id": "mcp_client_id",
"client_secret": "mcp_client_secret",
"grant_type": "client_credentials"
},
"timeout_seconds": 60
}
字段说明:
transport:支持streamable_http、sse、stdio。server_url:MCP server 地址。auth.token_url:MCP token 获取地址。auth.client_id/auth.client_secret:MCP 独立账号密码。timeout_seconds:单次 tool 调用超时时间。action_tools:可选覆盖项。通常不需要配置;只有 server tool 名称不符合get-online-ips、get_online_ips、pam_get_online_ips这类约定时才需要。
注意事项
- 执行真实 action 前请确认配置文件中的
HOME_BASE_URL、CLIENT_ID、CLIENT_SECRET、AIRPORT_CODE、APP_NAME、MODULE_NAME、VERSION_NUMBER、ZIP_FILE_PATH。 chat中输入你好、hello这类问候不会触发 LLM/结构化分析;需要分析部署需求时请直接描述部署任务,或显式使用analyze <需求>。- 每个 action 完成后都会自动执行一次 LLM/规则审核;
--analyze-actions和llm action-analysis on只控制是否把详细审核结果写入events。 llm test [文本]可测试当前 LLM client 是否可用。- 如果审核建议停止、审核本身失败,或用户在执行中按下
Ctrl+C,流程都会保存 checkpoint 并进入暂停状态;后续可使用resume重试当前 action。 set KEY=VALUE和load params <路径>会热更新当前运行任务的参数,并回写运行中的config.txt和 checkpoint。checkpoint会保存完整运行参数,请放在受控目录。hybrid_node_mcp、resume、rollback如果需要执行 MCP action,请同时传入--mcp-config。