Files
ARTEX/README.md
T
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

89 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ARTEX
**A**gentic **R**ed-**T**eam **E**xploration and e**X**ecution — AI 自主渗透测试系统,以 [Norma](https://github.com/Autumn-27/Norma) 为内核。
独立 Go 模块(`github.com/Autumn-27/artex`,依赖 Norma),把存储 /
agent / 安全边界 / 流量 / 报告与 shadcn/ui 前端关在自己模块里,保持 Norma 零依赖。
## 运行
**探索由真实 LLM agent 驱动,必须配置 provider**(无 key 时建任务只生成根/目标节点,引擎空闲、不探索):
```bash
export ANTHROPIC_API_KEY=sk-... # 或 OPENAI_API_KEY
# 可选:ARTEX_LLM_PROVIDER / ARTEX_LLM_MODEL / ARTEX_LLM_BASE_URL
# 可选:ARTEX_LLM_PROXY=socks5://127.0.0.1:1080 # LLM 出站代理(http/https/socks5);
# 也可在 UI 的 LLM 配置页填写;留空则回退 HTTP_PROXY/HTTPS_PROXY 环境变量
```
### 开发模式(热更新)
后端与前端分开跑,前端 `next dev` 有 HMR、`/api` 反代到后端:
```bash
./dev.sh # 后端(:8787) + 流量代理(:8788) + 前端 next dev(:5173) → http://localhost:5173
# 或手动:
go run ./cmd/artex -addr :8787 -proxy :8788 # 不内嵌前端;并发 work agent 数在「系统设置」里配置(默认3)
cd web && npm run dev
```
### 单二进制(前端内嵌,一个进程一个端口)
前端静态导出后用 `//go:embed` 打进二进制,前端页面 + `/api` 同端口,运行时无需 Node:
```bash
cd web && npm run build:static # 静态导出 → web/out
cp -r web/out ../server/webui/dist # 拷进内嵌目录(已 gitignore)
cd .. && go build -tags embedui -o artex ./cmd/artex
./artex # 打开 http://localhost:8787
```
> 不带 `-tags embedui` 的普通 `go build` / `go run` 不内嵌前端(走开发模式)。
> `server/webui/dist/` 与产出的 `artex` 均已在 `.gitignore`,不进仓库。
### 纯静态部署(可选,扔进 nginx)
`web/out/` 是一个纯静态站点,可直接放进 nginx web 根目录;此时需把 `/api/*` 反代到 Go 后端(`:8787`)。
构建:`go build ./...`、`cd web && npm run build`。测试:`go test ./...`。
## 已实现(覆盖设计文档 P0–P6)
**后端(Go)**
- `graph/` — **双 SQLite 图**:资产图 `assets.db`(跨任务共享)+ 探索图 `task-<id>.db`。
node+edge + anchors(跨图承诺键)+ coverage(行级 CAS + 租约);内容寻址稳定 ID +
幂等 upsert;URL 模板化;ATTACH 跨图;**资产 GC**(P5)。
- `traffic/` — **go-mitmproxy 内嵌代理** + 可浏览文件树(host/method/模板/时间分桶/交换目录)
+ sqlite 旁路索引(分页查询)+ 内容寻址 blob 仓。全量、明文、只记目标 HTTP(§10)。
- `guard/` — **安全边界**(P1):scope-as-code(解析 Bash 实参 host/URL/CIDR,越界拒绝)、
破坏性/外泄门控、审计日志、**Observer 失败归因**(G5,PostToolUse 分类 blocked/error)。
RoE 支持热改(mutex 保护,运行中收紧即时生效)。
- `agent/` — **真实 LLM agent**(接 agent-core):
- **规划者**(P2):事件驱动(图变化→去抖动→唤醒),读探索路线 + 工具查资产,**自行判断目标达成**
(`list_goals`/`prove_goal`,把证明目标的发现连到目标节点并标 met,非规则判定),生成意图入 frontier。
- **work agent**(P3):claim 意图 → Bash 跑 Kali 工具(走代理)+ 图写回工具,Guard 门控,
**tradecraft 记忆**(G4)。
- **主 agent**(P3):人在环路对话,注入 hint→规划者 / 直注高优意图。
- **RoE 编译器**(P6):自然语言授权 → scope 规则(LLM,含正则兜底)。
- `report/` — **报告生成**(P5):覆盖矩阵 + 证据链 → Markdown。
- `server/` — 事件驱动引擎(**纯 LLM,无模拟**;无 provider 则空闲)+ JSON API(任务、资产、
探索图、frontier、覆盖、发现、流量、scope、审计、报告、chat、gc)。探索链路边由 agent 经工具织成。
**前端(shadcn/ui + React + Next.js + Tailwind)** — 实时控制台:
创建任务、统计卡 + 引擎模式徽章、发现、覆盖矩阵热力、资产图、意图队列、
**人在环路对话**、**流量记录**、**安全边界(scope/RoE 编译/审计/失败归因)**、**报告**。
## 测试
```
go test ./graph/ ./guard/ -v
```
覆盖:稳定 ID、模板化、幂等 upsert + 邻接、覆盖 CAS、frontier claim、scope 越界拦截、破坏性门控。
## 后续 / 经 MCP 接入
- **OAST 带外**(G2)、Kali 专用工具等经 MCP server 接入 work agent(`Worker.extraTools` 是接入点,
`agent-core/mcp` 的 stdio/进程内 server 产出的 CoreTool 直接塞入)。
- 真实工具执行需 Kali 环境 + 代理 CA 信任(`data/traffic/_ca`)。