diff --git a/AGENTS.md b/AGENTS.md index 3a6439c..5190da7 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -81,6 +81,8 @@ - **当前日志与抓包规则**:Dispatcher、Agent 的 `--debug/-D` 仅开启 Logrus 详细收发日志;普通模式记录自身关键工作流程、方向、身份、结果、耗时及错误。HTTP/MQ/RPC 正文只在 Debug 中记录安全副本,禁止密钥、Token、签名 URL、完整提示词/对话/音频及原始 SIP;不截断其余可读业务 JSON,不修改发送数据、不吞错误。Agent 原 `--debug` 抓包含义移除,逐通外部抓包凭证检查改为独立 `--capture`,不足时仍失败关闭。独立 `sip-call` 的 Debug 抓包参数不变。详细规则见 [`docs/logging.md`](docs/logging.md)。 +- **2026-10-10 04:53 Logrus 引号标签最终现场**:第八次审查的带引号内容标签在 `a66e111` 根因修复:引号/非引号标签与诊断投影共用词法器和字段名解码归一化;JSON Unicode转义经标准解码,非法引号字段尾部保持隐藏;完整嵌入JSON交既有结构脱敏,不吞相邻诊断。八种引号/转义形态×两模式error/detail/message/HTTP先失败后通过,授权JSON诊断保留及前七轮回归保持。最终完整检查/发布检查/Python21通过、业务覆盖率72.1%。Agent2903352/D2903363两实际SHA256 `24404b7f5e0bc41d12887fcd54a5128bf36b62bda7ce3a8888fc0e3807578b84`,enabled+active/running、0重启、Debug无Capture;Asterisk777461不变、通道/tcpdump0。14HTTP/各8RPC实际安全正文核验;无现场非JSON/MQ业务/呼叫/真实恢复故障,不代签这些或生产;无reset/迁移/抓包/投递/额外AI OSS。权威最终源码/证据仍 `.local/logging-isolated` main,根并行修改保留;见 [`docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md`](docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md)。 + - **2026-10-10 04:08 Logrus 内容持续归属最终现场**:第七次审查的role/message、human和任意对话字段误解除保护在 `01b2f82` 根因修复。不补说话者名单;自由文本内容标签拥有未分界后续文本,只逐行保留类型已校验的诊断数值/UUID/时间戳/已知状态,诊断行不释放后续归属,未知/嵌套/伪状态仍隐藏。结构化正文外部业务字段继续按结构保留。七种消息形态×四内容标签×两模式/多路径先失败后通过,真实>150KB HTTP原bytes不改及明确非内容长业务段不截断通过;最终完整检查/发布检查/Python21通过,业务覆盖率72.0%。Agent2903064/D2903075两实际SHA256 `d74078bae03c0044967de8b7cad61e92cbaf694339520cdfd5b6bc6556411036`,enabled+active/running、0重启、Debug无Capture;Asterisk777461不变、通道/tcpdump0。14HTTP/各8RPC安全正文再核验;现场无非JSON/MQ业务/呼叫/真实恢复故障,不代签这些或生产;无reset/迁移/抓包/投递/额外AI OSS。权威源码/最终证据仍 `.local/logging-isolated` main,根并行修改保留;见 [`docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md`](docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md)。 - **2026-10-10 03:04 Logrus 行中内容标签最终现场**:第六次审查的错误前缀内容标签在 `bfe7630` 根因修复:字段归属由行中敏感标签建立,保留其前失败原因,后续对话仍跨段落隐藏,唯一分类不变。四种错误前缀×六种内容标签×普通/Debug error/detail/message/HTTP反例先失败后通过。最终完整检查/发布检查/Python21通过、业务覆盖率72.0%;两实际SHA256 `c29200e39e8274aa5a806eaa0037fe878712829864ee2f58d9707c9d25682ff9`,Agent2902748/D2902759 enabled+active/running、0重启、Debug无Capture;Asterisk777461不变、通道/tcpdump0。14HTTP、两端各12RPC安全正文验证,无现场非JSON/MQ业务/呼叫/真实恢复故障,不代签这些或生产;无reset/迁移/抓包/投递/额外AI OSS。权威固定源码/最终证据仍 `.local/logging-isolated` main,根并行修改保留;见 [`docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md`](docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md)。 diff --git a/docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md b/docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md index 1dbf6f6..92914ac 100644 --- a/docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md +++ b/docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md @@ -1,6 +1,18 @@ # Dispatcher / Agent Logrus Debug 实现与固定环境部署 -## 最终已安装版本:01b2f82(2026-10-10 04:08 CST 现场) +## 最终已安装版本:a66e111(2026-10-10 04:53 CST 现场) + +第八次审查的带引号内容标签未建立归属已根因修复:文本标签与诊断投影共用同一个引号/非引号词法器、字段名解码与归一化入口。JSON 引号字段经标准 JSON 解码,Unicode 转义不能绕过内容分类;非法引号字段不能可靠分类时,其尾部保持隐藏。完整嵌入 JSON 保留结构边界,由既有结构化脱敏处理,不让自由文本词法器吞掉其相邻 reason/task_id 等诊断字段。 + +新 `TestQuotedContentLabelsEstablishOwnershipOnEveryLoggingPath` 覆盖双引号、单引号、backtick、两种排版引号、escaped引号、JSON Unicode转义、非法JSON名字转义八形态×普通/Debug error/detail/message/HTTP TextBody;完整用户助手内容排除、真实失败前缀/status/task_id/attempts保留。先失败复现审查原例再实现通过;过程中的授权JSON相邻业务字段损失由既有测试发现后,按完整JSON结构边界修复,不移除或减弱断言。前七轮内容持续归属/类型诊断投影/统一分类/段落/Markup/认证PEM/传输bytes等回归保持。 + +最终源码 `a66e1118abfcc75c25a2fc8c5e4b276ba00079c6` 已推送核对main,从干净固定提交构建安装。最终make check/release-check-local(格式/合同Proto/vet/全包race/build/实际隔离RabbitMQ HTTPS mTLS及现有验收对照)、Python21通过,业务覆盖率 **72.1%**;记录 `.local/quoted-final-check.log`、`.local/quoted-coverage.log`、`.local/quoted-release-check.log`。 + +2026-10-10 04:53 CST实际现场:Agent `2903352`/Dispatcher `2903363` 两实际SHA256 `24404b7f5e0bc41d12887fcd54a5128bf36b62bda7ce3a8888fc0e3807578b84`,enabled+active/running、0重启、实际Debug无Capture;Asterisk `777461` 不变,通道/tcpdump0。严格登记SSH指纹,关D新准入并只读确认零活动/未知执行/恢复阻断才部署;无reset/迁移/Asterisk重启/抓包/独立拨号/主动投递/额外AI OSS。 + +实际14HTTP请求响应200、两端各8DebugRPC正文、仅LogrusJSON、0error/redaction_error/已观测敏感字段签名URL泄漏、13隐藏标记。现场无非JSON正文/MQ业务/呼叫/真实恢复故障,新反例仅本地断言,不伪造这些或业务/生产签收;独立probe仍saas_pending/business_ready=false。私密摘要本机 `.local/logging-deployment/quoted-{preflight,deploy,field-summary}.json`(文件0600目录0700)。源码/最终文档权威仍干净隔离main `.local/logging-isolated`,根并行修改保留;旧版本以下只历史。 + +## 上一版部署记录:01b2f82(2026-10-10 04:08 CST 历史) 第七次审查的 role/message、human 等任意对话内部字段误解除保护已根因修复:不再维护说话者名称名单,也不因任意冒号、未知字段或状态行推断结束。无明确结构结束符的自由文本,内容标签拥有后续文本;`diagnosticTextLine` 只逐行投影已校验类型的数值、UUID、时间戳和已知状态,这些行不释放后续内容归属。嵌套字段不投影,未知/未通过类型校验的字段继续隐藏。JSON/Markup/form 外部业务字段仍按真实结构保留;原传输字节不改。 diff --git a/docs/logging.md b/docs/logging.md index 530a50f..f878c89 100644 --- a/docs/logging.md +++ b/docs/logging.md @@ -25,7 +25,7 @@ Agent 的抓包开关独立为 `--capture`:只在显式开启时要求 `AGENT_ ## 正文边界 -密钥、Token、认证信息、完整 prompt/messages/transcript/text/content/结束语、原始 SIP 内容及音频不输出。敏感字段按键名隐藏,重复键逐个处理;其他 JSON 的空白、重复键和数字写法保留,原业务字节与对象不修改。内容字段仅一份分类表(含conversation/history及其别名),所有JSON、Markup、文本续行和标量路径共用;内容分类必定敏感,避免字段分类分离。内容标签在错误前缀之后也建立归属,保留其前失败原因,不以行首为唯一匹配位置。所有普通/Debug 日志的 message、error 和其他标量共用字段/对话保护;对话保护跨空行、任意说话者及未知/嵌套消息字段持续保持。自由文本没有可靠结构结束符时,内容标签拥有后续文本,不以任意字段或状态行推断结束;只逐行保留已校验类型的诊断数值、UUID、时间戳、已知状态,这些行不解除后续内容保护。结构化 JSON/Markup/form 仍按结构保留外部非敏感字段;named 敏感非 void 控件保护其包裹内容,void input 不影响后续普通节点。纯文本以 UTF-8 安全副本记录;敏感键值/多行提示词、Markup 的敏感标签/输入值、表单敏感字段排除,明确不属于内容字段的其他可读正文保留;自由文本内容标签后的未分界文字持续按内容处理,不猜测其已成为业务正文。HTTP 二进制和升级后的 WebSocket 流不进入正文日志。 +密钥、Token、认证信息、完整 prompt/messages/transcript/text/content/结束语、原始 SIP 内容及音频不输出。敏感字段按键名隐藏,重复键逐个处理;其他 JSON 的空白、重复键和数字写法保留,原业务字节与对象不修改。内容字段仅一份分类表(含conversation/history及其别名),所有JSON、Markup、文本续行和标量路径共用;内容分类必定敏感,避免字段分类分离。内容标签在错误前缀之后也建立归属,保留其前失败原因,不以行首为唯一匹配位置。文本字段使用同一引号/非引号词法器与归一化入口,JSON 字段名转义经标准 JSON 解码后分类;非法引号字段不能可靠分类时,其尾部保持隐藏。完整嵌入 JSON 由结构化脱敏处理,不让文本词法器删除相邻的真实诊断字段。所有普通/Debug 日志的 message、error 和其他标量共用字段/对话保护;对话保护跨空行、任意说话者及未知/嵌套消息字段持续保持。自由文本没有可靠结构结束符时,内容标签拥有后续文本,不以任意字段或状态行推断结束;只逐行保留已校验类型的诊断数值、UUID、时间戳、已知状态,这些行不解除后续内容保护。结构化 JSON/Markup/form 仍按结构保留外部非敏感字段;named 敏感非 void 控件保护其包裹内容,void input 不影响后续普通节点。纯文本以 UTF-8 安全副本记录;敏感键值/多行提示词、Markup 的敏感标签/输入值、表单敏感字段排除,明确不属于内容字段的其他可读正文保留;自由文本内容标签后的未分界文字持续按内容处理,不猜测其已成为业务正文。HTTP 二进制和升级后的 WebSocket 流不进入正文日志。 自由文本里的 Authorization/Proxy-Authorization(包括 Basic/Digest)、Cookie、无字段名的私钥 PEM 块,以及错误里嵌入的 JSON 对象/数组和 quoted API key/Token,同样排除;已隐藏的 JSON 认证字段不删掉后面的非敏感业务原因。实际错误仍返回,原原因保留。非法 JSON、无法安全展开的嵌套数据或部分读取不能退回打印未经处理的正文:输出 `redaction_error`、字节数及 SHA-256。HTTP `body_complete=false` 只表示已观测部分,不能把它当作完整网络正文;原读取/关闭错误继续返回,不因日志改变重试、确认或业务结果。