🔒 第一性原理锁 — 5 条公理锁死推理框架,幻觉率压到最低🔴 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 | 更新日志 |
/arena — 4 链对抗共识引擎(业界首创)不是一个 AI 回答你,而是 4 个 AI 角色互相攻击、质疑、验证、综合,直到收敛到最可靠的答案:
C1 Proposer → 构建论点,寻找支持证据
C2 Challenger → 逻辑攻击,找漏洞和反例
C3 Verifier → 实时网络搜索事实查证
C4 Synthesizer → 综合收敛,标注共识与分歧
基于博弈论的 CR-EIG 信息效率算子 + ε_t 可利用度 驱动收敛,不是固定轮次,而是信号驱动停止。这是你在任何其他工具里找不到的。
/recon — PEV 假设驱动逆向引擎不是让 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:7891
Tauri 2 桌面应用,悬浮在屏幕顶部,一键启动/切换所有 AI coding agent,支持 Windows Terminal 原生分屏。
本轮针对仓库做了系统化质量审计:bunx tsc --noEmit 全量类型检查 + biome lint + bun test + 手工核查关键运行时路径。结果:158 个 TS 错误、17 个 lint error、45 个测试失败。本次提交修复其中影响用户体验的关键问题。
/handoff 和 /pickup 命令注册不通过、返回字段错(致命)根因:LocalCommandResult 的契约是 { type: 'text', value: string },但实现里写的是 { type: 'text', text: '...' };同时命令对象缺必填字段 supportsNonInteractive,类型检查直接拒绝注册。
修复:返回字段 text → value;index.ts 加 supportsNonInteractive: true。两个命令现在能正常注册并显示结果。
ReverseCliTool / CdpBrowserTool 缺 inputSchema + call 签名错 + 返回字段错(致命三连)根因:
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 已校验)'../../Tool.js' → '../Tool.js'claude.ts:1887 解构不存在的 deepseekCreate(潜在崩溃)根因:第二个 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})。
HakingConfig 类型扩 4 个 top-level 字段 + ArenaProvider 加 displayName/baseUrl 默认值根因:
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/fastModel 4 个 optional 字段;applyHakingConfig 实现 "env > top-level > defaultProvider 的 provider 字段" 三层注入(高优先级覆盖低优先级)ArenaProvider 加 displayName: string(默认回退到 id)和 baseUrl: string(默认回退到 DeepSeek 端点);增加 fromEntry 适配函数把 ProviderEntry 安全转换成 ArenaProvidersrc/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 │
│ (意识体) │ │ (红队引擎) │
└──────────────┘ └──────────────┘
/handoff — 会话交接会话结束前保留当前状态,压缩存储未完成的任务和上下文:
/handoff 明天继续搞那个 SQL 注入
提取任务、上下文、工具结果 → 压缩存储 → 下次 /pickup 恢复。
/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,已规划三大方向:
retain/recall/reflect 三层记忆 API,让 agent 记住每次渗透测试的结论/mission 命令,复杂任务自动拆分并行,每个子任务走 /arena 质量保证AI-powered terminal agent for cybersecurity professionals.
专为网络安全研究员打造的终端 AI Agent,集成逆向工程、渗透测试、多模型对抗共识等能力。
以下为 v1.0.1 之后的全部 commit 摘要,按时间倒序。
467793b feat(pentest-kb): 今日新增Cisco CVSS10.0 + Bitwarden供应链攻击fc37b3b fix: inputSchema未定义时crash + 安全搜索强制用FirecrawlinputSchema?.safeParse、input?.success)<tool_routing> 规则:漏洞搜索必须用 WebFetch 不用 WebSearch659ca57 feat(pentest-kb): 补充2025-2026最新CVE(Linux+Windows在野利用)Linux 2026 内核漏洞(CISA KEV 在野利用):
Windows 2026 零日(活跃利用):
57f0547 feat(pentest-kb): 添加钓鱼/社工/C2/免杀知识库新增 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... |
10942d0 feat(pentest-kb): Linux提权知识库 - 内核漏洞+配置滥用+枚举工具86ce698 feat: 渗透测试知识数据库 - 7大免费数据源全攻击链覆盖新增 src/services/pentestKnowledgeDB.ts:
| 数据源 | 用途 | 费用 |
|---|---|---|
| Shodan InternetDB | IP 侦察(端口/漏洞/CPE) | 免费 |
| GTFOBins | Linux 提权/逃逸 | 免费 |
| LOLBAS | Windows LOLBIN | 免费 |
| WADComs | AD 域攻击命令 | 免费 |
| PayloadsAllTheThings | 25+ Web 攻击 payload | 免费 |
| Nuclei Templates | 漏洞检测模板 | 免费 |
| HackTricks | 综合渗透方法论 | 免费 |
25ea9fb perf: 1M上下文优化 - citation去重+预算控制+单消息合并针对 1M token 上下文窗口的优化策略:
2ea928d fix: RE情报查证改为条件触发,避免误触发和上下文扰动90ed7e4 feat: 逆向工程情报数据库 - 强制查证框架(全免费API)新增 src/services/reverseEngineeringDB.ts(5 大免费数据源):
cce0d44 feat(cve): 添加CIRCL免费数据源作为首选(无需API key)CVE 查询优先级:CIRCL (完全免费无 key 无限速) → NVD → CISA KEV → Firecrawl。零配置即可用。
b48fe28 feat: CVE强制引用框架 - NVD/CISA KEV/Firecrawl三层数据源d615bc2 feat(todo): 参考CC2.0强化运行时校验+prompt规则1bca835 feat: PEV强制查证模块 - 不确定时自动Firecrawl查证新增 src/algorithms/cav/pev/forcedVerification.ts(纯算法驱动的强制事实查证):
<forced_verification> section 强制模型引用 [VERIFIED] 证据块需要 FIRECRAWL_API_KEY 环境变量。未配置时静默跳过。
5a18bf3 fix: 修复滚轮滚动瞬间跳到顶部/底部的bugScrollKeybindingHandler.tsx 滚轮加速逻辑修复:
scroll:lineUp/lineDown 限制步长不超过视口高度 1/3scrollUp/scrollDown 接近边界时只滚剩余距离,不再直接跳到极端位置669d09b fix(deepseek): normalize messages before sending to direct route根因:DeepSeek 直连路径拿到的是原始 messages 数组,跳过了 normalizeMessagesForAPI() + ensureToolResultPairing() 两个关键处理步骤。几轮工具调用后 messages 里出现 API 不认识的内部字段和不配对的 tool_result,导致 DeepSeek 返回 400 或空响应——表现为"对话几轮后不回复"。
修复:claude.ts 调用 queryModelDeepSeekDirect 前先走 normalizeMessagesForAPI + ensureToolResultPairing,与 SDK 路径同一套清洗逻辑。
c5780f9 fix(deepseek): don't inject cache_control on tool_result blocks + surface empty responsescache_control,如果那个 block 是 tool_result 类型,DeepSeek 会返回 400。现在只给 type: 'text' 的 block 加。[DeepSeek returned empty response] 并附带诊断提示(上下文过长 / tool_result 格式错误),而不是一条空消息。8667548 fix: guard msg.message?.content access with optional chainingsrc/components/Messages.tsx 两处 msg.message?.content[0] → msg.message?.content?.[0]。system / attachment 等消息没有 .message.content 字段,直接 [0] 会 TypeError crash。
8d8882a docs: add Wiki section to README — emphasize Firecrawl API Key requirementREADME 新增 "📚 Haking Wiki" 段落,强调爬虫功能必须自行配置 Firecrawl API Key(获取地址、三种配置方式、免费额度说明)。
ec54de7 feat(wiki): P0 knowledge graph + Web UI (v1.0.0)全新 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
55a5918 feat(island): tools launcher + wt.exe split-pane + drag fix (v1.1.0)灵动岛 Tauri 2 项目首次入库(island/ 目录,10 文件,768 行):
capabilities/default.json(6 条 window 权限)+ withGlobalTauri: true + mousedown 显式 startDragging()MouseEvent.detail >= 3 → close()%APPDATA%\haking-island\tools.jsonwt new-tab ... ; split-pane ... 原生分屏(4 种 layout:左右 / 上下 / 田字 / 多 Tab)4969433 feat(deepseek): full overhaul + multi-instance island hub (v1.1.0)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 |
上下文 / 价格 / 容量:
modelCost.ts 加 DeepSeek 三档 USD 价表,unknown_model_cost 告警熄灭ModelStatsPanel 增强:
DEEPSEEK_PRO_FULL_PRICE=1 切换 pro 原价/2.5 折灵动岛多实例聚合(src/services/island.ts):
~/.haking-island/sessions/{pid}.json本项目完全绕过 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 工具的总控面板。
src/services/api/deepseek-direct.ts 重写)| 改动 | 之前 | 现在 |
|---|---|---|
| 流式输出 | 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 计入 |
src/utils/context.ts + modelCost.ts)200K → 1M(modelSupports1M 加 deepseek-v4 匹配)default 64K / upper 384KMODEL_COSTS 加 DeepSeek 三档专属表(按官方人民币价折 USD),getModelCosts short-circuit 不再走 Claude 错档tengu_unknown_model_cost 告警熄灭,StatusLine "costs may be inaccurate" 不再亮src/components/PromptInput/ModelStatsPanel.tsx)输入框正下方常驻:
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
STATE.modelUsageDEEPSEEK_PRO_FULL_PRICE=1 → 切到 pro 原价档(pricing 同步进 modelCost.ts)ANTHROPIC_BASE_URL 含 deepseek 时显示,其他后端隐藏避免误导src/services/island.ts)之前两个 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 是聚合值。
island/)根因两个:
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:
没装 wt.exe 的老 Windows → 回退到每工具一个独立 cmd 窗口。
wiki/ 目录是一个独立的 Bun 应用,提供安全研究知识图谱 + D3 力导向可视化 + Markdown 预览。
cd wiki && bun run dev
# → http://localhost:7891
⚠️ 爬虫功能需要自行配置 Firecrawl API Key
Wiki 的 "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 次/月,足够日常研究使用。
https://api.deepseek.com/anthropic/arena 命令 — 4 链对抗共识引擎(C1 Proposer → C2 Challenger → C3 Verifier → C4 Synthesizer)/recon 命令 — PEV 假设驱动逆向分析引擎/setup 命令 — 持久化配置面板,支持多 Provider⚠️ 以下步骤缺一不可,跳过任何一步都会导致程序无法正常运行、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 模型映射说明输入 /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% 是以下原因:
/setup/anthropic 后缀 → 改成 https://api.deepseek.com/anthropic除了 /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 runbun run build 确认构建通过所有依赖通过
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
/setup 命令(推荐)在 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 →
💾 保存配置
.env 文件ANTHROPIC_API_KEY=sk-xxx
ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
FIRECRAWL_API_KEY=fc-xxx
set 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 | 查看所有命令 |
/arena — 4 链对抗共识多个 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 条链声明死锁/recon — PEV 逆向分析引擎假设驱动的二进制逆向分析循环。多 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]
自动检测协议:
/anthropic → Anthropic Messages APIsrc/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 切换侧边栏STATE.modelUsage 累加值(cost-tracker 在 React 之外 mutate 全局,没有事件订阅)bun run dev # 开发模式
bun run build # 构建到 dist/
bun run dev:inspect # 调试模式(VS Code attach)
bun test # 运行测试
本工具仅供合法安全研究和教育用途。详见 LEGAL.md。
TypeScript
82.2%
Go
16.7%
🔒 第一性原理锁 — 5 条公理锁死推理框架,幻觉率压到最低🔴 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 | 更新日志 |
/arena — 4 链对抗共识引擎(业界首创)不是一个 AI 回答你,而是 4 个 AI 角色互相攻击、质疑、验证、综合,直到收敛到最可靠的答案:
C1 Proposer → 构建论点,寻找支持证据
C2 Challenger → 逻辑攻击,找漏洞和反例
C3 Verifier → 实时网络搜索事实查证
C4 Synthesizer → 综合收敛,标注共识与分歧
基于博弈论的 CR-EIG 信息效率算子 + ε_t 可利用度 驱动收敛,不是固定轮次,而是信号驱动停止。这是你在任何其他工具里找不到的。
/recon — PEV 假设驱动逆向引擎不是让 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:7891
Tauri 2 桌面应用,悬浮在屏幕顶部,一键启动/切换所有 AI coding agent,支持 Windows Terminal 原生分屏。
本轮针对仓库做了系统化质量审计:bunx tsc --noEmit 全量类型检查 + biome lint + bun test + 手工核查关键运行时路径。结果:158 个 TS 错误、17 个 lint error、45 个测试失败。本次提交修复其中影响用户体验的关键问题。
/handoff 和 /pickup 命令注册不通过、返回字段错(致命)根因:LocalCommandResult 的契约是 { type: 'text', value: string },但实现里写的是 { type: 'text', text: '...' };同时命令对象缺必填字段 supportsNonInteractive,类型检查直接拒绝注册。
修复:返回字段 text → value;index.ts 加 supportsNonInteractive: true。两个命令现在能正常注册并显示结果。
ReverseCliTool / CdpBrowserTool 缺 inputSchema + call 签名错 + 返回字段错(致命三连)根因:
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 已校验)'../../Tool.js' → '../Tool.js'claude.ts:1887 解构不存在的 deepseekCreate(潜在崩溃)根因:第二个 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})。
HakingConfig 类型扩 4 个 top-level 字段 + ArenaProvider 加 displayName/baseUrl 默认值根因:
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/fastModel 4 个 optional 字段;applyHakingConfig 实现 "env > top-level > defaultProvider 的 provider 字段" 三层注入(高优先级覆盖低优先级)ArenaProvider 加 displayName: string(默认回退到 id)和 baseUrl: string(默认回退到 DeepSeek 端点);增加 fromEntry 适配函数把 ProviderEntry 安全转换成 ArenaProvidersrc/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 │
│ (意识体) │ │ (红队引擎) │
└──────────────┘ └──────────────┘
/handoff — 会话交接会话结束前保留当前状态,压缩存储未完成的任务和上下文:
/handoff 明天继续搞那个 SQL 注入
提取任务、上下文、工具结果 → 压缩存储 → 下次 /pickup 恢复。
/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,已规划三大方向:
retain/recall/reflect 三层记忆 API,让 agent 记住每次渗透测试的结论/mission 命令,复杂任务自动拆分并行,每个子任务走 /arena 质量保证AI-powered terminal agent for cybersecurity professionals.
专为网络安全研究员打造的终端 AI Agent,集成逆向工程、渗透测试、多模型对抗共识等能力。
以下为 v1.0.1 之后的全部 commit 摘要,按时间倒序。
467793b feat(pentest-kb): 今日新增Cisco CVSS10.0 + Bitwarden供应链攻击fc37b3b fix: inputSchema未定义时crash + 安全搜索强制用FirecrawlinputSchema?.safeParse、input?.success)<tool_routing> 规则:漏洞搜索必须用 WebFetch 不用 WebSearch659ca57 feat(pentest-kb): 补充2025-2026最新CVE(Linux+Windows在野利用)Linux 2026 内核漏洞(CISA KEV 在野利用):
Windows 2026 零日(活跃利用):
57f0547 feat(pentest-kb): 添加钓鱼/社工/C2/免杀知识库新增 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... |
10942d0 feat(pentest-kb): Linux提权知识库 - 内核漏洞+配置滥用+枚举工具86ce698 feat: 渗透测试知识数据库 - 7大免费数据源全攻击链覆盖新增 src/services/pentestKnowledgeDB.ts:
| 数据源 | 用途 | 费用 |
|---|---|---|
| Shodan InternetDB | IP 侦察(端口/漏洞/CPE) | 免费 |
| GTFOBins | Linux 提权/逃逸 | 免费 |
| LOLBAS | Windows LOLBIN | 免费 |
| WADComs | AD 域攻击命令 | 免费 |
| PayloadsAllTheThings | 25+ Web 攻击 payload | 免费 |
| Nuclei Templates | 漏洞检测模板 | 免费 |
| HackTricks | 综合渗透方法论 | 免费 |
25ea9fb perf: 1M上下文优化 - citation去重+预算控制+单消息合并针对 1M token 上下文窗口的优化策略:
2ea928d fix: RE情报查证改为条件触发,避免误触发和上下文扰动90ed7e4 feat: 逆向工程情报数据库 - 强制查证框架(全免费API)新增 src/services/reverseEngineeringDB.ts(5 大免费数据源):
cce0d44 feat(cve): 添加CIRCL免费数据源作为首选(无需API key)CVE 查询优先级:CIRCL (完全免费无 key 无限速) → NVD → CISA KEV → Firecrawl。零配置即可用。
b48fe28 feat: CVE强制引用框架 - NVD/CISA KEV/Firecrawl三层数据源d615bc2 feat(todo): 参考CC2.0强化运行时校验+prompt规则1bca835 feat: PEV强制查证模块 - 不确定时自动Firecrawl查证新增 src/algorithms/cav/pev/forcedVerification.ts(纯算法驱动的强制事实查证):
<forced_verification> section 强制模型引用 [VERIFIED] 证据块需要 FIRECRAWL_API_KEY 环境变量。未配置时静默跳过。
5a18bf3 fix: 修复滚轮滚动瞬间跳到顶部/底部的bugScrollKeybindingHandler.tsx 滚轮加速逻辑修复:
scroll:lineUp/lineDown 限制步长不超过视口高度 1/3scrollUp/scrollDown 接近边界时只滚剩余距离,不再直接跳到极端位置669d09b fix(deepseek): normalize messages before sending to direct route根因:DeepSeek 直连路径拿到的是原始 messages 数组,跳过了 normalizeMessagesForAPI() + ensureToolResultPairing() 两个关键处理步骤。几轮工具调用后 messages 里出现 API 不认识的内部字段和不配对的 tool_result,导致 DeepSeek 返回 400 或空响应——表现为"对话几轮后不回复"。
修复:claude.ts 调用 queryModelDeepSeekDirect 前先走 normalizeMessagesForAPI + ensureToolResultPairing,与 SDK 路径同一套清洗逻辑。
c5780f9 fix(deepseek): don't inject cache_control on tool_result blocks + surface empty responsescache_control,如果那个 block 是 tool_result 类型,DeepSeek 会返回 400。现在只给 type: 'text' 的 block 加。[DeepSeek returned empty response] 并附带诊断提示(上下文过长 / tool_result 格式错误),而不是一条空消息。8667548 fix: guard msg.message?.content access with optional chainingsrc/components/Messages.tsx 两处 msg.message?.content[0] → msg.message?.content?.[0]。system / attachment 等消息没有 .message.content 字段,直接 [0] 会 TypeError crash。
8d8882a docs: add Wiki section to README — emphasize Firecrawl API Key requirementREADME 新增 "📚 Haking Wiki" 段落,强调爬虫功能必须自行配置 Firecrawl API Key(获取地址、三种配置方式、免费额度说明)。
ec54de7 feat(wiki): P0 knowledge graph + Web UI (v1.0.0)全新 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
55a5918 feat(island): tools launcher + wt.exe split-pane + drag fix (v1.1.0)灵动岛 Tauri 2 项目首次入库(island/ 目录,10 文件,768 行):
capabilities/default.json(6 条 window 权限)+ withGlobalTauri: true + mousedown 显式 startDragging()MouseEvent.detail >= 3 → close()%APPDATA%\haking-island\tools.jsonwt new-tab ... ; split-pane ... 原生分屏(4 种 layout:左右 / 上下 / 田字 / 多 Tab)4969433 feat(deepseek): full overhaul + multi-instance island hub (v1.1.0)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 |
上下文 / 价格 / 容量:
modelCost.ts 加 DeepSeek 三档 USD 价表,unknown_model_cost 告警熄灭ModelStatsPanel 增强:
DEEPSEEK_PRO_FULL_PRICE=1 切换 pro 原价/2.5 折灵动岛多实例聚合(src/services/island.ts):
~/.haking-island/sessions/{pid}.json本项目完全绕过 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 工具的总控面板。
src/services/api/deepseek-direct.ts 重写)| 改动 | 之前 | 现在 |
|---|---|---|
| 流式输出 | 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 计入 |
src/utils/context.ts + modelCost.ts)200K → 1M(modelSupports1M 加 deepseek-v4 匹配)default 64K / upper 384KMODEL_COSTS 加 DeepSeek 三档专属表(按官方人民币价折 USD),getModelCosts short-circuit 不再走 Claude 错档tengu_unknown_model_cost 告警熄灭,StatusLine "costs may be inaccurate" 不再亮src/components/PromptInput/ModelStatsPanel.tsx)输入框正下方常驻:
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
STATE.modelUsageDEEPSEEK_PRO_FULL_PRICE=1 → 切到 pro 原价档(pricing 同步进 modelCost.ts)ANTHROPIC_BASE_URL 含 deepseek 时显示,其他后端隐藏避免误导src/services/island.ts)之前两个 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 是聚合值。
island/)根因两个:
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:
没装 wt.exe 的老 Windows → 回退到每工具一个独立 cmd 窗口。
wiki/ 目录是一个独立的 Bun 应用,提供安全研究知识图谱 + D3 力导向可视化 + Markdown 预览。
cd wiki && bun run dev
# → http://localhost:7891
⚠️ 爬虫功能需要自行配置 Firecrawl API Key
Wiki 的 "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 次/月,足够日常研究使用。
https://api.deepseek.com/anthropic/arena 命令 — 4 链对抗共识引擎(C1 Proposer → C2 Challenger → C3 Verifier → C4 Synthesizer)/recon 命令 — PEV 假设驱动逆向分析引擎/setup 命令 — 持久化配置面板,支持多 Provider⚠️ 以下步骤缺一不可,跳过任何一步都会导致程序无法正常运行、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 模型映射说明输入 /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% 是以下原因:
/setup/anthropic 后缀 → 改成 https://api.deepseek.com/anthropic除了 /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 runbun run build 确认构建通过所有依赖通过
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
/setup 命令(推荐)在 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 →
💾 保存配置
.env 文件ANTHROPIC_API_KEY=sk-xxx
ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
FIRECRAWL_API_KEY=fc-xxx
set 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 | 查看所有命令 |
/arena — 4 链对抗共识多个 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 条链声明死锁/recon — PEV 逆向分析引擎假设驱动的二进制逆向分析循环。多 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]
自动检测协议:
/anthropic → Anthropic Messages APIsrc/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 切换侧边栏STATE.modelUsage 累加值(cost-tracker 在 React 之外 mutate 全局,没有事件订阅)bun run dev # 开发模式
bun run build # 构建到 dist/
bun run dev:inspect # 调试模式(VS Code attach)
bun test # 运行测试
本工具仅供合法安全研究和教育用途。详见 LEGAL.md。
TypeScript
82.2%
Go
16.7%