[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81743":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":13,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":16,"starSnapshotCount":16,"syncStatus":28,"lastSyncTime":29,"discoverSource":30},81743,"aster","Q16G\u002Faster","Q16G","基于 ReAct 框架的安全分析 Agent，在终端中完成代码审计、渗透测试、主机防护","",null,"Go",67,6,29,1,0,3,38,9,2.54,"MIT License",false,"main",[],"2026-06-12 02:04:19","\u003Ch1 align=\"center\">ASTER\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>A\u003C\u002Fstrong>gent-based \u003Cstrong>S\u003C\u002Fstrong>ecurity \u003Cstrong>T\u003C\u002Fstrong>esting & \u003Cstrong>E\u003C\u002Fstrong>valuation \u003Cstrong>R\u003C\u002Fstrong>untime\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGo-1.25-00ADD8?logo=go&logoColor=white\" alt=\"Go 1.25\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-green\" alt=\"MIT License\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPlatform-macOS%20%7C%20Linux%20%7C%20Windows-lightgrey\" alt=\"Platform\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n基于 ReAct 框架的安全分析 Agent，在终端中完成代码审计、渗透测试、主机防护。\u003Cbr>\n内置 Semgrep 规则集 + SyntaxFlow 数据流追踪 + MCP 工具协议 + 多 LLM Provider 支持。\n\u003C\u002Fp>\n\n\u003C!-- TODO: 在这里放一张终端运行截图或 GIF -->\n\u003C!-- \u003Cp align=\"center\">\u003Cimg src=\"docs\u002Fassets\u002Fdemo.gif\" width=\"720\">\u003C\u002Fp> -->\n\n\u003Cp align=\"center\">\n  \u003Cdetails>\n    \u003Csummary>扫码加入 aster 交流群\u003C\u002Fsummary>\n    \u003Cbr>\n    \u003Cimg src=\"docs\u002Fassets\u002Fwechat-group-qr.png\" width=\"320\" alt=\"aster 交流群微信二维码\">\n    \u003Cbr>\n    \u003Csub>二维码失效请提 issue 获取最新入群方式\u003C\u002Fsub>\n  \u003C\u002Fdetails>\n\u003C\u002Fp>\n\n---\n\n### 亮点\n\n- **三大安全 Agent** — 代码审计 \u002F 渗透测试 \u002F 主机防护，YAML 声明式定义，支持自定义扩展\n- **51+ 安全技能** — 按需注入 Agent 上下文，运行时动态启用\u002F禁用，覆盖 SAST、数据流、Web 安全、认证、主机防护\n- **7 大 LLM Provider** — OpenAI、Anthropic、DeepSeek、Groq、OpenRouter、Together、Ollama（本地离线）\n- **ReAct 推理引擎** — Plan → Think-Act-Observe → Summary → FinalAnswer 四阶段循环\n- **Semgrep SAST** — 内嵌本地规则集，覆盖 Go \u002F Java \u002F Python \u002F JS \u002F PHP \u002F C，零在线依赖\n- **SyntaxFlow 数据流** — 通过 yak SSA 引擎的 topdef\u002FbottomUse 追踪验证漏洞可达性\n- **MCP 协议扩展** — stdio \u002F SSE \u002F Streamable HTTP 三种传输，全局或按 Agent 挂载工具\n- **终端 TUI** — Bubbletea 交互界面，会话管理、主题切换、快捷键操作\n- **自动更新** — `aster update` 从 GitHub Releases 检测新版本并自动替换\n\n---\n\n## 目录\n\n- [快速开始](#快速开始)\n- [安装](#安装)\n- [配置](#配置)\n- [场景指南](#场景指南)\n- [核心特性](#核心特性)\n- [使用指南](#使用指南)\n- [Agent 系统](#agent-系统)\n- [技能系统](#技能系统)\n- [MCP 集成](#mcp-集成)\n- [外部依赖](#外部依赖)\n- [开发](#开发)\n- [路线图](#路线图)\n- [致谢](#致谢)\n- [项目热度](#项目热度)\n- [License](#license)\n\n---\n\n## 快速开始\n\n30 秒从零到运行：\n\n```bash\n# 1. 下载二进制（以 macOS Apple Silicon 为例，其他平台见下方表格）\n#    前往 https:\u002F\u002Fgithub.com\u002FQ16G\u002Faster\u002Freleases 下载最新版本\ncurl -Lo aster.tar.gz https:\u002F\u002Fgithub.com\u002FQ16G\u002Faster\u002Freleases\u002Fdownload\u002Fv0.1.0-alpha-8\u002Faster_0.1.0-alpha-8_darwin_arm64.tar.gz\ntar xzf aster.tar.gz && chmod +x aster\nsudo mv aster \u002Fusr\u002Flocal\u002Fbin\u002F\n\n# 2. 配置 API Key（任选一个 Provider）\nexport OPENAI_API_KEY=sk-your-key\n\n# 3. 启动\naster\n```\n\n首次运行自动生成 `~\u002F.aster\u002F` 目录（含 `config.yaml` 和 Agent 配置）。默认使用 `code-audit` Agent，输入自然语言即可开始安全分析。\n\n### 平台下载\n\n前往 [Releases 页面](https:\u002F\u002Fgithub.com\u002FQ16G\u002Faster\u002Freleases) 下载对应平台的二进制：\n\n| 平台 | 资产名 |\n|------|--------|\n| macOS (Apple Silicon) | `aster_\u003C版本>_darwin_arm64.tar.gz` |\n| macOS (Intel) | `aster_\u003C版本>_darwin_amd64.tar.gz` |\n| Linux (x86_64) | `aster_\u003C版本>_linux_amd64.tar.gz` |\n| Linux (ARM64) | `aster_\u003C版本>_linux_arm64.tar.gz` |\n| Windows (x86_64) | `aster_\u003C版本>_windows_amd64.zip` |\n\n> 下载后 Linux\u002FmacOS 执行 `tar xzf \u003C文件名> && chmod +x aster`，Windows 解压 zip 即可。\n\n---\n\n## 安装\n\n### 从 Releases 下载（推荐）\n\n前往 [GitHub Releases](https:\u002F\u002Fgithub.com\u002FQ16G\u002Faster\u002Freleases) 下载预编译二进制，解压后放入 `PATH` 即可使用。无需 Go 环境，无需编译。\n\n### 自动更新\n\n已安装的 ASTER 支持自更新，检测 GitHub Releases 最新版本并自动替换：\n\n```bash\naster update\n```\n\n### go install\n\n```bash\ngo install github.com\u002FQ16G\u002Faster\u002Fcmd\u002Faster@latest\n```\n\n> 要求 Go 1.25+\n\n### 从源码构建\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FQ16G\u002Faster.git && cd aster\nmake build    # 输出 .\u002Faster 二进制\n```\n\n---\n\n## 配置\n\n### 零配置——环境变量即启动\n\n只需设置任意一个 Provider 的 API Key 环境变量，ASTER 会自动探测可用 Provider：\n\n```bash\nexport OPENAI_API_KEY=sk-your-key       # OpenAI\n# 或\nexport ANTHROPIC_API_KEY=sk-ant-xxx     # Anthropic\n# 或\nexport DEEPSEEK_API_KEY=sk-xxx          # DeepSeek\n```\n\n支持的环境变量：\n\n| 变量 | Provider |\n|------|----------|\n| `OPENAI_API_KEY` | OpenAI |\n| `ANTHROPIC_API_KEY` | Anthropic |\n| `DEEPSEEK_API_KEY` | DeepSeek |\n| `GROQ_API_KEY` | Groq |\n| `OPENROUTER_API_KEY` | OpenRouter |\n| `TOGETHER_API_KEY` | Together |\n\n> Ollama 为本地模型，无需 API Key。详见 [场景 4: 使用本地模型（Ollama）](#场景-4-使用本地模型ollama)。\n\n### 最小 config.yaml\n\n首次运行 `aster` 自动生成 `~\u002F.aster\u002Fconfig.yaml`。如需手动指定，编辑该文件：\n\n```yaml\n# ~\u002F.aster\u002Fconfig.yaml\ndefault_provider: openai\n\nproviders:\n  openai:\n    base_url: https:\u002F\u002Fapi.openai.com\u002Fv1\n    api_key: sk-your-key\n    default_model: gpt-4o\n```\n\n> `api_key` 支持 `${ENV_VAR}` 语法引用环境变量，避免明文写入配置文件。\n\n### CLI 参数覆盖\n\n```bash\naster --provider deepseek --model deepseek-chat --api-key sk-xxx --base-url https:\u002F\u002Fapi.deepseek.com\u002Fv1\n```\n\n| 参数 | 说明 |\n|------|------|\n| `--provider` | Provider 名称 |\n| `--model` | 模型 ID |\n| `--base-url` | API 端点 URL |\n| `--api-key` | API 密钥 |\n\n也可通过 `ASTER_*` 环境变量覆盖：\n\n| 变量 | 说明 |\n|------|------|\n| `ASTER_PROVIDER` | 覆盖默认 Provider |\n| `ASTER_MODEL` | 覆盖默认模型 |\n| `ASTER_BASE_URL` | 覆盖 API 端点 |\n| `ASTER_API_KEY` | 覆盖 API 密钥 |\n\n### 配置优先级\n\n```\nCLI 参数 > ASTER_* 环境变量 > ~\u002F.aster\u002Fconfig.yaml > Provider 内置默认 > 硬编码兜底\n```\n\n### 内置 Provider\n\n所有 Provider 通过 OpenAI 兼容协议接入。运行时可通过 `\u002Fprovider` 命令在线切换。\n\n| Provider | Base URL | 默认模型 |\n|----------|----------|----------|\n| openai | `https:\u002F\u002Fapi.openai.com\u002Fv1` | gpt-4o |\n| anthropic | `https:\u002F\u002Fapi.anthropic.com\u002Fv1` | claude-sonnet-4 |\n| deepseek | `https:\u002F\u002Fapi.deepseek.com\u002Fv1` | deepseek-chat |\n| groq | `https:\u002F\u002Fapi.groq.com\u002Fopenai\u002Fv1` | llama-3.3-70b-versatile |\n| openrouter | `https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1` | anthropic\u002Fclaude-sonnet-4 |\n| together | `https:\u002F\u002Fapi.together.xyz\u002Fv1` | meta-llama\u002FLlama-3-70b-chat-hf |\n| ollama | `http:\u002F\u002Flocalhost:11434\u002Fv1` | qwen2.5:latest |\n\n### 完整 config.yaml 参考\n\n```yaml\ndefault_provider: openai\n\n# 全局环境变量（可选）\nenv:\n  HTTPS_PROXY: socks5:\u002F\u002F127.0.0.1:7890\n\nproviders:\n  \u003Cname>:\n    base_url: \u003Curl>              # API 端点\n    api_key: \u003Ckey|${ENV_VAR}>    # 密钥，支持环境变量引用\n    default_model: \u003Cmodel_id>    # 该 Provider 的默认模型\n    env:                         # Provider 级环境配置（可选）\n      HTTPS_PROXY: \u003Cproxy_url>\n    headers:                     # 额外请求头（可选）\n      X-Foo: bar\n\nmcp_servers:\n  \u003Cname>:\n    description: \u003Cstring>\n    type: stdio|sse|streamable-http\n    command: \u003Cpath>              # stdio 模式\n    args: [\u003Carg1>, ...]          # stdio 模式\n    url: \u003Curl>                   # HTTP 模式\n    headers:                     # HTTP 模式\n      Authorization: \"Bearer ${TOKEN}\"\n    env:                         # 额外环境变量（可选）\n      KEY: value\n    resident: false              # 是否常驻连接\n```\n\n> `providers.\u003Cname>.env` 不修改全局环境，仅作为该 Provider 的局部变量源，支持 `${VAR}` 引用和自动代理配置。\n\n---\n\n## 场景指南\n\n### 选择你的 Agent\n\n| 目标 | Agent | 启动命令 |\n|------|-------|----------|\n| 审计源代码中的安全漏洞 | `code-audit`（默认） | `aster` |\n| 对运行中的 Web 应用渗透测试 | `pentest` | 启动后 `\u002Fagent pentest` |\n| 主机安全基线检查与应急响应 | `host-defense` | 启动后 `\u002Fagent host-defense` |\n| 自定义专属场景 | 创建 Agent YAML | 详见 [自定义 Agent](#自定义-agent) |\n\n---\n\n### 场景 1: 代码审计（默认 Agent）\n\n默认启动即为 `code-audit` Agent。Semgrep 规则已内嵌于二进制，首次运行自动提取到 `~\u002F.aster\u002Frules\u002F`。\n\n```bash\n# 必需：安装 semgrep（SAST 扫描引擎）\npip install semgrep\n\n# 推荐：安装 yak 引擎（数据流追踪，验证漏洞可达性）\n# 安装后无需额外配置，默认 config.yaml 已包含 MCP 配置\nbash \u003C(curl -sS -L http:\u002F\u002Foss.yaklang.io\u002Finstall-latest-yak.sh)\n```\n\n```\naster\n> 对当前项目做一次全量安全审计\n```\n\n| 工具 | 状态 | 不安装时的影响 |\n|------|------|---------------|\n| `semgrep` | **必需** | `sast-scan` 技能不可用，退化为纯 AI 代码审查 |\n| `yak` 引擎 | 推荐 | `dataflow-analysis` 退化为手动 checklist，漏洞缺少 source-to-sink 可达性验证 |\n| `trivy` | 可选 | `dependency-audit` 退化为 AI 分析 manifest 文件，无 CVE 数据库匹配 |\n\n支持语言：Go、Java、Python、JS\u002FTS、PHP、C\u002FC++。详见 → [技能系统](#技能系统)\n\n---\n\n### 场景 2: 渗透测试\n\n`pentest` Agent 通过浏览器自动化对运行中的 Web 应用进行安全测试。\n\n```bash\n# 必需：安装 agent-browser（浏览器自动化），会自动下载 Chromium\nnpm install -g agent-browser && agent-browser install\n```\n\n```\naster\n> \u002Fagent pentest\n> \u002Fmode ai\n> 对 http:\u002F\u002Flocalhost:8080 做一次全面渗透测试\n```\n\n| 工具 | 状态 | 不安装时的影响 |\n|------|------|---------------|\n| `agent-browser` + Chrome\u002FChromium | **必需** | 浏览器自动化不可用；SQL 注入、IDOR 等技能仍可基于代码分析工作 |\n\n> **权限模式**：渗透测试产生大量浏览器命令，推荐 `\u002Fmode ai` 或 `\u002Fmode yolo`（隔离环境）。MANUAL 模式需逐条确认，体验较差。\n\n支持自签证书、SPA\u002FMPA、需认证的站点。详见 → [Agent 系统](#agent-系统)、[外部依赖](#外部依赖)\n\n---\n\n### 场景 3: 主机防护\n\n`host-defense` Agent 进行安全基线检查、入侵检测和应急响应，**无需额外安装外部工具**。\n\n```\naster\n> \u002Fagent host-defense\n> \u002Fmode ai\n> 检查当前主机的安全基线配置\n```\n\n| 工具 | 状态 | 不安装时的影响 |\n|------|------|---------------|\n| `root` \u002F `sudo` 权限 | 推荐 | 部分检查（shadow 文件、SUID 扫描、审计日志）需要权限，无权限时自动跳过 |\n| `yara` \u002F `chkrootkit` \u002F `rkhunter` | 可选 | 恶意软件检测退化为 AI 启发式分析 + 内置 bash 检查 |\n\n> **操作系统**：Linux 完整支持，macOS 部分支持，暂不支持 Windows。\n\n详见 → [Agent 系统](#agent-系统)、[技能系统](#技能系统)\n\n---\n\n### 场景 4: 使用本地模型（Ollama）\n\n无需 API Key，完全离线运行。可搭配任意 Agent 使用。\n\n```bash\n# 1. 启动 Ollama\nollama serve\n\n# 2. 拉取模型\nollama pull qwen2.5\n\n# 3. 启动 ASTER\naster --provider ollama\n```\n\n或在 `~\u002F.aster\u002Fconfig.yaml` 中配置：\n\n```yaml\ndefault_provider: ollama\n\nproviders:\n  ollama:\n    base_url: http:\u002F\u002Flocalhost:11434\u002Fv1\n    default_model: qwen2.5:latest\n```\n\n> **注意**：本地模型推理能力通常弱于云端大模型，复杂审计场景（多步推理、长上下文）效果可能下降。\n\n---\n\n## 核心特性\n\n| 特性 | 说明 |\n|------|------|\n| **三大安全 Agent** | 代码审计 \u002F 渗透测试 \u002F 主机防护，YAML 声明式定义，支持自定义 |\n| **ReAct 执行引擎** | Plan → Think-Act-Observe → Summary → FinalAnswer 四阶段循环 |\n| **Semgrep SAST** | 内嵌本地规则集，覆盖 Go \u002F Java \u002F Python \u002F JS \u002F PHP \u002F C |\n| **SyntaxFlow 数据流** | 通过 yak SSA 引擎的 topdef\u002FbottomUse 追踪验证 |\n| **MCP 协议** | stdio \u002F SSE \u002F Streamable HTTP 三种传输，全局或按 Agent 挂载 |\n| **7 大 LLM Provider** | OpenAI、Anthropic、DeepSeek、Groq、OpenRouter、Together、Ollama |\n| **51+ 安全技能** | 按需注入 Agent 上下文，运行时动态启用\u002F禁用 |\n| **终端 TUI** | Bubbletea 交互界面，会话管理、主题切换、快捷键操作 |\n| **子 Agent 委派** | 支持任务拆解后委派给子 Agent 独立执行 |\n| **历史压缩** | Token 超限时自动摘要压缩，支持长对话 |\n\n---\n\n## 使用指南\n\n### TUI 命令\n\n| 命令 | 说明 |\n|------|------|\n| `\u002Fagent [name]` | 切换 Agent |\n| `\u002Fprovider [name]` | 切换 Provider |\n| `\u002Fmodel [name]` | 切换模型 |\n| `\u002Fskill [enable\\|disable] \u003Cname>` | 启用\u002F禁用技能 |\n| `\u002Fmcp [connect\\|disconnect] \u003Cname>` | 连接\u002F断开 MCP |\n| `\u002Fmode [yolo\\|manual\\|ai]` | 切换权限模式 |\n| `\u002Fsession [new\\|list\\|switch\\|delete]` | 会话管理 |\n| `\u002Fnew` | 新建会话 |\n| `\u002Fclear` | 清空聊天 |\n| `\u002Ftheme` | 切换主题 |\n| `\u002Fhelp` | 帮助 |\n| `\u002Fexit` | 退出 |\n\n### 快捷键\n\n| 快捷键 | 说明 |\n|--------|------|\n| `Tab` | 切换焦点（输入框 \u002F 侧边栏 \u002F 聊天） |\n| `Esc` | 返回输入框 |\n| `Ctrl+N` | 新建会话 |\n| `Ctrl+O` | 会话选择器 |\n| `Ctrl+K` | Agent 选择器 |\n| `Ctrl+M` | 模型选择器 |\n| `Ctrl+L` | 清空聊天 |\n| `Ctrl+C` | 取消\u002F退出 |\n\n### 权限模式\n\n控制 Agent 执行 Bash 命令时的授权策略，通过 `\u002Fmode` 切换：\n\n| 模式 | 行为 | 适用场景 |\n|------|------|----------|\n| **YOLO** | 所有命令自动执行 | 可信隔离环境、CTF |\n| **MANUAL** | 每条命令需人工确认 | 生产环境、敏感操作（默认） |\n| **AI** | 基于风险评估自动决策 | 日常使用推荐 |\n\nAI 模式会先检查 allowlist，未命中则进行风险评估：low risk 自动执行，high\u002Funcertain 请求确认。\n\n---\n\n## Agent 系统\n\n### 内置 Agent\n\n| Agent | 定位 | 核心技能 |\n|-------|------|----------|\n| **code-audit** | 代码安全审计 | `security-code-analysis`, `sast-scan`, `dataflow-analysis` |\n| **pentest** | 渗透测试 | `agent-browser`, SQL 注入\u002FXSS\u002FIDOR 等 |\n| **host-defense** | 主机防护 | `baseline-check`, `intrusion-detection`, `malware-detect` |\n\nAgent 定义位于 `~\u002F.aster\u002Fagents\u002F`，启动时加载。默认优先加载 `code-audit`。\n\n### 切换 Agent\n\n运行时切换 Agent：\n\n```\n\u002Fagent pentest          # 通过命令切换\n```\n\n或使用快捷键 `Ctrl+K` 打开 Agent 选择器。\n\n重置所有 Agent 到内置默认：\n\n```bash\naster agent reset           # 仅补充缺失的内置 Agent\naster agent reset --force   # 强制覆盖所有内置 Agent（自定义 Agent 不受影响）\n```\n\n### 自定义 Agent\n\n创建 `~\u002F.aster\u002Fagents\u002Fapi-audit.yaml`：\n\n```yaml\nname: api-audit\nrole: API 接口安全审计专家\nbackground: |\n  专注于 REST\u002FGraphQL API 的认证、授权、输入校验和速率限制审计。\ninstruction: |\n  1. 先了解项目结构\n  2. 搜索路由定义和中间件\n  3. 加载 sast-scan 进行静态分析\n  4. 重点关注：未鉴权端点、SQL 注入、越权访问\n\nskill_names:\n  - sast-scan\n  - sql-injection-comprehensive\n  - auth-comprehensive\n  - idor-detection\n\ntool_names:\n  - list_files\n  - read_file\n  - rg\n  - bash\n  - list_skills\n  - load_skills\n\npolicies:\n  max_iterations: 500\n  allow_bash: true\n  enable_history_compaction: true\n```\n\n保存后重启，通过 `\u002Fagent api-audit` 切换使用。\n\n### Agent YAML 字段说明\n\n| 字段 | 说明 |\n|------|------|\n| `name` | Agent 标识名 |\n| `role` | 角色定义 |\n| `background` | 能力背景描述 |\n| `instruction` | 行为指令 |\n| `model_id` | 模型覆盖（可选） |\n| `tool_names` | 可用工具列表 |\n| `skill_names` | 可加载的技能列表 |\n| `preload_skills` | 强制预加载技能（不可禁用） |\n| `mcp_servers` | Agent 专属 MCP 服务器 |\n| `policies` | 执行策略参数 |\n\n---\n\n## 技能系统\n\n51+ 个内嵌安全分析技能，按 Agent 的 `skill_names` 配置控制可用范围：\n\n| 类别 | 技能 |\n|------|------|\n| **SAST** | `sast-scan` — Semgrep 多语言扫描（本地规则集） |\n| **数据流** | `dataflow-analysis` — SyntaxFlow topdef\u002FbottomUse 追踪 |\n| **Web 安全** | `sql-injection-comprehensive`, `file-upload`, `cors-misconfiguration`, `jwt-weakness`, `idor-detection`, `vertical-privilege-escalation`, `unauthorized-access` |\n| **认证** | `auth-comprehensive`, `registration-abuse`, `notification-abuse` |\n| **隐私** | `sensitive-info-exposure`, `secret-detection` |\n| **主机** | `baseline-check`, `intrusion-detection`, `malware-detect`, `emergency-response`, `log-analysis` |\n| **浏览器** | `agent-browser` — Web 安全浏览器自动化 |\n| **依赖** | `dependency-audit` — 第三方组件审计 |\n\n### 技能加载机制\n\n```\nAgent YAML skill_names → 构建可用列表\n                          ↓\n运行时: Agent 调用 load_skills → 技能指令注入 prompt\n                          ↓\n执行模式:\n  - inline: 注入当前 Agent 上下文\n  - fork:   启动子 Agent 独立执行\n```\n\n### 运行时管理\n\n```\n\u002Fskill                        # 查看所有技能状态\n\u002Fskill enable sast-scan       # 启用\n\u002Fskill disable sast-scan      # 禁用\n```\n\n> `preload_skills` 中的技能为强制启用，不可通过 `\u002Fskill disable` 禁用。\n\n---\n\n## MCP 集成\n\n通过 MCP 协议扩展 Agent 的工具集。\n\n### 快速示例\n\n在 `~\u002F.aster\u002Fconfig.yaml` 中添加：\n\n```yaml\nmcp_servers:\n  my-tool:\n    type: stdio\n    command: \u002Fpath\u002Fto\u002Fmy-mcp-server\n    args: [\"--mode\", \"production\"]\n```\n\n启动后即可使用：\n\n```\n\u002Fmcp                          # 查看 MCP 服务器状态\n\u002Fmcp connect my-tool          # 运行时连接\n\u002Fmcp disconnect my-tool       # 运行时断开\n```\n\n### 全局 vs Agent 专属\n\n| 类型 | 定义位置 | 可见范围 |\n|------|----------|----------|\n| 全局 | `config.yaml` 的 `mcp_servers` | 所有 Agent |\n| Agent 专属 | Agent YAML 的 `mcp_servers` | 仅该 Agent |\n\n### 传输协议\n\n**stdio — 本地子进程**\n\n```yaml\nmcp_servers:\n  syntaxflow:\n    type: stdio\n    command: \u002Fusr\u002Flocal\u002Fbin\u002Fyak\n    args: [\"mcp\", \"--transport\", \"stdio\", \"--tool\", \"ssa\"]\n```\n\n**sse — Server-Sent Events**\n\n```yaml\nmcp_servers:\n  remote-tool:\n    type: sse\n    url: https:\u002F\u002Fmcp.example.com\u002Fsse\n    headers:\n      Authorization: \"Bearer ${MCP_TOKEN}\"\n```\n\n**streamable-http — 流式 HTTP**\n\n```yaml\nmcp_servers:\n  cloud-tool:\n    type: streamable-http\n    url: https:\u002F\u002Fmcp.example.com\u002Fapi\n```\n\n---\n\n## 外部依赖\n\nASTER 核心功能开箱即用。以下外部工具可增强特定场景：\n\n### agent-browser（渗透测试）\n\n`pentest` Agent 依赖 [agent-browser](https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fagent-browser) 进行浏览器自动化和 Web 安全测试。\n\n```bash\nnpm install -g agent-browser && agent-browser install\n```\n\n> 未安装时：浏览器自动化不可用，但 SQL 注入、IDOR 等检测技能仍可工作。\n\n### yak 引擎（数据流分析）\n\n`dataflow-analysis` 技能通过 MCP 调用 [yak 引擎](https:\u002F\u002Fgithub.com\u002Fyaklang\u002Fyaklang) 的 SyntaxFlow SSA 实现数据流追踪。\n\n```bash\nbash \u003C(curl -sS -L http:\u002F\u002Foss.yaklang.io\u002Finstall-latest-yak.sh)\n```\n\n安装后在 `config.yaml` 中配置 MCP：\n\n```yaml\nmcp_servers:\n  syntaxflow:\n    type: stdio\n    command: yak\n    args: [\"mcp\", \"--transport\", \"stdio\", \"--tool\", \"ssa\"]\n```\n\n> 未安装时：`sast-scan` 仍可独立工作，但 `dataflow-analysis` 不可用。\n\n---\n\n## 开发\n\n### 前置要求\n\n- Go 1.25+\n- Make\n\n### 构建与测试\n\n```bash\nmake build          # 编译 → .\u002Faster\nmake test           # go test .\u002F... -race -timeout 300s\nmake vet            # go vet .\u002F...\n```\n\n### 项目结构\n\n```\n~\u002F.aster\u002F                        # 用户配置目录\n├── config.yaml                  # Provider + MCP 配置\n├── agents\u002F                      # Agent YAML 定义\n├── data.db                      # 会话存储（SQLite）\n└── sessions\u002F                    # 会话数据\n```\n\n```\n源码结构:\ncmd\u002Faster\u002F                       # CLI 入口\ninternal\u002F\n├── react\u002F                       # ReAct Agent 框架（执行引擎、调度器）\n├── ai\u002F                          # LLM 抽象层\n├── tui\u002F                         # 终端 UI（Bubbletea）\n├── mcp\u002F                         # MCP 服务器管理\n├── builtin_tools\u002F               # 内置工具（bash, read_file, rg 等）\n├── builtin_providers\u002F           # Provider 预设\n├── service\u002F                     # 技能服务\n└── utils\u002F                       # 通用工具\nskills\u002F                          # 内嵌技能定义\n├── common\u002F                      # 通用技能\n├── code-audit\u002F                  # 代码审计技能\n├── pentest\u002F                     # 渗透测试技能\n└── host-defense\u002F                # 主机防御技能\nsemgrep-rules\u002F                   # SAST 规则集（6 语言）\n```\n\n### 架构概览\n\n```mermaid\ngraph TB\n    subgraph UI [\"表示层 — Terminal TUI\"]\n        ChatView[Chat View\u003Cbr>对话渲染 · 流式输出]\n        InputModel[Input Model\u003Cbr>用户输入 · 斜杠命令]\n        Sidebar[Sidebar\u003Cbr>会话列表 · Agent 切换]\n        ThinkingPanel[Thinking Panel\u003Cbr>推理过程展示]\n    end\n\n    subgraph Engine [\"执行层 — ReAct Agent Engine\"]\n        Scheduler[Runtime Scheduler\u003Cbr>阶段调度 · 迭代控制]\n        Planner[Task Planner\u003Cbr>任务分解]\n        StepRunner[Step Runner\u003Cbr>Think-Act-Observe 循环]\n        Compressor[History Compressor\u003Cbr>Token 预算 · 上下文压缩]\n        Emitter[Event Emitter\u003Cbr>状态变更 · 流式事件]\n\n        Scheduler --> Planner\n        Scheduler --> StepRunner\n        Scheduler --> Compressor\n        Scheduler --> Emitter\n    end\n\n    subgraph Capabilities [\"能力层\"]\n        direction LR\n        subgraph Tools [\"Builtin Tools\"]\n            Bash[bash\u003Cbr>命令执行 · 权限控制]\n            ReadFile[read_file]\n            Rg[rg\u003Cbr>代码搜索]\n            ListFiles[list_files]\n            SubAgent[sub_agent\u003Cbr>子 Agent 委派]\n        end\n\n        subgraph Skills [\"Skill System\"]\n            SkillCatalog[Skills Catalog\u003Cbr>技能注册 · 过滤]\n            SkillLoader[Skill Loader\u003Cbr>YAML 解析 · Prompt 注入]\n            BuiltinSkills[51+ 内嵌技能\u003Cbr>SAST · 数据流 · Web 安全\u003Cbr>认证 · 主机防护]\n        end\n\n        subgraph MCP [\"MCP Protocol\"]\n            MCPManager[MCP Manager\u003Cbr>连接管理 · 工具适配]\n            StdioTransport[stdio\u003Cbr>本地子进程]\n            SSETransport[SSE\u003Cbr>Server-Sent Events]\n            HTTPTransport[Streamable HTTP]\n        end\n    end\n\n    subgraph AI [\"AI 层 — LLM Abstraction\"]\n        AIClient[AI Client\u003Cbr>ChatClient · StreamingChatClient]\n        ProviderRegistry[Provider Registry\u003Cbr>模型发现 · 能力查询]\n\n        subgraph Providers [\"Providers\"]\n            direction LR\n            OpenAI[OpenAI]\n            Anthropic[Anthropic]\n            DeepSeek[DeepSeek]\n            Others[Groq · OpenRouter\u003Cbr>Together · Ollama]\n        end\n\n        AIClient --> Providers\n        ProviderRegistry --> Providers\n    end\n\n    subgraph Storage [\"持久层\"]\n        direction LR\n        SessionStore[Session Store\u003Cbr>SQLite]\n        EventLog[Event Log\u003Cbr>追加写入]\n        BlobStore[Blob Store\u003Cbr>状态快照 · 历史备份]\n        SemgrepRules[Semgrep Rules\u003Cbr>6 语言本地规则集]\n    end\n\n    InputModel --> Scheduler\n    Emitter --> ChatView\n    Emitter --> ThinkingPanel\n\n    StepRunner --> Tools\n    StepRunner --> MCP\n    Planner --> SkillCatalog\n    SkillLoader --> StepRunner\n\n    StepRunner --> AIClient\n    Planner --> AIClient\n\n    MCPManager --> StdioTransport\n    MCPManager --> SSETransport\n    MCPManager --> HTTPTransport\n\n    Scheduler --> SessionStore\n    Scheduler --> EventLog\n    Scheduler --> BlobStore\n```\n\n### 执行策略参数\n\n| 参数 | 说明 | 默认值 |\n|------|------|--------|\n| `max_iterations` | 最大迭代次数 | 1000 |\n| `allow_bash` | 是否启用 bash 工具 | true |\n| `enable_history_compaction` | Token 超限时压缩历史 | true |\n| `result_source` | 结果提取策略 | latest_step_result |\n\n---\n\n## 路线图\n\n> 以下为计划中的功能方向，按优先级排列。标记 ✅ 表示已有基础设施，需完善集成。\n\n### 近期 — 报告与集成\n\n- [ ] **结果导出** — 支持 SARIF \u002F JSON \u002F HTML 格式输出，便于归档和合规审计\n- [ ] **Headless 模式** — 非交互式运行，接受 CLI 参数指定 Agent、目标、输出路径\n- [ ] **CI\u002FCD 集成** — 提供 GitHub Actions 示例，扫描结果作为 PR Check 反馈\n- [x] **自动更新** — 基于 GitHub Release 的版本检测与二进制替换（✅ 核心已实现，待接入 TUI）\n\n### 中期 — Agent 能力增强\n\n- [ ] **`\u002Fagent create`** — TUI 内交互式创建 Agent，免手动编辑 YAML\n- [ ] **子 Agent 并行执行** — 同级多个子 Agent 并发运行，加速大型项目扫描\n- [ ] **Agent 导入\u002F导出** — 单文件打包分享 Agent 定义 + 关联技能配置\n- [x] **Token 用量与费用统计** — 按会话\u002FAgent 维度的用量面板（✅ 计费基础已就绪，待 UI 呈现）\n\n### 远期 — 平台化\n\n- [ ] **工作流 DSL** — 声明式步骤编排，支持条件分支与并行依赖\n- [ ] **自定义工具插件** — 通过 MCP 或本地插件协议扩展工具集\n- [ ] **REST API** — 提供 HTTP 接口，支持外部系统调度扫描任务\n- [ ] **IDE 插件** — VSCode \u002F JetBrains 集成，编辑器内触发安全扫描\n\n---\n\n## 致谢\n\n| 项目 | 用途 | 许可证 |\n|------|------|--------|\n| [Yaklang](https:\u002F\u002Fgithub.com\u002Fyaklang\u002Fyaklang) | SyntaxFlow SSA 数据流分析 | AGPL-3.0 |\n| [Semgrep](https:\u002F\u002Fgithub.com\u002Fsemgrep\u002Fsemgrep) | SAST 静态分析引擎 | LGPL-2.1 |\n| [Bubbletea](https:\u002F\u002Fgithub.com\u002Fcharmbracelet\u002Fbubbletea) | 终端 TUI 框架 | MIT |\n| [mcp-go](https:\u002F\u002Fgithub.com\u002Fmark3labs\u002Fmcp-go) | Go MCP 协议实现 | MIT |\n\n---\n\n## 项目热度\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=Q16G\u002Faster&type=Date)](https:\u002F\u002Fstar-history.com\u002F#Q16G\u002Faster&Date)\n\n---\n\n## ⚠️ 重要安全声明\n\n### 🔐 法律合规声明\n\n1. 禁止任何未经授权的漏洞测试、渗透测试或安全评估\n2. 本项目仅供网络空间安全学术研究、教学和学习使用\n3. 严禁将本项目用于任何非法目的或未经授权的安全测试\n\n### 漏洞上报责任\n\n1. 发现任何安全漏洞时，请及时通过合法渠道上报\n2. 严禁利用发现的漏洞进行非法活动\n3. 遵守国家网络安全法律法规，维护网络空间安全\n\n### 使用限制\n\n- 仅限在授权环境下用于教育和研究目的\n- 禁止用于对未授权系统进行安全测试\n- 使用者需对自身行为承担全部法律责任\n\n### 免责声明\n\n作者不对任何因使用本项目而导致的直接或间接损失负责，使用者需对自身行为承担全部法律责任。\n\n---\n\n## License\n\n本项目源代码基于 [MIT License](LICENSE) 开源。\n\n### 外部工具声明\n\nASTER 通过子进程 \u002F MCP 协议调用以下外部工具，**不引入、不链接、不修改**其源代码，也不随本项目分发这些工具的二进制文件——用户需自行安装：\n\n| 工具 | 用途 | 工具自身许可证 | 集成方式 |\n|------|------|---------------|---------|\n| [Semgrep](https:\u002F\u002Fgithub.com\u002Fsemgrep\u002Fsemgrep) | SAST 静态分析引擎 | LGPL-2.1 | CLI 子进程 |\n| [Yaklang](https:\u002F\u002Fgithub.com\u002Fyaklang\u002Fyaklang) | SyntaxFlow SSA 数据流分析 | AGPL-3.0 | MCP stdio |\n\n> Semgrep（LGPL-2.1）和 Yaklang（AGPL-3.0）的 copyleft 条款不适用于本项目——它们作为独立程序通过进程间通信被调用，不构成衍生作品或组合作品（参见 [GNU GPL FAQ](https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-faq.html#MereAggregation)）。\n\n### 内置规则\n\n`semgrep-rules\u002F` 目录中的 SAST 规则由 ASTER 团队独立编写，随项目以 MIT 协议发布。\n","ASTER 是一个基于 ReAct 框架的安全分析 Agent，用于在终端中执行代码审计、渗透测试和主机防护。该项目采用 Go 语言开发，集成了 Semgrep 规则集、SyntaxFlow 数据流追踪、MCP 工具协议以及对多个 LLM Provider 的支持，如 OpenAI、Anthropic 等，使得其具备强大的安全检测能力和灵活性。通过 YAML 文件声明式定义三大安全 Agent，并支持自定义扩展，能够覆盖 SAST、Web 安全等多个领域。此外，它还拥有友好的 TUI 交互界面和自动更新功能。ASTER 适用于需要进行自动化安全评估与加固的各种场景，无论是个人开发者还是企业级应用都能从中受益。",2,"2026-06-11 04:06:12","CREATED_QUERY"]