逆向工程专家智能体:自主规划分析路径,从原始证据中推导每一项事实,并在机械验证关卡下收敛——固件、协议、Web/JS、风控、二进制。
一套自主逆向工程代理:无人值守连跑数小时,每条结论独立验证,只有当每个答案都扛过机械 oracle 判决后才收敛交卷。
🧠 自主规划路径 · 🔬 每条 claim 机器校验 · ⚖️ 全程盲验证 · 📈 循环自己度量自己
🚀 快速开始 · ✨ 核心技术 · 🧠 kunglao × Claude Code · 🎛️ RL 原理 · 🖥️ 运行实况 · 📖 实战案例 · 🧪 评估实测 · 🏗️ 架构
English · 简体中文
[!WARNING] v0.1.6 是最后一条 Claude Code 原生版本线。 下一个里程碑(v0.2) 将运行时整体迁移到 PI Agent 基座——同一个循环、同一套账本、新的引擎 底座。见路线图。
术语约定:
kunglao-agent、PROVEN、oracle、RLVR、DTS、fact、claim、MCP、task_spec.yaml、claim-register.yaml、evidence/_index.json等术语保留英文原文。
你给 kunglao-agent 一个目标和待解问题;它自己规划路径、派遣专家 worker、独立验证每条结论,只有当每个答案都被机械检查落定(而不是 模型自说自话)时才停下。
目标光谱完整:Windows/Linux 原生二进制、Android APK(含 native
.so 层)、Web/JS、协议还原、固件 —— 静态优先设计,驱动你环境里
已有的执行通道(VMware、ssh、docker、adb;纯静态任务一个都不需要)。
它以 Claude Code 插件形式分发: Claude Code 是对话界面;产品本体是这套循环和它产出的 fact 库。
[!NOTE] 循环上报的每个数字 —— 胜率、后验、预算 —— 都能追溯到一条 append-only 账本行。没有任何数字是自声明的。
编排者工作现场 —— 一次收敛判决、一次带预算的 worker 派遣(facts
实时落盘)、一次盲红队判决把 claim 推进到 PROVEN;状态栏 HUD 让整
个交战过程一目了然:
循环度量自己 —— 由 settlement 合成的回合策略、带删失结局仲裁的 折扣 Thompson 后验库、发现层准入一个真正的新方法臂(并拒绝改名重 试)、以及胜率曲线:
kunglao-agent 是包在 Claude Code 外面的 act 级 RL 控制器:Claude
Code 在 act 内推理,kunglao 决定下一个 act、验证它、给它定价、从中
学习。深度设计见 docs/design/。
STAMP,永不 PROVEN。facts 引用原始产物
(sha256)并携带 reproduce: 命令。Claude Code 是发动机,kunglao 是变速箱 + 仪表盘 + 行车电脑——下一个 act、验证、预算、经验去向。
| 裸 Claude Code | + kunglao | |
|---|---|---|
| 下一步 | 会话内即兴 | act 级学习策略,后验跨任务存续 |
| 验证 | 自报 | 机械 oracle + 盲红队 |
| 时程 | 单会话,人盯着 | 数小时无人值守,断点恢复 |
| 经验 | 会话结束即蒸发 | 账本 → 后验 → 更准的开局 |

诚实边界:单会话简单任务裸 Claude Code 更划算(评估表就这么写)。 kunglao 的回报在长时程、验证纪律、跨任务复利。
同类任务的第一次都付全价:循环试一个方法、看着它失败、再试下一个。 但每次尝试都被记下来——同类任务的第二次就从笔记开局,而不是从零开始。

这就是在线强化学习在这里的全部含义:循环在 act 之间自我更新,边干边学 ——没有训练数据集、没有模型重训、没有离线阶段。每个任务的经验在下一次 决策之前就已入账。
1. 每类目标的正确开局。 普通脚本和加固应用不该用同一套开法。循环 按目标种类分开记笔记——目标长什么样,决定用哪本打法手册。

2. 哪些方法是死路。 反复失败的方法被雪藏——不再烧预算(但永不删除; 目标变了可以回来)。当所有方法都没用时,循环会试着发明新路:一个 发现 act 提出真正不同的新方案,对照失败集查新——换个名字的老路被拒收。

3. 哪里要多查一遍。 验证者频繁被驳斥的状态,会学会在那里排更密的 验证——连击转诚实后自动放松。 4. 工具怎么路由也是学的。 工具与 provider 的选择同样进入学习:出过错的工具会被降权一段时间,一旦恢复立即复位——路由跟随记录在案的结果,而不是注册表顺序。
flowchart LR
A["目标状态<br>(长什么样)"] --> B["选一个方法<br>(从笔记里采样)"]
B --> C["执行<br>(worker 去干)"]
C --> D["检查器判决<br>(有证明 / 没证明)"]
D --> E["记一行账<br>(发生了什么、花了多少)"]
E --> F["更新这类目标的笔记"]
F --> B
笔记就是「每个方法 × 每类目标」的成功/失败计数,外加一个偏向:还没被 排除的路总值得试——探索随证据积累恰好衰减。奖励 = 进度 × 权重 − 成本, 所以「贵得没 prose」的习惯在简单目标上亏钱;每个数字都能追溯到一条 append-only 账本行。
熟悉的工作成本下降。 同类第二个任务比第一个便宜;笔记在部署内 跨任务存续。
预算不再流血。 死方法在拖垮时钟前被雪藏;发现层长出没人写过的
新打法。

模型是冻结的。 变强的不是能力,是调度:对的方法、对的顺序、对的 时机。
诚实不是学出来的,是强制的。 检查器只为能复验的结果付账;worker 自己的话永远不算证明。RL 在这份诚实通货之上优化效率——永远不能用 虚构铸币。

知识路由(LLM 对着手册即兴)、有界流水线(固定阶段固定轮次)、单点 判定——决策逻辑全是写死的:上一个任务的经验永远不改变下一个任务的 计划。这个循环的控制律从自己测得的历史里学出来:

| 组件 | 要求 | 说明 |
|---|---|---|
| Claude Code | 当前版本 | 运行时 —— 以插件安装 |
| Python | 3.10+ | 插件通过 uv 携带锁定环境 |
uv | 任意较新版本 | pip install uv 或 astral.sh/uv |
| Ghidra 或 IDA | 二选一 | 原生目标的反编译 |
| MCP 服务器 | 必装 2 个 | ghidra + sequential-thinking —— 见工具链 |
[!WARNING] 分析动作会运行真实工具,可能执行目标派生的输入。动态工作使用隔离 VM/设备;只分析你有授权的目标。
/plugin marketplace add amd2g2zz/kunglao-agent
/plugin install kunglao-agent@kunglao-agent
/kunglao-agent:init ~/cases/synth-dropper --type windows
kunglao-init 搭建工作区、按 --type 探测工具链;缺必需工具时
HARD 拒绝并给出修复指引。
/kunglao-agent:analysis ~/cases/synth-dropper
> 目标:确认这个 dropper 的持久化机制和网络端点;每条结论必须可从
> 原始证据复现。
> 验证:关键结论只有在独立验证者盲推得到相同答案时才算数。
> 约束:静态优先;绝不在宿主机上执行样本。
把任务写得让独立评审者能判断结果:分析目标、验证逻辑、约束。一切
记入 task_spec.yaml;之后循环自动驱动 —— 可以走开,死掉的 worker
会被替换、问题重新入队,/kunglao-agent:resume 在任何中断后从盘上
状态重建现场。
claim-register.yaml # 每条 claim 终态,带验证者签核
facts/F<NNN>.md # byte 锚定、可复现、frontmatter 契约
evidence/_index.json # 每条 fact → 原始产物(sha256 + 路径)
runs/ # 会话审计轨迹
| 命令 | 何时用 |
|---|---|
/kunglao-agent:init <ws> [--type …] [--lane …] | 开始一次交战 |
/kunglao-agent:analysis <ws> | 陈述任务并运行循环 |
/kunglao-agent:resume <ws> | 任何中断之后 —— 只读断点简报 |
/kunglao-agent:upgrade <ws> [--dry-run] | 插件升级后(用户数据永不触碰) |
uv sync 还会注册 kunglao 控制台脚本(decide、tick、verify、
health、resume、upgrade……全部子命令上 PATH)。
循环从你陈述的最终状态机械推导 oracle。四种说法覆盖大部分偏差:
| 你说 | 通常意味着 | oracle 锚定在 |
|---|---|---|
| "我要纯算" | 离线复现签名/加密例程 | 每对捕获样本(含留出对)byte-exact 回放 |
| "我要解密" | 解一段密文,还是要可复用能力? | 明文校验通过 / 金丝雀往返 byte 一致 |
| "帮我分析这个协议" | 线格式还原 + 可运行编解码器 | 编解码器对每帧 byte-exact 往返 |
| "这个 sign 在哪算的?" | 一个带证明的定位 | 具名函数 + 该点 hook 复现捕获值 |
点名样本和行为(不是类别);让成功标准是数据(捕获对 —— 留出对保 证诚实);约束前置说清(纯静态?有设备?走哪个通道?)。
两个实时面让运行可观察:
状态栏 —— 运行中的一行 HUD:语义状态字形(◈ analyzing /
✖ DOWN)、claim 进度 C 6/8、当前胜率、采样器榜首臂及其年龄、健
康度圆点、活动任务片、价值火花线。过期但在策略内如实渲染 idle;超
策略渲染 DOWN。
胜率曲线 —— settlement 流上的滚动通过率:
uv run python scripts/winrate_curve.py <workspace> [--window 5] [--html curve.html]
健康运行的曲线随循环学会"哪些方法有效"而上升;贴零的平线说明排序 器把预算花在了永不结算的臂上 —— 先查障碍注册表再加预算。
从真实且完全收敛的运行工件重写的证据优先案例(EN + 简体中文)—— 转录、 死路、两个具名验证方法、机械判决: