2026-06-04 10:04:23 +08:00

6.7 KiB
Raw Permalink Blame History

待办事项

chat 交互优化

  • 使用 rich 输出表格、状态、错误和报告;未安装时自动降级为普通输出。
  • 使用 prompt_toolkit 支持命令补全和历史记录;未安装时自动降级为 input()
  • 增加 params 命令,脱敏展示当前会话参数。
  • 增加 events 命令,查看最近 action 执行记录。
  • 增加 load checkpointlist checkpoints,方便选择历史任务续跑。
  • 增加 load params <路径>,允许从参数文件热更新当前会话和当前运行任务。
  • 增加参数确认和目标 IP 范围确认,不只在回滚阶段确认。
  • 增加 LLM/MCP 配置热加载,例如 llm configmcp config
  • 增加执行中 Ctrl+C 中断处理:保存 checkpoint、标记 user_interrupted,再由 resume 继续。
  • 将 chat 的人工确认点接入 LangGraph interrupt/checkpointerrun 执行到回滚确认点后由 interrupt 暂停,approve/reject 通过 Command(resume=...) 恢复同一图线程。跨进程续跑仍保留业务 checkpoint JSON。

LLM action 后分析

  • 每次 action 完成后,可把 actionbackendokvaluesstderrerror_summary 和当前 AgentState 摘要交给 LLM 分析。
  • LLM 输出结构化结果:是否异常、异常等级、可能原因、建议动作、是否需要人工确认。
  • LLM 分析结果会影响流程是否继续:should_continue=false 时自动暂停,并把建议输出给用户。
  • 本地保留规则兜底exit code、verify-ip SUCCESS=false、pending confirmation 等硬规则优先于 LLM。
  • 对 LLM 输入做脱敏,禁止把 CLIENT_SECRET、token、Authorization、完整日志原文发送给模型。
  • 每个 action 都会执行审核;--analyze-actionsllm action-analysis on 只控制是否把详细审核结果写入 events
  • 支持通过 --llm-action-analysis-prompt-file、环境变量或 chat 命令热加载自定义 action 审核提示词。
  • 通过 --analyze-actionsllm action-analysis on 显式开启,真实部署默认不启用。

双模式 Agent 改造

  • 明确双模式入口:fixed_runtimeagentic_skill,由 LLM 基于用户意图、风险和任务类型先做模式决策。
  • 为 LLM 增加模式决策 structured output schema至少输出modereasonrisk_levelrequires_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_versionupload_packagepublish_versionget_online_ipsupgrade_ipverify_iprollback_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.pylanggraph_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 为辅”的演进路线,而不是直接替代现有部署流。