Commit Graph
10 Commits
Author SHA1 Message Date
Autumn-27 a6bd18050c feat(agent): 诊断 run 取消/终止原因,取代笼统的中断提示
- 新增 AbortCause(cancelcause.go):各取消点用 WithCancelCause/WithTimeoutCause
  附上原因(暂停/删除/kill_work/目标达成/drain 兜底/聊天停止/进程关闭/硬超时…),
  captureRun 用 context.Cause 还原出到底是谁、为何取消。
- 新增 terminalreason.go:把终端状态转成可读的一行摘要 + 多行详情(取消原因、
  终止 reason、轮数、卡住的工具),替换原来固定那句猜测式提示。
- engine/worker/planner/capture 及 conversations/orchestration/server 接入;
  cmd/artex/main.go、前端 llm/main-content 相应调整。
- 配套测试 terminalreason_test.go / engine_cancelcause_test.go。
2026-08-19 09:20:10 -04:00
Autumn-27 87221be586 tweak: reporter 触发运行策略默认改为 parallel + merge=none
一漏洞一报告:多个 finding 并发各写各的,避免串行排队积压。
merge 设 none(而非默认 all)——否则一波 finding 会被合并成一次运行,并行失效;
maxParallel=5 限制同时的报告会话数。
2026-08-18 12:27:26 -04:00
Autumn-27 6cad678699 feat: 预置「报告撰写」自定义 agent,发现漏洞时自动写详细报告
- 新增 host 工具 update_finding_report(finding_id, report):按 node_id 写
  findings.report(任务无关,无需 task 上下文);get_task_node_detail(task_id, id)
  读取漏洞完整证据/PoC。均注册进 orchestrationTools。
- promptcatalog 新增 ReporterDefaultPrompt:详述报告应含的结构(概述/影响/
  受影响范围/复现步骤/证据PoC/根因/修复建议)与只据实证撰写的纪律。
- seedReporterAgent(一次性,flag 守卫):预置 builtin=false 的自定义 agent
  「报告撰写」(reporter),UI 可编辑/删除;绑定 update_finding_report + 任务
  查询工具(node_detail/worker_trace/findings/graph);建 on_tool_call 触发器
  (tool_names=[report_finding]) —— 每登记漏洞即唤起它写报告并回写。
- 移除上一提交里绑到 worker/planner/mainagent 的 in-task update_finding_report
  工具及 ExplorationStore 包装(触发态是会话上下文,须用 host 工具);保留
  db.SetFindingReportByNodeID;新增 ToolSet.NodeDetailTool 访问器。

go build / agent / server 测试通过。reporter 为自定义 agent,不影响内置 agent 计数。
2026-08-18 12:19:14 -04:00
Autumn-27 bf2410baee feat: goal_met 默认不绑任何 agent + 去掉 planner 相关提示词
- goal_met 绕过逐个 prove_goal 直接宣布整个任务完成,权重大、有误判风险,又与
  「prove_goal 标记最后一个目标→自动收官」重复,故默认不给任何 agent(仍入目录、
  web 可见、可手动按需绑)。
- toolcatalog 新增 defaultUnbound 集合:goal_met seed 时绑定强制为空 [](保留在
  PlannerTools base 里,手动绑回后运行时仍可用)。
- db 新增 RemoveAgentFromTool(agentKey,toolKey);server 新增一次性迁移
  unbindGoalMetDefault(flag goal_met_unbind_default_v1)剥掉旧库 goal_met 的
  planner 绑定,只剥 planner、不动用户手动加的其它绑定,flag 守卫故重启不重复。
- planner 提示词去掉两处 goal_met 引导(system 模板 + 每轮 input 结尾),保留
  prove_goal 与自动收官说明。任务收官不受影响(prove_goal 自动置 GoalMet)。
2026-08-17 09:26:59 -04:00
Autumn-27 a94ce679a6 feat: spawn_task 补 seed_first_intent + 破坏性/外泄 gating 移入可删除的 DB 拦截规则
- spawn_task 新增 seed_first_intent 参数(默认 false),与 HTTP createTask 对齐;
  简单任务可开启直接下发一条种子意图开跑测试
- guard.go 删除写死的 reDestructive/reExfil gating,preToolUse 仅记审计后走拦截规则
- db 新增 seedDefaultInterceptRulesV2:破坏性系统命令(默认开)/数据外泄管道(默认关)
  以普通[内置]规则 seed,可禁用可删除;独立 v2 迁移标志兼容老库
2026-08-15 05:30:47 -04:00
Autumn-27 80fcf528dc feat: 提示词新增全局变量 DataDir + 触发合并/种子意图默认值调整
- prompt: 新增全局运行时变量 {{.DataDir}}(服务端数据根目录 s.m.dir),
  与 {{.Now}} 一样对所有 agent(planner/worker/mainagent/goals/chat 及自定义)可用;
  各 Vars 结构体加 DataDir 字段并在渲染时填入根 workDir,globalPromptVars 登记以便
  校验/UI 变量列表/预览识别(纯运行时变量,不入库,无需迁移)。
- trigger_merge_mode 默认 by_task→all(schema/config/后端兜底/前端初值同步)。
- seed_first_intent 默认 true→false(走标准先规划再执行);spawn_task 不再暴露该参数,
  工具建任务一律 false。
2026-08-15 00:19:14 -04:00
Autumn-27 c85b2397e8 chore(plan): planner 心跳默认/下限 300s(5min) → 600s(10min) 2026-08-13 12:23:42 -04:00
Autumn-27 47ba58bda6 feat(planner): finding 当场唤醒 + planner N 秒心跳触发(任务参数,默认5min)
触发机制补两条(见 docs/planner-trigger-impl-plan.md):

1) finding 当场唤醒:worker 飞行中 report_finding 落库即唤醒本任务 planner,
   不再等 worker 整趟收工才反应。
   - worker.Execute 加 notify 入参并 SetNotify(补上 worker toolset 之前缺失的接线)
   - addFinding 写 KindFinding 成功后调 notify(只对 finding,不对 fact)
   - engine 两处 worker.Execute 调用传 t.Notify

2) planner N 秒心跳:距上轮规划结束/任务开始满 N 秒且期间无触发 → 触发一轮,
   兜底卡死 + 唤醒去监督飞行中的 worker(steer/kill) + 周期复查。
   - plannerLoop 重构为 runRound 闭包 + 三臂 select(ctx/notify/heartbeat)
   - 心跳在 loop 入口臂 = 从任务 start 计时(覆盖 seed 跳过首轮),每轮结束重臂
   - 新增任务参数 plan_heartbeat_seconds,下限=默认=300(5min),低于自动抬到300
   - DB 迁移:schema.sql 加列 + ALTER ADD COLUMN IF NOT EXISTS 补旧库
   - 全链路接线:db.CreateTask/manager/server HTTP/orchestration spawn_task
   - 前端:api.createTask 传参 + 建任务表单新增"planner 心跳(分钟)"字段
2026-08-12 11:18:07 -04:00
Autumn-27andClaude Opus 4.8 f86885ec3d feat(task): 创建任务可选下发种子意图,worker 免等首轮规划直接开跑
新增 seed_first_intent(默认开启):创建即把"描述+目标"作为一条意图
写入 frontier,worker 轮询领取立即执行,省掉开跑前的首轮 planner LLM;
跑完由 NotifyDone 正常唤醒 planner 判定/补充。CTF 场景常一 work 解决。

- Engine.Run 首轮 kick 改为"frontier 为空才触发",一处覆盖普通/种子/恢复三种情况
- HTTP createTask 与 spawn_task 工具同步支持;bump 工具 schema 刷新 flag 使旧库生效

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-08-09 02:19:40 -04:00
Autumn-27andClaude Opus 4.8 0ef8561411 chore: ARTEX 初始化
ARTEX — AI 自主渗透测试系统(Go 后端 + Next.js 前端,单二进制内嵌)。

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-07-26 04:27:45 -04:00