agent_deply/README.md
dark 14e297a488 feat: 落地 PAM 智能部署 Agent 骨架
- 新增 pam_deploy_graph 包,包含 Agent runtime、ActionRouter、脚本/MCP/fake runner
- 支持 hybrid_node_mcp 策略:PAM_HOME 走脚本 action,PAM_NODE 走 MCP
- 支持 script_only 离线策略,全部 action 走现有脚本 action
- 新增 LLM structured output 骨架和规则 fallback,支持意图识别、参数抽取、计划生成
- 新增 LangGraph StateGraph 工厂和 MCP client adapter
- 新增 CLI:preview、analyze、run-global、run-deploy
- 增加 fake 完整部署流程、单 IP 失败待回滚确认状态和报告输出
- 增加单元测试覆盖路由、parser、runner、Skill 加载、LLM 输出、MCP adapter 和 LangGraph 图
- 更新 README,记录当前代码骨架、进度、使用方式和下一步计划
2026-05-29 15:53:47 +08:00

113 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# opagent
## PAM Deploy Agent
本仓库正在把原有 `PAM_AUTO_DEPLY_SKILL.md` + `deploy.sh` / `deploy.ps1` 的组合,重构为一个 LangGraph-style 的 PAM 智能部署 Agent。
当前已加入 `pam_deploy_graph` Python 包,用于先落地 Agent Runtime 的核心骨架:
- PAM_HOME action 固定通过 `deploy.sh` / `deploy.ps1` 调用。
- PAM_NODE action 可通过 MCP runner 调用。
- 默认执行策略为 `hybrid_node_mcp`,即 HOME 脚本 action + NODE MCP。
- 离线策略为 `script_only`,全部 action 走脚本 action。
- `langgraph` 已作为正式依赖引入;核心 Agent、runner、router 和 parser 也可独立测试。
## 当前代码骨架
```text
pam_deploy_graph/
agent.py # Agent runtime参数归一化、预演、fake 全局流程
action_router.py # 按 action 路由到脚本、MCP 或 fake runner
script_runner.py # deploy.sh / deploy.ps1 action 调用封装
mcp_runner.py # PAM_NODE MCP runner 协议与 action -> tool 映射
fake_runner.py # 测试用 runner不访问真实环境
output_parser.py # 解析 key=value、MCP JSON、待确认回滚标记
skill_policy.py # 从 PAM_AUTO_DEPLY_SKILL.md 加载 Skill 策略
config_writer.py # 生成脚本 action 所需 config 文件
checkpoint_store.py # 业务 checkpoint JSON 读写
params_loader.py # 读取 JSON 或 config.txt 风格参数文件
llm/ # LLM structured output 接口、规则 fallback 和 guardrails
graph.py # LangGraph StateGraph 集成入口
mcp_client.py # MCP session/callable adapter
cli.py # CLI 入口
tests/
test_action_router.py
test_output_parser.py
test_params_loader.py
test_script_runner.py
test_skill_policy.py
```
## 当前进度
已完成:
- 建立 Python 工程骨架和 `pyproject.toml`
- 实现 `hybrid_node_mcp` 路由规则PAM_HOME 走脚本 actionPAM_NODE 走 MCP。
- 实现 `script_only` 路由规则:所有 action 走脚本 action。
- 实现脚本 action 命令构造,避免调用脚本主流程。
- 实现 MCP runner 抽象和 PAM_NODE action 到 MCP tool 的默认映射。
- 实现脚本/MCP/fake action 结果统一为 `ActionResult`
- 实现 `config.txt.example` 风格和 JSON 风格参数读取。
- 实现 fake 全局流程和完整部署流程,便于不触碰真实环境地验证 Agent 路由。
- 实现逐 IP 处理骨架:升级、轮询、启动、校验、日志下载。
- 实现单 IP 失败后的待回滚确认状态,不自动执行回滚。
- 实现 LLM structured output 骨架:意图识别、参数抽取、部署计划生成。
- 增加规则 fallback `RuleBasedLlmClient`,用于本地开发和测试。
- 增加 LLM 输出 guardrails禁止计划中出现可执行脚本命令和非法 action。
- 引入 `langgraph` 依赖,并提供 `build_langgraph()` 图工厂。
- 引入 MCP client adapter可包装 SDK session 或普通 callable。
- 本地已安装 `langgraph``mcp`,并完成 LangGraph fake 全局流程 smoke。
- CLI `analyze` 输出已做敏感字段脱敏。
- 添加基础测试,当前本地结果为 `22 passed, 1 skipped`
未完成:
- 尚未接入真实 MCP client。
- 尚未接入真实 LLM 服务,目前使用规则 fallback。
- 尚未实现人工确认 interrupt、断点续跑完整图流程和单 IP 子流程。
- 尚未执行真实脚本 action 或真实 PAM_NODE MCP 调用。
## 使用方式
预演:
```bash
python -m pam_deploy_graph.cli preview --config doc_scripts/config.txt.example --strategy fake
```
fake 全局流程验证:
```bash
python -m pam_deploy_graph.cli run-global --config doc_scripts/config.txt.example --strategy fake --confirm
```
fake 完整部署流程验证:
```bash
python -m pam_deploy_graph.cli run-deploy --config doc_scripts/config.txt.example --strategy fake --confirm
```
结构化理解和计划生成:
```bash
python -m pam_deploy_graph.cli analyze --config doc_scripts/config.txt.example --text "请用 MCP 预演部署 HET PAM Node 版本 2.0.5,不要动环境"
```
测试:
```bash
pytest -q
```
## 下一步建议
1. 接入真实 PAM_NODE MCP session并用 `SessionMcpToolClient` 包装。
2. 用 fake runner 补齐完整部署主流程和单 IP 子流程测试。
3. 引入 LangGraph把当前 Agent 节点接入 `StateGraph`
4. 增加人工确认节点参数确认、IP 范围确认、回滚确认。
5. 接入真实 LLM 服务,实现 `RuleBasedLlmClient` 同协议替换。
6. 完善 checkpoint 恢复:全局步骤跳过、成功 IP 跳过、pending rollback 恢复。
7. 在测试环境中做 smokeHOME 脚本 `get-token/get-node-url` + NODE MCP `get-online-ips`