Interview AiBox logo

Interview AiBox 实时 AI 助手,让你自信应答每一场面试

立即体验 Interview AiBoxarrow_forward
2 分钟阅读Interview AiBox Team

Claude Code 源码泄漏启示:Harness Engineering 工程实践深度解读

深入分析 Claude Code 如何实现 AI 控制、行为护栏和安全自主。从源码泄漏中学习生产级 Coding Agent 的工程模式。

  • sellAI 洞察
  • sellAi Agent Tools
Claude Code 源码泄漏启示:Harness Engineering 工程实践深度解读

当 Claude Code 部分实现公开后,AI 工程社区获得了难得的机会,了解 Anthropic 如何应对让 AI 系统安全自主的挑战。本分析检验 Claude Code 架构中嵌入的 Harness Engineering 模式——无论具体用例如何,生产团队都可以从中学习。

从 Harness 视角看 Claude Code 的特别之处

Claude Code 是一个 Coding Agent:能够自主读取、编写和修改代码的 AI 系统。这与回答问题的聊天机器人有着根本的不同。Coding Agent 采取的行动有真实的后果。

关键的 Harness Engineering 挑战:如何在不让 AI 变得无用的情况下让它安全自主?

Claude Code 的答案涉及多层控制系统,在多个级别约束行为。这正是泄漏实现所揭示的内容。

多层安全架构

第一层:权限门

Claude Code 架构中最明显的模式是权限门系统。在执行潜在危险操作之前,系统会暂停等待人工确认。

让这变得有趣的不是概念本身——权限提示很常见——而是实现细节:

权限类别:
- 只读操作:无需门控
- 文件修改:新文件、编辑、删除需要确认
- 命令执行:不同风险级别有不同门控
- 网络操作:需要明确的 opt-in 配置
- 系统级操作:最严格的门控,仅限于特定白名单操作

这里的洞察是细粒度风险分类。Claude Code 不会将所有操作视为相等。它按后果严重性对操作进行分类,并应用成比例的摩擦。

第二层:沙箱执行

Claude Code 实现了执行环境,即使授予了权限也能约束实际可以采取的操作。

关键模式:

  • 工作目录约束:Agent 在定义的项目边界内操作
  • 依赖隔离:修改仅限于项目依赖,而非系统包
  • 临时工作区管理:危险操作在临时上下文中执行
  • 回滚能力:如果后果出乎意料,文件系统操作可以撤销

关键洞察:权限门是社会契约。沙箱是技术执行。 你需要两者。

第三层:行为约束

除了操作门控,Claude Code 还实现了对 Agent 尝试操作的约束:

行为边界:
- 不对工作上下文之外的文件进行操作
- 不安装系统级软件
- 不访问凭证或密钥,除非有明确配置
- 不执行需要 sudo 的操作,除非用户明确同意
- 不修改系统配置文件

这些约束在多个级别强制执行:

  1. 提示词级别:系统提示词建立行为边界
  2. 验证级别:预执行检查验证操作在范围内
  3. 运行时级别:执行环境强制执行限制

第四层:输出过滤和验证

Claude Code 不仅约束输入和操作——它还验证输出:

  • 文件操作验证:验证文件写入成功且内容符合意图
  • 命令结果解析:解释执行输出中的错误和警告
  • 状态一致性检查:确认操作产生了预期的副作用
  • 错误恢复提示:当操作失败时,引导用户解决问题

权限架构深度解析

Claude Code 实现中最值得学习的部分是权限系统。让我们检验其设计原则:

原则 1:渐进式摩擦

不同操作有不同的摩擦级别:

风险级别示例摩擦
最小读取文件
创建新文件隐式确认
修改现有文件显式确认
删除文件显式确认 + 撤销能力
关键执行命令详细说明 + 确认
极端网络操作需要明确的 opt-in 配置

原则 2:上下文感知

权限系统在评估风险时考虑上下文:

# 简化的概念
def evaluate_permission(operation, context):
    base_risk = operation.risk_level
    
    # 对敏感位置增加风险
    if operation.target.in_sensitive_location():
        base_risk += 1
    
    # 对用户发起的操作降低风险
    if context.user_initiated():
        base_risk -= 1
    
    # 对批量操作增加风险
    if operation.is_batch():
        base_risk += len(operation.items)
    
    return calculate_permission_level(base_risk, context)

原则 3:权限持久化选项

Claude Code 允许用户配置权限持续时间:

  • 一次性:每次操作都需要权限
  • 会话级:权限在当前会话中持续
  • 上下文级:权限在当前文件/功能内持续
  • 永久:用户已预先批准此类操作

这处理了可用性与安全性的权衡:信任 Agent 的用户可以减少摩擦;想要控制的用户可以增加它。

这对 Harness Engineering 意味着什么

经验 1:权限不仅仅是提示

"在做危险事情之前询问"的朴素实现只是一个确认对话框。Claude Code 表明有效的权限系统需要:

  • 风险分类:不同操作有不同的风险配置
  • 上下文感知:风险评估考虑情况
  • 持久化选项:用户应该控制自己的摩擦容忍度
  • 技术执行:仅靠权限是不够的——沙箱是必需的

经验 2:深度防御

Claude Code 不依赖任何单一安全机制。每一层处理不同的失败模式:

  • 权限门:防止意外操作
  • 沙箱:限制出错时的损害
  • 行为约束:防止 Agent 尝试危险操作
  • 输出验证:捕获通过前几层的失败

经验 3:用户能动性是安全的一部分

用户无法配置的安全系统会成为可用性问题。Claude Code 将用户控制视为功能,而非妥协:

  • 用户选择自己的风险承受度
  • 用户可以随时撤销权限
  • 用户可以审计已授予的权限
  • 用户可以终止 Agent 并检查其状态

生产工程模式

模式 1:风险分类法

在构建任何 Harness 系统之前,定义你的风险分类:

RiskLevel = Enum('RiskLevel', [
    'READ_ONLY',      # 无修改风险
    'CREATE',         # 新资源
    'MODIFY',         # 现有资源
    'DELETE',         # 资源删除
    'EXECUTE',        # 命令执行
    'NETWORK',        # 出站连接
    'SYSTEM',         # 操作系统级操作
    'AUTH',           # 凭证访问
])

# 每个级别有不同的处理
risk_handlers = {
    RiskLevel.READ_ONLY: no_confirmation,
    RiskLevel.CREATE: implicit_acknowledgment,
    RiskLevel.MODIFY: explicit_confirmation,
    RiskLevel.DELETE: confirmation_with_undo,
    RiskLevel.EXECUTE: detailed_confirmation,
    RiskLevel.NETWORK: explicit_opt_in,
    RiskLevel.SYSTEM: restricted_with_audit,
    RiskLevel.AUTH: strict_opt_in_with_logging,
}

模式 2:基于能力而非角色的访问控制

class AgentCapabilities:
    def __init__(self):
        self.can_read = True
        self.can_create_files = True
        self.can_modify_files = False  # 默认关闭
        self.can_delete_files = False
        self.can_execute_commands = False
        self.can_network = False
        self.can_access_secrets = False
        
    def grant(self, capability):
        # 记录授权
        # 可能需要确认
        # 返回新的能力状态
        pass

模式 3:审计追踪

每个与安全相关的决策都应该被记录:

class SafetyAuditLog:
    def log_permission_request(self, operation, risk_level, context):
        self.entries.append({
            'timestamp': datetime.now(),
            'type': 'permission_request',
            'operation': operation.describe(),
            'risk_level': risk_level,
            'user_context': context.summary(),
            'granted': None,  # 稍后填写
        })
    
    def log_permission_decision(self, decision, user_action):
        self.entries[-1].update({
            'decision': decision,
            'user_action': user_action,
        })

常见问题

Claude Code 与其他 Coding Agent 相比如何?

Claude Code 的 Harness Engineering 比大多数替代方案更复杂。特别是权限系统,代表了对平衡安全性和可用性的深思熟虑的方法。其他 Agent 通常依赖更简单的门控机制或完全依赖沙箱。

这些模式可以应用于非 Coding Agent 吗?

绝对可以。权限分类和分层防御模式适用于任何采取重要行动的 Agent。文档编辑 Agent、数据处理 Agent 或 API 调用 Agent 都受益于类似的安全架构。

如何处理安全检查的性能影响?

安全检查应该:

  • 安全操作的快速路径:只读操作应该有最小开销
  • 尽可能并行:多个安全检查可以并发运行
  • 缓存一致性:权限状态可以缓存并失效

目标是让安全检查对正常操作感觉上是隐形的,同时仍然能捕获危险操作。

Interview AiBox 如何帮助

理解 Harness Engineering 模式对 AI Agent 开发至关重要。Interview AiBox 帮助你练习推理 AI 安全系统、设计权限架构和思考失败模式。

功能概览开始,了解 Interview AiBox 如何支持技术面试准备。

相关阅读

Interview AiBox logo

Interview AiBox — 面试搭档

不只是准备,更是实时陪练

Interview AiBox 在面试过程中提供实时屏幕提示、AI 模拟面试和智能复盘,让你每一次回答都更有信心。

分享文章

复制链接,或一键分享到常用平台

外部分享

继续阅读

工程约束优先:Claude Code 源码启示录

schedule2026年4月09日

工程约束优先:Claude Code 源码启示录

为什么 Claude Code 用正则做情绪检测、用 XML 做内部协议、用工具做结构化输出——关于确定性工程如何优于概率性 AI 控制问题的教训。

Claude Code 源码泄漏启示:Harness Engineer... | Interview AiBox