用途
ln-627-diagnosability-auditor 是一个 L3 Worker 类型的专用审计技能,用于审计运维人员能否诊断线上事故,即评估系统的可诊断性(Diagnosability)。它属于审计类别中的第 10 类(中等优先级)。
该技能会检查结构化日志、指标(metrics)、追踪(tracing)、关联 ID(correlation IDs)以及日志级别,并输出 ADD_DIAGNOSTIC_SIGNAL、STRUCTURE_LOGS 或 PROPAGATE_CORRELATION 三类动作建议,同时计算合规评分(X/10)。
主要能力
技能包含五项审计检查:
-
结构化日志:通过 grep 检测 console.log 等非结构化日志,检查是否使用 winston、pino、logrus、zap 等日志库。生产代码使用 console.log 为 MEDIUM 严重度,开发代码为 LOW。建议使用结构化日志库,工作量 M。
-
关联 ID:检查是否存在请求 ID / 关联 ID 中间件,验证 ID 是否出现在日志中并传播到出站调用。请求处理型服务缺少关联 ID 为 MEDIUM。建议添加请求 ID 中间件并在结构化日志中包含关联 ID,工作量 M。
-
指标采集:检查是否使用 Prometheus client、StatsD、CloudWatch,grep 指标记录(histogram、counter)。无指标埋点为 MEDIUM。建议添加 Prometheus 指标,工作量 M。
-
请求追踪:检查日志中的关联 ID,验证追踪传播(OpenTelemetry、Zipkin)。无关联 ID 为 MEDIUM。建议添加请求 ID 中间件,工作量 M。
-
日志级别:检查日志库是否支持级别(info、warn、error、debug),验证级别使用是否恰当。仅有 error 日志为 LOW。建议添加 info/debug 日志,工作量 S。
使用方式
技能接收包含技术栈、框架、代码库根目录和 output_dir 的 contextStore。工作流程为:解析上下文与 output_dir;判断项目类型(Web 服务、CLI 工具或库,并据此调整适用检查);通过 grep 进行第一层候选扫描;对每个候选进行第二层上下文验证;收集确认的发现;计算评分;生成报告。
报告写入 {output_dir}/ln-627--global.md,类别为 "Diagnosability",检查项为 structured_logging、correlation_ids、metrics_collection、request_tracing、log_levels。摘要按 audit_summary_contract.md 输出;在独立模式下写入 .hex-skills/runtime-artifacts/runs/{run_id}/evaluation-worker/{worker}--{identifier}.json。
工具策略上,默认优先使用 hex-line MCP 进行文件读取、搜索和编辑;当追踪、调用路径或跨文件引用对审计有实质帮助时优先使用 hex-graph。若 MCP 不可用、不支持或未建立索引,则回退到内置 Read/Grep/Glob/Bash,并在报告中说明回退情况。
适用场景
适用于审计事故可见性,尤其是需要评估服务是否具备足够诊断信号时。对 Web 服务所有检查均适用;对 CLI 工具,健康检查/探针不适用;对库,大多数检查为可选。微服务架构下请求追踪尤为关键,单体架构需求较低。
限制
该技能只报告,不自动修复,不会注入日志或端点。检测需结合框架(Node 用 winston/pino,Go 用 logrus/zap 等)。工作量估算:S = 小于 1 小时,M = 1-4 小时,L = 大于 4 小时。排除项:跳过测试文件中的 console.log 检测,跳过仅开发用脚本。严重度需结合上下文:生产代码中的 console.log 为 MEDIUM,开发工具中为 LOW。该技能仅审计诊断信号,存活/就绪探针和关闭行为属于生命周期/配置审计。每条发现必须使用 ADD_DIAGNOSTIC_SIGNAL、STRUCTURE_LOGS 或 PROPAGATE_CORRELATION 动作。
版本:3.0.0,最后更新:2025-12-23。