🔴 NEW: 第一性原理推导引擎 — 存在需要证据 · 推导需要链条 · 沉默优于编造 · 工具是真理
🔴 NEW: VulnHunter 自主猎洞引擎 — 11 类漏洞模式 · 攻击面映射 · 假设生成 · 定向验证
🔴 NEW: 反致幻协议 — FACT/DERIVED/HYPOTHESIS/UNKNOWN 四级标注 · 零容忍编造
🔴 16 种钓鱼/社工手法 · 🔴 12 个 C2 框架 · 🔴 12 种 EDR 免杀技术 · 🔴 25+ Web 攻击向量
🟠 70+ 安全工具集成 · 🟠 MITRE ATT&CK 全战术覆盖 · 🟠 SecLists 60k⭐ 字典库
🟡 CVE 强制引用(NVD/CISA KEV/CIRCL) · 🟡 逆向情报(MalwareBazaar/ThreatFox/YARA)
🟢 GTFOBins + LOLBAS 提权 · 🟢 Nuclei 漏洞模板 · 🟢 Shodan 侦察 · 🟢 HackTricks 方法论
🔵 4 链对抗共识引擎 · 🔵 PEV 假设驱动逆向 · 🔵 1M 上下文优化 · 🔵 FuzzTag Payload 引擎
⚫ 全部数据源免费 · 零配置即用 · 不确定就查证 · AI 不能撒谎
Haking Code 不是一个工具集合器。它是一个会思考的安全研究员。
它能在你睡觉的时候自主完成渗透测试报告,能用 4 个 AI 角色互相辩论直到得出最可靠的漏洞分析,能假设驱动地逆向一个你从未见过的二进制文件。它集成了 70+ 安全工具、世界最全的渗透测试字典库、国产最强安全平台的 FuzzTag 引擎,还有一个赛博朋克风格的知识图谱。
| 🚨 必读 | 🔧 功能 | 📖 参考 |
|---|---|---|
| 🔥 核心特性 | 算法架构 | |
| 🔑 环境变量配置 | /arena 对抗共识 | UI 布局 |
| 📖 所有命令 | /recon 逆向引擎 | 多 Provider 配置 |
| 快速开始 | 安全工具箱 | 开发 |
| 🛠️ 最新修复 | 知识图谱 Wiki | 更新日志 |
不是一个 AI 回答你,而是 4 个 AI 角色互相攻击、质疑、验证、综合,直到收敛到最可靠的答案:
C1 Proposer → 构建论点,寻找支持证据
C2 Challenger → 逻辑攻击,找漏洞和反例
C3 Verifier → 实时网络搜索事实查证
C4 Synthesizer → 综合收敛,标注共识与分歧
基于博弈论的 CR-EIG 信息效率算子 + ε_t 可利用度 驱动收敛,不是固定轮次,而是信号驱动停止。这是你在任何其他工具里找不到的。
不是让 AI 帮你跑 strings,而是让 AI 像真正的逆向工程师一样思考:
提出假设 → 选择工具验证 → 正则判定结果 → 更新假设 → 循环
支持 8 种假设类型(文件类型/壳/编译器/家族/算法/反分析/能力/协议),自动调度 nmap/strings/diec/ghidra 等工具,直到所有假设被验证或预算耗尽。
从信息收集到后渗透,从密码破解到云安全,全部内置:
| 分类 | 工具 |
|---|---|
| 🔍 侦察 | nmap、rustscan、amass、subfinder、httpx、spiderfoot、trufflehog、gitleaks |
| 🌐 Web攻击 | nuclei、ffuf、nikto、gobuster、feroxbuster、dalfox、xsstrike、wafw00f |
| 🏢 AD渗透 | bloodhound、impacket、responder、certipy、kerbrute、netexec |
| 🔑 密码破解 | hashcat、john、hydra、pdfrip(Rust多线程PDF破解,R5快15.5x) |
| 🎯 后渗透/C2 | sliver、havoc、mythic、evil-winrm、ligolo-ng、chisel、peass-ng |
| ☁️ 云安全 | prowler、scoutsuite、pacu、trivy |
| 📱 移动安全 | mobsf、frida、objection |
| 🔬 逆向/取证 | ghidra、radare2、volatility3、binwalk、pspy |
参考 76k ⭐ 的 yakit Web Fuzzer,内置 FuzzTag 语法,AI 可以直接生成测试 Payload:
{{int(1-1000)}} → 生成 1000 个数字
{{list(admin|root|test)}} → 枚举列表
{{base64(admin:pass)}} → Base64 编码
{{file(wordlist.txt)}} → 从字典文件读取
{{randstr(16)}} → 随机字符串
多个标签自动做笛卡尔积展开,一行模板生成数千个 Payload。
世界最全的渗透测试字典,直接内置:
Passwords/Common-Credentials/10k-most-common.txt
Passwords/Default-Credentials/default-passwords.csv ← SSH/FTP/MySQL/Tomcat默认凭据
Discovery/Web-Content/raft-medium-directories.txt ← Web目录爆破
Fuzzing/XSS/ ← XSS Payload
Fuzzing/Databases/SQLi/ ← SQL注入
Fuzzing/LFI/LFI-Jhaddix.txt ← 本地文件包含
AI 知道所有字典路径,可以直接组合 FuzzTag + SecLists 发起攻击。
内置 D3 力导向知识图谱,爬取安全研究文章自动建立节点关系,实时 WebSocket 广播,Markdown 预览。
cd wiki && bun run dev # → http://localhost:7891Tauri 2 桌面应用,悬浮在屏幕顶部,一键启动/切换所有 AI coding agent,支持 Windows Terminal 原生分屏。
本轮针对仓库做了系统化质量审计:bunx tsc --noEmit 全量类型检查 + biome lint + bun test + 手工核查关键运行时路径。结果:158 个 TS 错误、17 个 lint error、45 个测试失败。本次提交修复其中影响用户体验的关键问题。
根因:LocalCommandResult 的契约是 { type: 'text', value: string },但实现里写的是 { type: 'text', text: '...' };同时命令对象缺必填字段 supportsNonInteractive,类型检查直接拒绝注册。
修复:返回字段 text → value;index.ts 加 supportsNonInteractive: true。两个命令现在能正常注册并显示结果。
根因:
- 工具对象完全没有
inputSchema——expect(tool.inputSchema).toBeDefined()测试断言失败;zodToJsonSchema(tool.inputSchema)抛错后兜底回{type:'object', properties:{}},DeepSeek 只能瞎猜参数。 call(_toolUseId: string, input: ...)—— 真实签名是call(args, context, ...),所以 input 永远 = toolUseId 字符串,所有input.action都是 undefined,工具一律走 default 分支。- 返回
{ output: ... }—— 真实契约是{ data: ... },UI 渲染拿到的总是 undefined。
结果:原 ReverseCli/CdpBrowser 从未真正成功跑过任何动作——LLM 调用 → 输入校验失败 → input.action 是字符串 → 走 default → echo 默认信息 → 字段名错 → UI 显示空。
修复:
- 加
import { z } from 'zod/v4'+ 完整inputSchema = z.object({ action, targetPath, pentestTool, ... })覆盖现有所有字段 call签名改为(input)单参形式- 所有返回
{ output: ... }→{ data: ... } - 移除手工
as Action / as string / as number强转(zod 已校验) - import 路径
'../../Tool.js'→'../Tool.js'
根因:第二个 useDirectRoute() 分支(约 line 1887)从 ./deepseek-direct.js 解构 deepseekCreate,但该模块只导出 useDirectRoute / queryModelDeepSeekDirect,根本没这个函数。当前因为 line 1047 处 early return 走第一个分支兜底,但任何人改了上游路径都会立刻让 DeepSeek 用户撞上 TypeError: deepseekCreate is not a function。
修复:删除 line 1886-1939 整段死代码(54 行),加注释说明历史以防误以为缺一个分支再加回来。同时显露并修复一个被 as any 掩盖的旧错(yield e.value 类型不匹配)。
根因:@ant/ink 的 Color 类型必须是 'ansi:cyan' | 'ansi:green' | ...(带 ansi: 前缀)或 RGB / Hex。代码里写的全是裸名 color="cyan" —— ink 看到不认识的色值会直接忽略,LogoV2 / WelcomeV2 / CondensedLogo / Setup 面板 / Arena UI / TaskPanel 全部退化成默认终端色,README 宣传的赛博朋克 cyan 配色彻底失效。
修复:30+ 处批量替换 → ansi:cyan / ansi:green / ansi:yellow / ansi:red。顺手治了 setup 里 color={x ? 'cyan' : 'dimColor'} 这种把 dimColor 当颜色字面量误用的写法(改成 color={x ? 'ansi:cyan' : undefined} dimColor={!x})。
根因:
setup.tsx把apiKey/baseUrl/model/fastModel写到 config 顶层,但HakingConfig类型只有providers/defaultProvider/theme——读上来全部是 undefined,每次启动都要重填。README 宣传的"持久化保存"功能直接失效。ArenaProvider.baseUrl类型上必填,但来源ProviderEntry.baseUrl是 optional,未填 baseUrl 的 provider 让/arena命令在fetch(\${undefined}/v1/messages`)时直接Failed to parse URL`。PevSession.tsx渲染provider.displayName,但ArenaProvider没这字段,UI 显示成undefined(claude) · ...。
修复:
HakingConfig加apiKey/baseUrl/model/fastModel4 个 optional 字段;applyHakingConfig实现 "env > top-level > defaultProvider 的 provider 字段" 三层注入(高优先级覆盖低优先级)ArenaProvider加displayName: string(默认回退到id)和baseUrl: string(默认回退到 DeepSeek 端点);增加fromEntry适配函数把ProviderEntry安全转换成ArenaProvider- 删除重复的
src/services/utils/hakingConfig.ts(与src/utils/hakingConfig.ts内容完全一致的"幽灵副本")
| 指标 | 修复前 | 修复后 |
|---|---|---|
| TypeScript 错误数 | 158 | 82 |
| 关键 P0 运行时 bug | 6 | 2 |
| 测试 pass | 3565/3611 | tool-chain 测试 14/14 全过(之前 1 fail) |
| 用户启动可见 UI 颜色 | 默认终端色 | 完整赛博朋克配色 |
剩余审计项(待后续提交):vulnHunter xss 分支缺失、PEV propagator 自适应带宽未实现、cav-adapter 409 后认证失败、PEV Dashboard 模块缺失、ccbteam-math 路径错、PEV 属性测试缺 fast-check 包。详见 tmp_check/typecheck-after5.log。
根因:isFullscreenEnvEnabled() 默认返回 false(仅 USER_TYPE=ant 时启用),导致 Ink 在主屏幕模式下运行。主屏幕模式每次重绘是追加式的——新帧写在旧帧下方,旧帧留在终端滚动缓冲区中,表现为"界面被重复叠加"。
修复:
fullscreen.ts:isFullscreenEnvEnabled()默认返回true,所有交互式会话自动进入 alt-screen 全屏模式- 用户可通过
CLAUDE_CODE_NO_FLICKER=0手动关闭
根因:HakingLayout(侧边栏容器)在 <AlternateScreen> 外部包裹 REPL,导致 Yoga 高度计算冲突。同时 FullscreenLayout 和 Messages 中硬编码 width={columns}(终端全宽),未减去侧边栏 24 列宽度。
修复:
replLauncher.tsx:移除外层 HakingLayout 包裹REPL.tsx:将 HakingLayout 移到<AlternateScreen>内部HakingLayout.tsx:新增ContentColumnsContext+useContentColumns()hook,传递实际内容区宽度FullscreenLayout.tsx:用useContentColumns()替代useTerminalSize().columnsMessages.tsx:同上,消息行和 Divider 在正确宽度内渲染
根因:stopHooks.ts 每轮注入的 CVE/RE-INTEL/PENTEST-KB citation 消息以 isMeta: false 创建,在 UI 中可见。去重窗口仅 3 轮,相同术语第 4 轮起重复注入。
修复:
stopHooks.ts:citation 消息设置isMeta = true,对模型可见但 UI 不渲染forcedVerification.ts:DEDUP_WINDOW_TURNS从 3 增大到 8
根因:DeepSeek 直连路径在消息预处理时缺少 stripCallerField + stripAdvisorBlocks 清理步骤,导致 caller、advisor_tool_result、server_tool_use 等 DeepSeek 不认识的字段/块被发送到 API,触发 400 或空响应。
修复:
claude.ts:DeepSeek 直连路径补齐stripCallerFieldFromAssistantMessage+stripAdvisorBlocksdeepseek-direct.ts:buildApiMessages新增sanitizeBlocks,过滤 6 种不兼容块类型 + 移除citations字段
根因:Windows Terminal 滚轮事件间隔不规律,在 200ms 的 bounce 判定窗口内容易产生方向翻转假象,导致 wheelMode 被误触发,加速曲线生效后单次滚轮跳过大量内容。
修复:ScrollKeybindingHandler.tsx 中 WHEEL_BOUNCE_GAP_MAX_MS 在 Windows Terminal(WT_SESSION)下从 200ms 收紧到 80ms,只有真正的编码器弹跳才能触发 wheelMode。
Haking Code 现在可以与 Spectre(原白龙马)意识体双向通信:
┌──────────────┐ SQLite WAL ┌──────────────┐
│ Spectre │ ◄──── bridge.db ───► │ Haking Code │
│ (意识体) │ │ (红队引擎) │
└──────────────┘ └──────────────┘
- Spectre 可以自主下发扫描任务给 Haking Code
- Haking Code 以无头子进程运行,由 Spectre spawn/管理
- 通过共享 SQLite(WAL 模式)通信,零代码耦合
- 任一方挂了另一方正常运行
会话结束前保留当前状态,压缩存储未完成的任务和上下文:
/handoff 明天继续搞那个 SQL 注入
提取任务、上下文、工具结果 → 压缩存储 → 下次 /pickup 恢复。
加载上一个 /handoff 保存的未完成工作,无缝继续:
/pickup
显示未完成任务列表、上下文摘要、最近工具结果,直接接着干。
本次更新参考了 GitHub 今日 Trending 的多个顶级项目并深度集成:
| 来源项目 | ⭐ | 集成内容 |
|---|---|---|
| colbymchenry/codegraph | 12.7k | 代码知识图谱 MCP,减少 35% token 消耗 |
| yaklang/yakit | 7.3k | FuzzTag 引擎移植到 ReverseCliTool |
| danielmiessler/SecLists | 60k | 渗透测试字典库全量集成 |
| Z4nzu/hackingtool | 76k | 工具列表扩充至 70+ |
| mufeedvh/pdfrip | 1.4k | PDF密码破解工具安装集成 |
| HKUDS/CLI-Anything | 39k | 安全工具 Skill 文件自动生成 |
| obra/superpowers | 201k | 14个开发方法论 Skill 集成 |
| trimstray/the-book-of-secret-knowledge | 222k | 黑客知识大全作为 agent 参考资料 |
| multica-ai/andrej-karpathy-skills | 142k | Karpathy 行为规则集成到 CLAUDE.md |
详见 NEXT-VERSION.md,已规划三大方向:
- Hash 锚定编辑(参考 oh-my-pi)— 用内容 hash 替代行号定位,预计减少 61% token 消耗
- Hindsight 跨 Session 记忆(参考 oh-my-pi)—
retain/recall/reflect三层记忆 API,让 agent 记住每次渗透测试的结论 - 多 Agent 分工协作(参考 multica)—
/mission命令,复杂任务自动拆分并行,每个子任务走/arena质量保证
AI-powered terminal agent for cybersecurity professionals.
专为网络安全研究员打造的终端 AI Agent,集成逆向工程、渗透测试、多模型对抗共识等能力。
以下为 v1.0.1 之后的全部 commit 摘要,按时间倒序。
- CVE-2026-20223 Cisco Secure Workload — CVSS 10.0 满分 RCE(5月22日修复)
- Bitwarden CLI 供应链投毒 — npm 恶意包 v2026.4.0 窃取 AWS/Azure/GCP/GitHub token
- AssistantToolUseMessage 可选链防护(
inputSchema?.safeParse、input?.success) - 系统 prompt 新增
<tool_routing>规则:漏洞搜索必须用 WebFetch 不用 WebSearch
Linux 2026 内核漏洞(CISA KEV 在野利用):
- 🔴 CopyFail (CVE-2026-31431) — 9年老洞,732字节 exploit 即 root,影响所有 2017 后内核
- 🔴 Dirty Frag — CopyFail 后继,页缓存腐败提权
- 🔴 Fragnesia (CVE-2026-46300) — Dirty Frag 补丁引入的新 LPE
- 🔴 CVE-2026-46333 — 权限管理缺陷,Debian/Fedora/Ubuntu 默认受影响
Windows 2026 零日(活跃利用):
- 🔴 RedSun/UnDefend (CVE-2026-41091/45498) — Microsoft Defender 零日
- 🔴 CVE-2026-42897 — Exchange Server 零日 XSS,无永久补丁
- 🔴 CVE-2026-21510/21513 — APT28 利用攻击乌克兰/EU
- 🔴 YellowKey/GreenPlasma — Nightmare-Eclipse 披露的 Windows 零日
新增 3 大知识库(全部本地即时查询,无网络延迟):
| 知识库 | 条目数 | 覆盖内容 |
|---|---|---|
| 🎣 Phishing/SE KB | 16 种 | evilginx、gophish、vishing、smishing、quishing、MFA bypass、pretexting、watering hole... |
| 🏴☠️ C2/RedTeam KB | 12 个 | Sliver、Havoc、Mythic、Cobalt Strike、Metasploit、Empire、Brute Ratel、Ligolo-ng... |
| 🛡️ Evasion KB | 12 种 | AMSI bypass、ETW patch、unhooking、direct syscalls、process hollowing、ScareCrow... |
- 15 个内核漏洞(DirtyPipe → CopyFail 全系列)
- 13 种配置滥用(SUID/capabilities/cron/sudo/docker/lxd/NFS/PATH...)
- 4 个枚举工具(LinPEAS/LinEnum/lse/pspy)
新增 src/services/pentestKnowledgeDB.ts:
| 数据源 | 用途 | 费用 |
|---|---|---|
| Shodan InternetDB | IP 侦察(端口/漏洞/CPE) | 免费 |
| GTFOBins | Linux 提权/逃逸 | 免费 |
| LOLBAS | Windows LOLBIN | 免费 |
| WADComs | AD 域攻击命令 | 免费 |
| PayloadsAllTheThings | 25+ Web 攻击 payload | 免费 |
| Nuclei Templates | 漏洞检测模板 | 免费 |
| HackTricks | 综合渗透方法论 | 免费 |
针对 1M token 上下文窗口的优化策略:
- 预算控制:每轮 citation 注入上限 800 token(3200 字符),超出按优先级截断
- 去重窗口:3 轮内相同 CVE/hash/indicator 不重复注入
- 单消息合并:所有 citation(VERIFIED + CVE + RE-INTEL)合并为 1 条 system message
- 可压缩标记:旧 citation 可被 autocompact 安全丢弃,零保留优先级
- 100 轮安全对话最坏 80k token(8%),实际有去重约 20k(2%)
- CVE 查证仅在文本包含 CVE-ID 时触发
- RE 情报仅在安全相关上下文(含安全关键词)时触发
- 过滤 MD5 长度 hex(可能是颜色值),只保留真实 indicator
- 限制最多 5 个 indicator 查询
新增 src/services/reverseEngineeringDB.ts(5 大免费数据源):
- MalwareBazaar:恶意软件家族/壳/标签查询
- ThreatFox:IOC 关联(IP/域名/哈希)
- URLhaus:恶意 URL 数据库
- Hashlookup (CIRCL):已知文件分类
- MITRE ATT&CK:TTP 战术技术知识库
- 自动提取响应中的哈希/IP/域名/MITRE ID 并查证
CVE 查询优先级:CIRCL (完全免费无 key 无限速) → NVD → CISA KEV → Firecrawl。零配置即可用。
新增 src/algorithms/cav/pev/forcedVerification.ts(纯算法驱动的强制事实查证):
- 不确定性检测器:正则+加权评分,扫描 hedging 词("I think"/"可能"/"IIRC")、版本号声明、技术名称、API 断言
- 强制触发:score > 0.4 时自动调用 Firecrawl 搜索最新技术文档
- 系统 prompt 注入:
<forced_verification>section 强制模型引用[VERIFIED]证据块 - stopHook 集成:每轮 assistant 响应后自动执行,证据作为 system message 注入下一轮
需要 FIRECRAWL_API_KEY 环境变量。未配置时静默跳过。
ScrollKeybindingHandler.tsx 滚轮加速逻辑修复:
- 降低 wheelMode 加速参数(STEP/CAP: 15→8)避免单次步长过大
scroll:lineUp/lineDown限制步长不超过视口高度 1/3scrollUp/scrollDown接近边界时只滚剩余距离,不再直接跳到极端位置
根因:DeepSeek 直连路径拿到的是原始 messages 数组,跳过了 normalizeMessagesForAPI() + ensureToolResultPairing() 两个关键处理步骤。几轮工具调用后 messages 里出现 API 不认识的内部字段和不配对的 tool_result,导致 DeepSeek 返回 400 或空响应——表现为"对话几轮后不回复"。
修复:claude.ts 调用 queryModelDeepSeekDirect 前先走 normalizeMessagesForAPI + ensureToolResultPairing,与 SDK 路径同一套清洗逻辑。
- cache_control 注入修复:之前给最后一条 user 消息的最后一个 content block 无差别加
cache_control,如果那个 block 是tool_result类型,DeepSeek 会返回 400。现在只给type: 'text'的 block 加。 - 空响应不再静默:如果 DeepSeek 返回 0 content blocks + 0 output tokens,显示
[DeepSeek returned empty response]并附带诊断提示(上下文过长 / tool_result 格式错误),而不是一条空消息。
src/components/Messages.tsx 两处 msg.message?.content[0] → msg.message?.content?.[0]。system / attachment 等消息没有 .message.content 字段,直接 [0] 会 TypeError crash。
README 新增 "📚 Haking Wiki" 段落,强调爬虫功能必须自行配置 Firecrawl API Key(获取地址、三种配置方式、免费额度说明)。
全新 wiki/ 目录(9 文件,1512 行):
| 模块 | 文件 | 功能 |
|---|---|---|
| 数据层 | core/graph.ts |
WikiGraph 类:节点/边 CRUD、graph.json 持久化(单写队列防并发)、subscribe/emit delta、子串搜索 |
| 爬取层 | core/crawler.ts |
Firecrawl scrape → Turndown 回退 → .haking/wiki/pages/{id}.md,自动 upsert page 节点 |
| HTTP | server.ts |
Bun.serve port 7891,静态文件 + REST + WS + markdown 页面服务 |
| REST | routes/api.ts |
8 个 endpoint(nodes/edges CRUD + search + snapshot) |
| WebSocket | routes/ws.ts |
连接即推 snapshot,后续 delta 实时广播;客户端可 crawl/search/ping |
| 前端 | web/index.html |
三栏布局(工具栏 / D3 画布 / Markdown 面板) |
| 可视化 | web/graph.js |
D3 force-directed 图,增量 delta 更新,搜索高亮,节点选中 → 右侧 markdown 预览 |
| 样式 | web/style.css |
赛博朋克暗色主题(与灵动岛同色系 #00fff7 / #a855f7 / #ff2d95) |
启动:cd wiki && bun run dev → http://localhost:7891
灵动岛 Tauri 2 项目首次入库(island/ 目录,10 文件,768 行):
- 拖拽修复:补
capabilities/default.json(6 条 window 权限)+withGlobalTauri: true+ mousedown 显式startDragging() - 三连击关闭:
MouseEvent.detail >= 3→close() - CLI 工具启动器:6 个默认工具(Haking / OpenCode / Codex / Claude / Aider / Gemini),每个一种品牌色圆球,配置存
%APPDATA%\haking-island\tools.json - wt.exe 分屏:Shift+多选 ≥2 工具 → 点 Layout 按钮 → 一行
wt new-tab ... ; split-pane ...原生分屏(4 种 layout:左右 / 上下 / 田字 / 多 Tab) - 无 wt.exe 回退:每工具独立 cmd 窗口
DeepSeek 直连路径完全重写(src/services/api/deepseek-direct.ts,672 行):
| 项 | 之前 | 现在 |
|---|---|---|
| 流式输出 | await res.json() 阻塞 |
SSE stream:true,emit Anthropic 标准事件 |
| 工具 schema | 空 {type:'object', properties:{}} |
zodToJsonSchema(tool.inputSchema) 真实 schema |
| 工具数量 | slice(0, 20) 静默丢 |
全部传入 |
| max_tokens | 硬编码 8192 | 64K 默认 / 384K 上限 |
| temperature | 没传 | pass-through |
| 思考模式 | 不请求 | thinking:{type:'enabled'} plumbing |
| cache_control | 无 | system 尾 + user 尾 + tool 列表尾 |
| 重试 | 无 | 429/5xx 指数退避 3× |
| 错误分类 | 一行文本 | 解析 {error:{type,message}},401/429/500 各自提示 |
| tool_use | 解析但不 yield | 完整 yield |
上下文 / 价格 / 容量:
- DeepSeek V4 上下文 200K → 1M
- 输出上限 default 64K / upper 384K
modelCost.ts加 DeepSeek 三档 USD 价表,unknown_model_cost告警熄灭
ModelStatsPanel 增强:
DEEPSEEK_PRO_FULL_PRICE=1切换 pro 原价/2.5 折- 累计行加 USD 等价
灵动岛多实例聚合(src/services/island.ts):
- 每实例写
~/.haking-island/sessions/{pid}.json - 抢 port 7890 当 hub → 读全部 session 文件聚合广播
- 非 hub 30s 重试抢占;hub 死后无缝接管
- 岛上 sessions 列表显示所有活实例
本项目完全绕过 Anthropic SDK(@anthropic-ai/sdk)的 Zod v4 校验层,使用原生 fetch 直连 DeepSeek API。原因:Anthropic SDK 0.80+ 对响应格式有严格的 schema 校验(_idmap、schema._zod 等),DeepSeek 的兼容 API 不返回这些私有字段,导致运行时崩溃。
解决方案:src/services/api/deepseek-direct.ts 在 queryModel 入口处拦截,不经过 SDK,直接用 fetch 调用 /v1/messages 端点,手动构造 AssistantMessage 返回给下游消费者。
本次发布把 DeepSeek 路径从"能跑"升级到"能跑得好",并把灵动岛升级成 AI CLI 工具的总控面板。
| 改动 | 之前 | 现在 |
|---|---|---|
| 流式输出 | await res.json()(阻塞,整段返回) |
SSE stream: true,emit Anthropic 标准事件 (message_start / content_block_delta / message_stop),token 级渐进显示 |
| 工具 input_schema | 全部硬编码空 schema {type:'object', properties:{}} |
zodToJsonSchema(tool.inputSchema) 真实 schema |
| 工具数量 | 静默 slice(0, 20) 砍掉 21 号之后 |
全部传入 |
max_tokens |
硬编码 8192 | getModelMaxOutputTokens() + CLAUDE_CODE_MAX_OUTPUT_TOKENS env 覆盖;DeepSeek V4 默认 64K(最大支持 384K) |
| temperature | 没传 | 从 options.temperature pass-through |
| 思考模式 | parse 但从不请求 | thinking: {type:'enabled', budget_tokens} plumbing 通了 |
cache_control |
完全没用 | 系统块尾、最后 user 消息、tool 列表尾全部标 ephemeral,DeepSeek 缓存命中输入价低 50× |
| 重试 | 失败一次就死 | 429 / 5xx / 网络错误 → 指数退避 800/1600/3200ms,最多 3 次 |
| 错误分类 | 一行 ${status}: ${text} |
解析 {error:{type,message}},401/429/500 各自带提示与下一步操作 |
tool_use 块 |
解析了但从来没 yield(Agent 工具调用静默失败) | 完整 yield + cache_creation_input_tokens 计入 |
- DeepSeek V4 上下文窗
200K → 1M(modelSupports1M加 deepseek-v4 匹配) - DeepSeek V4 输出上限
default 64K / upper 384K MODEL_COSTS加 DeepSeek 三档专属表(按官方人民币价折 USD),getModelCostsshort-circuit 不再走 Claude 错档tengu_unknown_model_cost告警熄灭,StatusLine "costs may be inaccurate" 不再亮
输入框正下方常驻:
deepseek-v4-flash in 12.3k · out 4.5k · cache↓ 8.0k · cache↑ 0 ¥0.0123 (1/2 ¥/Mtok)
deepseek-v4-pro in 0 · out 0 · cache↓ 0 · cache↑ 0 ¥0 (3/6 ¥/Mtok)
累计 ¥0.0123 (≈ $0.0017) · pro 当前 2.5 折,原价 12/24 ¥/Mtok
- 直接按 DeepSeek 官方人民币单价算 CNY,1 秒轮询
STATE.modelUsage - 累计行带 USD 等价(汇率 7.2)
- 设
DEEPSEEK_PRO_FULL_PRICE=1→ 切到 pro 原价档(pricing 同步进 modelCost.ts) - 仅
ANTHROPIC_BASE_URL含deepseek时显示,其他后端隐藏避免误导 - 终端宽度 < 70 列自动隐藏
之前两个 Haking Code 同时跑,第二个抢不到 port 7890 就完全隐形,岛上只显示一个 session。现在改成文件聚合 + 端口领导选举:
每个 Haking Code 实例
├─ 写 ~/.haking-island/sessions/{pid}.json,每 1.5s 刷新
├─ 抢 port 7890
│ ├─ 成功 → 当 hub:每秒读全部 session 文件聚合广播
│ └─ 失败 → 仅写文件(30s 重试一次抢占)
└─ exit/SIGINT/SIGTERM → 删自己的文件
Hub 读文件时 mtime > 8s 视为死亡 → unlink
第一个 hub 死 → 30s 内第二个无缝接管
岛上 sessions 列表会列出所有活实例,每条带 cwd 区分(Haking Code (miserad) / Haking Code (myproject)),底部 stats 是聚合值。
根因两个:
src-tauri/capabilities/目录根本没建,Tauri 2 严格安全模型默认拒绝core:window:allow-start-draggingtauri.conf.json没设withGlobalTauri: true,v2 默认false导致window.__TAURI__全局对象不存在,HTML 第一行const { invoke } = window.__TAURI__.core直接 TypeError,整个 script 静默挂掉
修复:建 capabilities/default.json 释放 6 条 window 权限;conf 加 withGlobalTauri: true;HTML 用 mousedown → startDragging() 显式拖拽(比 data-tauri-drag-region 在 transparent + decorations:false 组合下更稳)。
MouseEvent.detail >= 3 触发 getCurrentWindow().close(),跟 OS 双击间隔同步。
展开后多了两个区:
┌──────────────────────────────────┐
│ ▾ Sessions │
│ ● Haking Code (miserad) │ ← 多实例 each cwd
│ ● Haking Code (myproject) │
├──────────────────────────────────┤
│ ▾ TOOLS click 启动 · shift 多选 │
│ 🟦 Haking 🟧 OpenCode │
│ 🟢 Codex 🟫 Claude │
│ 🩷 Aider 🟦 Gemini │
├──────────────────────────────────┤
│ ▾ LAYOUT │
│ [▮▮ 左右] [≡ 上下] [⊞ 田字] [▤ Tab]│
└──────────────────────────────────┘
每个工具一个品牌色小圆球。配置文件 %APPDATA%\haking-island\tools.json,首次启动自动写默认 6 工具,可自由编辑加自家 CLI / 命令参数 / cwd。
单击 → wt.exe new-tab 启动单个;Shift+多选 ≥2 个 + 点 layout 按钮 → 一行 wt new-tab ... ; split-pane -V ... ; split-pane -H ... 把它们 split-pane 到同一个 Windows Terminal 窗口,原生分屏。
四种 layout:
- 左右:垂直 split-pane 链
- 上下:水平 split-pane 链
- 田字:4 工具时正好 2×2 quadrant,别的数量退化成左右
- 多 Tab:每个工具一个 wt tab,不分屏
没装 wt.exe 的老 Windows → 回退到每工具一个独立 cmd 窗口。
wiki/ 目录是一个独立的 Bun 应用,提供安全研究知识图谱 + D3 力导向可视化 + Markdown 预览。
cd wiki && bun run dev
# → http://localhost:7891
⚠️ 爬虫功能需要自行配置 Firecrawl API KeyWiki 的 "Add Page" 功能通过 Firecrawl 爬取网页并转为 Markdown。必须先获取 API Key 并配置到环境变量,否则爬取会失败(回退到原生 fetch + Turndown,但对 JS 渲染页面效果差)。
# 方式 1:.env 文件(项目根目录) FIRECRAWL_API_KEY=fc-xxxxxxxxxxxxxxxx # 方式 2:环境变量 set FIRECRAWL_API_KEY=fc-xxxxxxxxxxxxxxxx # 方式 3:/setup 命令配置(Haking Code 内)获取 Key:https://firecrawl.dev → 注册 → Dashboard → API Keys
免费额度:500 次/月,足够日常研究使用。
- 🔐 去登录化 — 移除 Anthropic OAuth,直接使用 API Key
- 🧠 DeepSeek 默认接入 — base_url
https://api.deepseek.com/anthropic - 🎨 全新 UI — 侧边栏布局(Tasks / Memory / Buddy)
- ⚔️
/arena命令 — 4 链对抗共识引擎(C1 Proposer → C2 Challenger → C3 Verifier → C4 Synthesizer) - 🔬
/recon命令 — PEV 假设驱动逆向分析引擎 - 🛠️ ReverseCliTool — 20+ 安全工具内置(nmap, nuclei, sqlmap, strings, diec...)
- ⚙️
/setup命令 — 持久化配置面板,支持多 Provider - 🌐 Firecrawl 集成 — Web 搜索作为外部真值锚点
- 📦 183 个 Skills — 安全扫描、代码审计、TDD、深度研究等
- 🐱 Buddy 系统 — 宠物伴侣移至侧边栏
⚠️ 以下步骤缺一不可,跳过任何一步都会导致程序无法正常运行、DeepSeek 无响应、或功能残缺。
| 你跳过了什么 | 后果 |
|---|---|
| 没装 Bun 或版本 < 1.2 | bun install 直接报错,依赖装不上 |
没跑 bun install |
缺依赖,启动即崩 |
| 没配 API Key | 所有 AI 功能静默失败,看起来像"没反应" |
| Base URL 写错 | DeepSeek 返回 404/401,表现为"对话无响应" |
用 npm / yarn 代替 bun |
构建脚本依赖 Bun 运行时特性,npm/yarn 跑不起来 |
直接改 dist/ 目录 |
下次 bun run build 全部覆盖,白改 |
没有 /setup 就开始用 |
模型配置为空,请求发不出去 |
| Windows 上用 Git Bash 跑 | 部分路径和进程管理不兼容,用 PowerShell 或 CMD |
# 1. 安装 Bun(必须 >= 1.2.0)
# Windows:
powershell -c "irm bun.sh/install.ps1 | iex"
# macOS/Linux:
curl -fsSL https://bun.sh/install | bash
# 2. 克隆仓库
git clone https://github.com/elbelicojackson-hue/haking-code-.git
cd haking-code-
# 3. 安装依赖(只能用 bun,不能用 npm/yarn)
bun install
# 4. 构建
bun run build
# 5. 启动
bun run dev# 6. 首次启动后,在 REPL 中输入:
/setup在 /setup 中必须配置:
| 配置项 | 必填 | 说明 |
|---|---|---|
| API Key | ✅ | DeepSeek 的 sk-xxx 密钥 |
| Base URL | ✅ | 必须是 https://api.deepseek.com/anthropic(注意结尾有 /anthropic) |
| 主模型 | ✅ | deepseek-v4-pro 或 deepseek-chat |
| 快速模型 | 可选 | deepseek-v4-flash(默认) |
| Firecrawl Key | 可选 | 用于 Wiki 爬虫和强制查证,不配则跳过 |
输入 /model 切换模型时,可以用别名或完整模型名。以下是映射关系:
| 别名 | 实际调用的 DeepSeek 模型 | 说明 |
|---|---|---|
sonnet |
deepseek-v4-flash |
快速模型,适合日常对话、简单任务 |
haiku |
deepseek-v4-flash |
同上,最轻量 |
opus |
deepseek-v4-pro |
最强模型,适合复杂推理、代码生成 |
best |
deepseek-v4-pro |
同 opus,自动选最强 |
可直接填写的 DeepSeek 模型名:
| 模型名 | 特点 | 适用场景 |
|---|---|---|
deepseek-v4-pro |
最强推理,输出上限 384K | 复杂渗透分析、代码审计、/arena 辩论 |
deepseek-v4-flash |
快速便宜,输出上限 64K | 日常问答、快速扫描、/recon 工具调度 |
deepseek-chat |
V3 兼容模型 | 预算有限时的备选 |
💡 推荐配置:主模型用
deepseek-v4-pro,快速模型用deepseek-v4-flash。这样/arena和复杂任务走 pro,工具调用和快速回复走 flash,兼顾质量和成本。
启动后输入任意问题,如果看到 token 计费面板有数字跳动(in X · out X),说明配置正确。
如果输入后无任何响应,99% 是以下原因:
- API Key 没配或配错 → 重新
/setup - Base URL 缺少
/anthropic后缀 → 改成https://api.deepseek.com/anthropic - 网络不通(国内直连 DeepSeek 无需代理)
除了 /setup 交互式配置外,也可以通过 .env 文件或系统环境变量配置。在项目根目录创建 .env 文件:
# ═══════════════ 必填 ═══════════════
ANTHROPIC_API_KEY=sk-xxxxxxxxxxxxxxxx
ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
# ═══════════════ 模型选择 ═══════════════
ANTHROPIC_MODEL=deepseek-v4-pro
ANTHROPIC_SMALL_FAST_MODEL=deepseek-v4-flash
# ═══════════════ 可选功能 ═══════════════
FIRECRAWL_API_KEY=fc-xxxxxxxxxxxxxxxx # Wiki 爬虫 + 强制查证
DEEPSEEK_PRO_FULL_PRICE=1 # 计费面板显示 pro 原价(默认 2.5 折)
CLAUDE_CODE_MAX_OUTPUT_TOKENS=64000 # 最大输出 token(默认 64K)
CLAUDE_CODE_SCROLL_SPEED=3 # 滚轮速度倍率(默认 1)三种配置方式优先级(高→低):
| 优先级 | 方式 | 说明 |
|---|---|---|
| 1 | 系统环境变量 | set ANTHROPIC_API_KEY=sk-xxx(当前终端生效) |
| 2 | .env 文件 |
项目根目录,git 不跟踪 |
| 3 | /setup 配置 |
存储在 ~/.haking/config.json,全局生效 |
⚠️ 注意:.env文件包含密钥,不要提交到 git。已在.gitignore中排除。
Windows 设置环境变量(永久生效):
# PowerShell(当前用户永久)
[Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", "sk-xxx", "User")
[Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "https://api.deepseek.com/anthropic", "User")
# 或者 CMD(仅当前窗口)
set ANTHROPIC_API_KEY=sk-xxx
set ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic启动后在输入框输入 / 开头的命令即可执行。以下是完整命令列表:
| 命令 | 说明 |
|---|---|
/setup |
首次必用 — 配置 API Key、Base URL、模型(持久化保存) |
/help |
查看所有可用命令 |
/arena <问题> |
4 链对抗共识 — 多个 AI 角色辩论达成最可靠答案 |
/recon <文件> |
PEV 假设驱动逆向分析引擎 |
/model |
切换当前使用的模型 |
/clear |
清空对话历史,释放上下文 |
/compact |
压缩上下文(对话太长时用) |
/exit |
退出程序 |
| 命令 | 说明 |
|---|---|
/handoff <备注> |
保存当前会话状态,下次可恢复 |
/pickup |
恢复上次 /handoff 保存的会话 |
/resume |
恢复之前的对话 |
/session |
显示远程会话 URL 和二维码 |
/rename <名称> |
重命名当前对话 |
/branch |
在当前位置创建对话分支 |
/rewind |
回退代码和/或对话到之前的某个点 |
/export |
导出当前对话到文件或剪贴板 |
/copy |
复制最后一条回复到剪贴板 |
| 命令 | 说明 |
|---|---|
/wiki serve |
启动知识图谱 Web UI(localhost:7891) |
/wiki add <url> |
爬取网页加入知识图谱 |
/island |
启动灵动岛浮窗(工具总控面板) |
/skills |
列出所有可用 Skill |
/mcp |
管理 MCP 服务器 |
/hooks |
查看 Hook 配置 |
| 命令 | 说明 |
|---|---|
/config |
打开配置面板 |
/doctor |
诊断安装和配置是否正确 |
/cost |
显示当前会话的费用和时长 |
/context |
可视化当前上下文使用量 |
/files |
列出当前上下文中的所有文件 |
/diff |
查看未提交的更改和每轮 diff |
/permissions |
管理工具权限规则 |
/memory |
编辑 AI 记忆文件 |
/lang <en/zh/auto> |
设置显示语言 |
/theme |
切换主题 |
/vim |
切换 Vim / 普通编辑模式 |
/keybindings |
打开快捷键配置文件 |
| 命令 | 说明 |
|---|---|
/plan |
启用计划模式或查看当前计划 |
/tasks |
列出和管理后台任务 |
/agents |
管理 Agent 配置 |
/fast |
切换快速模式(使用轻量模型) |
/effort |
设置模型推理努力等级 |
/stats |
显示使用统计 |
/feedback |
提交反馈 |
| 快捷键 | 功能 |
|---|---|
Ctrl+B |
切换侧边栏 |
Ctrl+O |
切换 Transcript 模式(查看详细日志) |
PgUp / PgDn |
翻页滚动 |
Esc |
取消当前操作 |
Ctrl+C |
中断当前请求 |
Ctrl+D |
退出 |
- 修改源码后必须
bun run build重新构建,dist/才会更新 - 不要直接编辑
dist/下的文件 - 不要用
npm run/yarn替代bun run - PR 前跑一次
bun run build确认构建通过
- Bun >= 1.2.0
- DeepSeek API Key(https://platform.deepseek.com)
- Node.js >= 18(部分 postinstall 脚本需要)
- Git(克隆仓库)
所有依赖通过
bun install自动安装,无需手动处理。
| 包名 | 版本 | 用途 |
|---|---|---|
@agentclientprotocol/sdk |
^0.19.0 | Agent Client Protocol SDK |
@claude-code-best/mcp-chrome-bridge |
^2.0.8 | Chrome MCP 桥接 |
ws |
^8.20.0 | WebSocket(灵动岛通信) |
AI/LLM SDK
| 包名 | 版本 | 用途 |
|---|---|---|
@anthropic-ai/sdk |
^0.80.0 | Anthropic Messages API SDK |
@anthropic-ai/bedrock-sdk |
^0.26.4 | AWS Bedrock 接入 |
@anthropic-ai/vertex-sdk |
^0.14.4 | Google Vertex AI 接入 |
@anthropic-ai/claude-agent-sdk |
^0.2.114 | Claude Agent SDK |
@anthropic-ai/foundry-sdk |
^0.2.3 | Foundry SDK |
@anthropic-ai/mcpb |
^2.1.2 | MCP Builder |
@anthropic-ai/sandbox-runtime |
^0.0.44 | 沙箱运行时 |
openai |
^6.34.0 | OpenAI 兼容 API |
@modelcontextprotocol/sdk |
^1.29.0 | MCP 协议 SDK |
UI/终端渲染
| 包名 | 版本 | 用途 |
|---|---|---|
@anthropic/ink |
workspace:* | 终端 UI 框架(Ink fork) |
react |
^19.2.5 | React 渲染引擎 |
react-reconciler |
^0.33.0 | React 自定义渲染器 |
react-compiler-runtime |
^1.0.0 | React Compiler 运行时 |
chalk |
^5.6.2 | 终端颜色 |
cli-highlight |
^2.1.11 | 代码语法高亮 |
highlight.js |
^11.11.1 | 语法高亮引擎 |
marked |
^17.0.6 | Markdown 解析 |
figures |
^6.1.0 | 终端 Unicode 符号 |
cli-boxes |
^4.0.1 | 终端边框绘制 |
wrap-ansi |
^10.0.0 | ANSI 文本换行 |
strip-ansi |
^7.2.0 | 去除 ANSI 转义码 |
qrcode |
^1.5.4 | 二维码生成 |
asciichart |
^1.5.25 | 终端图表 |
AWS SDK
| 包名 | 版本 | 用途 |
|---|---|---|
@aws-sdk/client-bedrock |
^3.1032.0 | Bedrock 客户端 |
@aws-sdk/client-bedrock-runtime |
^3.1032.0 | Bedrock 运行时 |
@aws-sdk/client-sts |
^3.1032.0 | STS 令牌服务 |
@aws-sdk/credential-provider-node |
^3.972.32 | 凭证提供者 |
@aws-sdk/credential-providers |
^3.1032.0 | 凭证提供者集合 |
工具/实用库
| 包名 | 版本 | 用途 |
|---|---|---|
axios |
^1.15.0 | HTTP 客户端 |
undici |
^7.25.0 | 高性能 HTTP 客户端 |
execa |
^9.6.1 | 子进程执行(安全工具调用) |
chokidar |
^5.0.0 | 文件监听 |
fuse.js |
^7.3.0 | 模糊搜索 |
lodash-es |
^4.18.1 | 工具函数库 |
lru-cache |
^11.3.5 | LRU 缓存 |
semver |
^7.7.4 | 语义化版本 |
yaml |
^2.8.3 | YAML 解析 |
zod |
^4.3.6 | 运行时类型校验 |
ajv |
^8.18.0 | JSON Schema 校验 |
diff |
^8.0.4 | 文本差异比较 |
shell-quote |
^1.8.3 | Shell 命令解析 |
tree-kill |
^1.2.2 | 进程树终止 |
signal-exit |
^4.1.0 | 退出信号处理 |
p-map |
^7.0.4 | 并发 Promise 映射 |
proper-lockfile |
^4.1.2 | 文件锁 |
cacache |
^20.0.4 | 内容寻址缓存 |
env-paths |
^4.0.0 | 跨平台路径 |
ignore |
^7.0.5 | .gitignore 解析 |
picomatch |
^4.0.4 | Glob 匹配 |
turndown |
^7.2.4 | HTML 转 Markdown |
xss |
^1.0.15 | XSS 过滤 |
he |
^1.2.0 | HTML 实体编解码 |
fflate |
^0.8.2 | 压缩/解压 |
sharp |
^0.34.5 | 图片处理 |
plist |
^3.1.0 | macOS plist 解析 |
jsonc-parser |
^3.3.1 | JSONC 解析(带注释) |
auto-bind |
^5.0.1 | 自动绑定 this |
indent-string |
^5.0.0 | 字符串缩进 |
code-excerpt |
^4.0.0 | 代码片段提取 |
emoji-regex |
^10.6.0 | Emoji 正则 |
get-east-asian-width |
^1.5.0 | 东亚字符宽度 |
bidi-js |
^1.0.3 | 双向文本处理 |
supports-hyperlinks |
^4.4.0 | 终端超链接检测 |
https-proxy-agent |
^8.0.0 | HTTPS 代理 |
google-auth-library |
^10.6.2 | Google 认证 |
@azure/identity |
^4.13.1 | Azure 认证 |
usehooks-ts |
^3.1.1 | React Hooks 工具 |
stack-utils |
^2.0.6 | 堆栈解析 |
可观测性/分析
| 包名 | 版本 | 用途 |
|---|---|---|
@opentelemetry/api |
^1.9.1 | OpenTelemetry API |
@opentelemetry/sdk-trace-base |
^2.7.0 | 链路追踪 |
@opentelemetry/sdk-metrics |
^2.7.0 | 指标采集 |
@opentelemetry/sdk-logs |
^0.214.0 | 日志采集 |
@langfuse/otel |
^5.1.0 | Langfuse 集成 |
@langfuse/tracing |
^5.1.0 | Langfuse 追踪 |
@growthbook/growthbook |
^1.6.5 | 功能开关 |
@sentry/node |
^10.49.0 | 错误监控 |
LSP/编辑器集成
| 包名 | 版本 | 用途 |
|---|---|---|
vscode-jsonrpc |
^8.2.1 | JSON-RPC 协议 |
vscode-languageserver-protocol |
^3.17.5 | LSP 协议 |
vscode-languageserver-types |
^3.17.5 | LSP 类型定义 |
构建/开发工具
| 包名 | 版本 | 用途 |
|---|---|---|
typescript |
^6.0.3 | TypeScript 编译器 |
vite |
^8.0.8 | 构建工具 |
rollup |
^4.60.2 | 模块打包 |
@biomejs/biome |
^2.4.12 | Linter + Formatter |
knip |
^6.4.1 | 死代码检测 |
Workspace 内部包
| 包名 | 用途 |
|---|---|
@ant/model-provider |
多模型 Provider 管理 |
@ant/claude-for-chrome-mcp |
Chrome MCP |
@ant/computer-use-input |
Computer Use 输入 |
@ant/computer-use-mcp |
Computer Use MCP |
@ant/computer-use-swift |
Computer Use Swift |
@haking/agent-tools |
Agent 工具集 |
@haking/builtin-tools |
内置工具(Bash/File/Grep 等) |
@haking/mcp-client |
MCP 客户端 |
@haking/weixin |
微信集成 |
audio-capture-napi |
音频捕获 NAPI |
color-diff-napi |
颜色差异 NAPI |
image-processor-napi |
图片处理 NAPI |
modifiers-napi |
修饰键 NAPI |
url-handler-napi |
URL 处理 NAPI |
git clone https://github.com/elbelicojackson-hue/haking-code-.git
cd haking-code-
bun install
bun run dev首次运行输入 /setup 配置 API Key,之后自动加载。
haking.bat在 REPL 中输入 /setup,交互式配置:
⚙ Haking Code 配置
~/.haking/config.json · 下次启动自动加载
▸ API Key: sk-3a70...86ec
Base URL: https://api.deepseek.com/anthropic
主模型: deepseek-v4-pro
快速模型: deepseek-v4-flash
Recon Providers [6]: 管理多 LLM →
💾 保存配置
ANTHROPIC_API_KEY=sk-xxx
ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
FIRECRAWL_API_KEY=fc-xxxset ANTHROPIC_API_KEY=sk-xxx
set ANTHROPIC_MODEL=deepseek-v4-pro
set ANTHROPIC_SMALL_FAST_MODEL=deepseek-v4-flash| 命令 | 说明 |
|---|---|
/arena <问题> |
4 链对抗共识 — 多角色辩论达成共识 |
/recon <binary> |
PEV 逆向分析 — 假设驱动的二进制分析 |
/setup |
配置 API Key 和多 Provider |
/model |
切换模型 |
/help |
查看所有命令 |
多个 AI 角色围绕一个问题进行结构化辩论,自动收敛到共识。
/arena 量子计算机能在 2028 年破解 RSA-2048 吗
/arena 这段代码有没有 SQL 注入漏洞
/arena Log4j 漏洞的根因是什么| Chain | 角色 | 职责 |
|---|---|---|
| C1 | Proposer | 正向构建论点,寻找支持证据 |
| C2 | Challenger | 逻辑攻击,找漏洞和反例 |
| C3 | Verifier | 事实查证(带 Firecrawl 网页搜索) |
| C4 | Synthesizer | 综合收敛,标注共识和分歧 |
consensus-reached— 4 链全部标记 convergedno-new-evidence— 所有链 update_kl < 0.05gradient-quiet— 连续 3 轮平均 update_kl < 0.03confidence-plateau— 平均置信度 > 0.9 且稳定deadlock— ≥2 条链声明死锁
假设驱动的二进制逆向分析循环。多 Agent 提出假设,调度安全工具验证,正则判定结果。
/recon ./malware.exe
/recon ./suspicious.dll "分析 C2 通信协议"
/recon ./packed.bin --max-rounds=10| Kind | 示例 |
|---|---|
file-class |
PE32+ executable, 64-bit Windows |
packer |
Packed by UPX 4.0 |
compiler |
.NET / Mono assembly |
family |
Emotet variant |
algorithm |
AES-256-CBC for C2 encryption |
anti-analysis |
TLS callback anti-debug |
capability |
Network C2 via HTTPS |
protocol |
gRPC over HTTP/2 |
ReverseCli | Bash | Read | Grep | WebSearch | Firecrawl
all-resolved— 无 open 假设budget-cap-hit— 轮次/工具/token/时间预算耗尽stall-guard-hit— 连续 2 轮所有 agent observe-onlyparse-storm— ≥50% agent 解析失败user-abort— Esc 取消
AI 可直接调用的 20+ 安全工具:
| Action | 工具 | 用途 |
|---|---|---|
strings |
strings | 提取字符串 |
analyze |
file | 文件类型识别 |
diec |
Detect It Easy | 壳/保护检测 |
upx |
UPX | 脱壳 |
pentest |
nuclei/nmap/sqlmap/ffuf | 渗透测试 |
kali |
任意命令 | Kali 工具链 |
tshark |
tshark | 网络抓包分析 |
forensic |
curl | Web 取证 |
# AI 会自动调用:
ReverseCli({action: "pentest", pentestTool: "nmap", pentestArgs: "-sV 192.168.1.1"})
ReverseCli({action: "pentest", pentestTool: "nuclei", pentestArgs: "-u https://target.com"})
ReverseCli({action: "pentest", pentestTool: "sqlmap", pentestArgs: "-u 'http://target/page?id=1'"})部分工具需要本地安装并加入 PATH,AI 才能调用:
| 工具 | 安装方式 | 备注 |
|---|---|---|
| IDA Pro | 自行获取安装,将 idat64.exe 加入 PATH |
无头模式分析 |
| Ghidra | https://ghidra-sre.org/ 下载解压 | 需要 JDK 17+ |
| Detect It Easy (DiE) | https://github.com/horsicq/DIE-engine/releases | 壳检测必备 |
| UPX | scoop install upx 或官网下载 |
脱壳 |
| nmap | https://nmap.org/download | 端口扫描 |
| nuclei | go install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest |
漏洞扫描 |
| sqlmap | pip install sqlmap |
SQL 注入 |
| ffuf | go install github.com/ffuf/ffuf/v2@latest |
目录爆破 |
| tshark | 安装 Wireshark 自带 | 抓包分析 |
| strings | Windows: 安装 Binutils 或 SysInternals Strings | 字符串提取 |
| Frida | pip install frida-tools |
动态脱壳/Hook |
💡 没装的工具不影响其他功能,AI 会跳过不可用的工具并使用替代方案。
/setup → Recon Providers 管理,支持混合不同厂商 LLM:
🔗 Recon Providers(多 LLM 对抗分析)
▸ gpt5-thinker → gpt-5.4 (yunwu.ai)
claude-challenger → claude-opus-4-6 (yunwu.ai)
deepseek-verifier → deepseek-chat (api.deepseek.com)
qwen-analyst → qwen-max (dashscope.aliyuncs.com)
doubao-scout → doubao-seed-2-0-pro (ark.cn-beijing.volces.com)
mimo-backup → mimo-v2.5-pro (api.xiaomimimo.com)
[+ 添加 Provider]
自动检测协议:
- URL 含
/anthropic→ Anthropic Messages API - 其他 → OpenAI Chat Completions API
src/algorithms/
├── cav/
│ ├── pev/ # PEV 引擎(假设-执行-验证循环)
│ ├── ccbteam-math/ # 纯观测数学层(CR-EIG, ε_t, ρ_t)
│ └── ccbteam-discipline/ # 认知纪律层(R12 调用门 + R13 认知诚实)
├── ccb-pev/ # /recon 命令 UI
└── ReverseCliTool/ # PentAGI 安全工具箱(Go 后端)
| 算法 | 作用 |
|---|---|
| CR-EIG | 信息效率主算子 |
| exploitability (ε_t) | 博弈论一阶可利用度 |
| urgency (ρ_t) | 共识紧迫度 = 1 − ε_t |
| rankGradients | 5 个 ∇H 排序(attack/swap/oracle/chain/discretize) |
| cavAdaptiveDelta | 自适应收敛阈值 |
设计红线:Math Layer 只测量不干预,不写 prompt,不形成闭环。
┌──────────────┬─────────────────────────────────────┐
│ ▾ Tasks │ 主聊天区 │
│ ☐ task1 │ │
│ ☑ task2 │ > 你的输入 │
│ │ │
│ ▾ Memory │ Haking: 回复... │
│ • CLAUDE.md │ │
│ │ │
│ ▾ Buddy │ │
│ 🐱 Mochi │ │
│ ├──────────────────────────────────────┤
│ │ > _ │
│ │ flash in 0 · out 0 · cache 0 ¥0 │
│ │ pro in 0 · out 0 · cache 0 ¥0 │
│ │ 累计 ¥0 · pro 当前 2.5 折 │
└──────────────┴──────────────────────────────────────┘
Ctrl+B切换侧边栏- 终端宽度 < 80 列自动隐藏侧边栏;< 70 列自动隐藏计费面板
- 计费面板每秒轮询一次
STATE.modelUsage累加值(cost-tracker 在 React 之外 mutate 全局,没有事件订阅)
bun run dev # 开发模式
bun run build # 构建到 dist/
bun run dev:inspect # 调试模式(VS Code attach)
bun test # 运行测试本工具仅供合法安全研究和教育用途。详见 LEGAL.md。