跳转至

灵族安全策略

版本: v1.0 日期: 2026-04-13 维护: 灵通(LingFlow)


一、总体架构

灵族安全体系采用八层纵深防御架构,覆盖从代码提交到运行时的全生命周期:

Layer 1: Pre-commit Hooks    → bandit、eval/exec/os.system 检查
Layer 2: AST 静态分析        → 执行前代码扫描(危险导入、注入、无限循环)
Layer 3: Guardrail 防护栏    → AGCEF 七步验证 + 部署门控(≥80分自动通过)
Layer 4: SkillSandbox 沙箱   → 进程隔离、资源限制、模块/内置白名单
Layer 5: Trust 信任框架      → 四级验证 + Skeptic 自审 + 元认知 + 事实核查
Layer 6: 审计日志            → 技能执行/配置变更/越权访问全记录
Layer 7: 铁律                → 6条不可变执行规则 + 违规记录
Layer 8: 宪章                → 五原则(自觉/自决/进化/共生/绚烂)

二、关键机制

机制 说明
白名单制 沙箱模块、内置函数均为白名单——默认拒绝,而非默认允许
HMAC 签名 跨 agent 通信使用 HMAC-SHA256 签名(SEC-ID-001)
进程隔离 技能代码在独立进程中运行,超时自动 terminate → kill 升级
元认知门控 任务执行前必须声明能力等级,不足则拒绝启动
Skeptic 自审 AI 声明经自动化质疑机制验证,带置信度评分
数据真实性 任何 UI 字段必须回答"数据来源"和"谁更新它"

三、各层详解

Layer 1: Pre-commit 安全钩子

钩子 作用
bandit 安全 linter,扫描 lingflow/
check-eval-usage 检测不安全的 eval() 调用
check-os-system 检测 os.system() 调用,建议用 subprocess.run()
check-added-large-files 限制文件大小 500KB
debug-statements 捕获残留的 pdb/breakpoint

Layer 2: AST 安全分析器

基于 Python AST 的静态代码分析,执行前扫描:

检查项 严重级别
非白名单导入 CRITICAL
危险内置函数(eval/exec/compile/open/import CRITICAL
危险模块访问(os.system/subprocess/socket/pickle) CRITICAL
危险属性(dict/class/globals/code HIGH
while True 循环 HIGH
f-string 代码注入 CRITICAL
字符串拼接绕过尝试 HIGH
裸 except 子句 MEDIUM

Layer 3: Guardrail 防护栏

AGCEF 七步验证协议:

  1. 语法检查 — AST 解析、缩进、行长度
  2. 策略匹配 — 硬编码密码/密钥、SQL 注入、XSS、弱加密、调试信息
  3. 语义检查 — 裸 except、exec/eval、缺失 docstring
  4. 风险评估 — 加权评分(策略40%、语义30%、风险20%、语法10%)
  5. 合规检查
  6. 部署门控 — ≥80 自动通过,50-80 人工审查,<50 拒绝
  7. 审计记录

Layer 4: SkillSandbox 沙箱

进程级隔离执行环境:

  • 进程隔离: multiprocessing.Process 独立进程
  • 超时: 默认 30s,可配置
  • 内存限制: 默认 100MB
  • 递归深度: 最大 100 层
  • 循环迭代: 最大 1,000,000 次
  • 超时处理: terminate → kill 升级策略

模块白名单(四层):

层级 允许的模块
SAFE_CORE typing, dataclasses, datetime, math, json, collections, functools, itertools, hashlib, re, csv
SAFE_IO pathlib, os.path, json, yaml, importlib
SAFE_RUNTIME logging, asyncio, threading, queue
SAFE_LINGFLOW lingflow.trust

内置函数白名单: abs, all, any, bool, dict, enumerate, filter, float, int, isinstance, len, list, map, max, min, range, reversed, round, set, sorted, str, sum, tuple, zip(共 22 个)

Layer 5: Trust 信任框架

四级验证管道:

SYNTAX → SEMANTIC → INTENT → BOUNDARY
组件 功能
FileContentVerifier 文件内容验证
CommandOutputVerifier 命令输出验证
DirectoryStructureVerifier 目录结构验证
GitDiffVerifier Git 差异验证
Skeptic 自审机制——质疑 AI 声明,带置信度评分
CapabilityTracker 元认知——能力等级跟踪(MASTERED/PARTIAL/FAMILIAR/UNKNOWN)
FactChecker 事实核查——防止基础设施幻觉

Layer 6: 审计日志

事件类型 方法
技能执行 log_skill_execution()
配置变更 log_config_change()
越权访问 log_access_violation()
沙箱违规 log_sandbox_violation()
权限拒绝 log_permission_denied()

日志轮转: 10MB/文件,保留 5 份备份。

Layer 7: 铁律

六条不可变执行规则 + 一条元铁律:

# 铁律 说明
1 先验证再断言 没有验证就说等于撒谎
2 客户需求是根节点 偏离 = 零容忍
3 遗忘前做反事实推理 基于拓扑,非时间
4 先学现成方案 不要重新发明轮子
5 生态智慧 知道兄弟们有什么工具
6 充分理解再动手 急躁 = 浪费

元铁律: 先确认再行动。

违规记录存入 lingflow/trust/violations/,含根因分析。

Layer 8: 宪章

五条宪章原则,约束所有灵族成员行为:

  • 自觉: 知道自己知道什么、不知道什么
  • 自决: 看到问题就行动,但不是越权
  • 进化: 每个 bug 指向一个防御缺口
  • 共生: 通过显式协议协作
  • 绚烂: 统一的宪法,不统一的思想

四、安全基线(9 项)

ID 类别 规则
SEC-ID-001 身份认证 HMAC-SHA256 跨 agent 签名
SEC-CMD-001 命令执行 白名单制,非黑名单
SEC-CRED-001 凭据管理 chmod 600 + 环境变量
SEC-AUTH-001 网络认证 API Key + CORS
SEC-MCP-001 MCP 工具安全 LOW→CRITICAL 风险分级
SEC-CFG-001 配置隔离 爆炸半径控制
SEC-EXEC-001 执行惯性 硬中断 + 重启循环检测
SEC-DATA-001 数据完整性 已验证的数据必须真正被验证
SEC-MON-001 监控 审计日志 + 异常检测

五、已知风险与待改进项

基于 v3.3.0+ 深度审计:

优先级 问题 状态
P0 沙箱 exec() 逃逸风险 需加固
P0 conditional-branch 双重 eval() 需移除
P1 SAFE_BUILTINS 嵌套字典结构错误 需修复
P1 测试代码中的 SQL 注入示例 需标记
P1 危险模式的字符串匹配绕过 改用 AST
P1 序列化测试中的 pickle.dumps 改用 JSON
P2 subprocess.run 参数验证 需白名单
P2 超时时进程树未完全终止 需用进程组
P2 YAML 配置缺少类型验证 需加 schema

缺失措施: 依赖扫描、密钥管理、输入验证增强。

已完成的跨 Agent 安全改进 (2026-04-13)

以下改进由灵通主导,覆盖 LingFlow 和 LingFlow_plus:

429 限流策略加固

改进 说明
_RetryDecision 数据类 统一 call()call_stream() 的重试决策逻辑
_handle_retryable_error() 共享错误分派器,消除 200+ 行重复代码
status_code 属性检查 _is_rate_limit_error() / _is_quota_error() / _is_auth_error() 现在检查异常的 status_code 属性,不再仅依赖错误消息字符串
_extract_error_body() 统一从异常中提取错误体(支持 dict / str / None)
诊断日志 429 分类路径添加 logging,便于运行时验证

死代码清理

删除文件 原因
lingflow_plus/glm_retry.py 从未被生产代码导入,llm_client.py 有自有的内联重试逻辑
lingflow/utils/rate_limiter.py 从未被 LingFlow 任何模块导入,constraints.py 有实际使用的 RateLimiter
5 个孤立测试文件 对应已删除模块的测试

TokenEstimator 集成

文件 改动
lingflow_plus/coordinator.py _estimate_tokens 改用 TokenEstimator.count_tokens()(tiktoken cl100k_base)
lingflow_plus/scheduler.py _post_dispatch 的 token 消耗记录改用 TokenEstimator 替代 len(text) * 4

len(text) * 4 启发式估算偏差大(单字符文本如 "a" * 100 估算 400 tokens,实际 ~13 tokens)。tiktoken 提供更精确的计数。

任务级错误隔离

文件 改动
lingflow/coordination/coordinator.py _execute_one_task() 添加 try/except,防止 agent 异常穿透 asyncio.gather
lingflow/coordination/coordinator.py _process_task_results() 将裸异常转为 TaskResult(success=False),不再静默丢弃

修复前:单个 agent 异常会导致 orchestrator 的 while 循环条件 len(completed) + len(failed) < len(tasks) 永远无法满足,造成挂起。


六、相关文档

文档 路径
安全策略 SECURITY.md
沙箱实现 lingflow/common/sandbox.py
AST 安全分析器 lingflow/common/security_analyzer.py
防护栏 lingflow/guardrail/__init__.py
信任框架 lingflow/trust/verifier.py
元认知 lingflow/trust/metacognition.py
事实核查 lingflow/trust/fact_checker.py
违规记录器 lingflow/trust/violation_recorder.py
审计日志 lingflow/common/audit_logger.py
铁律 docs/IRON_LAWS.md
宪章 docs/CHARTER.md
安全审计报告 docs/SECURITY_AUDIT_REPORT.md
深度审计报告 docs/reports/audits/SECURITY_AUDIT_REPORT.md