AnJian Agent
# 安鉴台 AnJian Agent
<p align="center">
<strong>把“一个网址”变成可追溯、可复核的本地 Web 安全评估报告</strong><br>
Local-first · Authorization-gated · MCP-ready · Local-LLM friendly
</p>
<p align="center">
<a href="https://github.com/ck3938700-ship-it/anjian-agent/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/ck3938700-ship-it/anjian-agent/actions/workflows/ci.yml/badge.svg"></a>
<a href="https://www.python.org/"><img alt="Python 3.11+" src="https://img.shields.io/badge/Python-3.11%2B-3776AB?logo=python&logoColor=white"></a>
<a href="LICENSE"><img alt="MIT License" src="https://img.shields.io/badge/License-MIT-green.svg"></a>
<a href="https://modelcontextprotocol.io/"><img alt="MCP" src="https://img.shields.io/badge/MCP-stdio-6f42c1"></a>
<img alt="Windows first" src="https://img.shields.io/badge/Windows-11-0078D4?logo=windows11">
</p>
安鉴台是一套本地优先、授权门禁明确的安全评估工具。它把内置检查、Nmap、httpx、Nuclei、受控 FFUF、detection-only SQLMap、Burp/HAR、TShark/PCAP 和源码扫描结果整理成统一证据,再生成中文 Markdown、HTML 与 Obsidian 报告。
它可以作为 CLI 独立运行,也可以接入 Claude Code、任意 MCP 客户端,或 Ollama、LM Studio、vLLM、llama.cpp 等 OpenAI 兼容本地模型。AI 只负责理解意图、编排和解释;真正的授权校验、目标限制和工具执行始终在本地 Python 层完成。
> [!IMPORTANT]
> 只对你本人拥有,或已取得资产所有者明确书面授权的系统使用。本项目不提供口令爆破、拒绝服务、漏洞利用、权限绕过、持久化、数据提取或批量互联网扫描能力。自动结果是待复核观察,不等于已确认漏洞。
## 为什么需要它
手动运行多个工具时,最费时间的通常不是输入命令,而是保持范围一致、过滤重复和误报、保存证据、解释覆盖缺口、再把结果写成可交付报告。安鉴台把这些重复工作固定成可复用流程:
- **一次授权,一个网址**:精确目标在终端登记一次,有效期内可直接 `/anjian <URL>`。
- **工具可用就运行,不可用就说明**:不会把超时、Device Guard 阻止或代理 Fake-IP 伪装成“已完成”。
- **结果不会自动升级成漏洞**:`suspected`、`informational`、`passed` 与人工确认的 finding 严格分开。
- **证据统一**:跨运行、Burp/HAR、PCAP、源码结果按稳定指纹去重并交叉印证。
- **数据留在本地**:默认存储在 `%USERPROFILE%\.anjian`,不依赖云端账号或在线 AI。
- **报告可长期积累**:输出 Markdown/HTML/Obsidian,保留 SHA-256 清单和复核记录。
## 工作方式
```mermaid
flowchart LR
U["用户 / Claude Code / 本地模型"] --> A["一次性精确目标授权"]
A --> G["本地范围门禁"]
G --> T["内置检查与外部工具"]
T --> E["脱敏证据与 SHA-256"]
E --> C["去重与交叉印证"]
C --> O["待复核观察"]
O --> H["人工确认"]
H --> R["Markdown / HTML / Obsidian 报告"]
```
模型无法通过 MCP 创建授权、扩大端口、允许内网或解锁主动工具。即使本地模型产生错误指令,Python 层仍会再次检查目标、端口、有效期、内网许可和工具级授权。
## 能力矩阵
| 通道 | 能力 | 关键限制 |
|---|---|---|
| 内置 baseline | DNS、HTTP(S)、TLS、响应头、Cookie | 低影响;不保存响应正文 |
| 外部 baseline | Nmap、ProjectDiscovery httpx | 仅明确端口;代理 Fake-IP 时安全跳过原始端口扫描 |
| 模板检查 | Nuclei | 受系统策略与终端工具授权约束 |
| 内容枚举 | FFUF | 有界字典、低速、单线程、SPA/soft-404/挑战页过滤 |
| 注入观察 | SQLMap | 只对已发现的同源 GET 参数做 detection-only 检查 |
| 被动资产 | subfinder、amass | 只有显式允许下级子域时运行 |
| Web 证据 | Burp XML、HAR | 删除正文、Cookie、Authorization 和令牌值 |
| 流量证据 | TShark/PCAP | 用户指定文件、只读分析、不导出载荷 |
| 源码证据 | 内置规则、Semgrep、Trivy、Gitleaks | 只扫描用户明确提供的本地目录 |
| 输出 | Markdown、HTML、Obsidian、浏览器 PDF | 自动观察需人工复核后才进入正式发现 |
## 5 分钟开始
### 1. 安装
需要 Windows 11、Python 3.11+ 和 PowerShell。在仓库目录执行:
```powershell
powershell -ExecutionPolicy Bypass -File .\setup.ps1
```
或使用普通 Python 环境:
```powershell
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e .
```
### 2. 检查本机能力
```powershell
anjian doctor
```
缺少外部工具不会阻止安装;运行时会安全降级并在报告中记录覆盖限制。
### 3. 为精确目标登记一次授权
```powershell
anjian authorize-target "https://example.com"
```
根据提示亲自输入 `AUTHORIZE DEEP example.com`。默认端口为 80/443、有效期 90 天、不包含下级子域和私有网络。未登记或授权过期时,`quick-assess` 不会访问目标。
### 4. 一键评估
```powershell
anjian quick-assess "https://example.com"
```
命令会返回评估 ID、阶段状态、观察摘要和 `report.md` 的本地路径。
## 接入 Claude Code
```powershell
powershell -ExecutionPolicy Bypass -File .\claude-integration\install-claude.ps1
```
重启 Claude Code 后输入:
```text
/anjian https://example.com
```
安装器会创建隔离运行环境、注册本地 stdio MCP Server,并安装 `/anjian` 命令与 Skill;不会读取或修改你的 API Key。完整说明见 [Claude Code 指南](docs/CLAUDE_AGENT_GUIDE.md)。
## 接入本地大模型
安鉴台 v0.5.0 提供无需模型工具调用能力的本地模型适配器:确定性 Python 核心先执行授权评估,再把脱敏结构化结果交给本地模型解释。小模型即使不会 function calling,也能稳定使用。
以 Ollama 为例:
```powershell
ollama pull qwen2.5:7b
anjian-local-agent "评估 https://example.com" --model qwen2.5:7b
```
LM Studio、vLLM 或 llama.cpp 只需指定兼容地址:
```powershell
anjian-local-agent "审计 https://example.com" `
--base-url http://127.0.0.1:1234/v1 `
--model local-model
```
如果模型服务不可用,适配器仍会保留确定性 JSON 结果,不会丢失已经完成的评估。详见 [本地大模型部署](docs/LOCAL_LLM.md)。
## 浏览器工作台
```powershell
anjian seed-demo
anjian serve
```
浏览器打开 `http://127.0.0.1:8765`。工作台默认只监听本机回环地址,可维护项目、授权范围、人工发现、复测与正式报告。不要为了远程访问直接改成 `0.0.0.0`。
## 数据与隐私
- CLI、MCP 和本地模型数据:`%USERPROFILE%\.anjian`
- 浏览器工作台数据库:项目目录中的 `data/anjian.db`
- `.gitignore` 默认排除数据库、报告、HAR、PCAP、Burp XML、虚拟环境和 `.env`
- Web 证据只持久化必要的脱敏元数据;源代码秘密只保存哈希前缀
- 客户材料、授权文件和真实报告不应提交到公开 Git 仓库
备份与保留期检查:
```powershell
anjian backup
anjian retention
```
## 当前边界
安鉴台适合授权的小型网站安全基线评估、证据整理和报告交付,不是“自动渗透万能平台”。它不能证明网站没有漏洞,也不能代替登录态业务逻辑测试、复杂授权测试、代码审计、云配置审计、移动端或内网横向评估。Cloudflare、代理、WAF 和 Windows 应用控制也可能限制外部工具覆盖,报告会如实列出这些缺口。
## 开发与验证
```powershell
python -m pip install -e ".[dev]"
pytest
```
自动测试只访问测试进程拥有的 `127.0.0.1` 服务,不向公共互联网发送扫描请求。架构、安全边界与后续计划分别见:
- [架构说明](docs/ARCHITECTURE.md)
- [安全与滥用模型](docs/SECURITY_MODEL.md)
- [用户手册](docs/USER_GUIDE.md)
- [路线图](docs/ROADMAP.md)
- [贡献指南](CONTRIBUTING.md)
- [安全问题报告](SECURITY.md)
## 项目原则
1. 授权和范围控制优先于“能力更多”。
2. 自动化负责减少重复劳动,人类负责最终判断。
3. 任何失败、跳过和覆盖限制都必须出现在报告中。
4. 默认本地存储、最少数据、证据脱敏。
5. 新增网络能力必须先有滥用分析、范围约束与本地测试。
## License
[MIT](LICENSE) © 2026 AnJian Desk Contributors
如果安鉴台对你有帮助,欢迎 Star、提交问题或改进文档。请不要在公开 Issue 中粘贴真实目标、客户名称、授权文件、Cookie、Token 或未公开漏洞细节。
TDQS
Scored across 15 tools
Tools are generally well-distinguished by action (assess, list, run, import, generate, scan, validate) and resource. However, anjian_doctor, anjian_capability_plan, and anjian_list_assessments all touch capability/status inspection and could occasionally confuse an agent about which to use for checking system state.
All tools share the anjian_ prefix with snake_case, showing consistency. However, the naming is inconsistent in granularity and verb style: some use domain-specific verbs (consolidate, validate_observation, import_pcap) while others are action-focused (run, list, create, get). The nouns range from concrete (assessment, target) to abstract (doctor, consolidate), lacking a uniform verb_noun pattern.
At 15 tools, this is near the high end of the ideal range but reasonable for a security assessment platform covering assessment lifecycle, evidence import, analysis, and reporting. Each tool serves a distinct stage of the workflow. Slightly heavy but justifiable given the breadth of the domain.
The surface covers the full assessment lifecycle: create/get/list/run assessments, import evidence (Burp/HAR/PCAP/source), consolidate, validate, and generate reports. Minor gaps include no explicit tool for deleting/deprecating assessments or managing report history/cleanup, and no dedicated tool for listing imported evidence, but agents can work around these.