Releases: chainreactors/aiscan
v0.0.0-nightly.20260622
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
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 gotoTUI — 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-ptywrapper,finishSession()去重 - IOA 简化:8 个导出函数 → 4 个(统一 writer 参数)
FetchToolwrapper 移除,死代码清理
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
v0.2.3 — Playwright 全面升级 + Provider 双协议简化 + TUI 流式渲染 + IOA 架构精简
本版本包含 Breaking Changes。核心变更:Playwright 浏览器自动化对齐 microsoft/playwright-cli 接口,Provider 层简化为 openai/anthropic 双协议,TUI 流式 Markdown 渲染,移除 --loop 和 checkpoint/loop custom tool。
Breaking Changes
--loop移除: 设置--ioa-url即自动启用 IOA worker 模式,不再需要单独的--loopflag。迁移:aiscan agent --loop --ioa-url http://... --space s1→aiscan agent --ioa-url http://... --space s1checkpoint/looptool 移除:checkpoint已迁移到 IOA protocol(ioa_send checkpoint),verify/sniper 子 agent 改用finishtool + 结构化 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:通过EvalOnNewDocumentJS 注入,从 session open 开始自动捕获console.log/warn/error - 新增
snapshot:CDPAccessibility.getFullAXTree获取可访问性树,支持--depth控制层级 - 新增
requests/request <index>:session open 时自动启动网络捕获,列出全部请求或查看单条详情(headers、post data) - 新增
route-list、state-save/state-load、dialog-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 决定下一轮是否继承对话历史,false时agent.Reset() - system prompt 明确阈值:>80% 必须 reset,>50% 建议 reset,<=50% 默认继承
IOA — Token Auth
- server 端
--ioa-token设置访问密钥,client 端http://token@host:portURL 格式自动认证 ensureNode通过EnsureRegisteredtype assertion 实现 auth-aware 节点注册
Bug Fixes
- Anthropic 兼容 API: 第三方端点(如 DeepSeek
/anthropic)不识别type: "custom"tool 类型返回 400。改为仅在anthropic.com端点发送该字段,第三方省略 - 环境变量 provider 推断: 仅设
OPENAI_API_KEY或ANTHROPIC_API_KEY时未自动推断 provider,导致 env alias 失效。修复:从 API key env var 存在性推断 provider - tmux 增量读取:
capture-panepoll 循环意外推进增量游标,导致--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
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_20250305server 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/appeventbus、pidlock、resources、output、harness从pkg/移入core/- TUI/REPL 提取到
pkg/tui,合并pkg/repl - evaluator 使用 tool call 结构化输出替代 JSON text fallback
- cyberhub 基于 SDK association index 重建,新增结构化查询 flag
- provider 层简化:移除中间结构体,提取共享 HTTP 工具
Dependencies
- SDK
v0.2.4→v0.3.2 - 新增 SDK panic recovery
- 42 个 e2e 测试
v0.2.1 — IOA 集成重构 + AI 驱动监听
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 全面重构
v0.2.0 — Playwright 浏览器引擎 + Agent/Skill/Pipeline 全面重构
本版本为架构级大版本更新(148 commits)。核心引入 Playwright 浏览器引擎、TMux 交互式终端、Proxy 代理管理、Passive Recon、Search 搜索等新工具模块,同时对 Agent / Tool / Skill / Scan Pipeline 四大子系统进行全面重构。
Breaking Changes
- 构建标签统一 —
browser和recon两个独立 build tag 合并为单一fulltag。此前-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
v0.1.1
v0.1.0
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