07-Guardrails-HITL-MCP-Streaming
核对日期:2026-05-18
官方资料:Guardrails https://docs.langchain.com/oss/javascript/langchain/guardrails;Human-in-the-loop https://docs.langchain.com/oss/javascript/langchain/human-in-the-loop;MCP https://docs.langchain.com/oss/javascript/langchain/mcp;Streaming https://docs.langchain.com/oss/javascript/langchain/streaming。
官方概念
Guardrails 是输入、输出、工具调用和上下文层面的防护策略;HITL 让高风险步骤进入人工审批;MCP 用标准协议连接外部工具和上下文服务;Streaming 让应用边生成边返回事件或 token。
机制
高风险 Agent 的闭环通常是:
输入检查 -> 工具权限 -> 人工审批 -> 工具执行 -> 输出校验 -> trace/eval
Streaming 不能只看体验,也要看中途取消、部分输出、错误事件和审计记录。
TypeScript 写法
综合项目 multi-tool-task-agent.ts 演示了:
- 动态工具暴露:普通员工不暴露 manager 工具。
- HITL:外部发送必须有审批 token。
- 工具重试:瞬时 calendar 失败只重试一次。
- Audit log:每个工具调用写 trace。
Python 差异
Python 官方示例常把 HITL 和 LangGraph interrupt/resume 联系起来;TypeScript 学习时仍应把审批理解为状态机问题,而不是简单 confirm prompt。MCP 客户端包名、transport 和认证方式也要按目标语言官方文档核对。
工程边界
- Guardrails 不能只靠模型自我检查。
- HITL 需要可恢复状态和审批审计。
- MCP Server 权限要最小化,不能把所有内部工具一次性暴露给 Agent。
常见反模式
| 反模式 | 后果 |
|---|---|
| 输出后再做权限检查 | 敏感信息已经泄露 |
| 人工审批只在 UI 弹窗里 | 后端无法审计和回放 |
| streaming 没有错误事件协议 | 前端只看到半截答案 |
练习任务
- 运行多工具任务 Agent eval,确认外部发送无审批时失败。
- 给工具增加风险等级,高风险工具默认隐藏。
- 设计一个 MCP Server 白名单策略,限制工具、资源和 prompt 权限。