Sign in

    weopqrst/mooncassette/sanitize does not have a README file

    SanitizePolicy

    pub(all) struct SanitizePolicy {
    exact_keys : Array[String]
    key_suffixes : Array[String]
    placeholder : String
    scan_secret_shapes : Bool
    } derive(Eq)

    脱敏策略。

    SanitizePolicy::default

    默认策略:覆盖常见厂商的鉴权字段,并开启密钥形状扫描。

    is_sensitive_key

    #deprecated("内部实现细节:请用 `sanitize_json` / `sanitize_cassette`;本函数不在对外承诺范围内")
    fn is_sensitive_key(key : String, policy : SanitizePolicy) -> Bool

    判断某个键名是否需要脱敏(精确名匹配,或命中 _key / _token 一类后缀)。

    这是脱敏的内部判据,不是对外契约:把它公开,等于承诺「键名怎么算敏感」 这个口径永不改变,而它显然会随实践调整(新增后缀、改写匹配规则)。

    对外请用 sanitize_cassette / sanitize_json:给它们策略,拿回脱敏后的结果, 不需要、也不应该关心中间的判定过程。

    sanitize_cassette

    脱敏整个 cassette,返回新的 cassette(不修改入参)。

    meta 原样保留:它由调用方掌控,不来自模型或网络。

    sanitize_interaction

    #deprecated("内部实现细节:请用 `sanitize_cassette`;本函数不在对外承诺范围内")
    fn sanitize_interaction(interaction :
    Interaction
    , policy : SanitizePolicy) ->
    Interaction

    脱敏一条交互记录(请求与响应各走一遍各自的脱敏路径)。

    它是 sanitize_cassette 的内部一步。单独暴露会诱使使用方自己遍历记录 —— 而 sanitize_cassette 同时约定了「meta 原样保留」这条规则,逐条脱敏会 悄悄丢掉它,产出边界不一致的文件。

    对外请用 sanitize_cassette:一次处理整份录制,version 与 meta 的处置 由库负责。

    sanitize_json

    fn sanitize_json(value : Json, policy : SanitizePolicy) -> Json

    递归脱敏一个 JSON 值。

    键名命中策略时,整个值被替换为占位符(不尝试保留部分内容); 字符串值若开启 scan_secret_shapes,则额外做子串级替换。

    sanitize_request

    脱敏一个请求。

    sanitize_response

    脱敏一个响应。

    status 与 usage 原样保留:它们是数值元数据,不承载密钥。

    流式响应的每一帧也要脱敏,否则「落盘内容一定经过脱敏」这条承诺 会在流式路径上被绕开——帧里装的是同一份模型输出。