dsh-calibguard 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +44 -27
- package/README.md +44 -26
- package/cordis.patch.yml +2 -1
- package/docs/configuration.md +2 -2
- package/docs/troubleshooting.md +2 -1
- package/engine/README.md +33 -0
- package/engine/audit_service.py +304 -0
- package/engine/calibguard/__init__.py +2 -0
- package/engine/calibguard/__main__.py +4 -0
- package/engine/calibguard/calibrator.py +78 -0
- package/engine/calibguard/cli.py +74 -0
- package/engine/calibguard/config.py +129 -0
- package/engine/calibguard/constants.py +117 -0
- package/engine/calibguard/feature_extractor.py +161 -0
- package/engine/calibguard/gate.py +17 -0
- package/engine/calibguard/llm_analyzer.py +171 -0
- package/engine/calibguard/model.py +79 -0
- package/engine/calibguard/pipeline.py +305 -0
- package/engine/calibguard/preprocessor.py +218 -0
- package/engine/calibguard/report.py +132 -0
- package/engine/calibguard/schemas.py +53 -0
- package/engine/models/calibration_params.json +1 -0
- package/engine/models/codebert_finetuned/config.json +28 -0
- package/engine/models/codebert_finetuned/merges.txt +50001 -0
- package/engine/models/codebert_finetuned/special_tokens_map.json +51 -0
- package/engine/models/codebert_finetuned/tokenizer.json +250371 -0
- package/engine/models/codebert_finetuned/tokenizer_config.json +58 -0
- package/engine/models/codebert_finetuned/vocab.json +1 -0
- package/engine/requirements-gui.txt +11 -0
- package/lib/bootstrap.js +4 -3
- package/lib/client.js +1 -1
- package/lib/config.js +34 -7
- package/lib/engine.js +1 -1
- package/lib/index.js +1 -1
- package/package.json +4 -3
- package/setup.mjs +278 -48
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"""CalibGuard 全局数据结构定义。本文件无任何业务逻辑。"""
|
|
2
|
+
from dataclasses import dataclass, field
|
|
3
|
+
from enum import Enum
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class GateDecision(str, Enum):
|
|
7
|
+
"""门控路由决策。"""
|
|
8
|
+
ALLOW = "allow" # 放行
|
|
9
|
+
BLOCK = "block" # 拦截告警
|
|
10
|
+
LLM_REVIEW = "llm_review" # 提交云端 LLM 分析
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@dataclass
|
|
14
|
+
class PreprocessResult:
|
|
15
|
+
"""预处理结果。"""
|
|
16
|
+
text: str # 预处理并清洗后的统一文本(可能较长,token 截断在模型层进行)
|
|
17
|
+
source_type: str # "text" | "archive" | "binary"
|
|
18
|
+
truncated: bool # True 表示字节级读入截断(>1MB)或解包截断发生过
|
|
19
|
+
parts: int = 1 # 压缩包内部文件数;非压缩包恒为 1
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@dataclass
|
|
23
|
+
class FeatureEvidence:
|
|
24
|
+
"""特征提取产出的结构化证据。每个列表字段:去重、按首次出现顺序、最多 10 条。"""
|
|
25
|
+
dangerous_apis: list[str] = field(default_factory=list) # 危险 API 调用
|
|
26
|
+
network_indicators: list[str] = field(default_factory=list) # 网络行为
|
|
27
|
+
credential_access: list[str] = field(default_factory=list) # 凭据与敏感路径访问
|
|
28
|
+
obfuscation_signals: list[str] = field(default_factory=list) # 编码与混淆
|
|
29
|
+
file_operations: list[str] = field(default_factory=list) # 可疑文件操作
|
|
30
|
+
injection_phrases: list[str] = field(default_factory=list) # 提示注入话术
|
|
31
|
+
high_entropy_strings: list[str] = field(default_factory=list) # 高熵字符串(最多 10 条)
|
|
32
|
+
long_line_numbers: list[int] = field(default_factory=list) # 超长行行号(1 起,最多 10 个)
|
|
33
|
+
random_identifier_count: int = 0 # 长随机标识符总数(达到阈值才>0)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@dataclass
|
|
37
|
+
class LLMResult:
|
|
38
|
+
"""云端 LLM 分析结果。"""
|
|
39
|
+
status: str # "ok" | "invalid_output" | "api_error"
|
|
40
|
+
risk: str | None = None # "high" | "medium" | "low",失败时为 None
|
|
41
|
+
reason: str | None = None
|
|
42
|
+
action: str | None = None
|
|
43
|
+
consistency_warning: bool = False # 本地概率高但 LLM 判 low 时为 True
|
|
44
|
+
retries_used: int = 0 # 实际发生重试的次数(0 或 1)
|
|
45
|
+
raw_response: str | None = None # 最后一次 API 原始返回文本(调试用,报告必含)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@dataclass
|
|
49
|
+
class WindowInferenceStats:
|
|
50
|
+
"""滑动窗口推理统计(v1.1 新增)。"""
|
|
51
|
+
windows_evaluated: int = 0 # 实际完成推理的窗口数
|
|
52
|
+
early_stopped: bool = False # 是否触发早停
|
|
53
|
+
early_stop_probability: float | None = None # 触发早停时的窗口校准概率
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"A": -1.0332483500324428, "B": 0.7344078473521912, "method": "platt", "n_samples": 25049, "fit_at": "2026-10-03T19:35:34.589148+08:00"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"architectures": [
|
|
3
|
+
"RobertaForSequenceClassification"
|
|
4
|
+
],
|
|
5
|
+
"attention_probs_dropout_prob": 0.1,
|
|
6
|
+
"bos_token_id": 0,
|
|
7
|
+
"classifier_dropout": null,
|
|
8
|
+
"dtype": "float32",
|
|
9
|
+
"eos_token_id": 2,
|
|
10
|
+
"hidden_act": "gelu",
|
|
11
|
+
"hidden_dropout_prob": 0.1,
|
|
12
|
+
"hidden_size": 768,
|
|
13
|
+
"initializer_range": 0.02,
|
|
14
|
+
"intermediate_size": 3072,
|
|
15
|
+
"layer_norm_eps": 1e-05,
|
|
16
|
+
"max_position_embeddings": 514,
|
|
17
|
+
"model_type": "roberta",
|
|
18
|
+
"num_attention_heads": 12,
|
|
19
|
+
"num_hidden_layers": 12,
|
|
20
|
+
"output_past": true,
|
|
21
|
+
"pad_token_id": 1,
|
|
22
|
+
"position_embedding_type": "absolute",
|
|
23
|
+
"problem_type": "single_label_classification",
|
|
24
|
+
"transformers_version": "4.57.6",
|
|
25
|
+
"type_vocab_size": 1,
|
|
26
|
+
"use_cache": true,
|
|
27
|
+
"vocab_size": 50265
|
|
28
|
+
}
|