Skip to content

Releases: chainreactors/aiscan

v0.0.0-nightly.20260622

22 Jun 19:27

Choose a tag to compare

Pre-release

Changelog

  • 60d2e5c refactor: 统一 .aiscan 数据目录到 DataDir(),默认跟随二进制路径
  • e991166 refactor(cmd): restructure cmd/ — Arsenal always loaded, agent minimal, web as subcommand
  • 5821bee fix: unified panic recovery for tool execution and scan pipeline
  • 076b5e7 fix: break import cycle by moving passive scanner registration to its own package
  • b6b6a9d feat: config fallback 改为 -c > 当前目录 > 二进制目录
  • c0947dc chore: add AGPL-3.0 license, update README license section
  • e0ed15b art: redesign logo — chain radar with brand red palette

v0.2.5

21 Jun 16:55
5a1960c

Choose a tag to compare

v0.2.5 — Arsenal 工具管理 + TUI 重设计 + 命令接口统一 + PTY 平台整合

新增 Arsenal(crtm)安全工具包管理器;Playwright 新增 -s 全局 session flag;TUI verbose 渲染全面重设计;命令接口统一为全局 OutputWriter;4 平台 PTY 文件整合为单一 go-pty wrapper。

Arsenal — crtm 安全工具包管理器

  • arsenal install/update/remove:幂等操作,manifest 瞬时版本查询
  • bash pseudo-command 执行模型,安装后自动注入 $PATH
!arsenal list                              # 查看所有工具 + 安装状态
!arsenal search subdomain                  # 关键词搜索
!arsenal install httpx                     # 安装(自动下载 + PATH 注入)
!arsenal install nuclei --version v3.3.0   # 指定版本
!httpx -l targets.txt -silent              # 安装后立即可用
!arsenal update httpx                      # 更新到最新
!arsenal add projectdiscovery/subfinder    # 添加第三方仓库

Playwright — -s 全局 session flag

所有子命令支持 -s=<name> 指定目标 session,对齐 playwright-cli 习惯:

playwright -s=mySession click "button"
playwright -s=s1 goto

TUI — verbose 渲染重设计

  • ▸/✓/✗ 标记替代 ⎿/│ 盒线,结构化 key-value 参数展示
  • turn 统计新增 cache hit ratio、耗时颜色编码、并行 tool 标记
  • agent 结束汇总 tool 调用统计,eval verdict 结构化展示
  • -vv 禁用输出截断,显示完整 tool result

Architecture

  • 命令接口统一Command.Execute 移除 io.Writer 参数,全局 OutputWriter + exec hooks
  • PTY 平台整合:4 平台文件 → 单一 go-pty wrapper,finishSession() 去重
  • IOA 简化:8 个导出函数 → 4 个(统一 writer 参数)
  • FetchTool wrapper 移除,死代码清理

Robustness

  • Agent retry 覆盖 HTTP 406 等瞬态错误

Bug Fixes

  • 修复 pseudo-command 输出丢失(缺少 SetExecHooks)
  • 修复 go.mod 本地 replace 路径导致 CI 失败
  • 解决全部 golangci-lint 错误
  • DirectScanner 数据竞争修复

Breaking Changes

  • Command.Execute 签名:Execute(ctx, args) error(移除 io.Writer 参数)
  • FetchTool 移除,fetch 改为普通 Command

Full Changelog: v0.2.3...v0.2.5

v0.2.3

18 Jun 14:30

Choose a tag to compare

v0.2.3 — Playwright 全面升级 + Provider 双协议简化 + TUI 流式渲染 + IOA 架构精简

本版本包含 Breaking Changes。核心变更:Playwright 浏览器自动化对齐 microsoft/playwright-cli 接口,Provider 层简化为 openai/anthropic 双协议,TUI 流式 Markdown 渲染,移除 --loopcheckpoint/loop custom tool。

Breaking Changes

  • --loop 移除: 设置 --ioa-url 即自动启用 IOA worker 模式,不再需要单独的 --loop flag。迁移:aiscan agent --loop --ioa-url http://... --space s1aiscan agent --ioa-url http://... --space s1
  • checkpoint/loop tool 移除: checkpoint 已迁移到 IOA protocol(ioa_send checkpoint),verify/sniper 子 agent 改用 finish tool + 结构化 status header;loop 不再作为 LLM custom tool 暴露,LoopScheduler 内部机制(--heartbeat)保留
  • Provider 简化为双协议: 移除 deepseek/groq/moonshot/ollama/openrouter 等独立 provider type,统一为 openai(OpenAI-compatible)和 anthropic 两种协议,通过 --base-url 指定实际端点
  • -q 静默模式移除: 被 -v/-vv 分级详细度替代

New Features

Playwright — 对齐 microsoft/playwright-cli 接口

  • 新增 cookie-list/cookie-get/cookie-set/cookie-delete/cookie-clear 五个独立 cookie 命令
  • 新增 storage-list/storage-get/storage-set/storage-delete/storage-clear 覆盖 localStorage 和 sessionStorage 完整 CRUD
  • 新增 console:通过 EvalOnNewDocument JS 注入,从 session open 开始自动捕获 console.log/warn/error
  • 新增 snapshot:CDP Accessibility.getFullAXTree 获取可访问性树,支持 --depth 控制层级
  • 新增 requests/request <index>:session open 时自动启动网络捕获,列出全部请求或查看单条详情(headers、post data)
  • 新增 route-liststate-save/state-loaddialog-accept/dialog-dismiss
  • open 新增 --headed(GUI 窗口)和 --cdp <endpoint>(连接已有浏览器)
  • 移除 session GC/TTL 机制,session 持久存活直到 close 或进程退出,LRU 8 上限保留

图像优化 — LLM 视觉输入管线

  • 截图自动优化:缩放至 2000×2000 以内,PNG vs JPEG 双编码取较小,渐进降质直到 base64 < 4.5MB
  • 非视觉模型自动降级:基于 provider type + model 名推断图像支持能力,不支持时替换为文字提示

TUI — 流式 Markdown 渲染 + 分级详细度

  • 段落缓冲式 Markdown 渲染 + chroma 语法高亮(read tool 结果带行号)
  • -v/-vv 分级详细度:默认流式内容 + turn 统计;-v 显示 tool call 详情;-vv 显示 thinking content
  • 每个 turn 结束显示 [turn N | tools=X | input=Y (+ Z cached) output=W | Ns]
  • Agent 结束显示 [agent STATUS | turns=N | input=Y (+ Z cached) output=W | Ns]

Evaluator — Context Window 感知 + inherit_context

  • 内置模型 context window 查询表(Claude/DeepSeek/GPT/Gemini/Qwen/Kimi),未匹配 fallback 128k
  • verdict 新增 inherit_context:evaluator LLM 决定下一轮是否继承对话历史,falseagent.Reset()
  • system prompt 明确阈值:>80% 必须 reset,>50% 建议 reset,<=50% 默认继承

IOA — Token Auth

  • server 端 --ioa-token 设置访问密钥,client 端 http://token@host:port URL 格式自动认证
  • ensureNode 通过 EnsureRegistered type assertion 实现 auth-aware 节点注册

Bug Fixes

  • Anthropic 兼容 API: 第三方端点(如 DeepSeek /anthropic)不识别 type: "custom" tool 类型返回 400。改为仅在 anthropic.com 端点发送该字段,第三方省略
  • 环境变量 provider 推断: 仅设 OPENAI_API_KEYANTHROPIC_API_KEY 时未自动推断 provider,导致 env alias 失效。修复:从 API key env var 存在性推断 provider
  • tmux 增量读取: capture-pane poll 循环意外推进增量游标,导致 --new 读取为空。修复:poll 改用 --full
  • evaluator 历史丢失: evaluator 仅收到当轮消息,重试时丢失前几轮 context。改为传入完整 transcript
  • 非视觉模型图像拒绝: 不支持 multimodal 的 provider 收到 image_url 返回 400。新增 per-provider 图像支持推断 + strip

Full Changelog: v0.2.2...v0.2.3

v0.2.2

17 Jun 06:23

Choose a tag to compare

Changelog

v0.2.2 (2026-06-16)

新增 goal evaluation 闭环机制——独立 LLM 评估 agent 任务完成度并自动注入反馈驱动重试;内嵌 katana 爬虫引擎支持 headless 浏览器;新增多 provider 容错降级链;重构 TUI/REPL 为统一 pkg/tui 模块;大幅整理包结构,aiscan 专用包从 pkg/ 移入 core/。

New Features

goal evaluation — 独立评估 + 反馈重试闭环(核心)

  • 新增 -e / --eval 指定目标评估标准,--eval-model 可选独立评估模型,--eval-retries 控制最大评估轮数(默认 3)
  • 评估机制:agent 完成一轮执行后,独立 evaluator LLM 接收压缩后的 execution trace(tool call 序列 + assistant 摘要 + final output),通过强制 tool call(verdict tool)返回结构化判定(pass/reason/feedback)
  • 闭环重试:verdict.pass=false 时,evaluator 的 feedback 作为新 prompt 注入 agent 继续执行,直到 pass=true 或达到最大评估轮数
  • evaluator 调用失败时降级为通用反馈("请检查你的工作并继续"),不中断主流程
  • trace 压缩策略:仅保留 tool call 序列和 assistant 摘要,不传完整 tool result,最大 16KB 防止 context 膨胀
  • 全程通过 eventbus 发射 GoalEvalStart / GoalEvalEnd / GoalEvalError 事件,TUI 实时展示评估进度和结果

katana — 进程内爬虫 + headless 引擎

  • 将 katana 从外部二进制调用重构为进程内 SDK 集成,通过 goflags 解析参数保持完整 CLI 兼容性,OnResult 回调收集结果
  • 新增 headless/hybrid 引擎支持,根据 -hl/-hh/-cwu 标志自动选择引擎

multi-provider — 容错降级链

  • 当主 provider 重试耗尽后,agent loop 自动切换到降级链中的下一个 provider 并重放当前 turn
  • 配置文件 llm.providers 数组定义降级链,启动时并行初始化(失败跳过)
  • 新增 REPL /provider 命令展示 provider 链的 active/standby 状态

agent — finish tool / thinking block / web search

  • 新增 finish tool:通过 ToolResult.Terminate 显式终止 agent loop
  • 非流式响应支持解析 Anthropic thinking block 为 ReasoningContent
  • 新增 WebSearchProvider 接口,Anthropic 走 web_search_20250305 server tool,OpenAI 走 Responses API;provider 原生搜索失败时回退 Tavily/DDG

heartbeat + tmux 增量监控

  • --heartbeat 接入 LoopScheduler 作为通用周期唤醒
  • tmux 后台命令自动推送增量输出到 agent inbox(每 10s per-session goroutine)
  • capture-pane 新增 -n(末尾 N 行)和 -c(末尾 N 字节)参数

信号处理 — 两阶段 Ctrl+C

  • 第一次 Ctrl+C 停止当前任务,第二次退出 REPL,第三次强制退出

Bug Fixes

  • scanner CLI: aiscan scan / aiscan gogo 等直接命令模式因引擎异步加载导致 "unknown subcommand" 失败。新增 WaitEngines(ctx) 同步等待引擎就绪

Refactoring

  • pkg/app 合并进 core/runner,删除 pkg/app
  • eventbuspidlockresourcesoutputharnesspkg/ 移入 core/
  • TUI/REPL 提取到 pkg/tui,合并 pkg/repl
  • evaluator 使用 tool call 结构化输出替代 JSON text fallback
  • cyberhub 基于 SDK association index 重建,新增结构化查询 flag
  • provider 层简化:移除中间结构体,提取共享 HTTP 工具

Dependencies

  • SDK v0.2.4v0.3.2
  • 新增 SDK panic recovery
  • 42 个 e2e 测试

v0.2.1 — IOA 集成重构 + AI 驱动监听

09 Jun 17:40

Choose a tag to compare

v0.2.1 — IOA 集成重构 + AI 驱动监听

适配 IOA v0.1.0 的统一架构。核心变更:多 Agent 协作从自动推送切换为 AI 主动监听。

Breaking Changes

  • --ai 标志移除 — scan 命令不再支持 --ai 兼容别名。使用 --verify=high --sniper 替代
  • IOA build tag 移除 — 不再需要 -tags sqlite。SQLite、MCP、Auth 始终内置

IOA 协作

AI 驱动的实时监听(替代 push-to-inbox)

旧模式:swarm.Node 自动订阅 SSE → 消息推入 Agent inbox → 打断当前工作流

新模式:AI 自主决定何时监听、监听什么:

# 通过 tmux 启动后台监听(整个 space)
ioa read -s <space_id> --listen --token <token>

# 监听特定 thread(仅关联消息)
ioa read -s <space_id> -m <root_id> --listen --token <token>

# AI 主动查看新消息
tmux peek <session>

侵入性更低——AI 拉取而非被推送,自行控制注意力分配。

方向遍历

ioa_read 新增 --direction 参数,支持单向图查询:

  • --direction downstream — 仅获取后代(root 之后的所有回复)
  • --direction upstream — 仅获取祖先(回溯到 root)

IOA 内置 Server 简化

  • --ioa-db ./ioa.db 持久化(默认),--ioa-db :memory: 内存模式,无需 build tag 切换
  • MCP endpoint(/mcp)始终可用,兼容 Claude / Cursor 等 MCP 客户端
  • 认证通过 --access-key 配置即启用

ioa_send 支持 content_type

ioa_send 新增 --content_type 参数,允许设置消息信封的协议标识(checkpoint / handoff / swarm / team)。

Scan 更新

  • --ai 移除 — 不再作为 --verify=high --sniper 的兼容别名。直接使用具体的 AI skill 标志:--verify--sniper--deep

Skill 更新

  • ioa/SKILL.md — 新增 Background Monitoring 段落:--listen + tmux 后台监听用法;新增 --direction 过滤文档
  • ioa/swarm.md — 加入空间监听步骤,工作阶段从轮询改为 tmux peek

文档

  • README — 更新 scan 示例,使用 --verify/--sniper/--deep 替代 --ai
  • usage.md — 大幅扩充:新增 katana/passive 章节、--trace 调试、-F/--format 资产报告、subagent 用法、--proxy/--llm-proxy 配置
  • quickstart.md — 更新安装和快速上手示例
  • configuration.md — 移除已弃用的 vision 配置段(已合并至 provider 层)

CI

  • Nightly — 自动清理 7 天以上的旧 nightly 构建,发布时不再创建 draft

Full Changelog: v0.2.0...v0.2.1

v0.2.0 — Playwright 浏览器引擎 + Agent/Skill/Pipeline 全面重构

08 Jun 06:33

Choose a tag to compare

v0.2.0 — Playwright 浏览器引擎 + Agent/Skill/Pipeline 全面重构

本版本为架构级大版本更新(148 commits)。核心引入 Playwright 浏览器引擎、TMux 交互式终端、Proxy 代理管理、Passive Recon、Search 搜索等新工具模块,同时对 Agent / Tool / Skill / Scan Pipeline 四大子系统进行全面重构。

Breaking Changes

  • 构建标签统一browserrecon 两个独立 build tag 合并为单一 full tag。此前 -tags browser-tags recon 需改为 -tags full
  • `ioa` 独立二进制移除 — 不再单独发布 `ioa` 可执行文件,功能通过 `aiscan ioa` / `aiscan-full ioa` 子命令访问
  • 发布产物精简 — 每个平台仅产出两个二进制:`aiscan`(基础版)和 `aiscan-full`(含 passive / katana / playwright / sqlite)

Tool 更新

Playwright 浏览器引擎

全新 `pkg/tools/playwright` 模块替代旧 browser 模块,对标 playwright-cli 参数体系:

  • 交互式浏览器会话,支持 context flags / 状态查询 / save-storage / HAR 导出
  • 22 个高安全价值命令(autofill / dialog / navigation / discover 等),覆盖率 87%
  • Session Recorder — 录制浏览器操作自动生成 nuclei headless 模板
  • Headless Protocol Engine — 完整兼容 nuclei headless 模板规范(action / hijack / rules / expressions)

TMux 交互式终端

  • 统一 bash / tmux 执行层 + task manager,完整 PTY 支持
  • 后台执行和跨平台兼容
  • 支持多轮交互式会话,Agent 可通过 tmux 会话执行长时间任务

Proxy 代理管理

  • Clash 订阅解析,支持 trojan / vless / anytls / hy2 / ss 多协议
  • 代理池管理 + 节点选择
  • 与 scan pipeline 集成,支持 `--proxy` / `--llm-proxy` 独立配置

Passive Recon

  • 集成 projectdiscovery/uncover,支持 FOFA / Hunter 网络空间搜索引擎
  • Per-query 资产数量限制 + 独立代理配置
  • `aiscan-full passive` 子命令直接调用

Search & Web 工具

  • WebSearch — 网页搜索工具(Tavily),支持显式代理配置
  • WebFetch — 网页内容抓取
  • CyberhubSearch — CyberHub 资产搜索
  • Multimodal — vision 能力集成至 provider 层

工具系统重构

  • `pkg/scanner` → `pkg/tools`,所有工具通过 `init()` 自注册
  • `CommandRegistry` 工厂模式统一管理
  • 模板加载从 base64 切换至 `go:embed`

Agent 更新

Agent 系统重构

  • 统一 Agent 抽象 — 消除 InProcess / Subprocess 分裂,单一原子化 Agent
  • SubAgent 三模式 — task 内存化 + prompt 上下文注入
  • 模板化 Prompt — `SystemPromptFn` 动态生成 + skill 预加载
  • 统一 EventBus — 替代碎片化的 event / recording 系统
  • Per-turn Token 可观测性 — agent transcript + pipeline 生命周期 token 追踪
  • LLM Prompt Cache — Anthropic / OpenAI 协议统一缓存抽象

Skill 系统

  • YAML Frontmatter — skill 定义改为 frontmatter 索引 + 按需读取内容,启动更快
  • 多级加载 + 覆盖 — 支持 skill 分层加载与优先级覆盖

Scan Pipeline 更新

  • 基于订阅的 DAG Pipeline — 替代全局去重,事件驱动的扫描流程编排
  • 统一 AI Skill 插件架构 — 结构化录制 + scan 主动验证增强
  • Loot 类型统一 — `Finding` / `AISkill` / `CheckpointSink` 合并为 `Loot`
  • 统一 `-f` JSONL 输出格式
  • Katana crawl 集成

IOA & Swarm 更新

  • `protocols/` 动态应用层协议注册
  • Checkpoint 自动同步至 IOA Space
  • IOA 子命令 CLI
  • Swarm 多节点协作调度增强

其他更新

Web UI

  • 资产维度的 Web 扫描界面 + 深度分析视图
  • 扫描结果基于 loot schema 渲染

测试 & 验证

  • LLM-as-Judge — Intent 验证引擎,用 LLM 判定 agent 行为是否符合预期
  • Real-time Agent Monitor — 实时监控 agent 执行状态
  • 完整 CI 流水线:lint / tidy / coverage / generated-test / e2e / tool-tests

配置 & 构建

  • 配置提取:`core/config` + `core/runner` 从 `cmd` 独立
  • GoReleaser v2,构建产物精简为 base + full

Full Changelog: v0.1.0...v0.2.0

v0.1.2

08 Jun 06:33

Choose a tag to compare

Changelog

  • 69d3bee fix cli scanner flag isolation
  • 1943ba3 feat: add --proxy for scanner tools and --llm-proxy for LLM API, all via proxyclient

v0.1.1

08 Jun 06:33

Choose a tag to compare

Changelog

  • 94ade9a fix: resolve remaining CI test failures

v0.1.0

15 May 03:52

Choose a tag to compare

Changelog

  • 1d33039 refactor: unify capability pipeline, remove registry abstraction, decouple scan from agent
  • 0d347b2 refactor: migrate pkg/acp to standalone github.com/chainreactors/ioa package
  • 841de1e refactor: extract shared utilities to pkg/util, remove duplicate code
  • 8927637 fix: use remote console modules for release
  • 84961d1 feat: register ACP query commands in agent REPL
  • 2022aab feat: agent loop resilience, capacity-driven concurrency, verification enhancement
  • fb2f835 feat: add console agent repl
  • e142879 feat: add config.yaml system and build script for aiscan
  • b9326bf feat: add ACP CLI query subcommands and enhance space tool
  • c634994 chore: use remote ioa module
  • d08b685 chore: prepare v0.1.0 release

v0.0.1

09 May 13:33

Choose a tag to compare

Changelog

  • 39c5525 Add CI build and release controls