Opengovernment(智慧城市) v0.0.3 攻防一体的智能体主动网络安全平台:ActiveCybersecurity v0.2

------ 从 LLM 驱动主动防御,到"合法反制"智能体,再到 IPP 统一协议架构

当一个安全平台既能让 AI Agent 像安全专家一样审计你的系统,又能对已确认的攻击者执行"只打自己家"的合法反制,它就不再是传统意义的 EDR,而是一个攻防一体的主动网络防御平台。


参考:OpenGovernment v0.0.2 AI Agent 驱动的下一代主动网络防御平台:当大语言模型成为你的安全专家

📖 目录

  • [1. 引言:从"会防御"到"会反击"](#1. 引言:从"会防御"到"会反击")
  • [2. 平台总览:三个服务 · 三层防御 · 一个进攻翼](#2. 平台总览:三个服务 · 三层防御 · 一个进攻翼)
  • [3. 核心架构(一):IPP 信息处理协议 ------ 统一一切组件的抽象内核](#3. 核心架构(一):IPP 信息处理协议 —— 统一一切组件的抽象内核)
  • [4. 核心架构(二):去中心化数据库与进程级隔离](#4. 核心架构(二):去中心化数据库与进程级隔离)
  • [5. 更新的主动防御模块(v0.2):从规则引擎到 AI 专家](#5. 更新的主动防御模块(v0.2):从规则引擎到 AI 专家)
  • [6. 主动进攻模块(v0.2 核心新增):合法主动防御的智能体化](#6. 主动进攻模块(v0.2 核心新增):合法主动防御的智能体化)
  • [7. 流式 Agent 对话:ChatGPT 式的实时推理过程](#7. 流式 Agent 对话:ChatGPT 式的实时推理过程)
  • [8. 实战演示:从发现到反制的攻防全流程](#8. 实战演示:从发现到反制的攻防全流程)
  • [9. 工程合规:许可策略与安全边界](#9. 工程合规:许可策略与安全边界)
  • [10. 演进路线与未来展望](#10. 演进路线与未来展望)
  • [11. 总结](#11. 总结)

1. 引言:从"会防御"到"会反击"

在过去一年多里,我们见证了 AI Agent 在网络安全领域的两条演进主线:

复制代码
第一代(2026-07 之前):被动防御
  数据采集 → 硬编码规则匹配 → 告警 → 人工研判 → 人工处置

第二代(2026-07):LLM 驱动的主动防御
  数据采集 → AI Agent 自主分析 → LLM 研判误报 → 深度取证

第三代(2026-08,v0.2):攻防一体
  防御发现 → LLM 确认攻击者 → 合法反制智能体执行反击
  (封禁、沉洞、滥用举报、蜜罐拖延)+ 全过程审计留证

ActiveCybersecurity 平台在 v0.1 系列完成了"三层递进式 AI 防御体系"(标准检查 → Agentic 深度审计 → 高级取证),并在 v0.2 系列实现了一次架构级的跃迁:

v0.2 新增/升级 具体内容
⚔️ 主动进攻翼 agentic_offense(Strike 反制智能体)+ cyberoffensetools(反制工具箱 + 进攻门户)
🧬 IPP 统一框架 全新 ipp/ 包:MCP / ACP / KGP / RP 四个对等协议,统一一切组件
🗄️ 去中心化数据库 SQLite 独立进程 + WAL + 线程局部读连接,8 读 + 4 写并发压测零错误
🖥️ 去中心化层 每一层检查都在独立子进程中运行,互不阻塞
💬 流式 Agent 对话 前端实时渲染"思考 → 工具调用 → 最终结论"的完整过程
🤖 双 Agent 体系 Aegis(防御,read-only)+ Strike(进攻,合法反制)

本文将以源码级视角,重点拆解主动进攻模块 的设计与实现,同时回顾更新后的主动防御模块 ,最后剖析把两者粘合在一起的平台架构(IPP 协议框架 + 去中心化数据库 + 三服务 UI 拓扑)。


2. 平台总览:三个服务 · 三层防御 · 一个进攻翼

python run_ui.py 一条命令即可启动整个平台,它实际拉起 3 个服务

服务 地址 角色
🛡️ 防御仪表盘 http://127.0.0.1:8765 主 SPA------三层防御、Agentic 对话、统一发现表
⚔️ 进攻门户 http://127.0.0.2:8766 反制门户(注意是 127.0.0.2 回环地址,与防御侧隔离)
🗄️ 数据库服务器 http://127.0.0.1:8767 独立进程的 SQLite(WAL、JSON-RPC、自动拉起)

#mermaid-svg-IuDN2yGyY6Jwb0Ld{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-IuDN2yGyY6Jwb0Ld .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .error-icon{fill:#552222;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .marker{fill:#333333;stroke:#333333;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .marker.cross{stroke:#333333;}#mermaid-svg-IuDN2yGyY6Jwb0Ld svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-IuDN2yGyY6Jwb0Ld p{margin:0;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .cluster-label text{fill:#333;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .cluster-label span{color:#333;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .cluster-label span p{background-color:transparent;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .label text,#mermaid-svg-IuDN2yGyY6Jwb0Ld span{fill:#333;color:#333;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .node rect,#mermaid-svg-IuDN2yGyY6Jwb0Ld .node circle,#mermaid-svg-IuDN2yGyY6Jwb0Ld .node ellipse,#mermaid-svg-IuDN2yGyY6Jwb0Ld .node polygon,#mermaid-svg-IuDN2yGyY6Jwb0Ld .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .rough-node .label text,#mermaid-svg-IuDN2yGyY6Jwb0Ld .node .label text,#mermaid-svg-IuDN2yGyY6Jwb0Ld .image-shape .label,#mermaid-svg-IuDN2yGyY6Jwb0Ld .icon-shape .label{text-anchor:middle;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .rough-node .label,#mermaid-svg-IuDN2yGyY6Jwb0Ld .node .label,#mermaid-svg-IuDN2yGyY6Jwb0Ld .image-shape .label,#mermaid-svg-IuDN2yGyY6Jwb0Ld .icon-shape .label{text-align:center;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .node.clickable{cursor:pointer;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .arrowheadPath{fill:#333333;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-IuDN2yGyY6Jwb0Ld .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-IuDN2yGyY6Jwb0Ld .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-IuDN2yGyY6Jwb0Ld .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .cluster text{fill:#333;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .cluster span{color:#333;}#mermaid-svg-IuDN2yGyY6Jwb0Ld div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-IuDN2yGyY6Jwb0Ld rect.text{fill:none;stroke-width:0;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .icon-shape,#mermaid-svg-IuDN2yGyY6Jwb0Ld .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .icon-shape p,#mermaid-svg-IuDN2yGyY6Jwb0Ld .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .icon-shape .label rect,#mermaid-svg-IuDN2yGyY6Jwb0Ld .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-IuDN2yGyY6Jwb0Ld .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-IuDN2yGyY6Jwb0Ld .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-IuDN2yGyY6Jwb0Ld :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 🧬 ipp/ 框架 (v0.2)
⚔️ 主动进攻
🛡️ 主动防御 (三层递进)
🖥️ run_ui.py (Process 1 · ThreadingHTTPServer)
🛡️ 防御仪表盘 :8765

系统头/风险条/行动卡/Agentic对话/发现表
⚔️ 进攻门户 iframe :8766

(Strike Console / 目标表 / 审计日志)
💬 Agentic Chat /api/agent/*
Tier 1 standard_check

5 层快速扫描 ~2min · L1
Tier 2 agentic_check

9 层 + LLM 审查 ~5min · L2
Tier 3 advanced_check

8 取证模块 ~10min · L3
cyberoffensetools

StrikeEngine + 5 工具
agentic_offense

Strike Agent · 15 武器
ToolRegistry (MCP)

4 阶段管线
AgentRegistry (ACP)

defense / offense
KnowledgeGraphAPI (KGP)

攻防共享知识图谱
ReferenceManager (RP)

威胁情报引用
HookSystem · 9 生命周期事件
🗄️ database/server.py

Process 2 · :8767 · SQLite WAL

平台的核心设计哲学可以总结为三句话:

  1. 一切皆 IPP ------工具、智能体、知识图谱、数据库、甚至防御检查层,都被建模为统一的信息变换 IPP = (Input, Compute, Output)
  2. 一切皆独立进程------数据库、每个检查层、每个工具脚本都拥有自己的进程,天然免疫单点故障;
  3. 攻防共享一张图------防御层确认的攻击者、进攻层执行的反制动作,全部沉淀到同一个知识图谱(KGP)与审计日志中,形成完整证据链。

3. 核心架构(一):IPP 信息处理协议 ------ 统一一切组件的抽象内核

详见:本地 AI 编程智能体的自洽架构:Codex Local 中信息处理协议(IPP)统一框架的设计与实现

3.1 IPP = (Input, Compute, Output) 与组合闭包

IPP 将平台上每一个计算单元(LLM Provider、Agent 引擎、工具、知识图谱、参考库)抽象为纯信息变换:

python 复制代码
@dataclass
class IPPInput:
    payload: Any = None
    meta: Dict[str, Any] = field(default_factory=dict)

@dataclass
class IPPOutput:
    ok: bool = True
    payload: Any = None
    error: Optional[str] = None
    meta: Dict[str, Any] = field(default_factory=dict)

class IPP(abc.ABC, Generic[I, O]):
    @abc.abstractmethod
    def compute(self, inp: IPPInput) -> IPPOutput: ...
    def __call__(self, inp):        # 异常隔离包装
        try:
            return self.compute(inp)
        except Exception as e:
            return IPPOutput.fail(str(e))

术语辨析 :这里的 "Protocol" 更接近"处理规程"(SOP),而非通信协议。IPP 描述的是信息如何被接收、变换和产出 ------至于内部是本地函数、LLM 推理还是远程 RPC,都只是 compute() 的不同实现。

这一抽象最重要的性质是组合闭包(Compositional Closure) :若 A、B 都是 IPP,则 B ∘ A 也是 IPP。代码中通过运算符重载实现:

python 复制代码
def __rshift__(self, other): return compose(self, other)   # A >> B == B∘A

class Composition(IPP):
    def compute(self, inp):
        mid = self.first(inp)
        if not mid.ok:
            return IPPOutput.fail(...)   # 中间失败即短路,不污染下游
        return self.second(IPPInput(payload=mid.payload, meta=mid.meta))

任意深度的管道(agent → tool → knowledge-graph → reference)都保持同一抽象 ,且每一级都有异常隔离------某级崩溃只会返回 IPPOutput.fail,不会中断整体流程。

3.2 对等协议生态:MCP / ACP / KGP / RP

ipp/ 框架内实现了四个彼此独立、地位对等的协议,全部都是完整的 IPP 实例:

协议 位置 角色 关键能力
MCP ipp/registries.py 工具发现与调度 ToolRegistry:按模型分发、JSON Schema 下发、4 阶段执行管线
ACP ipp/agent.py 多智能体注册与协作 AgentRegistry:能力卡片发现、子智能体生命周期
KGP ipp/knowledge.py 知识图谱协议 CRUD + BFS 遍历 + 全文搜索 + JSON 持久化
RP ipp/reference.py 威胁情报引用库 search → store → tag → export(JSON / BibTeX)

ACP 的能力卡片 是智能体协作的关键------内部状态对协作者保持不透明(opaque),只暴露 AgentInfo

python 复制代码
@dataclass
class AgentInfo:
    engine_id: str        # "defense" / "offense"
    name: str             # "Codex (ActiveCyberDefense)" / "Strike (ActiveCyberOffense)"
    description: str
    capabilities: List[str]  # 能力声明,如 ["defense","audit","llm-review","codex-tools"]
    model: str
    registered_at: str

平台启动时,两个智能体通过副作用注册进入同一个 ACP 注册中心:

  • 🛡️ Aegis (防御):engine_id="defense",capabilities 含 defense / audit / llm-review / codex-tools
  • ⚔️ Strike (进攻):engine_id="offense",capabilities 含 offense / counter-strike / powershell / block / sinkhole / report / enrich / tarpit

KGP 知识图谱 的数据模型(与 Codex Local 同构):节点 attacker | host | domain | technique | finding,边 attacked | uses | resolved_to | flagged_by

复制代码
attacker (85.203.45.37) ──attacked──▶ host (MSI)
    ├──uses──▶ technique (T1110 Brute Force)
    └──resolved_to──▶ domain (evil.example.com)

攻防双方共享同一张图 :防御层写入 finding:network:conn:85.203.45.37attacker:85.203.45.37 节点,进攻层写入 agent-target:{ip}(status=attempted)与 agent-action:{tool}:{target}(ok 布尔)节点------一次攻击事件从"发现"到"反制"的全链路都被图化留证。

RP 参考协议 则是证据链的出口:Reference 携带 source(local/rdap/shodan/greynoise/abuseipdb/user)与 kind(evidence/technique/report/intel),既能导出 database/references.json,还能生成 BibTeX 格式的 references.bib------滥用报告中的每一条证据都有引用来源。

3.3 四阶段工具管线:resolve → validate → prepare → invoke

所有工具(无论防御还是进攻)都经由统一的 4 阶段生命周期执行:

复制代码
args ─▶ resolve ─▶ validate ─▶ prepare ─▶ invoke ─▶ ToolResult
          │           │           │          │
       修复参数     Schema错误   审批闸门    副作用执行
       (幂等)      (结构化)    (危险操作)    (隔离)
  • resolve:参数归一化修复;
  • validate :按 JSON Schema 校验,错误结构化返回(data={"validation_errors": [...]}),供 LLM 解析后自我纠正重试;
  • prepare审批闸门 ------requires_approval=True 的工具若 ctx.user_approved 为假,则返回 PreparedInvocation(approved=False, cancelled=True) 短路,支持"拒绝"与"取消"两种语义;
  • invoke :执行副作用,任何异常被标记为 {tool_name} crashed: {e}

每个阶段独立 try/except,且同步/异步双兼容 (事件循环运行中则经 ThreadPoolExecutor 提交)。防御侧的 tier_monitor(启动监控进程)、ps_execute,进攻侧的 block / sinkhole / powershell / full_strike 等危险武器都在 prepare 阶段声明了审批门。

3.4 HookSystem:9 个生命周期事件

ipp/hooks.py 定义了横切所有智能体循环的钩子系统:

事件 触发时机
SESSION_START 会话首条消息
USER_PROMPT_SUBMIT 用户消息提交
STOP 循环即将退出(可阻断强制继续)
TOOL_PRE_INVOKE / TOOL_POST_INVOKE 工具执行前 / 后
SUBAGENT_START / SUBAGENT_STOP 子智能体创建 / 结束
COMPACTION 上下文被压缩
ERROR 捕获异常

机制上:handler 链式执行,第一个返回 should_block=True 的 handler 立即短路injected_text 逐 handler 累积注入上下文。内置的 create_content_policy_hook() 用正则检测模型拒答话术("as an AI..."、"that would be illegal..."),在 STOP 事件阻断退出并提示模型给出有用回答。

HookSystem 是平台攻防两侧安全策略的挂载点

  • 🛡️ 防御侧挂 create_defense_audit_hook()(TOOL_POST_INVOKE)→ 每次工具调用写成 KGP 事实节点;
  • ⚔️ 进攻侧挂 create_legal_boundary_hook()(STOP)→ 法律边界强制点(详见第 6 章)。

3.5 ContextSummarizer:三级渐进压缩

在 DeepSeek V4 百万级上下文之上,平台仍实现了 3 级渐进式上下文管理(ipp/context.py,token 估算优先 tiktoken cl100k_base):

级别 触发条件 策略
L1 预防 剩余 token < 25% 把 keep_last 之前的旧工具结果截断到 300 字符
L2 压缩 截断后仍不足 compact():保留 system + 最近 15 条,中间消息按角色摘要(最多 25 段)
L3 应急 emergency=True keep_last 降到 8 条

关键保证:system prompt 永不删除 ------压缩只是把历史摘要追加到 system prompt 之后。防御引擎 MAX_CONTEXT=1_000_000 / 压缩阈值 200K;进攻引擎 MAX_CONTEXT=128_000


4. 核心架构(二):去中心化数据库与进程级隔离

4.1 独立进程 + WAL 并发模型

v0.2 最大的架构变化之一:数据库不再嵌入调用方进程,而是作为独立进程 运行(python -m database.server),通过 HTTP JSON-RPC(POST 127.0.0.1:8767/rpc)对外服务。并发模型是"四件套":

python 复制代码
conn.execute("PRAGMA journal_mode=WAL")        # ① WAL:读写互不阻塞
conn.execute("PRAGMA busy_timeout=5000")       # ② 写锁等待上限 5s
conn.execute("PRAGMA synchronous=NORMAL")      # ③ 性能与安全折中
# ④ 线程本地读连接(N 个读线程并行)+ 共享写连接 + RLock 写串行化
操作 并发性
get_findings / get_stats / get_full_state / get_monitor_status ✅ 无锁,N 读并行
upsert_finding / clear_all / update_system_state / save_monitor_status 写串行,但 WAL 保证写期间读不受阻

压测验证(README 记录):8 个并行读 + 4 个并行写,2.5 秒完成,0 错误。

4.2 自动拉起与统一 API

database/client.py 实现自动拉起 :调用前探测 /health(1s 超时)→ 失败则加进程级锁二次探测 → 仍未启动则 subprocess.Popen([sys.executable, "-m", "database.server"])(Windows 下 CREATE_NO_WINDOW),随后 25 次 × 0.2s 轮询健康检查。对调用方完全透明------"数据库不存在?那就把它拉起来"。

公共 API 与旧版完全向后兼容:upsert_finding / get_findings / get_unreviewed / clear_all / get_stats / get_full_state / get_monitor_status ...,同时每次写入都会镜像导出 database/findings.json(旧代码兼容 + KGP 数据源)。

4.3 upsert 合并语义与 flag_level

数据模型三张表:findings(主键 = sha256(f"{category}:{key}")[:16],含 severity / flag_level / status / mitre_techniques / tier_results JSON)、system_statemonitor_status

upsert_finding 的合并语义是整个三层递进体系的支柱:

  1. tier_results[tier] 保留每一层的快照(flag_level / severity / status / flags / detail / mitre / 时间戳);
  2. 行级 flag_level = max(所有层的 flag_level)
  3. 行级 status / severity / mitre 按 ["standard", "agentic", "advanced"] 倒序取最高层(高级层覆盖低级层)。

flag_level 语义

复制代码
L1 ── 标准层规则标记(status = unreviewed)
 │
 │ Agentic 层把 L1 发给 DeepSeek V4 审查
 ▼
L2 ── LLM 判决(status = confirmed 升级 / false_positive 清除)
 │
 │ Advanced 层仅分析已确认项:进程→PE 风险分,网络→威胁情报聚合
 ▼
L3 ── 深度分析(status = escalated / confirmed)

5. 更新的主动防御模块(v0.2):从规则引擎到 AI 专家

防御侧在 v0.2 的核心变化是:每一层检查都以独立子进程运行run_once.py / monitor.py),并通过 IPP 工具暴露给 Aegis 智能体,同时在 UI 上提供流式对话能力。三层体系本身依旧保持"递进式"设计。

5.1 Tier 1:标准检查(~2 分钟,flag_level=1)

5 个独立工具脚本,每个都是"JSON 进 JSON 出"的纯函数式进程:

# 工具脚本 检查内容 技术
1 system_baseline.py CPU / RAM / 磁盘 / 开机时间 / 网络接口 psutilsystem_state
2 process_review.py 11 个可疑进程名(mimikatz/procdump/psexec/nc...)、11 条可疑命令行正则(encodedcommand/frombase64string/downloadstring/iex...)、4 个临时目录标记 psutil + 模式匹配
3 network_review.py 10 个敏感监听端口(21/22/23/135/139/445/3389/5985/5986/5900)、公网远端端点、非常见端口 psutil.net_connections()
4 security_posture.py Windows Defender 状态、3 个防火墙配置文件 PowerShell
5 persistence_audit.py HKCU/HKLM 的 Run/RunOnce 四个键 winreg

所有异常写入 flag_level=1status=unreviewed),等待下一层研判。

5.2 Tier 2:Agentic 深度审计 + LLM 审查(核心创新层)

Tier 2 在 v0.2 升级为 9 层结构:继承标准层全部 5 层,追加 4 个深度层:

扩展层 检查内容
L6 DLL 完整性 lsass/winlogon/svchost/explorer/csrss 关键进程存在性
L7 安全事件 Event ID 4625(24h 失败登录)/ 4720(30d 新账户)
L8 已安装程序 HKLM Uninstall 注册表,6 类关键词归类
L9 PowerShell 深潜 suspicious_ps / defender / scheduled_tasks / persistence / critical_dlls / dns_cache

LLM 审查流程(替代硬编码误报规则):

复制代码
Standard (T1) 标记 L1 发现
        ↓
Agentic (T2) 拉取 get_unreviewed(flag_level=1)
        ↓ 每批 5 条,附带进程/网络/注册表上下文
DeepSeek V4 (deepseek-v4-pro, temperature=0.2) 审查
        ↓ 强制输出纯 JSON 数组
[{"index": 0, "status": "false_positive"|"confirmed",
  "severity": "low"|"medium"|"high", "reason": "..."}]
        ↓
数据库更新 flag_level=2(confirmed 升级 / false_positive 保留但标记)

经典案例(README 实测):ksdeui.exe -hiddenFALSE_POSITIVE :Kaspersky VPN 使用 -hidden 参数属合法行为。硬编码规则永远做不到这种上下文理解。

兜底策略同样工程化:LLM 未给出判定的条目一律 confirmed 升级;整个流程异常时降级到 14 条硬编码误报模式(lsass.exe / avpui.exe / crashpad_handler.exe / kaspersky / onedrive...)的 _hardcoded_review_findings()

Aegis 智能体codex_agent/engine.py)是 v0.2 的明星组件------一个对标 OpenAI Codex CLI Rust 架构的生产级 Agent 引擎:

python 复制代码
class CodexEngine:
    MAX_TOOL_ROUNDS: int = 15               # 最多 15 轮工具调用
    COMPACT_THRESHOLD: int = 200_000        # 剩余 20 万 token 时自动压缩
    MAX_CONTEXT: int = 1_000_000            # DeepSeek V4 百万级上下文

23 个工具write_file / apply_patch 已注释禁用------只读是 Aegis 的铁律):

类别 工具
文件/搜索 read_file · list_directory · search_files · grep_search · view_image
平台工具 standard_tool(直接跑 5 个标准层脚本)· advanced_tool(9 个取证脚本)· db_query
PowerShell ps_recon(15 种只读侦查片段)· ps_history(审计日志)· shell_command(30s 超时 + 7 条破坏性正则拦截)
智能体 plan · spawn_agent / wait_agent / list_agents / cancel_agent(多子代理并行)
记忆/通知 memory_read / memory_write(TTL 持久 KV)· send_notification(PushOver)· web_search · current_time
安全研判 review_top_threats(按 flag_level+severity 排序,可触发 LLM 复核)· request_user_input

防御侧 PowerShell 护栏(powershell.py):13 条 deny 正则(Format-Volume / Clear-Disk / Stop-Computer / Set-MpPreference -DisableRealtimeMonitoring / Set-NetFirewallProfile -Enabled $false...),60s 超时、6000 字符截断,每次调用审计写入 agentic_check/logs/powershell_history.log

5.3 Tier 3:高级取证分析(8 模块,flag_level=3)

8 个取证模块 + 1 个 L2→L3 升级桥(deep_analyze.py),其中 YARA 规则库升级到 16 条(AMSI 绕过、ETW Patch、CobaltStrike Beacon、勒索加密 API 等):

模块 关键技术 关键数字
Statistical Anomaly z-score(阈值 2.5σ)+ percentile + Mahalanobis 距离(伪逆、按指标贡献度) 90 天窗口 / 200 样本基线
MITRE Mapper 47 条映射(正则索引 + 分类匹配) 11 战术 / 约 42 个唯一技术 ID
Memory Forensics 跨视图进程扫描(psutil vs Get-Process vs WMI)+ 未签名 DLL 检测 + 进程镂空(WorkingSet/虚拟内存比 <0.1)+ 线程注入(>100 线程)+ Volatility 集成 镂空/隐藏进程 = CRITICAL
Sigma Engine 8 条内置规则(ACD-001~008),findings → 规则自动生成,可导出 Splunk/Elastic/Sentinel export_rules() yaml/json
PE Analyzer 节熵(熵 >7.0 → 打包)、RWX 节、约 48 个可疑导入 API → ATT&CK 映射、未来时间戳 风险分 0~1:≥0.7 CRITICAL
Threat Intelligence VirusTotal v3(4 req/min 限速)+ AbuseIPDB v2(90 天报告)+ OTX v1 24h TTL 缓存,聚合分 → 分级
DeepSeek Agent 单条 triage + 批 5 条审查(跨批 sleep 1s 限速)+ 双系统提示关联分析(攻击链/威胁者画像/优先级队列) reasoning_effort=high
ETW Consumer 9 个 ETW Provider GUID (含 Threat-Intelligence、Sysmon、PowerShell)+ 14 个关键事件 ID + 4 个实时通道(Security/PS/Sysmon/Defender)+ tracerpt 解析 ETL 11 个可疑关键词实时过滤

L2 → L3 升级桥deep_analyze.py):读取 get_findings(status="confirmed")------

  • process 类 :PE 分析,risk > 0.3flag_level=3, status=escalatedrisk > 0.6 为 critical),附 mitre_techniques
  • network 类:威胁情报聚合,risk_level ∈ {HIGH, CRITICAL} → 升级 L3 escalated;
  • 未达标项统一 flag_level=3, status=confirmed, detail={deep_analyzed: True}

5.4 跨层数据流与持续监控

复制代码
Standard Check ──写入 L1──▶ 共享数据库 ──┐
                                          ├─▶ Agentic 读取 → LLM 审查 → L2
                                          ▼
Advanced Check ◀──读取 L2 confirmed───── 数据库
        └── PE 分析 / 威胁情报 / MITRE 映射 ──▶ L3 escalated

三层都支持持续监控模式 (Standard/Advanced 为独立进程循环,Agentic 为 daemon 线程),周期 60s,每轮结果写入 monitor_status 表,UI 3 秒轮询一次状态。


6. 主动进攻模块(v0.2 核心新增):合法主动防御的智能体化

这是本文的重头戏。v0.2 给平台装上了一个"反制翼"------但必须强调的是,这个翼的每一个动作都严格限定在合法主动防御的边界内。

6.1 设计哲学与法律边界

⚖️ "只打自己家,不打别人家。"

合法主动防御 vs 非法黑客反击的边界定义得非常清晰:

✅ 合法(本模块支持) ❌ 非法(明确禁止)
本机防火墙封禁(netsh 入站规则) 端口扫描 / nmap / masscan
本机 hosts 文件 DNS 沉洞 Metasploit / 漏洞利用
本地进程处置(杀恶意进程、清持久化) DDoS / 流量洪泛
被动 OSINT(whois / RDAP / DNS / Shodan / GreyNoise) 访问对方系统 / 横向移动
本地诱骗监听(tarpit 拖延攻击者) 窃取对方凭证 / 数据
生成滥用报告文件(绝不自动发送) 针对未确认目标的任何动作

平台 README 明确引用了 US CFAA 与 UK Computer Misuse Act 作为法律依据------反制动作只作用于本机资源(防火墙/hosts/本地进程/本地监听)与被动公共 API,不扫描、不利用、不破坏任何第三方系统。这份边界不是写在 README 里的口号,而是有代码强制实现的(见 6.3 与 6.5)。

6.2 cyberoffensetools:反制工具箱(StrikeEngine + 5 工具)

cyberoffensetools/ 是进攻翼的执行层。StrikeEngine(单例,线程安全)的每个动作都走同一流程:执行 → 审计(logs/strike_log.jsonl)→ 写入 KGP 知识图谱

工具一:blocklist ------ 防火墙封禁
powershell 复制代码
netsh advfirewall firewall add rule name=ACO-BLOCK-{ip} dir=in action=block enable=yes remoteip={ip} profile=any
  • ipaddress 严格校验 IP/CIDR;
  • 幂等:先删除同名规则再加;
  • 规则名 ACO-BLOCK- 前缀,list_blocks 通配查询。
工具二:sinkhole ------ DNS 沉洞
  • C:\Windows\System32\drivers\etc\hosts 写入 0.0.0.0 域名 + www.域名
  • 写前自动备份到 data/hosts.backup.{时间戳}(实测已积累 8 份备份);
  • 标记块方案(# === ActiveCyberOffense Sinkhole ===),支持增量增删与 list_sinkholes()
  • 临时文件 + 原子替换防半写;域名归一化剥 scheme/www/路径/端口。
工具三:abuse_report ------ 滥用报告生成
  • RDAP 深度 1 递归查询,从 entities 的 vcardArray 提取 abuse/administrative/technical 三类角色邮箱(去重限 5 个,失败回退全量 JSON 扫描);
  • 生成正式报告 txt(目标 / 上游组织 / CIDR / 国家 / 滥用联系邮箱 / 证据区);
  • 只生成文件,绝不自动发送 ------ 报告由人工审查后自行投递。
工具四:osint ------ 被动情报聚合

enrich_target():DNS(A/PTR/TXT)→ RDAP(org/country/cidr/asn)→ Shodan(端口/服务/OS/ISP/漏洞)→ GreyNoise(classification/noise/riot/tags)。缺失 API key 优雅降级_skipped: no SHODAN_API_KEY),绝不因单一情报源不可用而中断。

工具五:tarpit ------ 诱骗拖延

经典 endlessh/laBrea 手法:

python 复制代码
def _stall(self, conn):
    blob = b" \b" * 512          # 空格 + 退格字符对
    while ...:
        conn.send(blob[:256])    # 每 1.5 秒发送一次
        # 攻击者看到滚动的空白,以为连接到了一个半死的 SSH/banner 服务
  • 监听 0.0.0.0:4444(非阻塞 accept、backlog 32、幂等启动),无需管理员权限;
  • 每个连接拖延 45 秒 后关闭,统计 accepted / 唯一对端数;
  • 代码注释明确:"Only interacts with connections that arrive at OUR OWN machine"。

6.3 Strike 反制智能体:agentic_offense

进攻翼的"大脑"是 Strike------一个 IPP-native 的 ReAct 智能体:

复制代码
① session_start hook(注入 OFFENSE_SYSTEM_PROMPT)
② ContextSummarizer 预压缩
③ user_prompt_submit hook
④ 主循环:LLM(stream) → tool_calls → TOOL_PRE/TOOL_POST hooks → execute_tool → 结果回填
⑤ STOP hook(法律边界检查:命中 → 注入纠正指令 → 强制重进循环)
⑥ done(yield final 事件)

模型与配置(刻意与防御侧区分):

Aegis(防御) Strike(进攻)
模型 deepseek-v4-pro(1M 上下文,thinking 模式) deepseek-v4-flash(128K,快速果断)
thinking 启用 自动禁用extra_body={"thinking":{"type":"disabled"}}
temperature 0.3 0.2(低随机性、决策果断)
max_tokens 384000 8192
轮次上限 15 12

系统提示词(约 60 行)定义了 Strike 的作战流程:

复制代码
Mission(六步反制剧本):
  ENRICH → BLOCK → SINKHOLE → REPORT → TARPIT → PowerShell 清除立足点
  (kill 恶意进程、删持久化、断连接、查防火墙/服务)

Legal Boundary(绝对):
  • 只作用于本机:防火墙 / hosts / 本地进程 / 本地监听
  • 被动公共 API:whois / DNS / Shodan / GreyNoise
  • 严禁扫描 / 探测 / 利用 / 破坏第三方系统
  • 严禁攻击未经防御层确认或用户未授权的目标
  • 滥用报告只生成文件供人工审查

风格要求:
  输出格式 target → action → ✓/✗ → evidence,最终答案必须是 Markdown

法律边界钩子create_legal_boundary_hook,挂载在 STOP 事件)是代码级的强制:14 条 (?i) 正则检测越界意图------

python 复制代码
r"(?i)port\s*scan", r"(?i)nmap", r"(?i)masscan", r"(?i)metasploit",
r"(?i)exploit\s+(that|the|their|remote)", r"(?i)hack\s+back",
r"(?i)attack\s+(their|the attacker'?s|remote|that)\s+(server|site|infra)",
r"(?i)ddos", r"(?i)flood\s+(that|the|their|remote)",
r"(?i)access\s+their\s+system", r"(?i)breach\s+their",
r"(?i)take\s+over\s+their", r"(?i)steal\s+their\s+(credentials|data|files)",

命中判定:final_text + user_input 拼接后正则扫描 → should_block=True, reason="Illegal hack-back intent detected" → 注入纠正指令 [LEGAL BOUNDARY] That action would be illegal hacking-back...强制重进循环 ,让模型改走合法路径(enrich/block/sinkhole/report/tarpit)。也就是说:Strike 不是被提示词"劝"着守法的,而是被钩子"拦"下来的

此外,TOOL_PRE_INVOKE / TOOL_POST_INVOKE 钩子把每次攻击动作写入 KGP(agent-target:{ip} attempted → agent-action:{tool}:{target} ok),与防御侧共享同一张证据图。

6.4 15 件武器详解

agentic_offense/weapons/ 定义了 15 个武器(TOOLS schema + execute_tool() 分发 + IPP BaseTool 注册),其中 6 个危险武器声明 requires_approval=True

# 武器 功能 审批 技术实现
1 enrich 被动 OSINT --- DNS + RDAP + Shodan + GreyNoise
2 block 防火墙入站封禁 netsh 规则 ACO-BLOCK-{ip}域名自动解析为 IP
3 unblock 删除封禁规则 netsh delete rule
4 sinkhole hosts 沉洞 0.0.0.0 域名 + www,先备份
5 unsinkhole 移除沉洞 标记块删除
6 report 滥用报告文件 --- RDAP 查 abuse 邮箱 → 生成报告 txt
7 contact 上游组织联系信息 --- ipwhois lookup_rdap(depth=1)
8 tarpit_start 启动诱骗监听 4444 --- 无需管理员
9 tarpit_stop 停止 tarpit --- 幂等
10 full_strike 一键作战剧本 enrich → block → sinkhole(域名) → report → tarpit(可选)
11 list_targets 从防御 DB 拉已确认攻击者 --- db_bridge.get_attacker_targets()
12 status 反制状态总览 --- tarpit / 防火墙规则 / 沉洞 / DB 目标
13 powershell 本机任意 PowerShell 护栏 + 审计(见 6.5)
14 local_recon 内置只读侦查 --- 8 种片段,validate 白名单校验
15 ps_history PowerShell 审计记录 --- logs/powershell_history.log

full_strike 剧本StrikeEngine.full_strike)的完整序列:

python 复制代码
enrich(target)                     # ① 必做:知己知彼
block(target, note)                # ② 必做:防火墙切断(域名自动解析为 IP)
if resolve_target(target).kind == "domain":
    sinkhole(target)               # ③ 仅域名:DNS 沉洞
report(target)                     # ④ 必做:ISP/CERT 滥用报告
if with_tarpit: tarpit(start=True) # ⑤ 可选:拖延后续连接
# 汇总 {ok, steps, completed[], failed[]}

剧本是部分失败容忍 的:即使某一环失败(如未以管理员运行导致 block 失败),已完成步骤照常返回,门户仍返回 200 并携带 steps/completed/failed 数组------失败信息本身就是给操作员的审计素材(实测中即出现过 enrich+report 成功、block 因权限失败的真实日志)。

6.5 PowerShell 武器:护栏与审计

weapons/powershell.py 是 Strike 最强的武器,也是防护最重的武器:

python 复制代码
cmd = [Config.PS_EXECUTABLE, "-NoProfile", "-NonInteractive",
       "-ExecutionPolicy", "Bypass", "-Command", script]
subprocess.run(cmd, capture_output=True, text=True, encoding="utf-8",
               errors="replace", timeout=timeout, creationflags=CREATE_NO_WINDOW)

三层防护

  1. deny-list 护栏 (11 条正则,Config.is_ps_denied()):Remove-Item -Recurse C:\Format-VolumeClear-DiskStop-ComputerSet-MpPreference -DisableRealtimeMonitoring $true、删 Windows\System32、向系统目录写文件等,命中即拒绝并记录 denied_by
  2. 超时与截断:默认 60s 超时(侦查 30s),stdout 截断 6000 字符、stderr 2000 字符;
  3. 全程审计 :每次调用追加 JSONL 到 logs/powershell_history.log{at, script[:400], status, exit_code, elapsed, stdout_head[:300], denied_by?}

8 种内置侦查片段local_recon):processes(Top CPU 40)、network(全部 TCP 状态)、listenersfirewall(三 profile)、servicesdns_cachehosts(0.0.0.0 沉洞条目)、suspicious_psencodedcommand|frombase64string|downloadstring|iex 混淆 PowerShell)。

6.6 进攻门户:127.0.0.2:8766

cyberoffensetools/server.py(纯标准库 ThreadingHTTPServer)提供完整 REST API 与内嵌 SPA:

端点 功能
/api/status 反制状态 + DB 摘要
/api/targets 从防御 DB 拉已确认攻击者列表
/api/log 最近 50 条打击审计
/api/ipp 聚合 IPP 平台状态(引擎/工具/KGP 节点数)
/api/strike 一键反制 {"action","target","note","with_tarpit"}
/api/agent 同步版智能体聊天
/api/agent/start + /api/agent/events 流式版(单任务互斥,busy 返回 409)

门户 UI 的核心元素:

  • ⚖️ 法律边界横幅:"LEGAL ACTIVE-DEFENSE ONLY..."
  • 🤖 Agentic Offense Chat :折叠式进程容器(💭 Thinking / ⚡工具调用 / ✓✗ 结果标记)+ 前端 Markdown 渲染器 + localStorage 聊天持久化;
  • 🎯 Strike Console:target 输入 + action 下拉(FULL COUNTER-STRIKE / Enrich / Block / Sinkhole / Report / Contact / Unblock / Unsinkhole)+ 💥 EXECUTE + 🪤 Tarpit 开关;
  • 📡 Attacker Targets 表:每行带 💥 STRIKE 快捷按钮(自动填 full_strike);
  • 🛡️ Countermeasure Status 卡片 + 📜 Strike Audit Log 表。

防御仪表盘通过顶层标签 ⚔️ activecyberoffenseiframe 嵌入 门户(不随标签切换重载,聊天历史不丢),每 5 秒 ping /api/health 显示在线状态。

6.7 攻防联动:从发现到反制的闭环

进攻侧的目标不是凭空产生的------db_bridge.py 只读 防御层写入的 database/findings.json

复制代码
过滤 category ∈ (network, net, persistence, process)
    → 从 tier_results.{standard,agentic,advanced}.detail 提取 remote/name 字段
    → 正则抽 IP,_valid_ip() 排除私网/回环/链路本地/组播/保留地址(只打公网)
    → 去重输出 {ip, category, status, flag_level, remote, finding_key, flagged_at}

完整生命周期闭环:

复制代码
防御层标记 → Agentic LLM 确认 (L2) → 目标进入进攻门户目标表
    → 操作员一键 ⚔️ STRIKE(enrich → block → sinkhole → report → tarpit)
    → strike_log.jsonl 审计 + KGP 图记录(法律证据链)
    → 滥用报告文件供人工投递 ISP/CERT

7. 流式 Agent 对话:ChatGPT 式的实时推理过程

v0.2 的 UI 体验升级:两个门户都能流式渲染智能体的完整工作过程,而不是突然蹦出一个最终答案。

复制代码
用户消息 ─▶ POST /api/agent/start ─▶ AgentJob 后台线程消费 chat_stream() 生成器
                                      │ 事件缓冲 ≤200 条(丢最旧)
前端 400ms 轮询 GET /api/agent/events?job_id&since=N ◀─┘
                                      │
💭 Thinking(思考增量)→ 折叠块文本累积
📝 text(前言文本)→ 气泡流
⚙️ tool_call → 实时展开的折叠工具块
⚙️ tool_result → 结果填充 + 自动折叠 + ✓/✗ 徽标
💭 Thinking → 下一轮
───────────────────────────────────────
完成 → process 容器自动折叠
**Final answer** → markdown 渲染成普通聊天气泡

技术要点:

  • 后端ui/agent_stream.py):AgentJob 构造时启动 daemon 后台线程 消费生成器,事件序列化带截断策略(工具参数 600 字符、结果 8000、错误 500),snapshot(since) 增量拉取,异常永不静默死亡(finally 置 done,异常写入 error);
  • 安全 :门户模式下 codex_tool.tools.PORTAL_MODE = True------后台流式线程无人审批通道,禁用 write_file / apply_patch / shell 等可变工具,只允许审查和查询;
  • 前端 :单个可折叠 <details class="agent-process"> 容器包装全过程,工具结果用 /"ok":\s*false|\[ERROR\]|\[DENIED\]|\[TIMEOUT\]/ 正则自动判定 ✓/✗;
  • Markdown 渲染:约 60 行零依赖原生 JS------先 HTML 转义防 XSS,再保护 fenced code blocks,识别标题/表格/列表/链接/粗斜体;
  • 单任务互斥:防御与进攻侧各允许 1 个并发 agent 任务(busy 返回 409),避免 LLM 成本失控。

8. 实战演示:从发现到反制的攻防全流程

8.1 启动平台

powershell 复制代码
pip install -r requirements.txt
python run_ui.py
# 浏览器自动打开 http://127.0.0.1:8765

仪表盘 6 行布局:系统头 → 风险条(flags>10=HIGH / >3=MEDIUM / >0=LOW)→ 三层行动卡片 → Agentic 对话 → 统一发现表(🛡️S → 🤖A → 🚀X 三列跨层追踪)→ 三层详情 Tab。

8.2 防御侧:三层递进确认

bash 复制代码
# 步骤 1:标准检查(~2min)
点击 "Standard Check: Run Once" → 5 层扫描 → 12 个 L1 标记入库

# 步骤 2:Agentic 深度审计(~5min)
点击 "Agentic Check: Run Once" → 9 层扫描 + DeepSeek V4 逐批审查
#   8 个 → FALSE_POSITIVE(合法应用)
#   4 个 → CONFIRMED(升级至 L2,其中 1 个网络连接指向公网 IP)

# 步骤 3:高级取证(~10min)
点击 "Advanced Check: Run Once" → 仅分析已确认项
#   PE 熵值 / VirusTotal 查杀 / MITRE ATT&CK 映射
#   网络项威胁情报聚合 → risk=HIGH → 升级 L3 escalated

# 步骤 4:持续监控
点击 "Standard Check: Continuous Monitor" → 每 60s 自动扫描

8.3 进攻侧:确认即反制

攻击者 IP 进入门户目标表后,操作员一键 FULL COUNTER-STRIKE(实测日志还原):

复制代码
1. ENRICH  85.203.45.37
   → RDAP: AS9009 M247 (CH), Country: CH
   → abuse 邮箱: jeroen@falco-networks.com ✓
2. BLOCK   85.203.45.37
   → netsh advfirewall 添加 ACO-BLOCK-85.203.45.37 入站封禁
   → ✗ 请求的操作需要提升(未以管理员运行)→ failed[] 记录,剧本继续
3. REPORT  85.203.45.37
   → 生成 abuse_85.203.45.37_*.txt(含证据区)✓
4. SINKHOLE(域名场景示例)
   → hosts 写入 0.0.0.0 wenxin.baidu.com + www 子域 ✓
   → RDAP: CHINANET-JS AS134756, abuse: anti-spam@chinatelecom.cn
5. TARPIT  ON(可选)
   → 0.0.0.0:4444 监听,攻击者连接被拖延 45s

即使 block 因权限失败,full_strike 依然返回完整的 steps/completed/failed 数组------剧本部分失败容忍,审计日志完整记录每一步,操作员补提权后重试即可。

8.4 对话式反制(门户 Agentic Chat)

复制代码
User: 侦查当前主机的可疑网络活动
Strike: [local_recon: network] 发现 12 条活动连接,6 个唯一公网 IP
        [local_recon: processes] Top CPU 进程...
        [powershell] 解析 findings.json → 232 个已确认 IP 与活动连接交叉比对
        [db_query / list_targets] 高置信度目标:85.203.45.37 ...
        建议:对 85.203.45.37 执行 full_strike(需你批准)

User: 执行 full_strike 85.203.45.37
Strike: [TOOL_PRE hook] KGP 记录 attempted...
        enrich → block → report ...
        [TOOL_POST hook] KGP 记录 ok=true/false...
        ✅ 完成:enrich ✓ / block ✓ / report ✓(详见审计日志)

9. 工程合规:许可策略与安全边界

9.1 依赖的"许可合规"策略

进攻工具箱的依赖选择是一个刻意的合规声明------只允许宽松许可(MIT / BSD / ISC / Apache-2.0):

text 复制代码
dnspython (ISC) · ipwhois (BSD-2) · shodan (MIT) · greynoise (MIT)
requests (Apache-2.0) · impacket (Apache-2.0) · yara-python (Apache-2.0)
mitmproxy (MIT) · psutil (BSD-3)

明确排除:nmap(GPL)、masscan(AGPL)、scapy(GPL)、wireshark(GPL)、metasploit payloads、C2 implants------"permissive-licensed tools only" 既是法律红线,也是供应链安全策略。

9.2 多层安全边界总结

机制 对象
提示词层 OFFENSE_SYSTEM_PROMPT 法律边界六步流程 Strike 智能体
代码层 STOP 钩子 14 条正则拦截越界意图 + 注入纠正 所有 LLM 输出
审批层 prepare 阶段 requires_approval 闸门 block/sinkhole/powershell/full_strike 等 6 武器
护栏层 PowerShell deny-list(11 条正则)+ 超时 + 截断 powershell 武器
目标层 db_bridge 只打公网、只打防御层已确认目标 所有反制动作
审计层 strike_log.jsonl + powershell_history.log + KGP 图 全部动作留证

已知边界 (诚实说明):防火墙封禁与 hosts 写入需要管理员权限(未提权时 block/sinkhole 会失败并记录审计);deny-list 是正则匹配,存在绕写变体的可能(README 标注 "override at your own risk");审批闸门在智能体自主循环内依赖提示词 + 钩子兜底,门户的外部调用路径(/api/strike、IPP 执行)则强制走审批语义。


10. 演进路线与未来展望

#mermaid-svg-bznW9MqiTL5K0wBb{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-bznW9MqiTL5K0wBb .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-bznW9MqiTL5K0wBb .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-bznW9MqiTL5K0wBb .error-icon{fill:#552222;}#mermaid-svg-bznW9MqiTL5K0wBb .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bznW9MqiTL5K0wBb .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-bznW9MqiTL5K0wBb .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bznW9MqiTL5K0wBb .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bznW9MqiTL5K0wBb .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-bznW9MqiTL5K0wBb .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bznW9MqiTL5K0wBb .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bznW9MqiTL5K0wBb .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bznW9MqiTL5K0wBb .marker.cross{stroke:#333333;}#mermaid-svg-bznW9MqiTL5K0wBb svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bznW9MqiTL5K0wBb p{margin:0;}#mermaid-svg-bznW9MqiTL5K0wBb .edge{stroke-width:3;}#mermaid-svg-bznW9MqiTL5K0wBb .section--1 rect,#mermaid-svg-bznW9MqiTL5K0wBb .section--1 path,#mermaid-svg-bznW9MqiTL5K0wBb .section--1 circle,#mermaid-svg-bznW9MqiTL5K0wBb .section--1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .section--1 text{fill:#ffffff;}#mermaid-svg-bznW9MqiTL5K0wBb .node-icon--1{font-size:40px;color:#ffffff;}#mermaid-svg-bznW9MqiTL5K0wBb .section-edge--1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .edge-depth--1{stroke-width:17;}#mermaid-svg-bznW9MqiTL5K0wBb .section--1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-bznW9MqiTL5K0wBb .lineWrapper line{stroke:#ffffff;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled,#mermaid-svg-bznW9MqiTL5K0wBb .disabled circle,#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:lightgray;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:#efefef;}#mermaid-svg-bznW9MqiTL5K0wBb .section-0 rect,#mermaid-svg-bznW9MqiTL5K0wBb .section-0 path,#mermaid-svg-bznW9MqiTL5K0wBb .section-0 circle,#mermaid-svg-bznW9MqiTL5K0wBb .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-bznW9MqiTL5K0wBb .section-0 text{fill:black;}#mermaid-svg-bznW9MqiTL5K0wBb .node-icon-0{font-size:40px;color:black;}#mermaid-svg-bznW9MqiTL5K0wBb .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-bznW9MqiTL5K0wBb .edge-depth-0{stroke-width:14;}#mermaid-svg-bznW9MqiTL5K0wBb .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-bznW9MqiTL5K0wBb .lineWrapper line{stroke:black;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled,#mermaid-svg-bznW9MqiTL5K0wBb .disabled circle,#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:lightgray;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:#efefef;}#mermaid-svg-bznW9MqiTL5K0wBb .section-1 rect,#mermaid-svg-bznW9MqiTL5K0wBb .section-1 path,#mermaid-svg-bznW9MqiTL5K0wBb .section-1 circle,#mermaid-svg-bznW9MqiTL5K0wBb .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .section-1 text{fill:black;}#mermaid-svg-bznW9MqiTL5K0wBb .node-icon-1{font-size:40px;color:black;}#mermaid-svg-bznW9MqiTL5K0wBb .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .edge-depth-1{stroke-width:11;}#mermaid-svg-bznW9MqiTL5K0wBb .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-bznW9MqiTL5K0wBb .lineWrapper line{stroke:black;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled,#mermaid-svg-bznW9MqiTL5K0wBb .disabled circle,#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:lightgray;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:#efefef;}#mermaid-svg-bznW9MqiTL5K0wBb .section-2 rect,#mermaid-svg-bznW9MqiTL5K0wBb .section-2 path,#mermaid-svg-bznW9MqiTL5K0wBb .section-2 circle,#mermaid-svg-bznW9MqiTL5K0wBb .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .section-2 text{fill:#ffffff;}#mermaid-svg-bznW9MqiTL5K0wBb .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-bznW9MqiTL5K0wBb .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .edge-depth-2{stroke-width:8;}#mermaid-svg-bznW9MqiTL5K0wBb .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-bznW9MqiTL5K0wBb .lineWrapper line{stroke:#ffffff;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled,#mermaid-svg-bznW9MqiTL5K0wBb .disabled circle,#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:lightgray;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:#efefef;}#mermaid-svg-bznW9MqiTL5K0wBb .section-3 rect,#mermaid-svg-bznW9MqiTL5K0wBb .section-3 path,#mermaid-svg-bznW9MqiTL5K0wBb .section-3 circle,#mermaid-svg-bznW9MqiTL5K0wBb .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .section-3 text{fill:black;}#mermaid-svg-bznW9MqiTL5K0wBb .node-icon-3{font-size:40px;color:black;}#mermaid-svg-bznW9MqiTL5K0wBb .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .edge-depth-3{stroke-width:5;}#mermaid-svg-bznW9MqiTL5K0wBb .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-bznW9MqiTL5K0wBb .lineWrapper line{stroke:black;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled,#mermaid-svg-bznW9MqiTL5K0wBb .disabled circle,#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:lightgray;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:#efefef;}#mermaid-svg-bznW9MqiTL5K0wBb .section-4 rect,#mermaid-svg-bznW9MqiTL5K0wBb .section-4 path,#mermaid-svg-bznW9MqiTL5K0wBb .section-4 circle,#mermaid-svg-bznW9MqiTL5K0wBb .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .section-4 text{fill:black;}#mermaid-svg-bznW9MqiTL5K0wBb .node-icon-4{font-size:40px;color:black;}#mermaid-svg-bznW9MqiTL5K0wBb .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .edge-depth-4{stroke-width:2;}#mermaid-svg-bznW9MqiTL5K0wBb .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-bznW9MqiTL5K0wBb .lineWrapper line{stroke:black;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled,#mermaid-svg-bznW9MqiTL5K0wBb .disabled circle,#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:lightgray;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:#efefef;}#mermaid-svg-bznW9MqiTL5K0wBb .section-5 rect,#mermaid-svg-bznW9MqiTL5K0wBb .section-5 path,#mermaid-svg-bznW9MqiTL5K0wBb .section-5 circle,#mermaid-svg-bznW9MqiTL5K0wBb .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .section-5 text{fill:black;}#mermaid-svg-bznW9MqiTL5K0wBb .node-icon-5{font-size:40px;color:black;}#mermaid-svg-bznW9MqiTL5K0wBb .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .edge-depth-5{stroke-width:-1;}#mermaid-svg-bznW9MqiTL5K0wBb .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-bznW9MqiTL5K0wBb .lineWrapper line{stroke:black;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled,#mermaid-svg-bznW9MqiTL5K0wBb .disabled circle,#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:lightgray;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:#efefef;}#mermaid-svg-bznW9MqiTL5K0wBb .section-6 rect,#mermaid-svg-bznW9MqiTL5K0wBb .section-6 path,#mermaid-svg-bznW9MqiTL5K0wBb .section-6 circle,#mermaid-svg-bznW9MqiTL5K0wBb .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .section-6 text{fill:black;}#mermaid-svg-bznW9MqiTL5K0wBb .node-icon-6{font-size:40px;color:black;}#mermaid-svg-bznW9MqiTL5K0wBb .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .edge-depth-6{stroke-width:-4;}#mermaid-svg-bznW9MqiTL5K0wBb .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-bznW9MqiTL5K0wBb .lineWrapper line{stroke:black;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled,#mermaid-svg-bznW9MqiTL5K0wBb .disabled circle,#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:lightgray;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:#efefef;}#mermaid-svg-bznW9MqiTL5K0wBb .section-7 rect,#mermaid-svg-bznW9MqiTL5K0wBb .section-7 path,#mermaid-svg-bznW9MqiTL5K0wBb .section-7 circle,#mermaid-svg-bznW9MqiTL5K0wBb .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .section-7 text{fill:black;}#mermaid-svg-bznW9MqiTL5K0wBb .node-icon-7{font-size:40px;color:black;}#mermaid-svg-bznW9MqiTL5K0wBb .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .edge-depth-7{stroke-width:-7;}#mermaid-svg-bznW9MqiTL5K0wBb .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-bznW9MqiTL5K0wBb .lineWrapper line{stroke:black;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled,#mermaid-svg-bznW9MqiTL5K0wBb .disabled circle,#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:lightgray;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:#efefef;}#mermaid-svg-bznW9MqiTL5K0wBb .section-8 rect,#mermaid-svg-bznW9MqiTL5K0wBb .section-8 path,#mermaid-svg-bznW9MqiTL5K0wBb .section-8 circle,#mermaid-svg-bznW9MqiTL5K0wBb .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .section-8 text{fill:black;}#mermaid-svg-bznW9MqiTL5K0wBb .node-icon-8{font-size:40px;color:black;}#mermaid-svg-bznW9MqiTL5K0wBb .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .edge-depth-8{stroke-width:-10;}#mermaid-svg-bznW9MqiTL5K0wBb .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-bznW9MqiTL5K0wBb .lineWrapper line{stroke:black;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled,#mermaid-svg-bznW9MqiTL5K0wBb .disabled circle,#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:lightgray;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:#efefef;}#mermaid-svg-bznW9MqiTL5K0wBb .section-9 rect,#mermaid-svg-bznW9MqiTL5K0wBb .section-9 path,#mermaid-svg-bznW9MqiTL5K0wBb .section-9 circle,#mermaid-svg-bznW9MqiTL5K0wBb .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .section-9 text{fill:black;}#mermaid-svg-bznW9MqiTL5K0wBb .node-icon-9{font-size:40px;color:black;}#mermaid-svg-bznW9MqiTL5K0wBb .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .edge-depth-9{stroke-width:-13;}#mermaid-svg-bznW9MqiTL5K0wBb .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-bznW9MqiTL5K0wBb .lineWrapper line{stroke:black;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled,#mermaid-svg-bznW9MqiTL5K0wBb .disabled circle,#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:lightgray;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:#efefef;}#mermaid-svg-bznW9MqiTL5K0wBb .section-10 rect,#mermaid-svg-bznW9MqiTL5K0wBb .section-10 path,#mermaid-svg-bznW9MqiTL5K0wBb .section-10 circle,#mermaid-svg-bznW9MqiTL5K0wBb .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .section-10 text{fill:black;}#mermaid-svg-bznW9MqiTL5K0wBb .node-icon-10{font-size:40px;color:black;}#mermaid-svg-bznW9MqiTL5K0wBb .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .edge-depth-10{stroke-width:-16;}#mermaid-svg-bznW9MqiTL5K0wBb .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-bznW9MqiTL5K0wBb .lineWrapper line{stroke:black;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled,#mermaid-svg-bznW9MqiTL5K0wBb .disabled circle,#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:lightgray;}#mermaid-svg-bznW9MqiTL5K0wBb .disabled text{fill:#efefef;}#mermaid-svg-bznW9MqiTL5K0wBb .section-root rect,#mermaid-svg-bznW9MqiTL5K0wBb .section-root path,#mermaid-svg-bznW9MqiTL5K0wBb .section-root circle{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-bznW9MqiTL5K0wBb .section-root text{fill:#ffffff;}#mermaid-svg-bznW9MqiTL5K0wBb .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-bznW9MqiTL5K0wBb .edge{fill:none;}#mermaid-svg-bznW9MqiTL5K0wBb .eventWrapper{filter:brightness(120%);}#mermaid-svg-bznW9MqiTL5K0wBb :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} v0.1.0 标准检查 + PS1 脚本 v0.1.7 DeepSeek V4 LLM 审查 v0.1.9 6 行仪表盘 + Agentic 对话 v0.2.0 去中心化数据库(独立进程 WAL) v0.2.1 层检查自进程化 v0.2.2 进攻翼 cyberoffensetools + 门户 v0.2.3 Strike 智能体(Flash + PowerShell 武器 + 法律钩子) v0.2.4 IPP 框架(协议/管线/钩子/KGP/ACP) v0.2.5 流式 Agent 对话(thinking · tools · final) v0.2.6 Aegis 提示词 + ps_recon + 只读守卫 + Markdown 渲染 ActiveCybersecurity 演进历史(2026-07 → 08)

未来方向:

  • MCP 生态扩展:通过统一 ToolRegistry 接入外部安全工具(SIEM / SOAR / 威胁情报平台 / MISP);
  • 多 Agent 协同:防御与进攻 Agent 经 ACP 双向编排------防御确认、进攻反制、防御复检的自动化闭环;
  • 联邦共享:多端点共享 KGP 攻击者画像(去隐私化)与 YARA/Sigma 规则;
  • 自动化响应策略:在审批语义之上引入"低危自动处置、高危人工批准"的策略引擎。

11. 总结

ActiveCybersecurity v0.2 展示了一个完整的攻防一体 AI 安全平台形态:

防御侧 :三层递进检查 + DeepSeek V4 智能审查 + Aegis 23 工具只读智能体,把"误报"从规则引擎的顽疾变成了 LLM 的上下文理解问题;

进攻侧 :Strike 反制智能体 + 15 件武器 + 代码级法律边界钩子,把"反击"限定在本机资源 + 被动 OSINT 的合法范围内,全程审计留证;

架构侧:IPP 统一抽象(MCP/ACP/KGP/RP)+ 去中心化数据库(WAL 独立进程)+ 进程级隔离的层检查 + 流式 Agent 对话,让攻防两侧在同一套协议、同一张知识图谱、同一条证据链上运转。

最有价值的工程启示有三:

  1. AI Agent 安全平台的第一性原理是"边界"------能力越大,边界越要由代码强制,而不是提示词劝说;
  2. 统一抽象是复杂系统唯一可行的组织方式------IPP 让 40+ 个工具、2 个智能体、3 个检查层、4 个协议在同一框架下组合闭包;
  3. 去中心化不是噱头------数据库独立进程 + 层检查独立进程,让 5 分钟的深度扫描不再阻塞监控按钮和对话流。

📎 项目信息

项目 详情
项目名称 ActiveCybersecurity
版本 v0.2.x(2026-08)
核心技术 Python 3.11+ / DeepSeek V4(pro + flash)/ IPP 协议框架 / SQLite WAL / PowerShell / HTML5 SPA
平台 Windows 10/11
架构 三层递进防御 + 合法反制进攻翼 + 去中心化服务拓扑
端口 防御 127.0.0.1:8765 · 进攻 127.0.0.2:8766 · 数据库 127.0.0.1:8767
许可策略 全依赖宽松许可(BSD-3 / Apache-2.0 / MIT / ISC),排除 GPL/AGPL 工具

"最好的防御不是把自己变成一座堡垒,而是让敌人知道------你既看得见他,也有权在他进门之前关上门。" ⚔️🛡️

如果你对"LLM Agent 驱动的攻防一体化平台"感兴趣,欢迎 Clone 体验:

pip install -r requirements.txt && python run_ui.py


本文基于 ActiveCybersecurity v0.2 源码分析生成 · 2026年8月

相关推荐
腾讯云大数据1 小时前
从多模态数据处理到模型训练:腾讯云EMR-Ray打通Data+AI全流程
人工智能·云计算·腾讯云·mapreduce·腾讯云大数据
louyu6668881 小时前
国产楼宇自控系统哪家靠谱?
大数据·人工智能
FriendshipT1 小时前
Ubuntu 20.04 下使用 Ollama 本地部署 AI 大模型
linux·人工智能·python·深度学习·ubuntu
杨先生哦1 小时前
【2026热端攻防系列 10/12】前端凭据安全深度攻防:Cookie/Storage劫持、会话固定、凭据泄露与浏览器最新加固方案
前端·笔记·安全·web安全
大模型丫丫1 小时前
Loop Engineering:从强化学习视角看 Agent 循环的本质
java·人工智能·学习
乱世刀疤1 小时前
AI Weekly 7.27-8.2
人工智能
天天爱吃肉82182 小时前
# 商用车多体动力学实战笔记|第7篇:制动系统与制动热衰退、ABS滞环控制
大数据·人工智能·笔记·python·嵌入式硬件·汽车
牧艺2 小时前
别让 Agent 猜需求:前端用「一页 Spec」把返工砍掉一半
人工智能·agent·vibecoding
时空节拍AI数字人2 小时前
多模态交互数字人:语音+视觉+触控如何融合
人工智能·microsoft·ai·aigc·交互·语音识别