Releases: DannyAn/SecGuardian
Releases · DannyAn/SecGuardian
Release list
v0.18.0
[0.18.0] — 2026-07-09
🔁 OOP 语义索引引擎 (EPIC-008)
- tree-sitter OOP 修复: C++
class_specifier→class_body→method_declaration行走;Pythonfunction_definition+findBody/extractCallSites修复;Gofunction_declaration/method_declaration修复 - OOP 元数据:
CallSite新增ReceiverExpr/ReceiverType—obj.method()的接收者表达式追踪 - 单文件局部类型推断: Java 符号表追踪 import/field/variable 类型 →
conn.executeQuery()可推断conn为java.sql.Connection - Signal Matrix (S1-S4):
StringLiteral/Declaration/ValueConstant信号类型 + 自动分类启发式
🧱 Skill 架构重构
- 统一 rules/ 格式: C++ 15 检测器 + Go 10 + Java 10 + JS 12 + Python 11 = 58 个规则文件全部从旧
SKILL.md+references/迁移到rules/{skill}/rule.md单一数据源 - Detection Spec 前端: 每个 rule.md 的 YAML frontmatter 含
detection_spec(severity/CWE/call_sites/evidence/impact/fix),validate-findings.py --check-spec交叉校验 - 知识目录重整:
knowledge/guard-rules/40 个平铺文件 →knowledge/standards/+protocols/+language-index.md - 平台命令目录:
commands/根级 4 文件 →commands/{claude,gemini,opencode}/平台子目录
🛡️ OpenCode 模板修复
- HARD RULE 唯一 canonical 记录流: 砍掉 5 种混用记录方式,只保留
写 JSON 文件 → --from-file一条路径 - record-finding.py 幂等守卫: 相同
(detector:file:line:cwe)SHA 二次写入自动IDEMPOTENT_SKIP,消除 LLM 恐慌重试循环 - 移除 zsh 替代方案: 删除
python3 -c+subprocess.run内联记录器调用(根因:导致重复录制)
⚙️ 工具链提升
- init-scan.sh: 3 个命令 ~120 行重复 bash → 15 行共享脚本
- dev-verify.sh: 对接新 11-skill 结构(从 27 减至 11)
- render-report.py: SARIF 2.1.0 输出 + findings_index 聚合 + score 计算修正
- validate-findings.py:
--check-spec(Detection Spec cross-validation) +--list(表格输出)
v0.17.0
[0.17.0] — 2026-07-07
♻️ Detection Spec Schema Unification
- Frontmatter 单一数据源: 85 个规则文件的
## Detection Spec JSON block全部合并到 YAML frontmatter,消除两张皮 - validate-findings.py --check-spec: 改为解析 YAML frontmatter 而非 JSON block,字段匹配(
criticalvsCritical)自动归一化 - self-check.sh §14: 从
@secguardian:detection-spec标记检查改为前端字段完整性检查 - 移除 generate-detection-specs.py: 不再需要独立生成脚本
📦 6 Commit 历史拆分
- 将原 163 文件单一大 commit 拆为 6 个逻辑独立的提交(docs / strip-scripts / stripped-demos / spec / pre-filter / refactor),便于 Review 和回滚
v0.16.0
[0.16.0] — 2026-07-07
🧠 Language-Aware Pre-Filter & Answer-Card Independence
语言感知预筛修复(EPIC-006/FEATURE-003)
- secguard.md 3c.5: C/C++ 函数名精确匹配跳过无关检测器 / Java/Python/Go/JS 全量加载确保不漏检(修复 ses_0c48 只跑 12/34 检测器的问题)
- secaudit.md 3.1 / secreview.md 3a: 同上修复,统一语言感知策略
- OO 语言全量加载指令: 明确禁止 AI 自主裁定"哪些可能匹配",必须加载该语言全部检测器
- 批量加载优化: OO 语言在一次 bash 调用中批量加载全部检测器规则(约 2K token),避免逐文件
cat的开销
答案卡脱敏增强
- strip-answer-cards.py: 覆盖 7 类标注模式(VULNERABILITY/CWE/BAD/TP/P0-P3、中文"真漏洞"/"Detector 标记"/"← 标记"),支持 // # /** 三种注释风格 + 行内/整行两种模式
- 5 语言脱敏验证集:
examples/*-vuln-demo-no-answers/— 克隆+批量脱敏 51 个源码文件,554 行答案卡剥离,0 残留 examples/strip-all-demos.py: 可重复使用的批量脱敏脚本
全语言验证扫描(脱敏副本,0 答案卡)
- Java: 22 findings (11C/9H/2M), 18 种检测器命中
- Go: 31 findings (17C/11H/3M), 20 种检测器命中
- Python: 30 findings (12C/15H/3M), 20 种检测器命中
- JavaScript: 72 findings (25C/39H/7M), 21 种检测器命中
- C/C++: 47 findings (18C/19H/10M), 29 种检测器命中(函数名预筛跳过 38 个无关检测器)
- 安全代码正确识别: p0_safe*/p1_safe*/p2_counter_evidence 系列全部 0 发现 ✓
其他
- Detection Spec: 67 guard-rules + 13 audit-rules + 5 review-rules 全部添加 Detection Spec JSON 块
- validate-findings.py: 新增
--check-spec跨验证模式
v0.15.1
[0.15.1] — 2026-07-07
🔧 Release Script Consolidation & Docs Restructure
版本发布脚本重构
- 单入口 release.sh — 删除
github-release.sh,统一release.sh为唯一入口。bash scripts/release.sh v0.x.y走天下,需要 Gitee 加--gitee - gitee-release.sh 修复 — 产物目录 bug 修正 (
dist/release/而非dist/release/$VERSION/) - sync-version.sh 补充 — 覆盖
secfix-secguardian/extension.json
AI Agent 文档重构
- AGENTS.md 定为规范来源 — 标为"全部 AI Agent 的规范来源",CLAUDE.md 和 GEMINI.md 降级为薄引用层
- CLAUDE.md 从 377 行缩减至 85 行 — 仅保留插件注册机制、命名空间策略、部署结构
- GEMINI.md 从 282 行缩减至 49 行 — 仅保留命令用法、扫描输出、部署位置
- DEVELOPER.md 存档旧发布流程 — 标记"以 AGENTS.md 为准"
- 所有共享内容(架构/SDD/构建/验证/发布)改为引用 AGENTS.md
版本发布流程
- L1 设计一致性: 通过 ✅
- L4 架构端到端: 通过 ✅
- 全平台部署: Claude Code + OpenCode + Gemini CLI ✅
v0.15.0
[0.15.0] — 2026-07-07
🐛 Bugfix: Release Sprint — 4 Systemic Issues Resolved
Renderer Circular Dependency Fix (v5.0 findings-dir mode)
--scan-idCLI 参数 — 新增 render-report.py CLI 参数,在 findings.json 元数据尚未生成时(v5.0 首次运行),由命令模板直接传入 scan_id,消除scan_id: "unknown"bug- detectors 自动计算 — 从 in-memory findings 列表自动推导
detectors_matched/detectors_executed,消除detectors: 0bug --path/--languageCLI 参数 — 新增 render-report.py 参数,允许命令模板传入扫描路径和语言- UnboundLocalError —
findings在赋值前被引用导致的崩溃,将 auto-compute 块移至赋值之后
模板可靠性修复
$0漏洞 —$(realpath "$0")在 AI 复制到 JSON tool call 时扩展为realpath "python"(语言参数泄漏),移除该不可靠探针路径,保留 4 条硬编码路径
E2E 测试加固
- Section 12 mock 修复 — dashboard.html DOCTYPE + Severity 断言通过,report.md mock 创建
全平台部署已验证
- L1 设计一致性: 152/152 ✅
- L2 结构完整性: 通过 ✅
- L3 部署环境: 5 平台二进制通过 ✅
- L4 架构端到端: 56/56 ✅
- 全平台部署: Claude Code + OpenCode + Gemini CLI ✅
OpenCode 权限弹窗修复
- 根因:
knowledge/languages/{lang}.md模板中缺少加载指令,AI 使用read的绝对路径触发 OpenCode 外部目录权限弹窗 - 修复: 在 secguard §3b 和 secreview §3 添加显式 bash
cat指令从本地.codeagent/拷贝加载,不涉及 read 工具
v0.14.0
[0.14.0] — 2026-07-06
🐛 Bugfix: Systemic Fixes from Production Bug Report
SECGUARDIAN_HOME 自动发现 (OpenCode 修复)
- 绝对路径搜索 — 3 条命令统一使用
$HOME/.claude/plugins/secguardian、$HOME/.config/opencode/extensions/secguardian等绝对路径探针 - 探针从
.secguardian-env改为record-finding.py— 文件是否存在判断更可靠 - 发现失败时终止 — 输出具体搜索路径,不再静默退化
.scan_state 命名空间隔离 (Cross-Contamination 修复)
- 每条命令使用独立文件:
.scan_state.secguard/.scan_state.secreview/.scan_state.secaudit - 消除 secreview 执行残留污染 secguard 上下文的 bug
反委托规则 (Sub-Agent Bypass 修复)
- 3 条命令添加
🚫 禁止将检测执行委托给子代理 (NON-NEGOTIABLE) - MiniMax 2.7 委托子代理 → 绕过索引器全量 grep 642 文件的漏洞修复
c 语言支持修复
knowledge/language-index.md新增## c节(与## cpp等价)scripts/validate-index.py纯.c/.h目录报告c而非cppscripts/sync-language-index.shreview-rules fallbackc→cpp
脚本路径规范化
- 修复 6 处 bare
python3 scripts/调用,改为$SECGUARDIAN_HOME/scripts/ - 修复
/tmp/临时文件使用,改为$SCAN_DIR/ - 修复 Step 2a "同变量检查两次" bug
- 修复
render-report.pydatetime.utcnow()弃用警告
L1 验证增强
- Section 12 模板静态分析 — 6 项检查 × 3 条命令,直接捕获上述所有 bug 模式
scripts/self-check.sh通过数从 82 项增至 139 项- 修复
main.go版本号滞后问题 (0.12.0 → 0.14.0)
文件改动
commands/secguard.md,commands/secaudit.md,commands/secreview.md— 系统性修复commands/secfix.md—.scan_state文档修正scripts/self-check.sh— Section 12 新增scripts/validate-index.py,scripts/sync-language-index.sh— c 语言支持knowledge/language-index.md— 自动重新生成internal/main.go— 版本同步manifest.json+ 4 ×extension.json— 版本同步