6.7 KiB
6.7 KiB
待办事项
chat 交互优化
- 使用
rich输出表格、状态、错误和报告;未安装时自动降级为普通输出。 - 使用
prompt_toolkit支持命令补全和历史记录;未安装时自动降级为input()。 - 增加
params命令,脱敏展示当前会话参数。 - 增加
events命令,查看最近 action 执行记录。 - 增加
load checkpoint和list checkpoints,方便选择历史任务续跑。 - 增加
load params <路径>,允许从参数文件热更新当前会话和当前运行任务。 - 增加参数确认和目标 IP 范围确认,不只在回滚阶段确认。
- 增加 LLM/MCP 配置热加载,例如
llm config、mcp config。 - 增加执行中
Ctrl+C中断处理:保存 checkpoint、标记user_interrupted,再由resume继续。 - 将 chat 的人工确认点接入 LangGraph interrupt/checkpointer;
run执行到回滚确认点后由 interrupt 暂停,approve/reject通过Command(resume=...)恢复同一图线程。跨进程续跑仍保留业务 checkpoint JSON。
LLM action 后分析
- 每次 action 完成后,可把
action、backend、ok、values、stderr、error_summary和当前AgentState摘要交给 LLM 分析。 - LLM 输出结构化结果:是否异常、异常等级、可能原因、建议动作、是否需要人工确认。
- LLM 分析结果会影响流程是否继续:
should_continue=false时自动暂停,并把建议输出给用户。 - 本地保留规则兜底:exit code、
verify-ip SUCCESS=false、pending confirmation 等硬规则优先于 LLM。 - 对 LLM 输入做脱敏,禁止把
CLIENT_SECRET、token、Authorization、完整日志原文发送给模型。 - 每个 action 都会执行审核;
--analyze-actions或llm action-analysis on只控制是否把详细审核结果写入events。 - 支持通过
--llm-action-analysis-prompt-file、环境变量或 chat 命令热加载自定义 action 审核提示词。 - 通过
--analyze-actions或llm action-analysis on显式开启,真实部署默认不启用。
双模式 Agent 改造
- 明确双模式入口:
fixed_runtime和agentic_skill,由 LLM 基于用户意图、风险和任务类型先做模式决策。 - 为 LLM 增加模式决策 structured output schema,至少输出:
mode、reason、risk_level、requires_confirmation。 - 保留固定 runtime 为默认主链路:标准部署、高风险动作、回滚和批量升级优先走确定性流程。
- 仅在诊断类、探索类、半结构化任务,或用户明确要求“按 skill 自主编排”时进入
agentic_skill模式。
Skill 驱动执行
- 将
PAM_AUTO_DEPLY_SKILL.md从“只加载元数据”升级为真正驱动执行的规则源。 - 让
SkillPolicy进入 LLM prompt,明确 allowed actions、required params、required confirmations、forbidden actions。 - 让
SkillPolicy进入 runtime/graph 路由,用于裁剪不可执行 action,而不是只挂在PamDeployAgent.skill_policy上。 - 支持把 skill 中的执行顺序、确认点、回滚约束映射到 LangGraph 节点和边。
- 评估是否需要把 markdown skill 拆成“机器可读配置 + 人类可读说明”双文件结构,降低解析歧义。
Tool Schema 收口
- 不给 LLM 原始 shell 或 powershell 执行权限,只允许调用受控 typed tools。
- 把现有脚本 action 统一抽象为标准 tool schema,例如
create_version、upload_package、publish_version、get_online_ips、upgrade_ip、verify_ip、rollback_ip。 - 把 MCP action 统一抽象为同一套 tool schema,避免“大模型看见的是脚本”和“大模型看见的是 MCP tool”两套接口。
- 为每个 tool 明确入参、出参、是否幂等、是否高风险、是否需要人工确认。
- 在 tool 层增加白名单、步数限制、超时限制和调用次数限制,避免 agentic 模式失控。
MCP 与 LLM 协同
- 明确 MCP 在 agentic 模式中的角色:作为 LLM 可调用 tool,而不是仅作为固定 runtime 的后端。
- 为 MCP tool 增加面向 LLM 的描述信息,至少包含用途、必填参数、成功返回字段、失败语义。
- 支持在 agentic 模式下先
list_tools再做工具匹配,但最终仍映射回受控 action/tool schema。 - 评估是否需要增加 MCP tool 结果摘要层,避免把原始复杂返回直接喂回 LLM。
LangGraph Workflow 收敛
- 合并当前
graph.py和langgraph_runtime.py的职责,避免维护两套相近的部署图工厂。 - 在 LangGraph 中补齐完整工作流:
analyze -> clarify -> decide_mode -> confirm -> execute -> diagnose -> resume。 - 将人工确认点从“只覆盖 rollback”扩展到模式切换、高风险 tool 调用、关键参数缺失修正等场景。
- 为
agentic_skill模式增加 LangGraph tool loop 节点,而不是仅复用当前固定 action 图。 - 明确单进程 LangGraph checkpointer 和跨进程业务 checkpoint 的职责边界,避免双状态源混乱。
Chat 交互升级
- 在 chat 中增加“当前模式”展示,让用户知道当前是固定 runtime 还是 agentic skill。
- 在 chat 中增加模式切换确认,例如从固定 runtime 切到 agentic 模式前提示风险和限制。
- 在 chat 中展示大模型最近一次 tool 决策摘要,包括原因、目标 action/tool 和关键参数。
- 为 agentic 模式增加中途打断、继续、回退到固定 runtime 的命令能力。
安全与可观测性
- 为 agentic 模式增加完整审计日志:用户输入、LLM 决策、tool 调用、tool 返回、确认记录。
- 在高风险 tool 调用前增加统一确认策略,不允许 LLM 自行越过人工确认直接执行。
- 对发送给 LLM 的 tool 返回做脱敏和截断,避免把脚本原始日志、敏感配置和 token 直接暴露给模型。
- 增加失败保护:当 LLM structured output 非法、模式决策异常或 tool loop 超限时自动降级回固定 runtime。
测试与验收
- 增加双模式决策测试,覆盖固定 runtime 与 agentic skill 的分流条件。
- 增加 skill 约束测试,确认 forbidden action、required confirmation、required params 会真正生效。
- 增加 agentic tool loop 测试,验证 LLM 只能调用白名单工具,不能执行任意命令。
- 增加 MCP + LLM 协同测试,验证 MCP tools 可以被统一 schema 包装并参与自主编排。
- 补充文档,明确当前项目是“固定 runtime 为主,agentic skill 为辅”的演进路线,而不是直接替代现有部署流。