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