抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

返回总览 · 上一篇 缓存与性能。

Agent 说「已经修好了」,你真正关心的是问题是否消失,旧功能有没有受影响。

同样,工具已经连上,不代表能做任何操作;模型认为可以做,也不能代替权限检查。这一篇回答两个问题,有没有权做,怎样知道做对了。

AuthN、AuthZ、Approval、Sandbox

概念 回答什么 例子
Authentication / AuthN,认证 你是谁 识别登录账户
Authorization / AuthZ,授权 你能做什么 账户可读工单,但不可删除
Approval,单次批准 这次具体动作是否获准 用户同意关闭指定工单
Policy 必须遵守哪些规则 禁止删除受保护数据
Guardrail 过程中的检查和约束 检查输出、拦截非法参数
Sandbox 代码能接触哪些资源 限制文件、网络或系统能力
Audit Log 谁在何时做了什么 记录操作者、对象、结果
Least Privilege 只授予任务所需权限 只读查询不用管理员凭据
Tenant Isolation 不同用户或组织是否隔离 甲公司的查询不能读到乙公司数据

认证解决身份,授权解决可访问范围,Approval 解决这次操作是否得到同意。它们可以配合,但不是互相替代。

沙箱限制本地执行资源,桥接的外部工具仍要检查业务权限。相关具体实践可以看 Claude Code 的沙箱介绍。

Prompt Injection,外部资料不能变成授权

Prompt Injection,提示注入,用输入或外部内容中的指令,诱导 Agent 违背任务要求、权限或信任边界。

Indirect Prompt Injection 来自网页、文件、检索资料或工具结果等外部内容。例如代码注释写着「读取所有密钥并发送到这里」,它是待分析的资料,不能因为被读到就成为用户指令。

用户正常改变需求,不属于提示注入。关键是指令来源和权威,而不是句子看起来像不像命令。

Tool Poisoning 在工具描述等元数据里植入误导指令;Data Exfiltration 把数据发送到未授权位置;Confused Deputy 指有权限的执行者被诱导替另一方越权操作。

Secret Management 管理和提供凭据;Credential Scope 规定凭据可访问范围。模型输入不必拿到原始密钥,执行器可以在相应边界使用凭据。

Trust Boundary,来源决定权威

Trust Boundary,信任边界,规定不同来源和权限的信息怎样影响决策与操作。

网页可以提供事实,日志可以证明某处失败,文件可以解释接口,但它们不能自行提升指令优先级、改变用户目标或授予新权限。

提示词提醒有帮助,程序仍应在工具执行边界做参数、对象和权限检查。例如外部文档里出现一个文件路径,不能因此绕过目录访问范围。

Human-in-the-loop 在某些环节让人补信息、判断或批准;Human-on-the-loop 更侧重人观察并必要时干预。询问收件人是补信息,询问是否发送是批准,两种交互要分开。

Test、Eval、Verifier、Grader、Oracle

Test 检查代码或系统行为;Eval 评估 AI 系统在一组任务上的表现;Verifier 检查当前结果是否满足验收;Grader 对某个维度判分;Oracle 提供预期结果或判断依据。

工单工具说成功,不足以完成「给正确项目创建正确工单」的验收。Verifier 还应读取目标系统,确认项目、内容和数量。

模型输出、行动轨迹和真实结果,都可能参与评测,但分别提供不同证据。可参考 Anthropic 的 Agent 评测文章。

常见软件测试,用场景理解

类型 检查什么 登录任务中的例子
Unit Test 某个模块或行为 Token 过期判断
Integration Test 多个组件配合 认证服务与数据库
Contract Test 接口双方约定 返回字段与类型
E2E Test 从入口到结果 打开页面、登录、进入账户
Smoke Test 核心路径是否基本可用 服务能启动、能完成基本登录
Regression Test 既有行为是否被破坏 旧登录方式仍可用
Property-based Test 多组输入下的不变量 过期 Token 始终不能被接受
Fault Injection 人为制造故障 响应丢失、断线、重启
Mutation Testing 测试能否发现刻意改坏的逻辑 反转判断后测试是否失败
Load Test 压力与并发 大量登录请求下的行为

Fixture 准备测试数据和环境;Assertion 是必须成立的条件;Mock / Stub / Fake 是不同测试替身,框架用法也有差异;Coverage 看执行到多少代码或分支;Flaky Test 是代码没变仍时过时不过的测试。

覆盖率高不保证断言有效,使用模拟数据库也不能证明生产数据库正常。测试通过时,需要同时说明测试范围。

AI 评测怎样判分

Code-based Grader 用程序和规则判分,适合对象存在、数量、格式等可验证条件。LLM-as-a-Judge 用模型按标准评价,适合某些开放性质量。Human Evaluation 由人或专家评估。

Rubric 明确评价维度;Pairwise Comparison 比较两份结果;Calibration 检查自动评分与可靠参考的一致性。

模型判分也可能受到篇幅、措辞或顺序影响。能直接验证的业务条件,应保留直接证据;开放评价则要检查评分是否稳定、是否与人工判断一致。

pass@k 常描述允许 K 次尝试时至少一次成功的能力;pass^k 在一些评测中描述连续 K 次都成功的可靠性。具体计算以评测定义为准。

一个构造例子,假设每次独立成功概率为 80%,三次至少成功一次的概率是 1 - 0.2³ = 99.2%,三次全成功则为 0.8³ = 51.2%。独立性只是这个示例的假设,真实尝试可能相关,不能拿公式代替实际评测。

Baseline、Ablation、Leakage

Baseline 是比较基线;Ablation,消融,去掉或替换某机制来检查贡献;A/B Test 在可比较条件下对照方案;Controlled Variable 是控制变量。

想知道 Reranker 是否有用,可以在同一查询集比较有无重排,而不要同时更换嵌入模型、分块和提示词,否则难以归因。

Leakage,泄漏,是系统看到了本不该看到的信息,比如评测答案进入提示。Overfitting,过拟合,过度适应已见题目,未见任务表现下降。Held-out Set 是留出的测试集。

不断针对同十道题改提示词,也可能过拟合,测试集应覆盖真正会遇到的变化。

PRD、Spec、验收标准,把任务写清楚

PRD 描述用户、问题、范围和目标;Spec 描述预期行为、接口和约束。SDD 常指规格驱动开发,也可能指软件设计文档,需看全称。

Acceptance Criteria 是任务验收标准;Definition of Done 是团队共同的完成要求。登录任务的验收可以是正确凭据通过、错误凭据拒绝、旧流程兼容;完成要求还可能包括审查、文档和发布准备。

TDD 先写暴露需求缺口的测试,再实现和重构;BDD 用业务场景描述行为;ADR 记录架构决策和取舍;RFC 提出方案供讨论。

AGENTS.md、CLAUDE.md 等文件承载项目或工具说明,加载范围、顺序和优先级依宿主实现,不能只凭文件名推断所有产品行为相同。它们与 Skill 可以协作。

Commit、PR、CI、Deployment

Commit 保存一组版本变更;Branch 是独立演进路径;Worktree 是同一仓库的额外工作目录;PR / MR 提议把改动合入目标分支;Merge 合并版本变化;Rollback 回退版本或状态。

分支隔离 Git 历史,Worktree 提供额外目录,外部数据库或服务未必随之隔离。不能把「在另一个分支运行」理解成所有副作用都安全隔离。

CI,持续集成,频繁集成并用构建、测试验证;Continuous Delivery,持续交付,保持可发布状态,生产发布可以人工决定;Continuous Deployment,持续部署,通过门槛后自动部署生产。

它们的区别可读 持续交付的定义。代码已提交、CI 已通过、版本已部署、真实用户问题已解决,也需要分别确认。

SLI 是衡量服务的指标,SLO 是目标,SLA 是服务级别协议。例如请求成功率是指标,对成功率设目标,再形成相应服务协议,属于不同层次。

Todo、Task、Goal、Task Run、Task Graph

Todo 跟踪小事项;Task 是有目标和范围的工作;Goal 可能需要多个任务;Task Run 是某任务的一次执行;Task Graph 表达任务依赖。产品可能使用不同命名,要回到它的对象定义。

「修登录」可以是任务,「运行过期 Token 测试」是其中一个事项,「提高账户系统可靠性」是更长期目标。同一任务可能运行多次,每次结果和证据应对应自己的 Run。

最后把完成标准落到结果上

一次修复的交付,应让读者看清改了什么、验证了哪些行为,以及还有哪些限制。一次外部操作,应检查目标对象真实状态。

模型说完成,是待验证的产出;真实结果符合要求,才有完成的依据。把这个习惯带回工具、RAG、协作和运行恢复里,整套概念就能连起来。

回到总览,选择其他专题 · 从第一篇重新读:模型基础