开源 AI 安全代理。
为你的终端赋予安全大脑。
使用本地工具、代理、剧本、发现、证据、回放和报告运行安全工作流。
npm install -g numasec
演示 | 为什么 | 感受 | 尝试 | 功能 | 命令 | 架构 | 路线图
numasec 是一个运行在终端中的 AI 安全代理。
它使用你机器上已安装的工具,遵循安全剧本,在多个网络代理之间切换,保持操作上下文活跃,跟踪发现,存储证据,并帮助将工作转化为报告。
它是为那些已经在 shell、浏览器、HTTP 请求、扫描器、公告、笔记和报告之间工作的人构建的。
为你已有的工作流而设的安全代理。
安全工作不会在一个干净的地方发生。
你在终端命令、浏览器操作、HTTP 请求、本地工具、扫描器、公告、笔记、截图、发现和报告之间切换。
AI 可以提供帮助,但前提是它存在于那个工作流之中。
numasec 为模型提供了一个安全工作区,而不仅仅是一个聊天框。它在工作进行中保持目标、范围、工具、剧本、发现、证据、回放和报告状态在一起。
目标很简单:
让安全工作感觉更快、更敏锐、更不分散。
numasec 目前最适用于授权的应用安全和渗透测试工作流。其他网络领域也存在或可能,但它们尚未被宣传为同样成熟。
编码代理改变了开发者的工作方式。
它们读取代码、运行命令、编辑文件、执行测试,并停留在开发循环中。
安全需要同样的转变,但安全工作有不同的约束。
安全代理需要了解目标、保持在范围内、使用本地工具链、记住发生的情况、将噪声与发现分开,并保留足够的上下文以便稍后产生有用的输出。
这正是 numasec 试图成为的:
终端的开源 AI 安全代理。
在你正在测试的工作区中打开 numasec,选择合适的安全代理,检查可用本地工具,然后启动剧本,让代理帮助你完成工作流。
当工作发生变化时,切换模式。当某件事重要时,将发现、证据、回放和报告上下文保留在操作附近,而不是分散在 shell 历史、截图和笔记中。
然后稍后回来,无需从头开始即可继续。
numasec 像终端代理一样启动,然后安全工作开始,它变成了一个工作区。
你会获得模型、当前代理、命令面板、工作目录和提示符。重点不是离开你的终端,而是让终端更智能。
发现不会丢入聊天中:它们存在于操作中,每个发现都可以携带状态、严重性、证据、回放状态和下一步操作,这样代理就可以在不丢失线索的情况下继续工作。
弱信号可以保持弱。被拒绝的声明仍然可见。可报告的发现需要证据。
安全工作形态会变化。应用安全、渗透测试、开源情报、CTF/实验室和研究不需要相同的姿态,因此你可以在工作变化时切换代理,而不是强迫一个通用助手在所有地方以相同方式行事。
操作是持久的。命名、重命名、恢复和导出。安全工作流不应因为聊天结束而消失。
npm install -g numasec numasec
然后从一个本地实验室、CTF、自己拥有的应用或授权的目标开始:```text
/doctor
/mode appsec
/runbook run appsec-web-triage http://localhost:3000
/share
从要测试的工作区运行 numasec,并将目标范围明确。
numasec 面向那些希望将 AI 代理融入安全工作流、而非与其并行工作的人。
numasec 仅用于授权安全测试。只能在你拥有所有权、实验室、CTF 或已获测试许可的目标上使用。
numasec 不仅仅是一个带工具的提示。
它将安全工作流连接起来:目标、操作、姿态、操作手册、本地工具、观察结果、发现结果、证据、回放和报告。```mermaid flowchart LR target["Target"] --> operation["Operation"] operation --> posture["Scope + opsec + autonomy"] posture --> runbook["Runbook"] runbook --> tools["Local cyber tools"]
tools --> evidence["Evidence"] evidence --> observations["Observations"] observations --> findings["Findings"] findings --> proof["Replay / proof"] proof --> report["Report"]
operation -. source of truth .-> kernel["Cyber kernel"] kernel --> evidence kernel --> findings kernel --> report
classDef primary fill:#04130d,stroke:#00ff88,color:#eafff4,stroke-width:2px; classDef secondary fill:#061014,stroke:#00c2ff,color:#eaf9ff,stroke-width:1.5px; classDef proofNode fill:#151104,stroke:#ffcc66,color:#fff7df,stroke-width:1.5px; classDef findingNode fill:#190808,stroke:#ff5f6d,color:#fff0f0,stroke-width:1.5px;
class target,operation,posture,runbook,tools primary; class evidence,observations,kernel secondary; class proof,report proofNode; class findings findingNode;
重要部分:操作不仅仅存在于聊天中。numasec 会持久记录工作,以便代理可以继续,操作员可以审查,报告可以基于实际发生的情况生成。
## numasec 的不同之处
大多数 AI 安全工具会陷入两个陷阱之一:要么只会聊天,要么只是工具的包装器。numasec 试图做不同的事情:在代理工作的同时保持工作流的活跃。
| 对比 | 通常情况 | numasec 的做法 |
| --- | --- | --- |
| **通用 AI 聊天** | 给出很好的建议,但脱离实际工作。 | 在终端工作流中运行,集成工具、记忆和操作状态。 |
| **通用编码代理** | 擅长仓库和测试,但并非为安全工作设计。 | 增加安全代理、剧本、范围、发现、证据、重放和报告。 |
| **扫描器包装器** | 输出快,上下文弱。 | 将工具输出转化为更大操作的一部分。 |
| **手动笔记** | 灵活,但一切都会脱节。 | 保持发现、证据、重放和报告连贯。 |
| **工具服务器** | 暴露能力,但将工作流和记忆留给用户。 | 在工具周围增加安全工作流。 |
## 命令
numasec 设计为从键盘操作保持快速:开始一个操作,切换代理,运行工作流,检查工具,加强 opsec,导出工作,并且稍后可以回来。```text
/doctor inspect local tool readiness
/mode appsec switch to the AppSec agent
/mode pentest switch to the Pentest agent
/agents open the agent switcher
/runbook list show available security workflows
/runbook run appsec-web-triage <target>
/runbook run web-surface <target>
/operations inspect, rename, resume or switch operations
/opsec strict tighten operation boundaries
/models switch provider or model
/share export the active operation bundle
/remediate <observation_id> turn an observation into remediation guidance
/pwn <target> create a scoped pentest operation for a target
npm install -g numasec numasec
### Bun```bash
bun add -g numasec
numasec
docker run -it --rm -v "$PWD:/work" -w /work francescostabile/numasec:latest
### 来源```bash
git clone https://github.com/FrancescoStabile/numasec.git
cd numasec
bun install
cd packages/numasec
bun run build
numasec 并非试图取代你现有的工具。
它赋予智能体一种受控的方式,来使用和推理你已有的环境:shell、文件、浏览器、HTTP、扫描器、证据、报告、知识库以及工作区状态。
智能体能够看到一小批有用的安全表面:
bash、read、write、edit、apply_patch、grep、globhttp_request、browser、scanner、appsec_proberunbook、pwn_bootstrap、scope、opsec、、knowledge 是首选的网络安全研究表面。它通过一个来源感知的代理,路由漏洞情报、包公告、方法论、技术、漏洞利用信号以及已安装工具的文档。
对于观测到的组件(如 nginx 1.18.0、OpenSSH_8.2p1 或 npm:[email protected]),它能够区分可能性与适用性,在可用时利用 KEV/EPSS 进行丰富,并建议安全的后续操作,而不会将情报转化为一个发现项。
cve 则保留作为 CVE 样式查询的兼容性别名。新的网络安全研究应使用 knowledge。
本地工具能够使 numasec 更强大。如果安装了这些工具,智能体便可以使用或围绕它们进行推理:```bash
apt install nmap sqlmap ffuf gobuster nikto nuclei trivy checksec
brew install nmap sqlmap ffuf gobuster nikto nuclei trivy checksec
使用 `/doctor` 查看当前机器上可用、降级或缺失的内容。
## 模型与提供商
选择你信任的模型。numasec 与模型无关,它用一套安全工作流来封装你选择的模型:终端、工具、代理、操作手册、操作记忆、发现结果、证据和报告。
支持的提供商系列包括 OpenAI、Anthropic、Google、xAI、Bedrock、OpenRouter、Ollama、Vercel AI Gateway、兼容 OpenAI 的端点,以及通过本地模型栈支持的其他提供商。
关键不在于某个模型能神奇地解决安全问题,而在于好的模型在合适的安全环境中工作时会变得更有用。
## 架构
numasec 用安全工作流封装模型。模型可以推理和行动;numasec 则围绕操作保持上下文:工具、操作手册、事件、事实、证据、回放、发现结果和交付物。```mermaid
flowchart TB
operator["Operator"] --> console["Terminal console"]
console --> control["Permissioned / auto execution"]
control --> agents["Cyber agents"]
agents --> runbooks["Runbooks"]
subgraph tool_layer["Tool layer"]
browser["Browser"]
http["HTTP"]
scanner["Scanner"]
shell["Shell"]
knowledge["Knowledge broker"]
vault["Vault"]
end
runbooks --> browser
runbooks --> http
runbooks --> scanner
runbooks --> shell
runbooks --> knowledge
runbooks --> vault
subgraph kernel["Cyber operation kernel"]
ledger["Ledger"]
facts["Facts"]
relations["Relations"]
evidence["Evidence"]
replay["Replay"]
workflow["Workflow"]
end
browser --> evidence
http --> evidence
scanner --> evidence
shell --> evidence
knowledge --> facts
vault --> facts
ledger --> facts
facts --> relations
evidence --> replay
facts --> workflow
facts --> lifecycle["Finding lifecycle"]
relations --> lifecycle
replay --> lifecycle
workflow --> deliverables["Reports / share bundles / remediation"]
lifecycle --> deliverables
classDef top fill:#04130d,stroke:#00ff88,color:#eafff4,stroke-width:2px;
classDef tool fill:#061014,stroke:#00c2ff,color:#eaf9ff,stroke-width:1.5px;
classDef state fill:#0b0f0a,stroke:#7affb2,color:#eafff4,stroke-width:1.5px;
classDef proofNode fill:#151104,stroke:#ffcc66,color:#fff7df,stroke-width:1.5px;
classDef findingNode fill:#190808,stroke:#ff5f6d,color:#fff0f0,stroke-width:1.5px;
class operator,console,control,agents,runbooks top;
class browser,http,scanner,shell,knowledge,vault tool;
class ledger,facts,relations,workflow state;
class evidence,replay,deliverables proofNode;
class lifecycle findingNode;
一个操作被存储为事件、事实、关系、证据、回放工件、工作流状态和交付物。
numasec.md 可以作为派生的上下文包存在。它有助于引导模型,但并非事实来源。
安全工作存在混乱的中间状态。某些事物可能看起来有趣但并不真实。某些事物可以被观察到,但尚未准备好写入报告。某些事物可能被验证,但后来变得过时。
numasec 保持这些状态可见,而不是将所有内容扁平化为聊天输出。```mermaid
flowchart LR
candidate["Candidate
suspicion"] --> observed["Observed
evidence-backed signal"]
observed --> verified["Verified
promoted with proof semantics"]
verified --> reportable["Reportable
evidence + replay/exemption"]
candidate --> rejected["Rejected
ruled out"]
observed --> stale["Stale
no longer trusted"]
verified --> stale
classDef weak fill:#12170c,stroke:#d6ff66,color:#f8ffd8,stroke-width:1.5px; classDef proof fill:#061014,stroke:#00c2ff,color:#eaf9ff,stroke-width:1.5px; classDef report fill:#04130d,stroke:#00ff88,color:#eafff4,stroke-width:2px; classDef stop fill:#190808,stroke:#ff5f6d,color:#fff0f0,stroke-width:1.5px;
class candidate weak; class observed,verified proof; class reportable report; class rejected,stale stop;
模型允许探索。工作流不允许假装每个想法都是一个发现。
### 运行手册而非随机工具垃圾
当安全智能体在没有工作流的情况下调用工具时,会变得嘈杂。numasec 使用运行手册来让智能体沿着可识别的任务形状移动:表面映射、应用安全分类、范围化渗透测试工作以及未来的特定领域工作流。
当前最强项:
- `appsec-web-triage`
- `web-surface`
- `pwn` / 渗透测试入门流程
成熟度标记的表面:
- 仓库应用安全分类
- API 和认证表面工作
- 网络表面工作
- OSINT 目标工作
- CTF 和实验室工作流
- 云、容器、IaC 和二进制分类
## 设计初衷是避免 AI 安全垃圾
numasec 围绕一个简单规则构建:**智能体可以帮助你更快行动,但工作流不应让它过度声称。**
这就是为什么 numasec 跟踪范围、操作状态、发现、证据、重放和报告输出。
成熟重点:
- 应用安全
- 渗透测试
其他网络安全表面存在或计划中,但目前尚未宣传为同等成熟。
numasec 并不声称取代授权、操作员判断、手动审查或专业工具。
这种诚实并非营销上的谦虚。它是产品的一部分。当安全工具将信心与证据混淆时,它们会失去信任。
## 路线图
长期愿景很简单:
**一个能与社区共同成长的开源 AI 安全智能体。**
短期内,numasec 会保持专注:
- 更好的应用安全工作流
- 更好的渗透测试工作流
- 更强的本地工具适配器
- 更好的证据和重放捕获
- 更清晰的报告生成
- 更有用的智能体
- 更好的操作分享
- 更清晰的成熟度标签
长期:
- 带溯源的开源情报工作流
- CTF 和实验室工作流
- 云、容器和 IaC 分类
- 团队操作
- 审查与交接
- 更丰富的知识包
- 社区运行手册
规则保持不变:每个成熟的领域都需要真正的工作流支持,而不仅仅是一个提示。
## 文档
- [操作](https://github.com/francescostabile/numasec/blob/HEAD/docs/OPERATIONS.md)
- [工具参考](https://github.com/francescostabile/numasec/blob/HEAD/docs/TOOLS.md)
- [操作文件格式](https://github.com/francescostabile/numasec/blob/HEAD/docs/NUMASEC_FILE_FORMAT.md)
- [变更日志](https://github.com/francescostabile/numasec/blob/HEAD/CHANGELOG.md)
- [贡献](https://github.com/francescostabile/numasec/blob/HEAD/CONTRIBUTING.md)
- [安全](https://github.com/francescostabile/numasec/blob/HEAD/SECURITY.md)
## 开发```bash
bun install
bun typecheck
cd packages/numasec
bun test --timeout 30000
bun run build
AppSec 和 Pentest 基准测试是本地/手动的发布信心工具:```bash cd packages/numasec bun run bench:cyber --domain appsec bun run bench:cyber --domain pentest
不要从仓库根目录运行包测试。numasec 采用 Bun-first 的包本地工作流。
## 贡献
最有价值的贡献能使 numasec 成为更好的运维工具:
- 具有明确范围和证明语义的 runbook;
- 能将工具输出转化为溯源支持的事实的解析器;
- 适用于真正安全工具的适配器;
- 难以伪造的基准测试场景;
- 能减少过度声明的报告模板;
- 让操作在压力下更易读的 TUI 优化。
如果某项变更创建了经确认的安全声明,则需要证据。如果某项发现是可报告的,则需要可重放性或结构化豁免。
## 社区
最好的反馈不是“很酷的项目”。
最好的反馈是:
- 我在这类授权工作流上试过它
- 这部分让我更快
- 这部分阻碍了我
- 这个工具应当得到更好的支持
- 这个 runbook 应当存在
- 这个发现流程感觉不对劲
- 这份报告输出有用或没用
请使用 GitHub Issues 和 Discussions 报告 bug、工作流反馈、runbook 想法、适配器以及版本问题。
请确保示例是授权的、基于实验室的或经过安全匿名化的。
## 帮助塑造 numasec
numasec 还很早期,但方向很明确:
**让安全工作感觉更快、更敏锐、更不分散,借助一个驻留在终端中的 AI 代理。**
如果这听起来有用,请给仓库点个星,在一个授权工作流上尝试它,并告诉我它在哪里失效。
## 许可
[GNU Affero 通用公共许可证 v3.0 或更高版本](https://github.com/francescostabile/numasec/blob/HEAD/LICENSE)。使用 numasec 进行授权的安全工作、研究、教育及防御性操作。
<p align="center">
由 <a href="https://www.linkedin.com/in/francesco-stabile-dev">Francesco Stabile</a> 构建
| <a href="https://x.com/Francesco_Sta">@Francesco_Sta</a>
<br/><sub>如果 numasec 对你有帮助,<a href="https://github.com/FrancescoStabile/numasec/stargazers">请点个星</a>并分享这个工作流。</sub>
</p>
| 能力 | 它带给你什么 |
|---|
| AI 安全代理 | 一个在你的终端内工作而非单独聊天窗口的模型。 |
| 本地工具 | numasec 使用你机器上已安装的工具,并显示哪些可用、缺失或降级。 |
| 操作手册 | 安全工作流,让代理在真实任务中持续行动,而非随意调用工具。 |
| 代理 | 使用 TAB 切换姿态,适用于 AppSec、渗透测试、OSINT、CTF/实验室和研究型工作。 |
| 操作记忆 | 将目标、范围、活动、发现结果、证据、回放和报告状态保持在一起。 |
| 发现结果工作流 | 跟踪安全信号,从模糊想法演变为有用发现结果。 |
| 证据与回放 | 保存理解、验证和重现重要工作所需的材料。 |
| 网络安全知识 | 将漏洞情报、公告、方法论和工具文档引入工作流。 |
| 报告 | 从操作中生成交付物,而非最后才重建一切。 |
| 共享包 | 导出工作,以便审查、恢复或移交。 |
autonomyidentityevidence、observation、finding、report、share、remediateknowledge、methodology、cvedoctor、workspace、vault、net、crypto、analyze