Files
ARTEX/CHANGELOG.md
T
Autumn-27 338e77c064 fix(skills): 修复技能压缩包上传失败与中文命名被判非法
- 补上 bzip2 / Zstandard 解压器(标准库 + 已有的 klauspost/compress,不引新依赖),
  不再对压缩软件非默认档位打出的包抛 "zip: unsupported compression";
  Deflate64/LZMA/XZ/PPMd 等真解不了的方式与加密包改为解压前给出中文提示,
  点名文件、压缩方式与重新打包的办法
- 技能内文件路径校验从 [A-Za-z0-9-_./] 的 ASCII 白名单改为 Unicode 黑名单:
  放行各语言文件名与空格,仍拒绝控制字符、非法 UTF-8、零宽与双向控制字符、
  \ % # ? * : " < > | 及 .. / 绝对路径 / 空路径段,防目录穿越行为不变
- 技能名放开非 ASCII 字母数字(中文可直接作技能名),ASCII 仍守 agentskills.io
  规范,空格、点与路径分隔符照旧拒绝
- Windows 压缩软件按 GBK 写的文件名兜底解码后再校验;frontmatter 的
  name: "中文技能" 去引号
- 新增 8 个测试:zstd 包、GBK 包、不支持的压缩方式、加密包、目录穿越、名称与
  路径校验
2026-08-31 11:37:44 -04:00

30 KiB
Raw Blame History

更新日志

本项目的重要变更记录在此文件中,格式参考 Keep a Changelog。

Unreleased

LLM

修改的功能

  • 任务 LLM 配置链改为任何状态都可修改,不再限制「运行中 / 暂停 / 配置链耗尽」:任务结束(done / failed / timeout)后主 Agent 对话仍走这条链,链上模型出问题时原先既不能改也就没法继续交互。后端 HTTP 与 DB 事务两处终态拦截一并去掉,前端弹窗对终态任务也开放编辑与保存。终态任务保存时不再重开额度阻塞意图(那些意图会被挪到 open,既没有 worker 执行、也不再满足「重跑意图」的条件),想继续跑仍走重跑意图 / 新增目标,由它们把任务重新拉回运行态。

资产

修改的功能

  • 去掉企业资产范围「最多 256 条规则」的限制:逐个 IP / 域名录入范围的企业很容易撞上这个上限,撞上之后只能拆成多个企业,而范围本身并不因为条数多就更慢。前后端与 demo mock 三处上限一并移除,单条规则仍限 1024 字符,请求正文 2 MiB 的上限保留作兜底(约合四五万条规则)。

技能

修复的问题

  • 修复上传技能压缩包报「上传失败:zip: unsupported compression」的问题:Go 标准库只内置 Store / Deflate 两种解压器,压缩软件在非默认档位下写出的 bzip2、Zstandard 包一律解不开。现在补上这两种解压器(纯 Go 实现,不引新的外部依赖);Deflate64 / LZMA / XZ / PPMd 等确实解不了的方式,以及加密压缩包,改为在解压前就报出中文提示,直接点名是哪个文件用了哪种压缩方式、该怎么重新打包,不再把底层英文错误甩给用户。
  • 修复技能内文件名校验把中文文件名判为非法的问题:路径校验原先是 [A-Za-z0-9-_./] 的 ASCII 白名单,压缩包里只要有一个中文命名的文件(参考/说明.md 之类),整包上传就会以「压缩包含非法路径」失败。改为 Unicode 黑名单:允许各种语言的文件名与空格,仍然拒绝控制字符、非法 UTF-8、零宽与双向控制字符(RLO 文件名伪装)、\ % # ? * : " < > | 以及 .. / 绝对路径 / 空路径段,防目录穿越的行为不变。技能名同样放开——ASCII 仍限小写字母、数字与连字符(agentskills.io 规范),中文等非 ASCII 字母可直接作技能名,但不接受空格、点和路径分隔符。
  • 修复 Windows 压缩软件打出的中文包解压后文件名乱码或整包被拒的问题:这类 zip 不置 UTF-8 标志位、按 GBK 写文件名,现在按 GBK 兜底解码后再做路径校验。同时 name: "中文技能" 这种带引号的 frontmatter 也能正确取到技能名。

UI

新增的功能

  • 发现页新增「全部发现」平铺视图并设为默认,与原「按任务分组」视图通过页头 Tab 切换:分组视图要逐个任务展开才看得到漏洞,只想跨任务扫一眼列表时反而绕路。平铺视图是一张跨任务大表(每页 10/20/50/100 条),行为与分组视图完全一致——勾选导出、行内展开看证据与详细报告、行内改名称/类别/严重度、改处置状态、深入、删除。两个视图共用统计卡片与筛选条,切换不丢筛选,当前视图与筛选项一并记在本地;轮询只打当前视图,行内改动会同步写两边缓存,切过去不会看到过期数据。
  • 发现页新增「按资产」视图:左侧资产树(企业 → 根域名 / IP → 子域名 → 服务 → 接口,企业层只在资产确实有归属时才出现),右侧是选中节点整棵子树下的发现,与另外两个视图共用同一张表和同一批筛选条件。树只收有发现的资产,祖先链按需补齐(发现只挂在最深的接口上时,上面几层照样能拼出来),节点上的计数是子树聚合并按发现去重的;资产已删除或本就没关联资产的发现进「未关联资产」桶。与另外两个视图不同,资产视图不轮询——进入视图、改筛选、页内增删改发现、或点树上的刷新按钮时才查询,左树是导航结构,没必要每 5 秒重算。树上每层只显示相对上一层的增量(子域名去掉根域名后缀、服务显示 https :443、接口只显示路径),完整值在悬停提示与面包屑里;节点过多时整层丢弃接口/服务层级并给出提示,计数仍计入上层。

[0.3.6] - 2026-08-27

LLM

修复的问题

  • 修复「非流式」开关保存后重新打开又变回「流式」的问题(#69):配置列表接口的 DTO 漏了 streaming 字段,响应从不返回它,前端读到 undefined 后一律回落成默认流式;实际写入与 DB 存储本无问题,只是读不回来。DTO 补回该字段(不加 omitempty,false 也必须出现在响应里)。
  • 测试连接改为校验模型确有回复、并按该配置真实的收发模式来测(#65):此前只判 HTTP 是否成功,请求通但模型零回复(思考烧光预算 / 正文被安全策略吞掉 / 兼容层丢 content)也报「连接成功」,与会话里「不回话」的表现割裂;且测试恒走流式,非流式配置测的其实是另一条通道。现在空回复直接判失败、成功时在提示里展示模型回复,并把当前流式开关一并带入测试,让「测试通过」与「会话跑得通」保持一致。

Agent

修改的功能

  • list_facts 改为分页 + 关键词过滤,避免事实多时单次调用撑爆上下文(#74):默认返回最新 20 条,支持 limit(上限 100)/ before 游标 / q 摘要关键词,返回 {facts, total, has_more, next_before};单条 summary 过长按字数截断(全文仍走 node_detail)。worker / planner 提示词同步为分页语义。旧库通过一次性迁移把新参数 schema 刷进工具目录表(SeedTool 首插入only,否则工具管理页显示「无参数」)。

工具

新增的功能

  • 「工具执行」页新增工具调用次数统计(#72):工具栏「统计」按钮打开弹窗,按工具展示调用次数、占比与失败次数(次数降序);沿用列表的任务 / 关键词筛选,统计整个结果集而非当前页,弹窗打开时才拉取。

依赖

修改的功能

  • 升级 norma v0.3.1 → v0.3.2:修复 OpenAI 系响应里被静默丢弃的 reasoning/refusal(Responses 补 reasoning_text)、reasoning 字段三名去重、空响应(零内容块)有界重试、压缩边界切断工具配对导致的网关 400(同时修复已烤进 transcript 的存量孤儿)。

贡献者

0.3.5 - 2026-08-25

LLM

新增的功能

  • 每个 LLM 配置支持流式/非流式切换(默认流式):开走流式 SSE;关走真·非流式(stream:false、一次性返回完整 JSON),可绕开部分网关糟糕的 SSE 实现(空帧、思考字段丢帧),代价是失去运行中的实时进度与实时 Token 计数。worker / planner / mainagent / chat / goals 均按当前激活配置动态取值;llmpool / llmrec / 任务运行时三层 Provider 包装均兼容非流式;llm_profiles 新增 streaming 列并 ALTER 补旧库(默认 true,旧配置无感)。
  • 支持 OpenAI Responses API 格式的 LLM 配置:每个配置新增第三种格式 openai-responses(打 POST /v1/responses),与 Chat Completions / Anthropic 并列;BaseURL 归一化、默认模型 gpt-5;llm_profiles 的 format 约束加入 openai-responses 并幂等迁移补旧库;前端格式下拉新增「OpenAI (Responses API)」。依赖升级 norma v0.3.1(含 reasoning_content 回传修复)。
  • 录制 LLM 请求/响应 HTTP 原文:在 HTTP transport 层捕获真实 wire body,保留归一化视图看不到的工具 schema、tool_use 块与原始 SSE 帧;norma 内部重试的多次尝试逐次保留;llm_records 新增 raw_request / raw_response 两列并 ALTER 补旧库;录制页详情面板增加「原文」视图切换与请求/响应复制按钮(兼容非安全上下文的 execCommand 回退)。

对话

修改的功能

  • 会话列表多选改为「多选」模式开关:默认列表不再常驻每行勾选框(观感更干净),表头改为「共 N 个 + 多选」按钮;点「多选」进入选择模式(勾选框、全选、批量删除),「完成」退出并清空选择,批量删除全部成功后自动退出(有失败则留在选择模式便于重试);单条重命名 / 置顶 / 删除仍走每行 ⋯ 菜单。

UI

修改的功能

  • 任务管理、会话操作与流量查看体验增强(#57):任务列表列排序偏好可持久化记忆、行内重命名改用图标直接触发(不再经菜单)、抽屉(sheet)交互与流量查看细节优化。

修复的问题

  • Worker 资产标签只显示域名与 IP,并正确处理空标签的场景。

Agent

新增的功能

  • planner 判目标时新增「量化验收核对」:目标含可量化验收条件(资产测试覆盖度达到 X%、拿到 N 个 flag、获得某权限)时,prove_goal 前必须核对 graph_overview 的实测值(coverage.pct、findings 计数等),实测未达标则禁止 prove_goal、改为派意图补足差距,不得以「主要部分已完成/大体达成」为由提前标 met。修复了目标要求覆盖度 100%、实测仅 40% 却被判完成的问题。

修改的功能

  • 重写 planner 提示词中「本轮 0 意图」的判定依据:原文将 0 意图描述为「最常见、最重要的原则」,会让规划者在目标未达成、范围内仍有未测面时过早收手。现改为只在两种具体情况下才应产出 0 意图——① 想到的方向都已被 open/running/recent_done 意图覆盖;② 下一步依赖当前正在运行的 work 的产出、而产出尚未出现(应等其跑完、图更新后的下一次唤醒再规划)。并补充反向约束:确有未被覆盖且不依赖在跑 work 的新方向、或目标未达成且仍有未测面时,不要因「0 意图常见」而收手。
  • 强化 worker 提示词中「否定结论的证据门槛」:对「不可注入/端口关闭/无登录入口」等可能让规划者放弃一整条方向的否定结论,要求下结论前先穷尽该意图内的合理手段(换编码/参数/路径/方法);手段未走完或证据偏弱一律标 confidence=inferred,避免用轻率的 observed 否定把整条路线焊死(任务早期的错误否定尤其会把方向带偏且难以自愈)。
  • 上述 planner / worker 默认提示词变更通过一次性迁移(reseedPlannerPrompt / reseedWorkerPrompt,各带 settings flag 守卫)追加为新版本并切为当前版本;旧版本保留在版本历史中,自定义过提示词的用户可在版本记录里恢复。

运维

新增的功能

  • 新增 reset-password.sh 重置管理员(用户名固定 ARTEX)密码:支持 local / docker 两种部署,连接信息可显式指定或自动从 --dsn/$ARTEX_PG_DSN/config.json 读取;在库内用 pgcrypto 生成与后端登录兼容的 bcrypt 哈希并写回 settings.auth.password_hash,重置后无需重启服务。密码经环境变量传入、不进入进程 argv,并做转义防注入。

贡献者

0.3.4 - 2026-08-24

UI

新增的功能

  • 任务列表勾选多个任务后可批量修改分类,目标分类支持「未分类」以将任务移出当前分类;整批写入在一个事务内完成,失败项只会是勾选后已被删除的任务。

修改的功能

  • 新建任务的「任务分类」由下拉选择改为可搜索输入框:输入即过滤已有分类,库里没有的名称回车(或点下拉里的「创建」)即时新建并选中,选中项以可移除的 tag 展示;仍限单个分类。

对话

修复的问题

  • 修复会话已选定 LLM 配置、但全局无激活配置时,发送消息被「LLM 未配置,无法对话」拦截的问题。发送前的检查原本只看全局激活配置,而实际执行会优先用会话所选配置,两处解析逻辑不一致;现统一为同一套(会话/Agent 绑定优先,全局兜底)。
  • 无法对话时的提示按状态细分:完全没有配置提示「添加配置」,有配置但未激活提示「激活或为本会话指定一个配置」,不再一律显示「未配置」,便于定位。

Agent

新增的功能

  • 目标已全部达成的任务,主 Agent 经 add_intent 下发的意图可被 Worker 直接领取执行、跑完即止:此时 Planner 不再运行(任务无 open 目标即不进规划),避免其重判目标达成而取消刚下发的意图;frontier 抽干后任务回到已完成。主 Agent 下发意图前会依据意图内容反问用户是否将其登记为正式目标,登记则任务恢复常规自主规划。

修改的功能

  • get_worker_trace / get_task_worker_trace 的 step_ids 超过一次上限(5 个)时不再直接报错,改为返回前 5 步的完整内容,并在结果中通过 returned_step_ids / omitted_step_ids / notice 告知本次取了哪些、还有哪些未取,并提示「若已足够则无需再取」。传入的重复与非法 id 会先去重、剔除后再计数。

修复的问题

  • 任务列表改为按任务 id 降序(最新创建在最前),替换原先的按创建时间排序。同一时刻创建的多个任务时间戳相同、排序不稳定,配合每 10 秒轮询和内存 map 的随机遍历,会导致它们在列表里频繁互换位置。

资产

修复的问题

  • 修复企业归属重算被单行脏数据打挂:assets.ip 存了主机名(Agent 或资产 API 写入)时,a.ip::inet 会抛 22P02,导致新增/修改企业资产范围和删除企业全部失败并回滚。改用安全转换 try_inet(),非法值跳过而不是中断整条语句。
  • 无法解析的 ip 不再静默跳过:企业范围保存后会明确提示有多少条资产的 ip 不是合法 IP(含具体 id 和取值),提醒这些资产不会被 IP/CIDR 规则归属;同一信息也写入服务端日志,覆盖没有前端响应的路径(删除企业、scopesentry 同步、Agent 写入)。
  • 任务测试范围的 IP/CIDR 匹配同步改用 try_inet(),替换原先只检查字符集的正则守卫(abc.def 这类全 hex 字母的主机名此前仍会漏过并触发同样的报错)。

修改的功能

  • ip、service、endpoint 资产的 ip 字段不再接受主机名:insert_assets 和资产 API 会逐条返回带 index 的错误,并直接给出改正方法(改用 type=subdomain 填 domain,或先解析 A/AAAA 记录),Agent 可据此自行修正后重插。同批次中的其他资产不受影响,照常入库。

贡献者

0.3.3 - 2026-08-23

Worker

新增的功能

  • 运行中的 Worker 支持单项暂停、恢复和取消;暂停保留意图、事实与漏洞,取消会在执行退出后事务性清理当前意图及其直接产物。
  • 增加 paused 意图状态、执行栅栏和具名终止原因,防止暂停、取消或任务删除后出现迟到黑板写入。
  • 增加可选任务并发上限;新建、恢复、漏洞深入和队列补位统一通过持久化 FIFO 准入路径。

修改的功能

  • Worker 单次运行墙钟默认时长由 600 秒调整为 1200 秒;超时任务复活后在下一次真实执行时重新计时。
  • Worker、Planner 和主 Agent 的真实执行状态统一驱动任务状态徽标,修复 Worker 运行时仍显示“空闲”的问题。
  • Worker 会话保留单项控制和当前会话 Token 汇总,模型名称移动到当前会话标题右侧展示。

删除的功能

  • 删除 Worker 多选、全选及批量暂停/继续界面,同时移除 Worker 批量控制 API 和 Mock 契约。
  • 删除 Worker 列表行中的 Token 徽标与 Tooltip,底层完整 Token 账本和任务聚合接口继续保留。

LLM

新增的功能

  • 任务支持有序 LLM 配置链;明确识别供应商额度不足时自动切换下一配置,并持久化当前配置、耗尽状态和错误摘要。
  • 运行中和暂停任务支持编辑完整配置链、调整顺序和手动切换当前配置,从下一次 LLM 调用生效。
  • 自动切换、手动切换和全链耗尽写入结构化系统活动,并通过任务活动流弹出可去重提醒。
  • 增加任务角色模型解析接口,统一解析 Main Agent、Planner 和 Worker 下一次调用使用的配置与模型。
  • 增加可选的全局 LLM Pool,支持配置调用顺序、指定模型失败兜底、健康状态、冷却恢复和手动重置。
  • 增加始终开启的 LLM 用量账本,按任务、会话、模型和配置聚合输入、输出及缓存 Token。

修改的功能

  • 目标拆解、Planner、Worker 和主 Agent 共享任务级 LLM runtime(解析优先级见下)。
  • 故障转移只响应明确的额度、余额或账单错误;普通限流、鉴权、网络、服务端和上下文错误不会错误切换。
  • LLM 配置页改为配置卡片列表和右侧抽屉编辑,并提供 Pool 轮询顺序、优先级、排除项、健康状态和恢复操作。
  • 配置链耗尽信息支持窄屏换行;当前模型由会话列表图标改为当前会话标题旁的文字标签和完整 Tooltip。
  • 任务内各角色解析 LLM 的顺序调整为「Agent 绑定 → 任务配置链 → 全局」:显式绑定模型的角色始终跑在该模型上,未绑定角色才落到任务链,任务链为空时再落到全局。
  • 出站代理留空即直连,不再回退 HTTP_PROXY/HTTPS_PROXY 环境变量(显式 ARTEX_LLM_PROXY 不受影响);代理输入支持带账号密码的 socks5://user:pass@host:port。

修复的问题

  • 提交前(尚未产出任何输出)的瞬时流式失败在同一 provider 上安全退避重试,显著减少「只跑了一两个工具就中断、无总结、终态 model_error」的情况;额度耗尽、上下文过长和 4xx 确定性错误不重试,仍分别交由故障转移与压缩恢复处理。

删除的功能

  • 删除会话列表中的 LLM 图标式标识,避免与 Worker 状态图标混淆。

UI

新增的功能

  • 任务支持全局分类的创建、重命名、删除和筛选;新建任务可直接选择分类。
  • 增加全局任务模板 CRUD 和右侧管理抽屉;新建任务可加载预设描述与目标,也可将当前内容另存为模板。
  • 新建任务支持关联多个来源任务和多个企业资产范围;企业范围通过单个多行文本框自动识别域名、URL、IP、CIDR、ICP 和企业关键词。
  • 任务测试资产支持实时新增和删除,记录人工、企业、继承或 Agent 发现等来源;Worker 会话标题旁显示当前测试资产及来源摘要。
  • 发现页按任务分组并提供组内独立分页,支持为漏洞填写描述并创建高优先级深入意图。
  • 对话支持重命名、置顶、取消置顶和删除;任务列表支持当前页批量暂停与继续。
  • 流量详情和工具执行详情改为右侧抽屉;HTTP 报文补齐 Host 并高亮请求行、状态码、Header、JSON 和标记语言正文。
  • 任务列表操作列新增「详情」与「暂停/继续」按钮;会话发送键位可在系统设置中配置(Enter / Cmd+Enter 等),Web 搜索区新增代理输入框。
  • 会话标题右侧徽标改为显示 LLM 配置名称,模型 ID 移至 hover Tooltip;任务可设置可选名称,任务列表新增名称列与搜索(空则回退到描述)。
  • 技能页增加使用次数、最近使用时间和缺失依赖统计,便于定位未生效或未安装的技能。

修改的功能

  • 任务标题改为可聚焦详情链接;任务资产、企业资产、发现任务组和组内漏洞使用服务端真实分页、稳定排序与精确总数。
  • 新增企业改用右侧抽屉,范围录入统一为多行文本并提供实时识别、校验和类型预览。
  • 主 Agent 输入框支持自动增长、Enter 发送、Shift+Enter 换行,并避免中文输入法组合态误发送。
  • Agent 预览、任务报告和相关详情统一使用共享 Markdown 渲染;删除确认、长错误和移动端抽屉宽度统一修复。
  • 任务模板选择框以模板名称显示和搜索、以模板 ID 提交;恢复系统原始字体尺寸,应用版本统一显示为 0.3.3。
  • 任务总计和当前会话 Token 只高亮输入、缓存读取和输出数值;发送按钮使用更简洁的上箭头图标。
  • 任务总览的测试范围显示企业名称而非 ID。

修复的问题

  • 含点号的普通文本不再被误判为 ICP 备案号。
  • 修复变量目录中与全局运行时变量(如 {{.Now}})撞名,导致 Agent 编辑器变量列表渲染出重复 key 的问题。

删除的功能

  • 删除任务卡片独立“进入”按钮,统一点击任务标题进入详情。
  • 删除仪表盘“新建任务”按钮、新增企业的 Logo URL 输入项,以及发现页顶部和任务分组中的漏洞数量 Badge。
  • 撤销全局字体增大 10% 的样式,并删除会话列表中的 Worker 选择框、模型图标和行级 Token 统计。

Agent

新增的功能

  • 新任务可直接关联多个已有任务,实时只读继承直接来源任务的目标、事实、漏洞、已完成意图、资产范围和黑板上下文。
  • 黑板读取工具支持按需查询来源任务节点、事实、漏洞和执行轨迹;继承节点带来源标记且所有写工具拒绝修改。
  • 企业范围工具支持域名、URL、IP、CIDR、ICP 和企业关键词;关键词仅作为 Agent 范围提示,不参与资产自动归属。
  • 漏洞深入操作会在原任务创建带资产锚点和 derived_from 边的高优先级人工 Worker 意图。
  • 总览新增「目标管理」卡片,支持人工查看、新增、修改和删除目标;新增或修改会通知 Planner 并复活任务,删除硬删目标节点(级联删边与锚点)但不复活。
  • 主 Agent 默认获得 steer_work 工具,可对运行中的 Worker 实时注入纠偏指令而不打断、不丢失进展(仍校验意图归属本任务)。

修改的功能

  • 来源任务意图不进入新任务 frontier,新任务继续使用独立 exploration、执行队列、工作目录和对话历史。
  • 删除运行中的意图不再销毁数据:改为停到 stopped、要求填写删除原因、把原因作为事实挂到该意图并写入 payload,规划者按 cancelled 触发感知(保留意图内容与原因)。
  • 主 Agent 对话改为服务端活动流驱动,发送失败可恢复输入;打开会话时自动贴底并在详情懒加载后保持最后回复可见。
  • 任务暂停会终止当前 Main Agent、Planner 和 Worker 调用,但不阻止暂停期间用户主动发起新的主 Agent 编排会话。
  • 取消、关闭和流式中断统一保留真实终止原因、已生成内容、运行轮数、耗时、Token 与未返回工具调用。

删除的功能

  • 删除主 Agent 客户端乐观消息回显,避免暂停、失败或并发活动下出现重复消息和跨会话串流。

约束

新增的功能

  • 目标拆解阶段先抽取操作约束(allow/deny)再拆目标,主 Agent 运行时可补充;约束按最高优先级注入 Planner 与 Worker 系统提示,去偏后多样性与拓面探索显式服从约束。
  • 总览新增「约束管理」卡片与增删改接口;约束注入范围可按 Planner / Worker 分别开关(默认都开,每轮读取、即时生效)。新表 task_constraints 使用 CREATE TABLE IF NOT EXISTS,旧库自动补建。

拦截

新增的功能

  • 命令拦截在正则/字符串规则之外新增模型兜底审批:一条规则都未命中时由模型做 ALLOW/ASK/DENY 语义判定,失败回退动作与审批超时动作可配置;拦截页拆分「拦截规则 / 模型配置」两个 Tab,模型判定结果标注 [模型] 前缀与理由。

修复的问题

  • 加固裁判输出解析,避免正确的 DENY 判定被误当作放行。

流量

修改的功能

  • 流量录制改为整条 exchange 落 SQLite(大正文溢出到按 hash 去重的 blob 桶),文本正文建 trigram 全文索引,支持任意子串与中文搜索;删除退化为单条 SQL 事务,从数小时降到毫秒级且期间不再停摆录制。新增大 body 流式下载与 traffic_search 全文参数;旧文件树数据免迁移,仍可读、可搜、可删。

任务与资产

新增的功能

  • 创建任务新增「资产覆盖度功能」开关(默认开):关闭后不计算与展示覆盖度、态势图只显示资产、不自动累积 task_scope,相关工具从 Planner / 主 Agent 剔除;企业关联不受此开关影响。
  • insert_assets 每条资产新增 related 标记(默认 true):仅在开启覆盖度时生效,false 只入共享资产库、不计入本任务覆盖度(如顺带发现的旁站或无关资产)。
  • 企业范围和任务测试资产统一支持域名、URL、IP、CIDR、ICP 与关键词文本识别;域名/IP 可创建或复用全局资产,CIDR/ICP/关键词保留为任务范围上下文。

构建

  • build.sh --release 支持一次构建 Linux amd64/arm64、macOS amd64/arm64 和 Windows amd64,并生成带 skills/、配置示例和 README 的 zip 发布包。
  • 使用 Go linker 去除调试信息并生成 zip 发布包;UPX 改为显式可选,避免其自解压 ELF 在部分 Linux 环境启动时发生段错误。
  • Release Workflow 对 Linux amd64 二进制执行启动冒烟测试,并随发布包提供 SHA256SUMS。

贡献者

0.3.2 - 2026-08-20

Added

  • 新建任务支持关联多个已有任务,实时、只读继承直接来源任务的事实、漏洞、已完成意图、资产范围和黑板上下文;新任务仍使用独立的执行队列、工作目录和会话历史。
  • 任务支持有序 LLM 配置链。明确识别到供应商额度不足时自动切换到下一配置,并持久化当前配置、耗尽状态和结构化审计活动。
  • 运行中和暂停任务支持编辑 LLM 配置链、调整顺序及手动切换当前配置;自动切换、手动切换和全链耗尽会在任务详情页提示。
  • 运行中的 Worker 支持暂停、恢复和取消。暂停保留黑板数据,取消会在 Worker 停止写入后事务性清理该意图及其直接产出的事实、漏洞和执行记录。
  • 删除任务可选择同时清理关联资产、流量、漏洞和任务落地文件,并增加删除屏障、并发保护和可审计的删除统计。
  • 增加可选的任务并发上限;达到上限的新任务按 FIFO 排队,并在运行槽位释放后自动启动。
  • 增加任务资产分页、公司资产分页、任务分类统计及分页意图 Mock 契约。
  • 增加 build.sh 单二进制构建脚本,支持静态前端导出、资源嵌入、跨平台目标和构建版本注入。

Changed

  • 任务级显式 LLM 配置链与现有全局 LLM Pool 并存;显式链继续采用严格的额度故障转移语义,无显式链时沿用 Agent 绑定和全局配置规则。
  • 主 Agent 输入框支持自动增长的多行输入,Enter 发送、Shift+Enter 换行,并避免中文输入法组合态误发送。
  • Planner、Worker 和主 Agent 共享任务级 LLM runtime;任务链使用候选模型中最小上下文窗口作为安全压缩阈值。
  • 任务详情页按真实 LLM 调用状态展示运行、空闲和暂停状态;来源任务的事实、漏洞、意图、资产引用和图谱节点统一标记来源并保持只读。
  • Agent 预览、任务报告和相关详情视图统一使用共享 Markdown 渲染组件。
  • LLM 模型配置采用卡片和抽屉交互,模型列表在抽屉内支持独立滚动。
  • 任务暂停不再拦截主 Agent 对话:主 Agent 编排会话独立于任务暂停,暂停中仍可继续发送新消息(暂停只终止当前进行中的那一轮)。
  • Worker 单次 run 的墙钟默认时长由 600 秒调整为 1200 秒。

Fixed

  • 移除主 Agent 控制台的乐观回显,改为纯服务端数据渲染,修复暂停或发送失败等场景下消息错乱、串入其他会话内容的问题。
  • 打开主 Agent 会话默认滚动到底并完整显示最后一条回复:最后一条回复的完整内容懒加载展开后自动贴底,不再被顶出屏幕。
  • 修复暂停任务后主 Agent 会话仍继续运行,以及编排 Agent 暂停任务时未同步停止主 Agent 的问题。
  • 修复任务完成、Planner、Worker 或主 Agent 实际运行时,任务状态徽标与操作按钮状态不同步的问题。
  • 修复 Worker 取消、任务删除和并发写入之间可能产生迟到黑板写入或残留文件的问题。
  • 修复 Markdown 预览失效、删除确认长文本溢出、移动端宽度和部分任务详情按钮未对齐的问题。
  • 为所有 Agent 取消路径增加具名终止原因,活动详情可显示取消方、终态、运行轮数、耗时、Token 使用量和未返回的工具调用。
  • 修复后端关闭时父 context 可能抢先覆盖具名 shutdown 原因的竞态,以及中文活动摘要按字节截断导致乱码的问题。
  • 修复带部分流式输出的取消事件丢失真实终止原因的问题,同时保留取消前已生成的内容。

贡献者