Day 05 / 5 · 收官

评测 · 安全 · 上线 · Portal 看见你的效果

能跑不够——要有样本、0 外网测试、涉权过评审、灰度上线、KPI 闭环。

01

评测样本 · ≥20 条

改哪些文件:

  • Monorepo:gov-agents-platform/apps/my-agent/evals/golden.jsonlapps/my-agent/data/eval_samples.jsonl
  • 独立仓:my-agent/scripts/ 下评测脚本 · 或自建 evals/ 目录
{"sample_id":"t-001","input":{"text":"hello"},"ground_truth":{"category":"greeting"},"tags":["smoke"]}

覆盖:核心场景 × 边界 × 失败 case。少于 20 条 FiveDimScorer 方差大,跨周对比假阳性多。

uv run agentctl invoke my-agent --eval
uv run agentctl invoke my-agent --eval --sample t-001 -v
02

FakeLLM · 0 外网 · 5 秒跑完

改哪些文件:

  • Monorepo:apps/my-agent/tests/test_smoke.py(及同目录其它 test_*.py)
  • 独立仓:my-agent/tests/test_smoke.py
from ai_trust_toolkit.testing import FakeLLM, build_agent_for_test

async def test_triage():
    fake = FakeLLM({"triage": ["category: greeting"]})
    app = build_agent_for_test(builder=build_router, llm=fake)
    result = await app.invoke({"input": "你好"})
    assert result["category"] == "greeting"
uv run pytest apps/my-agent/tests/ -q          # Monorepo
uv run --extra test pytest                       # 独立仓

最小合并标准:≥3 个 FakeLLM 测试 · ≥1 个 L1 critic 规则 · ≥5 条评测样本。

03

安全自检 · 7 问(涉权必做)

服务凭据调下游时:没权限的人经 agent 拿到那个权限 = 越权放大。命中写/删下游、跨团队、涉密 → 独立安全评审。

1

会放大权限吗?

2

下游带谁的身份?服务凭据怎么校验调用者有权?

3

服务凭据是最小权限吗?

4

高危操作有 dry-run / 人审 / 二次授权吗?

5

每次操作可追溯到真实用户吗?

6

越权/失败默认拒绝吗?

7

敏感数据出域 / 过 LLM 吗?

原则:经 agent 的有效权限 ≤ 调用者本人。
04

上线 · 先测试后生产

Pod:obelisk 测试环境 → 健康检查 + Portal 出 invocation → 生产 canary 0→10→50→100%

canary phase advance --agent my-agent
canary rollback --agent my-agent   # 异常 p99 < 30s 回滚

CLI/MCPuv publish → Nexus → 小范围 pipx → 稳定版广播。

BOM 升级:看 release notes → 改一行版本 → uv sync + 跑测 → 不跳 MINOR。

05

Portal KPI 闭环

改文件:my-agent/my_agent/core.py(独立仓)· Monorepo 若在 server/builder 链路里上报则改对应 telemetry 钩子。

with bind_effect():
    record_effect("upgraded", 1)   # 换成你的业务 key
    push_invoke_metrics(result, form="cli")
Skill 默认不上报 KPI;要做效果度量闭环必须走 Agent + telemetry。

5 天毕业清单

  • ☐ Day 01 选型完成(Skill/Agent · 独立仓/Monorepo)
  • ☐ 环境 + Nexus + LLM · run / invoke 跑通
  • ☐ 业务图:改 my_agent/nodes/*.py + my_agent/builder.py(不在 nodes/ 里)
  • ☐ ≥20 评测样本 + FakeLLM pytest 全绿
  • ☐ 涉权 → 安全 7 问 / 评审
  • ☐ 测试环境验 Portal → 生产灰度

🎉 恭喜完成业务接入 5 天。想深入 toolkit 原理 → 框架源码 21 天 · 独立仓动画深讲 → 番外 9 步