Agent Harness
AI Agent 的外部运行控制层,负责把模型推理转成受约束、可验证、可恢复的实际行动。
一个完整的 Agent Harness 通常包括:上下文装载、工具调用、权限控制、执行编排、结果验证、观测日志、恢复机制。它不是单纯的 prompt,也不只是 agent framework。
知识库
一套围绕 AI Agent 运行控制层的系统工程方法。让 Agent 在真实系统中可靠行动,而不只是"模型够不够聪明"。
Agent = Model + Harness
模型负责推理生成 · Harness 负责工具、上下文、权限、执行、验证、观测、回滚
AI Agent 的外部运行控制层,负责把模型推理转成受约束、可验证、可恢复的实际行动。
一个完整的 Agent Harness 通常包括:上下文装载、工具调用、权限控制、执行编排、结果验证、观测日志、恢复机制。它不是单纯的 prompt,也不只是 agent framework。
设计、实现、维护、评估和持续演化 Agent Harness 的工程方法。
| 概念 | 关注点 | 典型产物 |
|---|---|---|
| Prompt Engineering | 如何表达任务 | prompt、system message、few-shot |
| Context Engineering | 让模型看到什么 | RAG、检索、压缩、记忆、代码索引 |
| Tool Engineering | 给模型什么动作 | tool schema、MCP server、API wrapper |
| Agent Framework | 如何组织 agent 程序 | SDK、graph、workflow、runtime |
| Harness Engineering | 如何让 agent 在真实系统中可靠行动 | 权限、工具、上下文、验证、状态、观测、回滚 |
Agent Harness 可以拆成八个能力域,每个域回答一个核心设计问题。
把用户意图转成可执行任务。能力包括意图识别、风险分级、任务拆解、输出格式约束、自动执行判断。
设计问题:任务是否足够窄?能否在单次运行内完成?失败后是否可复现?
管理 agent 能看到什么。来源包括 system policy、repo rules、当前任务、检索结果、长期记忆、工具调用结果。
设计原则:带来源 ID、规则短而硬、大文档放资料库不全塞 prompt、上下文分层。
把外部动作暴露给 agent。常见:文件读写、Shell、浏览器、数据库、HTTP API、MCP、邮件。
设计原则:白名单化、schema 化、每个工具有权限等级、危险工具须审批或沙箱。
控制 agent 能做什么。L0 只读自动允许 → L1 写草稿记录日志 → L2 修改需 diff 可回滚 → L3 删除/批量强审批 → L4 支付/发布必须人工确认。
让 agent 流程稳定运行。机制包括 workflow/graph、状态机、队列、retry、timeout、checkpoint、resume、rollback。
判断 agent 结果是否可信。代码需 test/lint/typecheck/build;数据需 SQL dry-run/行数校验;知识库需引用覆盖率/来源检查。
没有验证层的 agent 应用,本质只是聊天机器人加工具。
让 agent 能恢复、复盘和持续改进。分为 Run State、Tool State、User Memory、Domain Memory、Failure Memory 五类。
记忆不是越多越好。必须能检索、过期、冲突处理和审计。
让工程团队知道 agent 怎么工作。至少记录 run id、model、tool calls、latency、token cost、verification result、approval result、failure reason。
模型不直接接触真实系统。模型通过 Harness Runtime 调用受控工具,所有上下文、权限、验证和日志都由 harness 管。
User / UI ↓ Task Intake ← 结构化任务、风险预分级、参数门、审批决策 ↓ Agent Orchestrator ← 状态机 / LangGraph / Temporal / DAG / 多 agent handoff ↓ Harness Runtime ├─ Context Layer policy → task → retrieved → memory → results → schema ├─ Tool Layer 受控 wrapper,非裸 API · schema + permission + side_effect ├─ Permission Layer 路径白名单 · 风险等级 · 审批门 · 敏感数据检查 ├─ Execution Layer timeout · retry · checkpoint · resume · rollback · idempotency ├─ Verification Layer citation_coverage · lint · test · format_check · dry-run ├─ Memory & State Run State · Tool State · User Memory · Domain Memory · Failure Memory └─ Observability Layer trace · tool call log · token cost · audit trail · dashboard ↓ ┌───────────────────────────────────┐ │ Sandbox & Isolation │ │ L0 进程级 → L1 容器级 → L2 Firecracker → L3 E2B │ └───────────────────────────────────┘ ↓ Model Provider
UI → 固定 workflow → LLM → 3-5 白名单工具 → 验证脚本 → 人工确认 → trace log
Intake pipeline:User Request → Intent Classification → Risk Pre-Assessment → Parameter Extraction → Missing Parameter Gate → Task Structuring → Boundary Setting → Approval Decision → Structured Task
| 类型 | 示例 | 自主程度 |
|---|---|---|
| 查询 | "查一下销售额" | 全自动 |
| 生成 | "写一份周报" | 自动生成 + 人工确认 |
| 修改 | "更新配置文件" | 生成 diff → 人工审批 → 写入 |
| 删除 | "清理过期日志" | 人工确认每个删除对象 |
| 发布 | "部署到生产环境" | 必须人工触发 |
| 复合 | "分析数据并更新看板" | 拆解为子任务,高风险步审批 |
风险预分级由系统根据请求特征自动判定(写入操作、外部系统、生产环境、敏感数据、范围模糊、不可逆),不采信用户声明。缺失影响安全或业务结果的参数时必须反问用户。
| 类型 | 生命周期 | 作用域 | 存储 |
|---|---|---|---|
| Run State | 单次 run | 当前任务 | Redis / Postgres / LangGraph persistence |
| Tool State | 单次 run | 工具调用链 | 内存 / 临时文件 |
| User Memory | 跨 run | 单个用户 | pgvector / Qdrant + 元数据过滤 |
| Domain Memory | 长期 | 全部用户 | 知识库 / 向量库(含 source_id + 时间戳) |
| Failure Memory | 长期 | 全局 | Postgres + JSONB,配合 eval 框架 |
关键约束:Run State 必须可序列化(支持 crash recovery);User Memory 强制 tenant 隔离,不存 PII 和密钥;Domain Memory 按可信度排序,过期内容标记;Failure Memory 每次事故后入库,改 prompt/模型/工具/检索策略后跑回归。
基于 OpenTelemetry 的 trace + metric + log 三位一体,加入 agent 特有维度(token cost、tool call、permission check、human approval)。
关键指标:
推荐技术栈:Langfuse(tracing + agent graphs + sessions + dashboard + prompt management)、Prometheus + Grafana(指标聚合)、ELK / Loki(日志)。至少两个 dashboard:运营 dashboard(实时任务状态)和复盘 dashboard(7/30天趋势、失败原因分布)。
| 级别 | 方案 | 隔离强度 | 启动速度 | 适用场景 |
|---|---|---|---|---|
| L0 进程级 | 受限用户 + chroot | 低 | 即时 | 可信内部脚本 |
| L1 容器级 | Docker | 中 | 秒级 | 代码执行、构建 |
| L2 微虚拟化 | Firecracker microVM | 高 | <125ms | 多租户、不可信代码 |
| L3 远程沙箱 | E2B / cloud sandbox | 高 | 秒级 | 生产 agent、浏览器 agent |
沙箱策略:按任务风险等级分配隔离级别;网络默认禁止访问 localhost/内网,显式 allowlist 出站目标;生产数据通过只读副本提供;每个关键步骤做 snapshot,任务完成后销毁沙箱。浏览器 agent 需额外注意外部网页内容标记为不可信输入,下载文件进入隔离区扫描后才能传出。
来源:01_architecture/context_tool_execution_layers.md
上下文层的目标不是"给模型更多信息",而是给模型正确、可追溯、可压缩的信息。
上下文分区:
System Policy 永久规则,短而硬 Developer Policy 应用规则、团队规范 Task Context 当前用户任务 Retrieved Context 检索资料 Working State 当前步骤状态 Tool Results 工具调用结果 Memory 长期偏好或历史经验 Output Schema 输出格式
设计原则:
反模式:
工具层的目标是给 agent 动作能力,同时限制副作用。
工具定义模板:
{
"name": "tool_name",
"description": "工具做什么,不做什么",
"input_schema": {},
"output_schema": {},
"permission_level": "L1",
"side_effect": "none|filesystem_write|external_api|production_change",
"timeout_sec": 30,
"retry": 1,
"approval_required": false,
"audit": true
}工具包装原则:
工具输出原则:
{
"ok": true,
"artifact_id": "draft_001",
"summary": "创建草稿",
"path": "drafts/note.md",
"diff": "...",
"warnings": []
}执行层的目标是让 agent 任务可恢复、可重试、可复盘。
任务状态:
created → planning → running → waiting_for_approval → verifying → completed / failed / rolled_back
Step 记录:
{
"step_id": "extract_claims",
"status": "completed",
"input_artifacts": ["source_001"],
"output_artifacts": ["claims_001"],
"tool_calls": [],
"verification": "pass"
}Retry 策略:
| 失败类型 | 处理 |
|---|---|
| 网络超时 | 可重试 |
| 工具 schema 错误 | 让模型修正参数 |
| 权限不足 | 等待人工审批或终止 |
| 事实冲突 | 标记冲突,不自动合并 |
| 测试失败 | 允许有限修复循环 |
| 高风险动作 | 不自动重试 |
验证要尽量靠确定性程序,而不是再问一次模型。
优先级:
LLM judge 适合判断语义质量,不适合替代安全检查。
从实战中提炼的可复用工程模式,覆盖工具、权限、执行、验证、记忆、安全和成本。
不暴露裸 API。受控 wrapper 封装工具,含 schema 校验、timeout、audit log 和 rollback 支持。
所有写操作先写草稿,展示 diff 后再写入。降低误写风险,便于确认和回滚。
删除、发布、发邮件、支付、生产变更等高风险动作必须人工审批,记录审批人和时间。
所有事实性结论绑定 source_id + confidence。确保输出可追溯、可核实。
不追求全自主 agent。固定流程 + 单步内有限自主,逐步放大自主范围。
每次失败沉淀为评估样本。记录原始任务、错误输出、正确输出、修复方式。改 prompt/模型/工具后跑回归。
副作用前做 checkpoint。文件做 snapshot + patch,数据库用 transaction,代码用 git branch。
上下文不是越多越好。按步检索,历史压缩为 state,大文档只传相关段落。
返回值压缩后入上下文。保留关键输出 + artifact id + error reason,不塞超长日志。
浏览器 agent 与控制面隔离。localhost allowlist,外部内容不高权限执行,下载进隔离区。
长期记忆需治理:可追溯、可删除、可过期、可冲突标记,不把偏好当事实。
多 agent 交接需结构化 payload:task + state + artifacts + constraints + expected_output。
Token 预算硬限制、模型按成本路由、重试最多 2 次且退避递增、成本归因报表。
Agent 失败不是"模型不够好",而是 harness 某层的设计缺口。识别、分类、评估、修复四个步骤形成闭环。
表现:被网页 prompt injection 影响、把过期资料当最新事实、把用户偏好当客观事实、规则过长导致关键约束丢失。
治理:上下文分层、来源和时间戳、外部内容降权、规则短而硬。
表现:写错目录、删除重要文件、批量改名不可恢复、访问不该访问的密钥或本地服务。
治理:工具 wrapper、路径白名单、权限分级、审批门、沙箱。
表现:测试失败后盲目改更多文件、重试同一个错误参数、覆盖中间结果、无法回到上一步。
治理:checkpoint、bounded retry、rollback、failure classification。
表现:没来源的结论进入知识库、编造 API 行为、编造论文结果、把猜测当事实。
治理:evidence-bound output、citation checker、unknown/pending 标记、人工 review。
表现:只知道失败不知道失败在哪一步、无法复现、无法比较版本、无法估算成本。
治理:trace、run log、tool call log、artifact registry、eval set。
| 维度 | 指标 |
|---|---|
| 任务成功 | task success rate、first-pass success rate、human rejection rate、rollback rate |
| 安全 | unsafe action attempts、blocked count、secret exposure count、unauthorized tool call count |
| 质量 | citation coverage、test pass rate、factual error rate、format compliance、duplicate output rate |
| 成本 | token cost per task、tool call count、latency、retry count、human review time |
| 可维护性 | prompt version stability、tool schema breakage、eval regression count、failure case reuse rate |
Eval Set 设计:
建议每个 AI 应用至少维护: 20 个简单成功任务 + 20 个复杂真实任务 + 20 个边界任务 + 20 个历史失败任务 高风险应用还要增加: 20 个恶意输入 / prompt injection 样本 + 20 个权限边界样本 + 20 个事实冲突样本
{
"case_id": "kb_001",
"task": "从三篇来源生成知识库笔记",
"input_artifacts": ["source_a","source_b","source_c"],
"expected_checks": {
"all_claims_have_sources": true,
"no_delete_action": true,
"draft_only": true,
"format_valid": true
},
"forbidden": [
"编造来源",
"覆盖原始资料",
"删除旧笔记"
]
}# Failure Case ## Summary / Task / Expected / Actual ## Root Cause - Context / Tool / Permission - Verification / Model / User input ## Fix ## Regression Test
来源:03_tools_landscape/mainstream_agent_tools_mapping.md
很多工具不会直接使用 "Harness Engineering" 这个词,但它们的方向都在补强模型外部控制层。以下分析 10 个主流工具/框架的 harness 能力、适用场景和架构启发。
典型能力:agents、tools、handoffs、guardrails、sessions、tracing。
适合:需要自定义 agent 编排、工具调用+handoff+trace 的产品。
启发:tracing 应成为 agent 默认能力;handoff 是结构化任务转交;guardrail 是 runtime 机制而非 prompt 建议。
典型能力:durable execution、state、persistence、human-in-the-loop、memory、graph workflow。
适合:多步骤流程、需断点续跑、需人工审批、需状态可控的 agent 应用。
启发:agent 应用可用 graph 表达运行控制;持久化状态比单轮 prompt 更重要;人工介入应该是流程节点。
典型能力:built-in tools、permissions、hooks、subagents、MCP、settings、sessions。
适合:软件工程 agent、代码库内任务、需 hooks 做验证和流程控制的场景。
启发:hooks 是非常重要的 harness 扩展点;subagent 应有独立上下文和工具边界;权限配置要能进入项目级规则。
典型能力:IDE 上下文、rules、agent mode、MCP、codebase indexing、background agents。
启发:代码库规则是 context layer 的核心资产;IDE 是很强的 harness 容器,天然连接文件、diff、诊断和用户审批。
典型能力:shell、browser、editor、isolated workspace、planning、test feedback。
启发:云端隔离开发环境是强 harness;shell/browser/editor 组合需要严格权限和观测;测试反馈是 agent 修复循环关键。
典型能力:session state、middleware、telemetry、workflows、enterprise integration。
启发:企业 agent 不是聊天界面,而是状态化工作流系统;telemetry 和 middleware 是生产化基础设施。
典型能力:tools、sessions、memory、artifacts、agent composition。
启发:artifacts 应该独立于对话存在;memory 和 session 要分层管理。
典型能力:agents、crews、tasks、tools、memory、knowledge、guardrails、observability。
启发:多 agent 协作需要任务契约;observability 不能后补,应从第一天就有。
典型能力:multi-agent conversation、tools、human feedback、orchestration、app studio。
启发:多 agent 对话需要外部状态和约束,否则容易失控。
| 工具 | 强项 | Harness 重点 |
|---|---|---|
| OpenAI SDK | agent/tool/handoff/tracing | 应用级 agent runtime |
| LangGraph | 状态图、持久执行 | Execution Layer |
| Claude Code | 代码执行、hooks、权限 | 软件工程 harness |
| Cursor | IDE 上下文、规则、索引 | 代码库 context harness |
| Devin | 云端开发环境 | end-to-end engineering |
| Microsoft AF | 企业工作流、telemetry | 企业治理和状态 |
| Google ADK | sessions、memory、artifacts | 结构化运行时 |
| CrewAI | 多 agent 业务流程 | task/crew orchestration |
看它是否支持:工具白名单、权限分级、状态持久化、人工审批、trace、验证钩子、沙箱、回滚、任务历史、eval/replay。支持越多,越接近生产级 harness。
来源:03_tools_landscape/mcp_ecosystem_analysis.md
MCP(Model Context Protocol)是 Agent Harness 工具层的标准化协议,让外部工具、数据源和上下文以统一接口接入 agent,是工具白名单化和权限控制的关键基础设施。
Agent Harness Runtime ├─ Tool Layer │ ├─ MCP Client ── MCP Server A (filesystem) │ ├─ MCP Client ── MCP Server B (database) │ └─ Native Tools (built-in wrappers) ├─ Permission Layer ── 在 MCP 调用前拦截 └─ Observability ── 记录 MCP tool call
| 类别 | 典型工具 | 风险 | 默认策略 |
|---|---|---|---|
| 只读检索 | 文档搜索、代码索引、网页抓取 | L0 | 自动允许 |
| 只读数据 | 数据库只读查询、API GET | L0-L1 | 自动允许,记录日志 |
| 文件写入 | 文件创建、patch、草稿 | L1-L2 | 写草稿自动,正式区需 diff |
| 外部动作 | 发邮件、创建工单、发布 | L3-L4 | 强审批或人工确认 |
| 系统控制 | Shell、进程管理、部署 | L4 | 必须人工确认 |
白名单化(不自动接入所有 MCP server):
{
"mcp_servers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"],
"permission_level": "L2",
"allowed_paths": ["/workspace/drafts", "/workspace/notes"],
"forbidden_paths": ["/workspace/secrets", "/workspace/production"]
}
}
}权限检查在 MCP Client 层:
| 风险 | 描述 | 缓解 |
|---|---|---|
| 恶意 MCP server | 伪装成合法工具的恶意 server | 仅从可信源安装,校验签名 |
| 参数注入 | 通过参数传入危险路径或命令 | 参数白名单校验,路径规范化 |
| 权限提升 | MCP server 以过高权限运行 | 最小权限原则,sandbox 运行 |
| 数据泄露 | MCP server 把敏感数据外传 | 网络隔离,输出审计 |
| Prompt injection | 外部内容通过 MCP 返回混入 system prompt | 外部内容降权标记,分层上下文 |
八个维度评估主流 Agent 框架的 harness 内置能力。H1 上下文管理 · H2 工具白名单 · H3 权限控制 · H4 执行控制 · H5 验证机制 · H6 状态记忆 · H7 观测审计 · H8 回滚恢复。每维度 0-3 分。
| 框架 | H1 | H2 | H3 | H4 | H5 | H6 | H7 | H8 | 总分 | 评级 |
|---|---|---|---|---|---|---|---|---|---|---|
| Microsoft AF | 2 | 2 | 3 | 3 | 2 | 3 | 3 | 1 | 19 | 高 |
| Claude Code | 3 | 3 | 3 | 2 | 2 | 2 | 2 | 1 | 18 | 高 |
| LangGraph | 2 | 2 | 2 | 3 | 1 | 3 | 2 | 2 | 17 | 中高 |
| Cursor | 3 | 2 | 2 | 1 | 3 | 2 | 1 | 2 | 16 | 中高 |
| Devin | 2 | 3 | 2 | 2 | 3 | 1 | 1 | 2 | 16 | 中高 |
| OpenAI SDK | 2 | 2 | 1 | 2 | 1 | 2 | 3 | 0 | 13 | 中 |
| Google ADK | 2 | 2 | 1 | 2 | 1 | 3 | 1 | 0 | 12 | 中 |
| CrewAI | 2 | 2 | 1 | 2 | 1 | 2 | 2 | 0 | 12 | 中 |
· 需要 durable execution + 状态持久化?→ LangGraph
· 需要企业级权限 + 审计?→ Microsoft AF
· 主要做软件工程 agent?→ Claude Code / Claude Agent SDK
· IDE 内代码辅助?→ Cursor
· 多 agent 协作实验?→ CrewAI / AutoGen
· 快速原型,tracing 优先?→ OpenAI Agents SDK
无论选哪个框架,以下能力通常需要应用层自建:
Agent Harness 的安全问题不是"模型会不会听话",而是"系统有没有把危险动作关进边界里"。
禁止:任意下载并执行、未确认的 destructive command、生产环境默认可写。
风险:页面指令诱导 agent 泄露信息、访问 localhost、下载恶意文件。
来源:04_security_governance/compliance_governance.md
Agent 不只又一个微服务。它具有特殊属性:自主决策(自行选择工具和参数)、工具调用(真实副作用)、上下文摄入(可能吞入敏感数据)、模型不确定性(相同输入可能不同输出)、记忆持久化(长期记忆可能保留敏感信息)。
合规不是给 harness 加锁,而是让 harness 有证据可查、有边界可守、有异常可追溯。
SOC 2(安全与可用性)→ Harness 对应
| 访问控制 | L0-L4 权限分级、工具白名单、RBAC |
| 变更管理 | 写操作 diff、审批门、rollback |
| 审计日志 | trace、tool call log、run history、approval history |
| 系统监控 | token cost 监控、失败率告警、异常动作检测 |
GDPR(数据保护)→ Harness 对应
| 数据最小化 | 上下文压缩、Least Context Pattern、检索而非全量载入 |
| 访问权/删除权 | 记忆可删除、可追溯、用户可查看 |
| DPIA | agent 上线前的风险评估 checklist |
OWASP Top 10 for LLM → Harness 缓解
| LLM01 Prompt Injection | 外部内容降权、上下文分层、system policy 不可覆盖 |
| LLM07 Insecure Plugin | 工具白名单、MCP server 独立权限、schema 校验 |
| LLM08 Excessive Agency | L0-L4 权限分级、审批门、最小权限 |
| LLM09 Overreliance | 人工审批关键动作、验证层自动检查、置信度标记 |
□ 任务范围是否已限定?(禁止模糊的开放式任务) □ 工具是否白名单化?(不接受任意 shell/API 调用) □ 权限是否分级?(L0-L4 明确标注) □ 写操作是否可回滚?(snapshot/diff/transaction) □ 高风险动作是否有人工审批? □ 是否有自动验证(test/lint/dry-run)? □ 是否全量记录 tool call 和审批? □ 是否有 token 预算和超限告警? □ 记忆是否可追溯、可删除? □ 是否有 eval set(至少 20 个历史失败样本)? □ 外部内容是否降权处理? □ 密钥是否与 agent 环境隔离?
| 级别 | 定义 | 管理要求 |
|---|---|---|
| A 级:内部辅助 | 只读 + 写草稿,无外部副作用 | 基础 trace + 定期抽查 |
| B 级:内部生产 | 可修改正式资产,有内部副作用 | 全量 trace + 审批门 + eval set + 月度审计 |
| C 级:对外/关键业务 | 发消息、支付、部署、访问敏感数据 | 强审批 + 实时监控 + 周度审计 + 渗透测试 + 回滚演练 |
持续治理节奏:
合规不是事后补文档。Harness 的权限、trace、审批、回滚本身就是合规基础设施。设计 harness 就是在设计合规。
来源:04_security_governance/incident_response.md
因此 agent 事故响应不只修复 bug,更要补 harness 的约束缺口。
| 等级 | 定义 | 示例 | 时效 |
|---|---|---|---|
| P0 严重 | 影响用户或生产系统 | 误删生产数据、泄露密钥 | 立即 |
| P1 高 | 写入错误正式内容,未外泄 | 知识库幻觉写入 | 1 小时内 |
| P2 中 | 操作失败、资源浪费 | token 超预算、循环重试 | 24 小时内 |
| P3 低 | 边界问题,可自行修正 | 格式不规范、引用遗漏 | 下个迭代 |
处置七步:
# Agent Incident Report ## 基本信息 - Incident ID: INC-2026-001 | 等级: P1 - Agent: knowledge_base_agent_v2 - 发现时间: 2026-06-22 14:30 | 发现方式: 用户反馈 ## 事故描述 [简要描述发生了什么] ## 时间线 - 14:00 agent 开始 run_042 - 14:08 agent 生成草稿,引用不在来源中的 API - 14:10 citation checker 未检测到(source_id 格式正确但内容不存在) - 14:15 写入正式 notes → 14:30 用户报告错误 ## 根因分析 - 主因: Verification — citation checker 只检查 source_id 格式,未校验真实性 - 次因: Human — 人工审批未逐条核实 ## 修复 1. citation checker 增加 source_id existence 检查 2. 新增 eval case: "引用不存在来源时拒绝 commit" ## 教训: 验证不能只检查格式,要检查内容真实性
六层预防:
就绪检查:
Agent 事故响应不是"修 bug"。它是用每一次事故来发现 harness 的约束缺口,并把缺口变成新的验证规则。
来源:05_app_blueprints/build_ai_app_with_harness.md
输入是什么?允许读取什么?允许写入什么?最终交付物是什么?哪些动作需要人工确认?错了怎么回滚?
示例:AI 知识库助手
不要一开始做完全自由 agent。推荐固定流程 + 局部自主:
Intake → Classify → Extract → Synthesize → Verify → Approval → Commit
每一步都有输入、输出、失败处理。不要暴露底层任意权限,推荐工具:searchDocs、readSource、createDraft、patchDraft、runValidation、requestApproval、commitDraft。每个工具都定义 name、description、input/output schema、permission level、side effect、timeout、audit。
上下文包:policy、task、retrieved_context、memory、tool_results、output_schema。每段资料必须有 source_id、title、url/path、timestamp、trust_level。
默认策略:读资料自动、写草稿自动、修改正式文件展示 diff 后确认、删除/批量改名强确认、发布/部署/发邮件必须人工确认。
按应用选验证:
| 代码助手 | test、lint、typecheck、build |
| 知识库助手 | 引用覆盖率、来源检查、冲突检测 |
| 数据分析助手 | SQL dry-run、指标口径、行数校验 |
| 内容助手 | 事实核验、敏感词、平台格式 |
| 运维助手 | dry-run、变更窗口、权限检查 |
每次 run 保存:run_id、task、status、steps、artifacts、tool_calls、verification、rollback。每次写操作保存 before snapshot、patch diff、after snapshot、rollback command。
至少记录:trace、tool calls、latency、token cost、model output、verification result、human approval result、failure reason。建立 eval set:简单任务、复杂任务、边界任务、恶意输入、历史失败任务。
推荐技术栈:前端 Next.js/React;后端 FastAPI/NestJS;Agent OpenAI SDK/LangGraph/Claude Agent SDK/Temporal;存储 Postgres/pgvector/Redis;观测 OpenTelemetry/Langfuse;沙箱 Docker/E2B/Firecracker。
最小可上线版本:
不要在 MVP 做:
四个典型 AI Agent 场景的落地蓝图。每个蓝图遵循同一模板:边界定义 → Workflow → 工具白名单 → 权限策略 → 验证层 → 失败处理 → Eval Set。
目标:网页、PDF、会议记录、代码片段 → 可追溯、可复用、可更新的结构化笔记。
边界:读取来源库+历史笔记 → 写入草稿区 → 人工确认后写入正式区。禁止删除原文件、覆盖来源、访问私密目录。交付结构化笔记 + 来源链接 + 待确认问题。
Workflow:intake_source → parse_source → extract_claims → generate_note_draft → link_related_notes → verify_citations → request_approval → commit_note
关键工具:addSource、readSource、searchNotes、createDraftNote、checkCitationCoverage、commitDraft。
权限:读 sources/notes 自动;写 drafts 自动;写 notes 需 diff 审批;删除来源禁止;批量重命名强审批。
验证:每个 claim 是否有 source_id;source_id 是否真实存在于 source_index;是否有重复笔记;是否覆盖旧文件;是否尝试删除原始资料。
Eval Set:20 个简单来源 → 20 个多来源冲突 → 20 个边界(格式损坏、超长文档、混合语言)→ 20 个历史失败任务。
目标:对 PR/commit 做自动化第一遍机械检查,输出结构化 review comment,让人类 reviewer 专注设计和逻辑。
边界:读取 PR diff + 项目规范 → 生成 review comment(草稿,标记为 bot)→ 高风险发现人工确认后发布。禁止 approve、merge、push、修改代码。
Workflow:intake_pr → classify_changes → static_check(lint/typecheck)→ semantic_review → security_scan → test_review → style_convention → generate_review → [human_confirm] → post_review
Severity:high(安全漏洞/崩溃,block merge)→ medium(潜在 bug/性能)→ low(风格/文档)→ info(正面发现)。
验证:comment 是否指向真实文件和行号;severity 分级准确性(抽样);false positive 率;是否遗漏已知漏洞模式(eval set 回归)。
Eval Set:20 个已知漏洞 PR → 20 个正常 PR → 20 个边界(大 PR、二进制、merge commit)→ 20 个历史漏审 PR。
目标:自然语言 → SQL 查询生成 → 只读执行 → 结果验证 → 结构化分析报告。
边界:读取 schema + 数据字典 + 只读副本 → 写入分析报告草稿。禁止写数据库、删除表、修改 schema、导出原始数据到外部。交付 SQL + 结果 + 解释 + 口径说明。
Workflow:intake_question → explore_schema → generate_query → dry_run_validate → execute_readonly → verify_result → explain_result → generate_report → [human_review] → commit_report
查询安全检查:只允许 SELECT/EXPLAIN/DESCRIBE;强制 LIMIT;超时 30s;只读副本连接;敏感字段标记审批。
验证:SQL 语法(EXPLAIN);行数合理性(预估 vs 实际偏差 < 20%);口径一致性;空值比例;异常值检测;时间连续性;结果可复现。
Eval Set:20 个简单聚合 → 20 个复杂 JOIN/窗口函数 → 20 个口径边界(去重、分母为零)→ 20 个异常输入(恶意 SQL、超大范围)。
目标:辅助人工客服——自动分类、检索知识库、生成回复草稿、执行查询类操作。agent 处理机械部分,人工做判断和情感沟通。
边界:读取知识库 + 脱敏用户信息 + 历史工单 → 写入回复草稿 + 标签 + 内部备注。禁止直接发送回复、退款/补偿、修改用户数据、访问完整 PII。交付回复草稿 + 置信度 + 推荐动作。
Workflow:intake_message → classify_intent → assess_risk → search_knowledge → generate_draft → verify_draft → suggest_actions → human_confirm → [post_reply] → log_and_learn
风险评估:正常(一般咨询→可自动草稿)→ 敏感(支付/账户/隐私→强制人工发送)→ 紧急(安全/法律威胁→不生成草稿,直接升级)。
草稿验证:事实是否有 FAQ 来源;是否有未授权承诺(退款金额/时间);是否泄露敏感信息;语气是否与品牌一致;置信度低强制人工审批。
Eval Set:20 个 FAQ 覆盖咨询 → 20 个复杂故障 → 10 个投诉/情绪激烈(不应自动回复)→ 10 个 prompt injection → 10 个权限边界(尝试让 agent 退款)。
来源:06_references/sources.md
优先阅读一手资料。第三方总结可理解趋势,但事实性表述应回官方文档、论文或安全团队原文。