
一键开通华为云码道 CodeArts 代码智能体 https://developer.huaweicloud.com/codeartsco.html?sourcedmzntgwatomgit1sourceaddmzntgwatomgithd把排错日志、客户样本或测试数据发给同事之前我希望能先做三件事移除敏感片段确认数据结构仍可用再让收件方核对自己拿到的文件。这是隐墨的主要工作流程。本文记录隐墨 v0.2.0 的产品设计、关键实现与工程验证。源码按 MIT 协议开放便于直接运行和复现。为什么选择在浏览器本地处理调试资料需要尽量保留问题现场却经常混有邮箱、手机号和访问凭据。如果直接把这些资料发送给在线处理服务数据暴露面可能扩大。隐墨使用浏览器内的确定性规则不上传文件不调用云端模型也不把原文写入浏览器持久存储。用户可以导入 UTF-8 CSV、TSV、JSON 或日志也可以粘贴文本。导入后默认展示脱敏预览只有主动切换才显示敏感原文。文件、转换结果和代号映射只在当前页面内存中存在。从遮盖字符串到保留数据结构第一层是解析。CSV 必须理解双引号、逗号和单元格中的换行不能简单按逗号切割。JSON 必须在解码后检测否则\\u0040形式的邮箱分隔符可能绕过纯文本扫描。解析器拒绝不等列、未闭合引号、重复 JSON 键和超过安全精度的整数。遇到不能可靠保留的数据给出明确错误避免静默覆盖字段或截断结果。第二层是识别。规则覆盖大陆手机号和常见分组、常见邮箱、身份证结构/日期/校验码、Luhn 银行卡候选、IPv4、部分令牌格式、日志口令赋值以及已知或自定义的敏感字段。校验码只能减少误报不能证明号码真实。第三层是转换。联调时可以选择部分遮盖需要保持同一值关联时可以使用一致代号对外分享可以切换到完全替换。访问凭据始终整段移除。疑似表格公式整格移除不把一种转义方案宣称为适用于所有表格软件的安全保证。两个必须用反例修复的问题一个问题来自访问令牌长度。最初的正则对令牌设置最大长度超长的合成令牌反而无法匹配原文会留在输出中。修复后识别完整连续令牌并加入不同长度的回归用例。另一个问题是邮箱字段中的混合内容。字段名虽然是邮箱内容仍可能附带一段凭据。如果直接保留后的全部文字遮盖会留下凭据尾部。现在先检查字段中的凭据命中时整格移除格式异常的邮箱字段也不再套用部分遮盖。这两类问题说明正常示例运行成功不足以证明转换可靠。测试需要检查实际输出中有没有留下不应保留的片段。把复核做成可见的状态每项命中都有待复核、已复核和明确保留的状态。用户可以逐项查看也可以按当前页或类型批量确认。批量确认表示接受对应处理方式不能代替对未命中内容的人工检查。数据、保护字段或处理策略变化后复核决定会重置。所有命中完成复核后导出按钮才可使用正式下载前还需要确认理解规则局限。保留的原文会被单独提示公式候选不能保留。风险和数据表均可分页避免大量命中被截断在不可见列表之外。后台 Worker 支持取消旧任务结果不能覆盖新任务。导出报告与收件方核验v2 报告只记录格式、计数、策略、规则版本、复核数量和输出文件的 SHA-256。报告不包含源文件名、原文、字段路径、命中位置或代号映射。收件方在“核验报告”中选择数据文件与报告工具会对实际字节重新计算摘要。浏览器测试验证了两种情况原始下载文件匹配报告追加内容后的文件显示不一致。不同换行或额外 BOM 也会改变实际字节不能在核验前随意规范化。报告没有数字签名。摘要相同只说明文件与给定报告一致不能证明作者身份、报告真实性或数据已经完全匿名化。如何复现可运行包需要 Node.js 22.12 或更新版本。解压后运行启动入口浏览器打开http://127.0.0.1:5178载入客户联络示例即可体验。源码使用 React、Vite 和 TypeScript按 MIT 协议提供。npm ci npm run dev完整软件检查入口npm run verify:release检查会运行核心测试、类型检查、生产构建和真实浏览器工作流并生成包含源码指纹的验收记录。公开源码WeiRh/yinmo-local-redaction。使用范围文件上限为2 MB最多10000条记录、200列、50000个文本单元、20000处命中和64层 JSON 嵌套。超限明确失败预览分页不会导致导出被静默截断。隐墨目前不处理图片、扫描件、PDF或Excel二进制文件也不能覆盖所有凭据格式、语义场景和跨字段重识别。部分遮盖与一致代号仍可能被关联识别。最终分享前使用者仍需检查处理结果和未命中的内容。实际运行画面码道开发记录本次在华为云码道 CodeArts 的 WeiRh 账号中导入源码、检查解析与识别分层、运行 72 项核心测试并将基础版本推送到公开 AtomGit 仓库。开发中发现云端 unzip 对中文文件名的解码存在差异改用 Python zipfile 提取后核对仓库文件名。基础提交为95d0c7943303336538f183d665815b68ef2a9663。现有原型由 Codex 辅助构建本次码道开发记录与实际源码提交对应。v0.2.1保护指定文字随后在码道中完成了“保护指定文字”功能最多 20 条普通文字规则每条 1–100 个字符适用于姓名、地址和业务代号不执行用户正则。规则只在页面内存中存在修改后重新分析并清空旧复核决定。字面量与邮箱、凭据命中重叠时合并保护区间避免只遮住一部分而留下敏感尾部。真实功能提交6adf74a5a07be45cb67571eafae04f38714aa0fe。码道完成的发布检查包括 85 项核心测试、21 项浏览器工作流、类型检查和生产构建同时修复了 320px 视口下报告核验对话框的文件选择框溢出。字面量保护仍不识别同义改写、Unicode 归一化差异或编码变体使用者需要复核未命中的内容。