本文档对齐当前 router/ 里的 FastAPI 路由实现,覆盖 REST 与 SSE 两类接口。
uv run secbot --backend
# 或
python -m router.main默认地址:
- Base URL:
http://127.0.0.1:8000 - Swagger UI:
http://127.0.0.1:8000/docs - ReDoc:
http://127.0.0.1:8000/redoc - 健康检查:
GET /health
curl http://127.0.0.1:8000/health
curl -N -X POST http://127.0.0.1:8000/api/chat \
-H "Content-Type: application/json" \
-d '{"message":"你好","mode":"agent","agent":"secbot-cli"}'当前实现默认:
- 未启用鉴权
- CORS 允许全部来源(开发友好配置)
生产环境建议自行在反向代理或应用层补充认证、来源限制与访问控制。
SSE 流式聊天接口,走 SessionManager 编排流程。
请求体:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
message |
string | 是 | 用户输入 |
mode |
ask | agent |
否 | ask 为问答模式,agent 为智能体执行模式,默认 agent |
agent |
string | 否 | 智能体类型,默认 secbot-cli |
prompt |
string | 否 | 自定义系统提示词 |
model |
string | 否 | 模型偏好,后端可选使用 |
当前默认智能体:
secbot-clisuperhackbot
SSE 事件:
| 事件名 | 说明 |
|---|---|
connected |
连接建立 |
planning |
规划开始 |
thought_start |
推理轮次开始 |
thought_chunk |
推理流式片段 |
thought |
本轮推理完成 |
action_start |
工具执行开始 |
action_result |
工具执行结果 |
content |
结构化内容输出 |
report |
报告输出 |
phase |
任务阶段变化 |
root_required |
需要用户确认 root 权限 |
error |
错误 |
response |
最终完整响应 |
done |
流结束 |
最小请求示例:
curl -N -X POST http://127.0.0.1:8000/api/chat \
-H "Content-Type: application/json" \
-d '{
"message": "扫描本机系统信息",
"mode": "agent",
"agent": "secbot-cli"
}'当前端收到 root_required 事件后,用此接口回传用户选择。
请求体:
{
"request_id": "uuid-from-sse",
"action": "run_once",
"password": "optional-password"
}action 可选值:
run_oncealways_allowdeny
同步聊天接口,不返回中间 SSE 过程。
示例:
curl -X POST http://127.0.0.1:8000/api/chat/sync \
-H "Content-Type: application/json" \
-d '{"message":"你好","mode":"ask"}'响应:
{
"response": "你好,请问需要我做什么?",
"agent": "qa"
}列出可用智能体。
响应示例:
{
"agents": [
{
"type": "secbot-cli",
"name": "Hackbot",
"description": "自动模式(ReAct,基础扫描,全自动)"
},
{
"type": "superhackbot",
"name": "SuperHackbot",
"description": "专家模式(ReAct,全工具,敏感操作需确认)"
}
]
}清空指定智能体的对话记忆;不传 agent 时清空全部。
请求体:
{
"agent": "secbot-cli"
}返回会话列表。当前后端为无状态实现,该接口会返回空数组与说明,供 TUI 的 /sessions 之类命令避免 404。
返回系统信息:
- 操作系统
- 架构
- Python 版本
- 主机名
- 用户名
返回 CPU、内存、磁盘实时状态。
返回当前推理后端及模型配置,例如:
{
"llm_provider": "deepseek",
"ollama_model": "gemma3:1b",
"ollama_base_url": "http://localhost:11434",
"deepseek_model": "deepseek-reasoner",
"deepseek_base_url": "https://api.deepseek.com",
"current_provider_model": "deepseek-reasoner",
"current_provider_base_url": null
}获取某个厂商当前保存的 model / base_url。
列出所有厂商的 API Key 配置状态。
设置或删除某厂商 API Key,也可同时设置 Base URL。
请求体示例:
{
"provider": "deepseek",
"api_key": "sk-xxx"
}设置带 Base URL 的厂商:
{
"provider": "custom",
"api_key": "sk-xxx",
"base_url": "https://example.com/v1"
}切换当前默认推理后端。
{
"llm_provider": "ollama"
}更新某厂商的默认模型或 Base URL。
{
"provider": "ollama",
"model": "gemma3:3b"
}列出当前 Ollama 节点的模型列表。可选 query 参数:
base_url
接口会在模型缺失时返回 pulling_model,用于前端展示后台拉取状态。
获取当前日志级别。
设置日志级别,当前仅支持:
DEBUGINFO
请求体:
{
"level": "DEBUG"
}执行完整安全扫描并返回报告。
查看防御模块状态。
查看被封禁 IP 列表。
解封指定 IP。
{
"ip": "192.168.1.10"
}生成防御报告。支持 query 参数:
type=fulltype=vulnerabilitytype=attack
扫描网络段,若不传 network 则自动探测。
{
"network": "192.168.1.0/24"
}列出已发现主机。
可选 query 参数:
authorized_only=true|false
列出当前授权记录。
授权目标主机。
{
"target_ip": "192.168.1.10",
"username": "root",
"password": "secret",
"auth_type": "full",
"description": "测试环境授权"
}撤销指定 IP 的授权。
返回数据库表统计:
conversationsprompt_chainsuser_configscrawler_taskscrawler_tasks_by_status
查看对话历史。
支持 query 参数:
agentlimitsession_id
按筛选条件删除对话历史。
支持 query 参数:
agentsession_id
列出当前集成的安全工具分类、总数、基础工具与高级工具统计。
返回中包含:
totalbasic_countadvanced_countcategoriestools
大多数接口错误时返回:
{
"detail": "错误说明"
}如果是 SSE 流式接口,则错误会作为 error 事件发送。