Repository navigation
Releases: sharenjun/ARTEX-main
Release list
v0.4.2
本次修复 P0/P1 中的任务收官、失败恢复、认证覆盖、证据交接和范围同步问题,并完善工具统计及收尾保存。
修复
- 新目标固定为检查或成果类型;检查目标须保存必要检查。认证检查点保留实际请求、剩余候选、授权预算与身份验证材料,恢复工作继承最新记录并限制重复尝试。
- 工作退出与检查完成分别保存;有缺口、推断或空证据的材料不能直接证明目标达成。补证或修改范围后,旧证明须重新核对。
- Worker、Planner 和 Reporter 可在当前任务权限内读取及补充已有发现证据、绑定流量和更新报告;证据修改校验版本并保留历史,界面显示审核状态。
- 暂停后可一起修改目标、说明、必要检查、约束和资产范围;保留旧契约,停止旧未完成工作,恢复时重新规划。人工恢复重置停滞计数,普通调度不会重置。
- 目标拆解工具接入统一调用账本,记录角色、任务与执行结果;工具页面增加调用结果统计。
- 区分模型额度、拒绝、配置、协议和传输错误,确定性错误保留待处理状态;补齐收尾资产保存工具,并延长普通收尾保存窗口至 60 秒。
新增目标的 API 请求须包含 goal_type(inspection 或 outcome);inspection 还须包含非空 required_checks。已有目标保留原记录,缺少类型的旧目标可通过任务范围编辑明确契约。
验证范围
本地回归、专项重复测试、竞态检查及前端构建已通过。完整多资产、多漏洞的任务效果仍需扩大验证;P1-05 的特定模型服务及外部系统联调保留待补验状态,不将跳过或未复现计为通过。
v0.4.1
本次重点修复推理历史回放、目标误判与任务收官:保留真实推理块及已执行工具结果,目标达成须有对应证据,终验失败可追踪、可纠错并有界恢复。
修复
- 识别网关要求回传
content[].thinking的原始 HTTP 400 措辞,进入有界历史恢复,保留已执行工具结果;强制开启推理等配置错误仍保留原错误。 - 对目标达成的成功结论增加独立支持性复核;布尔结论与理由不一致、实际成果属于其他目标或复核失败时,不再写入达成状态。两次审核共用原有 60 秒预算。
- 收官终验核实决定性缺口后立即拒绝完成并保存目标缺口,避免为否定结论遍历全部证明而耗尽预算;成功结论仍须核验全部必要目标与检查。
- 目标标记达成前独立审核证据,区分实际成果与检查完成;证明边、状态及审核理由在同一事务保存,并重新核对任务、目标、证据版本。
- 支持纠正错误的目标完成判定,保留原证明及原因;修改目标内容会撤销旧判定。终验返回具体目标证据缺口,任务面板与报告展示恢复信息。
- 收官申请检查全部目标,避免目标列表显示上限遗漏必要工作;阴性事实不能证明已获取 flag 或已确认漏洞。
- 任务终验默认预算改为 180 秒、16 轮并支持配置;复核期限与 Worker 排空期限分别展示,保留绝对截止时间和迟到结论保护。
- 对相同输入的终验失败持久保存类别、计数和恢复动作,瞬时故障最多自动重试两次并退避;重启或 Planner 再申请不会重置限制,人工恢复记录原因。
- 统一 Anthropic thinking 配置与单次请求覆盖:默认模式保留真实推理历史,显式关闭才过滤,非法模式明确报错。
- 对推理历史缺失增加原始块恢复、工具关联校验及有界会话恢复;保留旧 transcript 和已完成工具结果,记录恢复边界,支持重启继续。
- 模型池识别确定性历史和配置错误,避免无效故障转移及健康计数误清零。
- 保留流式 thinking 的块边界、分片签名、空块和 opaque 内容;NOA 不再改写带签名的推理文字。保存最小模型来源,切换不兼容配置时从记录恢复上下文。
- 断流不执行未收完的工具调用,并持久保存已执行工具的结果和部分响应,避免续聊遗漏副作用;缺少 message_stop 的响应明确报错。
代码组织
- 将
server.go、server_mgmt.go中的 HTTP API、路由、模型装配、提示词模板及 Skill 文件操作按职责拆分,保留同一server包和现有接口。 - 接续拆分时保留 v0.4.0 的后台同步锁与启动恢复、四条同步历史/job 路由、任务收官 DTO/报告和 Windows Skill 路径修正,不改变数据库结构或配置格式。
验证与升级
- 四批功能修复及补充修复的 GitHub CI 已通过;本地完成构建、静态检查、隔离 PostgreSQL 下 Agent/DB/Server 竞态回归,以及 Norma 推理、会话和 transcript 回归。缺少外部环境的 live 用例不计为通过。
- 真实 DeepSeek 已验证流式与非流式多轮工具调用、历史冷加载、上下文恢复、成果与阴性检查的区分,以及结构化目标缺口和纠错。历史中记录的缺失 thinking HTTP 400 已用原文回归验证;当前网关的最小请求返回 200,不宣称本轮远端重现了该 400。
- 升级时保留现有配置和数据;启动会执行幂等数据库迁移,增加目标审核与终验重试信息。不会自动纠正历史任务的达成判定,历史误标需要在目标面板明确执行纠错。
- 发布包包含静态前端,提供 Linux/macOS amd64、arm64 和 Windows amd64 五个平台包及 SHA256 校验文件。
Full Changelog: v0.4.0...v4.0.1
v0.4.0
ARTEX v0.4.0 中文更新说明
ARTEX v0.4.0 重点完善 ScopeSentry 资产同步、任务完成校验与 Worker 收尾,并修复 Windows 证据保存、Python 检测和路径兼容问题。代码优化主要体现在职责拆分、事务一致性、执行准入和终态保护;本次没有性能基准,不宣称吞吐、响应速度或模型成本提升。
版本与范围
- 发布版本:
v0.4.0。 - 功能基线:
v0.3.18,功能核验截至提交19d9bbc,参见 功能提交比较。 - 发布文档与 CI 调整前,该范围共修改 87 个文件,新增 7580 行、删除 537 行,包含功能代码、测试和当时的规划、报告及更新日志。这不是最终发布提交的总统计,也不代表性能指标。
- 此前已部署的功能版本标识为
0.3.18-main-19d9bbc;本轮将这些变更以0.4.0正式发布,并补充 GitHub Actions 回归和发布预检。 - 本文只针对实际发布源码。
doc/report.md中另一工作区的server.go/server_mgmt.go全量拆分尚未合入本次版本,不属于 v0.4.0 的发布成果。doc/plan.md的“待实施”是早期规划记录,当前实现和限制以本文及对应源码为准。
1. ScopeSentry 同步:后台执行、持久化历史与可恢复处理
使用行为变化
| 场景 | v0.3.18 及之前 | v0.4.0 |
|---|---|---|
| 判断是否完成 | 源扫描任务进度与同步结果容易混淆,返回后统一提示完成 | 明确标注“源任务扫描进度”;ARTEX 同步独立显示同步中、成功、部分成功、失败或已中断 |
| 刷新或关闭页面 | 结果主要保存在当前页面,离开后无法回看 | 同步历史与逐项明细落 PostgreSQL;后台任务不因页面关闭而取消 |
| 大批量资产 | 每个目标、每种类型最多处理 5000 条 | 新后台模式逐页处理,可超过 5000 条;旧同步接口保留原上限 |
| 页面拉取失败 | 难以说明哪些数据已取得、哪些尚未完成 | 保留前面已取得和已提交的数据,给出失败页面与部分完成状态 |
| 中断恢复 | 缺少持久化页面与逐项处理记录 | 先保存下载页面,再逐条入库;恢复时重放保存页面并跳过已记录项 |
| 重复同步 | 成功写入次数容易被理解为新增资产数量 | 分别显示源记录处理结果和按资产 ID 去重的独立资产数量 |
| 失败反馈 | 缺字段和部分关联 IP 失败可能静默遗漏 | 保存跳过、解析失败、入库失败及关联 IP 失败的具体原因 |
后台同步启动后返回任务编号,页面通过历史记录查看进度。服务端为后台同步设置单进程互斥,同一进程已有后台同步时,新启动或恢复请求返回冲突提示;后台运行期限为 6 小时,并受服务进程生命周期控制。
同步历史与统计口径
历史保存请求范围、数据源引用、源目标及资产标识、开始和结束时间、逐类型状态、逐项结果与原始 JSON。源 MCP 配置或实时资产被删除后,历史请求及观察记录仍可用于追溯;实时对象引用可变为空。
统计分为两层:
- 源记录统计:拉取、成功写入、新增、更新、未变化、跳过、失败,以及适配器显式派生 IP 的写入与失败次数。成功写入包含新增、更新和未变化,不等于新建资产。
- 独立资产统计:按本轮涉及的规范资产 ID 去重,区分直接资产与派生资产,并按新增、更新、未变化分类。同一资产被多个源记录触及仍只计一次;本轮分类优先级为新增、更新、未变化。
新增与更新判定比较实际资产内容,忽略 created_at、updated_at、last_seen 等时间字段;集合字段会规范化排序,避免仅因数组顺序变化被计为内容更新。
例如,回归夹具提供了 5001 条指向同一 App 的源记录。恢复处理后,源记录统计为 5001 次成功写入、1 次新增、5000 次未变化,独立资产只有 1 个。这一用例验证分页与计数语义,不是 5001 个独立资产的性能测试。
成功表示本次读取及处理没有发现失败或遗漏提示。存在跳过、失败、截断、详情获取警告或其他未完成范围时,会显示部分成功或失败;正常核实的零资产结果可以成功,不能把零资产直接当作源端故障。
恢复、重试与重新同步的区别
| 操作 | 处理范围 | 适用场景 |
|---|---|---|
| 从保存的页面继续 | 同一后台同步记录;读取已保存页面,跳过已记录项,再读取后续页面 | 进程退出、页面处理未完成、后续分页请求失败 |
| 仅重试失败和跳过记录 | 创建新同步记录,处理旧记录中保存的失败或跳过项 JSON | 入库等临时问题已解决,需要重试已取得的记录 |
| 重新同步所选范围 | 创建新同步记录,重新从源端读取指定目标和类型 | 源数据已修正、原始 JSON 未保存,或需要再次核对整个范围 |
恢复会跳过已经记录为失败或跳过的项;处理这些项应使用专门的重试入口。仅失败项重试使用已保存 JSON,不会自动取得源端后来修正的记录;缺少完整 JSON 时会提示重新同步源范围。
服务启动时将前一进程遗留的 running 同步标为 interrupted,保留已提交记录,由用户选择继续。后台恢复的能力依赖新增页面记录,旧同步接口产生的记录不支持同样的断点恢复。
来源信息与字段映射
同步继续覆盖子域名、服务和 App,并可从子域名记录派生关联 IP;按项目同步时保留创建或复用企业及写入范围的能力。
- 子域名映射主机名、记录类型、记录值及关联 IP。
- App 映射名称、类别、描述、ICP 和 Bundle ID。
- HTTP 服务补充源端
host、statuscode、technologies、faviconmmh3、contentlength等字段的兼容映射。 - 非 HTTP 服务校验域名或 IP,并接受合法的整数或字符串端口,范围为 1 至 65535。
- 服务资产通过 MCP
get_asset_detail读取详情,保留列表原字段,并把源端返回的完整详情另存于原始 JSON;缺少资产 ID 或详情读取失败会明确提示。
原始 JSON 与 Agent 可见的 assets.extra 分开保存,不把整段源文本和内联响应正文直接灌入资产上下文。逐项 JSON 可下载,单条观察记录最多保存 16 MiB;超限时保留结果与来源标识并提示原文未保存。该限制不是整个同步任务或数据库占用的总上限。
数据一致性与兼容边界
页面内容先持久化,再处理其中记录;源资产及其派生资产、来源观察记录和计数在同一事务内提交。子域名关联 IP 写入失败时,该源项及其派生写入回滚,另外保存失败观察,避免留下“源项成功、派生失败却无提示”的状态。记录唯一约束和已处理项检查用于防止同一恢复过程重复计数。
旧 POST /api/sync/scopesentry/sync 保持同步响应方式,并增加历史记录和真实结果反馈。它仍受每目标每类型 5000 条保护上限及 10 分钟请求期限约束;恰好达到上限时会进一步核验是否还有数据,不能仅因数量等于 5000 就宣布截断。大批量处理应使用新后台入口。
新增接口:
| 方法与路径 | 用途 |
|---|---|
POST /api/sync/scopesentry/jobs |
启动后台同步或失败项重试 |
POST /api/sync/scopesentry/history/{id}/resume |
恢复可继续的后台记录 |
GET /api/sync/scopesentry/history |
分页查看同步历史 |
GET /api/sync/scopesentry/history/{id} |
分页查看逐项明细;按需读取单项原始 JSON |
源端 list: null 通过 count_assets 核实分页终点,无法核实或源端仍有记录时不会伪装成成功空页。App 按任务筛选使用源接口支持的搜索表达式,避免使用其不支持的任务过滤字段。
恢复不等于源端快照同步。 ScopeSentry 使用页码分页,扫描过程中的新增、删除或排序变化仍可能移动尚未读取的记录。已下载页面可以稳定重放,未下载页面没有固定快照保证;建议在源扫描稳定后重新核对范围。源接口没有返回的截图、响应正文文件及其他附件不属于已同步内容。同步历史默认保留,已处理页面会清空冗余临时载荷,但没有新增自动历史保留期限或完整附件镜像能力。
2. 任务完成:先核验剩余工作,再保存收尾结果并终验
修复的具体问题
此前,Planner 证明全部目标为 met 或发出完成信号后,引擎可直接把任务写为 done,随后取消仍在执行的 Worker。对于全面审计,某一路检查的证据可能被当作整体完成,其他必要方向尚未完成便被中止;取消原因 goal_met 也不能证明被停止检查已验证通过。
v0.4.0 将“目标证据达成”“可停止剩余工作”“执行已退出”和“任务最终完成”分开处理。prove_goal 继续保存目标证明,goal_met 改为申请收官;两者都不能绕过服务端完成校验。
新的完成协议
- 完整读取剩余工作。 新增
list_remaining_work,按意图 ID 游标分页,返回总数、后续游标、受阻及删除原因。查询涵盖全部非done意图,包括open、running、paused、blocked、exhausted、stopped、deleted,不依赖概览中的最近窗口。 - 明确停止依据。 普通收官要求全部目标已达成。每个未完成意图都要提供
remaining_work处置:只接受duplicate或irrelevant,必须有非空理由;重复检查还须引用有效事实、漏洞或已完成意图。引用范围及类型由数据库校验。出错、受阻或预算耗尽本身不能作为必要检查已完成的依据。 - 安装执行准入屏障。 收官尝试落库后,停止普通规划与新意图领取,要求已有 Worker 转入保存结果阶段,避免收尾开始后又启动普通工作。
- 等待实际退出。 Worker 仅整理已有输出、保存事实和漏洞、说明未完成项。引擎等待执行与工具回调真正退出,之后才生成稳定快照;收到取消响应或框架终止事件不等于底层回调已结束。
- 只读终验。 使用新的终验运行核对原始目标、描述、目标节点、约束、停止理由及已保存证据,必须提交明确的
completion_verdict。终验只有内置只读证据工具与结论工具,不开放 Shell、扩展工具、子 Agent、新探测或图写入。 - 比较并提交终态。 提交前重新读取输入并比较摘要,同时检查尝试编号、阶段和任务生命周期。条件仍有效才提交
done;无法充分核验则保留证据、反馈拒绝原因并重新规划。任务到达绝对截止时间时复用该流程,不能确认完成的写为timeout并记录未完成范围。
单点或定量目标仍可在证据充分、剩余工作确属重复或无关时收官,不要求所有意图无条件自然结束。全面审计中的必要独立检查应继续完成;服务端能验证声明完整性和引用有效性,停止理由是否语义充分仍需终验模型判断。
收尾限制与超时处理
收尾控制通过执行时白名单生效,允许保存事实、登记漏洞、查看已有证据及必要的本地文件整理;不允许发起 Bash 探测、任意扩展工具调用或新的委派。限制会传递到间接工具调用和子 Agent 路径,工具执行前及前置 Hook 后再次检查。
当前源码设置 Worker 收尾阶段最多 30 秒,任务等待在途执行的宽限期为 90 秒,终验最多 45 秒、8 轮。这些期限不是整个任务必定在固定总时长内完成的承诺:已经准入的调用可能继续执行,忽略取消的回调仍需被等待。
普通收官超过宽限期会强制取消并放弃本次完成判定。取消后仍未实际退出时,任务被隔离并暂停,继续保留执行占用和并发槽位,退出前禁止恢复;不会一边把旧执行视为结束,一边启动新的执行与之重叠。
收尾终止原因新增 settlement_requested。被收官中断的意图不会直接写成 done;最终停止的检查保留原状态、停止理由及未完成说明。已保存结果仍可查询,停止或正常工具返回均不自动等于检查成功。
并发与状态保护
- 执行准入、意图领取和收官安装共享同步保护,避免新工作跨过收官屏障。
- 完成尝试保存
attempt_id、阶段、快照和输入摘要;追加目标、证据、约束或范围变化会使旧终验结果失效。摘要覆盖当前任务及直接来源任务的相关图和证据,并非只比较目标数量。 - 快照与终态提交使用短事务及明确锁顺序,设置锁等待和语句期限;模型和网络调用不在该事务内执行。这里解决一致性,不构成数据库并发性能提升声明。
- 用户暂停、任务删除和绝对超时与收官协调,迟到的终验不能覆盖已改变的生命周期。终验取消后,先前提交的结论也不再授权完成。
- 终验拒绝后,新执行使用新的收尾控制器,避免复用已经关闭的控制状态。
页面、报告与恢复
任务列表和详情增加收官阶段提示:“保存收尾结果”“最终复核”,并可查看最近一次尝试编号、原因、终验说明、剩余检查及其停止依据。收官记录作为任务主状态之外的附加信息展示;暂停和已有终态仍有自己的语义。
任务 Markdown 报告追加收官记录和剩余检查,明确停止决定不代表验证通过。Reporter 沿用原有独立报告流程;任务收官不等于所有漏洞报告已生成,报告版本及证据一致性继续由原机制核验。
进程重启会使旧收官决定失效,保留证据并恢复需要重新评估的工作;不会拿上一进程的半成品决定直接提交完成。归档包含收官记录,恢复归档时保留历史快照、推进尝试编号,并使仍在收尾或终验的旧决定失效。没有收官记录的旧归档继续兼容。
3. 代码优化与实际结构调整
本次优化把新增协议按职责组织,减少同步接口、资产映射、数据库事务和任务协调相互混杂。相关 Go 文件仍处于原有包中,不把文件拆分本身描述为运行速度提升。
| 领域 | 本次实际代码组织 | 作用 |
|---|---|---|
| ScopeSentry 接口 | server/sync_scopesentry.go 保留数据源与列表相关逻辑;新增 sync_scopesentry_run.go、jobs.go、pages.go、ingest.go、history.go、retry.go、detail.go,文件名均带 sync_scopesentry_ 前缀 |
分开请求与结果模型、后台生命周期、分页、校验映射、历史、重试和详情读取 |
| 同步数据库 | db/sync_history.go、sync_pages.go、sync_asset_changes.go、sync_retry.go |
明确页面持久化、资产内容变化判定、来源观察和统计的事务边界 |
| 任务协调 | server/engine_completion.go 统一普通收官与任务超时的收尾、终验、提交和恢复;替换旧 engine_timeout.go 中的主要超时收尾实现 |
避免两套完成路径各自落终态、各自处理在途执行 |
| 完成输入与协议 | agent/completion.go、completion_input.go、remaining_work.go;db/task_completion.go、task_completion_read.go、task_completion_archive.go |
分开模型只读终验、输入预算、全量剩余工作查询、数据库提交与归档 |
| 执行框架 | Norma 的 SettlementController、settlement_control.go 与 tool/execution_guard.go |
将“隐藏工具”补为实际执行限制,并等待真实回调退出 |
| 前端展示 | sync-history.tsx、共享 sync-result.ts、task-completion.tsx |
集中历史展示、状态判定和收官说明,减少各页面自行解释状态的差异 |
终验输入也采用明确预算:完整保留决策所需的目标、约束、剩余工作和引用,仅对辅助证据摘要采样及缩短。初始输入上限为 32 KiB,并按当前上下文窗口进一步收紧;这是字节预算,不是精确 Token 估算。关键输入超预算时直接拒绝发起终验,不通过截掉必要目标或检查来拼出“完成”结论。完整数据库快照和提交摘要不随模型输入采样而缩减。
企业范围上下文补回显式范围及关键词;即使关闭覆盖度指标,Planner 仍能取得任务边界。企业范围用于规划,不能当作已经测试过的覆盖证据。
doc/report.md 另记的“新增 30 文件、将 server.go / server_mgmt.go 全量拆小”不在本次发布范围。本次 server_mgmt.go 的实际变更是技能相对路径规范化,不应与那项未合并重构混为一谈。
4. Windows 兼容与回归稳定性
| 问题 | 本次处理 | 边界 |
|---|---|---|
保存证据正文后对目录 Sync() 返回 Access is denied |
正文仍做长度、哈希校验及文件刷盘、关闭、重命名;目录同步按平台处理,Unix 保留目录刷盘,Windows 跳过不支持的目录句柄操作 | 不忽略正文刷盘错误;Windows 目录在突然断电时的持久性仍取决于平台,不能宣称与 Unix 完全一致 |
python3 / python 路径命中不可执行的系统别名 |
自动检测除 LookPath 外,再运行最多 3 秒的 Python 探针并核验输出 |
仍需要实际可用的 Python;仅有商店别名不算解释器已就绪 |
| 技能相对路径在 Windows 返回反斜杠 | 路径清理及合法性校验后,用 filepath.ToSlash 统一接口相对路径 |
本地文件处理继续使用平台路径语义 |
| 子进程未退出便删除其输出文件,清理失败 | 清理先取消根上下文、等待进程退出信号与输出句柄释放,最多等待 10 秒,再删除会话目录 | 到期仍被进程持有的文件保留,后续会话垃圾回收可再次处理 |
| 测试使用 Unix Shell 命令或固定等待 | Windows 用对应 PowerShell 命令;后台任务测试等待真实完成并关闭 Session | 这是测试可移植性和清理修正,不表示任意用户脚本自动变为跨平台脚本 |
| LLM 重试测试出现 nil HTTP client panic | 用测试服务器的 client 显式初始化重试配置 | 修复测试夹具,不能描述为真实供应商重试策略新增功能 |
5. 数据库迁移与兼容
升级沿用启动时幂等 PostgreSQL schema 应用,新增表和字段使用 CREATE TABLE IF NOT EXISTS、ADD COLUMN IF NOT EXISTS 等语句。
| 表 | 保存内容 |
|---|---|
sync_runs |
全局同步请求、状态、结果、时间与计数 |
sync_observations |
逐源记录结果、原因、来源标识、原始 JSON 和资产变化 |
sync_pages |
尚待处理的下载页面及页计数、完成和末页标记 |
sync_asset_changes |
单次同步涉及的独立资产、变化分类和直接或派生来源 |
task_completions |
每任务当前或最近收官尝试、阶段、快照、摘要及期限 |
同步历史属于全局来源记录,不是某个 ARTEX 任务的探索图。删除 MCP 或资产时保留历史,删除同步记录则由外键级联清理其明细、页面及资产变化记录。task_completions 与任务关联,随任务删除清理。
已有系统工具 prove_goal、goal_met 的 schema 会幂等补充缺失的可选 remaining_work 属性。迁移只合并这一属性,不重置用户的描述、默认参数、启用状态及其他自定义配置;已有该属性时保留其定义。Planner 运行时会追加完成协议指引,自定义提示仍应符合新的收官要求。
新同步历史从升级后的运行开始保存,不追溯重建以前仅存在于浏览器的结果。升级也不会自动重跑历史目标或把旧的 done 任务全部重新终验。
6. 验证范围与真实模型验收边界
以下区分功能提交已有验证记录、本轮发布定向回归和外部 CI。文档核验检查了本次发布源码及用例,不把测试存在等同于测试已经执行,也不把模拟模型等同于真实模型验收。
已有功能验证记录
依据功能提交中的 CHANGELOG 验证记录:
| 范围 | 记录结果 | 统计口径与限制 |
|---|---|---|
| 本地 PostgreSQL 主模块回归 | 731 个顶层测试通过、14 个跳过 | server 包在源码固定后单独完整复跑通过;不计子测试重复总数,跳过不计通过 |
| Norma 模块回归 | 690 个顶层测试通过、8 个跳过 | 与主模块分别统计,不能同旧版含子测试数量直接比较 |
| 真实 ScopeSentry | 非空结果及空结果同步通过 | 验证所接入源实例,不代表所有源版本、数据集和附件都已验证 |
| 大批量与故障恢复 | 5001 条分页失败后恢复、部分页面恢复、仅失败和跳过记录重试通过 | 大批量用例使用 MCP 夹具;不属于真实大规模源数据性能验收 |
| 完成协议 | 相关完成流程竞态检查通过 | 覆盖已保存结果、准入屏障、迟到回调和状态改变等协议行为 |
| 前端 | 10 项测试、TypeScript 检查、32 页静态导出通过 | 不等于所有浏览器交互已人工或端到端验收 |
历史 doc/report.md 中早期全量失败和另一工作区拆分验证有各自基线,不能用它们替代上述功能验证,也不能把原有跳过项算作通过。真实模型配置、符号链接权限及其他环境条件仍会使部分用例跳过。
本轮发布定向回归
发布准备阶段已确认以下本地定向回归通过:
- Windows 隔离 PostgreSQL 下的全部
TestEvidence,以及 Python 执行、Python 检测和技能相对路径相关回归。 - Linux 主模块与 Norma 的收官、同步、收尾及执行保护定向测试,实际启用
-race、-shuffle=on。 - `TaskComple...
v0.3.18
修复
- 修正内置 ScopeSentry Skill 的 YAML 元数据头,恢复描述、名称与 MCP 关联的正确读取。
- 保存 Skill 元数据时使用 YAML 解析与编码,保留多行字段、列表、嵌套元数据及原始指令正文;正确处理包含冒号、井号和换行的内容,拒绝无效格式并保留原文件。
- 取消 MCP 关联时同时清除旧
mcp字段,避免旧关联重新生效;未提交的字段继续保留。
发布与验证
- 新增 Skill 元数据保存、运行时加载、列表回读和内置 ScopeSentry 加载回归;GitHub Actions 执行这些测试及已有 Skill 上传回归,包含竞态检查。
- 本地 Windows 的新增元数据及上传回归、Linux 的元数据与上传竞态回归、4 项打包契约检查通过。Windows 原有
TestSkillRelPath断言固定使用/,与 Windows 返回的路径分隔符不一致;该测试和路径处理逻辑本次未改动。 - 提供 Linux/macOS 的 amd64、arm64 包、Windows amd64 包、SHA256 校验文件及 Linux 双架构 Docker 镜像。
Full Changelog: v0.3.17...v0.3.18
v0.3.17
修复
- 任务会话显示下一次模型调用的配置来源,任务配置面板说明角色绑定、任务链和全局默认的优先级;提供任务 LLM 录制筛选入口及单条完整 JSON 下载。全局切换不覆盖已有任务或角色配置。
- 整次 Agent 运行没有可用文本或工具调用时,明确记录空输出错误;保留工具写回之后静默结束的正常行为。
- Planner 按资产、入口/参数和漏洞机理跟踪独立候选,Worker 逐条登记独立漏洞;区分未测试、受阻和已测试未发现,避免首个高危发现被当作整个系统审计完成。运行时指引也应用于已有自定义提示。
- 拦截策略加载或审批配置读取失败时保守阻断,完整加载后才发布缓存;每次调用仅记录一个最终允许/阻断审计动作。
- 工作区文件管理器使用 Go
os.Root约束读写、上传、下载及删除,阻止符号链接和 Windows junction 越界访问。 - noa 从上下文溢出错误中学习明确的实际窗口并用于当前 Session 后续回合;排除输出预算字段,修复小窗口提示恢复阈值及窗口收紧后的旧抑制状态。
发布与验证
- Release 自动附上 CHANGELOG 对应版本的中文说明,并保留 GitHub 自动生成的提交与 PR 链接;提供 Linux/macOS 的 amd64、arm64 包、Windows amd64 包及 SHA256 校验文件。
- 本地 Agent 离线回归、guard/intercept、工作区边界测试、noa/noaadapter 回归、相关 Go vet、前端 TypeScript 检查及生产构建通过;修复 PR #8 与合并后的主分支 GitHub 检查通过。
- 本地两个依赖 PostgreSQL 的 Agent 审批集成测试未验证,未执行真实外部模型请求。多漏洞指引不保证模型完全不漏报;学习到的窗口只在当前 noa Session 有效。详细测试范围与平台限制见
docs/ARTEX-main修复与验证_2026-10-10.md。
What's Changed
- 修复 Agent 空输出、拦截策略与文件访问边界,优化上下文恢复 by @sharenjun in #8
Full Changelog: v0.3.16...v0.3.17
v0.3.16
What's Changed
- 新增漏洞归并、自动报告及报告完成核验 (参考Ruoji6) by @sharenjun in #6
New Contributors
- @sharenjun made their first contribution in #6
Full Changelog: v0.3.15...v0.3.16
v0.3.15
What's Changed
New Contributors
Full Changelog: https://github.com/sharenjun/ARTEX-main/commits/v0.3.15