展开本页目录
开始前准备什么
- 下载本题完整练习包,区分待实现 starter 与作者完成 reference。
- 按README准备本题原生依赖;所有输入均为原创或明确标注的本地fixture。
- 本地练习不需要付费模型Key;真实模型调用未执行,MiniLM题另有明确实际推理说明。
- 准备虚构日志
- 声明敏感字段
- 递归结构处理
- 保留请求关联
- 检查零值空值
- 标出规则边界
- 输出可分享副本
先下载样例,再完成自己的首次调用
示例不含密钥。API 按实际用量计费;下载和点击不代表调用成功。
原创输入、待完成starter、作者reference及实际运行产物,依README本地准备依赖。
环境要求、具体操作、产物核对与未运行范围。
stream-json 逐行解析与结束事件检查
Gemini CLI 0.66.0;本地请求回放。请求轨迹和退出码见回执。
在隔离样例运行 gemini -p 与 --output-format stream-json,把 stdout、stderr 分开保存。
逐行解析 JSON,只选择允许公开的 type、status 与需要的结果字段;遇到非 JSON 不能误当结果。
检查最终 result 事件及测试标记,再按旧文要求验证密钥、路径等不进入共享日志。
结果事件表明这个样例结束;不能用首条事件判断已经执行成功。
- 通过:至少一个 JSON 事件
- 通过:有 result 事件
- 通过:输出有本地标记
本地样例复跑
python3 lab.py --output ./result g041. 准备虚构日志
输入只有原创JSON日志,手机号、example.invalid邮箱与EXERCISE_FAKE令牌均为假数据。不要把生产日志复制到练习或AI会话中才能开始。
2. 声明敏感字段
先声明phone、email和token为敏感字段,保留request_id、事件类型与耗时。规则针对字段语义,不能看到长数字就全部打码。
本地启动与复现
cd reference
python3 verify.py3. 递归结构处理
用Python logging.Filter解析结构,并递归处理字典与数组。字段命中后替换值,嵌套对象中的邮箱也必须被覆盖。
4. 保留请求关联
比较原日志与清洗副本,确认同一请求的request_id没有变化。这样仍能把错误与前后步骤关联,而不是得到一段无法排错的星号。
5. 检查零值空值
明确检查0、false、null保持原值,普通numeric_id也保留。真假值判断错误会把耗时0、失败false或空状态一起改坏。
6. 标出规则边界
未声明的自由文本不会自动变安全,本题不会声称识别所有个人信息。需要分享自由文本时先补充字段或专用规则并单独验收。
7. 输出可分享副本
运行verify.py生成本地对照,原始假数据和清洗结果都可下载。Gemini CLI账号会话未运行;这篇验证日志预处理,不是Git仓库密钥扫描。
怎样确认已经完成
- phone/email/token字段中的假敏感值不出现在清洗副本。
- request_id、0、false、null和普通numeric_id保留原语义。
- 原输入不变,自由文本未覆盖部分明确列出。
常见问题
日志发给AI排错之前,怎么先去掉手机号和测试令牌?
先在本地按声明的结构化字段清洗副本,再审自由文本。本题仅用假日志演示phone/email/token替换,不上传真实日志。
脱敏以后日志全变星号,错误关联怎么还查得出来?
保留request_id、事件类型和必要错误结构,并明确检查0、false、null不被破坏;不要将所有数字或全部文本统一打码。
哪些部分实际运行,哪些需要独立验证?
Python logging.Filter实跑虚构结构化日志,声明敏感字段替换,request_id、0、false、null和普通数字ID保留。 目标AI助手账号生成、云平台部署和生产环境不在本次执行范围。





