5.4 企业级 Agent 运行时 — 从个人脚本到生产基础设施 本节导读:理解从个人终端循环脚本到企业级 Agent 运行时的关键差距,掌握审计追踪、权限控制、成本治理等企业级需求的设计方法。 学习目标 理解个人循环与企业级运行时的核心差距 掌握企业级 Agent 运行时的关键需求 了解 TrueFoundry 等企业级解决方案的架构 学会设计多租户 Agent 运行时 核心概念 Osmani 指出循环工程目前的主要形态:"It's, as practiced, an individual-developer pattern running on individual laptops."(循环工程目前的实践形态是个体开发者在个人电脑上运行的模式。
本节导读:理解从个人终端循环脚本到企业级 Agent 运行时的关键差距,掌握审计追踪、权限控制、成本治理等企业级需求的设计方法。
Osmani 指出循环工程目前的主要形态:"It's, as practiced, an individual-developer pattern running on individual laptops."(循环工程目前的实践形态是个体开发者在个人电脑上运行的模式。)但从个人脚本到企业基础设施之间存在巨大差距。
TrueFoundry 在其企业级分析中精准定义了这个差距:
| 维度 | 个人循环 | 企业运行时 |
|---|---|---|
| 执行环境 | 本地终端 | 隔离沙盒 |
| 权限控制 | 无限制 | 细粒度 RBAC |
| 成本管理 | 无/手动 | 自动 FinOps |
| 审计追踪 | Git 日志 | 全操作记录 |
| 可用性 | 随机 | 99.9% SLA |
| 合规 | 无 | SOC2/GDPR |
| 多租户 | 不需要 | 租户隔离 |
""" enterprise_harness.py - 企业级 Agent Harness 框架 """ from dataclasses import dataclass from typing import List, Dict, Optional from enum import Enum import time import json class Permission(Enum): READ = "read" WRITE = "write" EXECUTE = "execute" ADMIN = "admin" @dataclass class AgentConfig: """Agent 配置""" name: str model: str skills: List[str] permissions: List[Permission] max_tokens: int sandbox: bool class ApprovalPolicy(Enum): AUTO = "auto" # 自动执行 REVIEW = "review" # 执行后人工审查 PRE_APPROVE = "pre" # 执行前人工审批 BLOCKED = "blocked" # 完全禁止 @dataclass class ActionRecord: """操作审计记录""" timestamp: str agent: str action: str tool: str input_hash: str output_hash: str tokens_used: int approved_by: Optional[str] status: str class EnterpriseHarness: """ 企业级 Agent 运行时 提供沙盒、审批、追踪、成本治理等企业能力 """ def __init__(self, config: AgentConfig): self.config = config self.audit_log: List[ActionRecord] = [] self.token_budget = config.max_tokens def execute_action(self, action: dict) -> dict: """执行 Agent 操作,带审批和审计""" # 1. 权限检查 required_perm = self._get_required_permission(action) if required_perm not in self.config.permissions: return {"status": "denied", "reason": "权限不足"} # 2. Token 预算检查 estimated = action.get("estimated_tokens", 10000) if estimated > self.token_budget * 0.3: return {"status": "denied", "reason": "单步成本超过预算30%"} # 3. 审批策略 policy = self._get_approval_policy(action) if policy == ApprovalPolicy.PRE_APPROVE: approval = self._request_human_approval(action) if not approval: return {"status": "blocked", "reason": "人工未批准"} # 4. 执行 start = time.time() result = self._run_in_sandbox(action) elapsed = time.time() - start # 5. 记录审计 record = ActionRecord( timestamp=time.strftime("%Y-%m-%d %H:%M:%S"), agent=self.config.name, action=action["type"], tool=action.get("tool", "none"), input_hash=str(hash(str(action["input"]))), output_hash=str(hash(str(result))), tokens_used=estimated, approved_by=approval.get("approver") if policy != ApprovalPolicy.AUTO else "auto", status="success" if result else "failed" ) self.audit_log.append(record) self.token_budget -= estimated return {"status": "success", "result": result} def _run_in_sandbox(self, action: dict) -> dict: """在沙盒中执行操作""" if self.config.sandbox: print(f"🔒 沙盒执行: {action['type']}") return {"output": "执行结果"} def get_cost_report(self) -> dict: """生成成本报告""" total_tokens = sum(r.tokens_used for r in self.audit_log) used = self.config.max_tokens - self.token_budget return { "agent": self.config.name, "total_tokens_used": total_tokens, "budget_remaining": self.token_budget, "budget_total": self.config.max_tokens, "usage_percent": used / self.config.max_tokens, "action_count": len(self.audit_log) }
class MultiTenantRuntime: """ 多租户 Agent 运行时 每个租户有独立的 Agent 配置、权限和 Token 预算 """ def __init__(self): self.tenants: Dict[str, EnterpriseHarness] = {} def register_tenant(self, tenant_id: str, config: AgentConfig): self.tenants[tenant_id] = EnterpriseHarness(config) def execute(self, tenant_id: str, action: dict) -> dict: if tenant_id not in self.tenants: return {"status": "error", "reason": "未知租户"} return self.tenants[tenant_id].execute_action(action) def get_all_reports(self) -> list: return [t.get_cost_report() for t in self.tenants.values()]
class MCPGateway: """ MCP Gateway: 统一管理 MCP 连接器的调用 提供成本治理和访问控制 """ def __init__(self): self.rate_limits = {} # tool -> calls per minute self.cost_tracking = {} def call_tool(self, tenant_id: str, server: str, tool: str, args: dict) -> dict: # 速率限制检查 key = f"{tenant_id}:{server}:{tool}" if not self._check_rate_limit(key): return {"error": "rate_limit_exceeded"} # 成本估算 cost = self._estimate_cost(server, tool, args) if not self._check_budget(tenant_id, cost): return {"error": "budget_exceeded"} # 执行调用 result = self._forward_call(server, tool, args) self._track_cost(tenant_id, cost) return result
A:不是技术,是信任和组织文化。让 AI Agent 在企业环境中自主执行操作,需要管理层和工程师的信任。这需要:清晰的权限边界、全面的审计追踪、可控的预算、以及渐进式部署——先从低风险任务开始,验证可靠后再扩大范围。
A:取决于团队的规模和风险偏好。3-5 人的团队可能只需要 Claude Code + Skills + 基本的 Token 预算管理就够了。但如果你处理敏感数据(用户隐私、金融信息)或需要合规(SOC2、GDPR),即使小团队也需要审计追踪和权限控制。
A:TrueFoundry 适合不想运维基础设施的团队。它提供了开箱即用的 Agent Harness、Sandbox、Approvals、Traces 等企业能力。自建运行时适合有特殊需求(如内部工具深度集成、特殊合规要求)或预算有限的团队。大多数团队建议从 TrueFoundry 开始,需求明确后再考虑自建。
本节探讨了从个人循环到企业级运行时的关键差距和解决方案。企业级需求包括沙盒隔离、权限控制、审计追踪、成本治理和合规——这些是循环工程从个人实践走向生产基础设施的关键。
下一节我们将展望 Loop Engineering 的未来趋势。
关键词:Loop Engineering, 企业级运行时, Agent Harness, 沙盒, 权限控制, 审计追踪, FinOps, TrueFoundry, 教程, 高级