mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-07-10 22:33:48 +02:00
276 lines
8.6 KiB
Markdown
276 lines
8.6 KiB
Markdown
# 配置参考
|
||
|
||
CyberStrikeAI 的主配置文件是 `config.yaml`。大多数配置也可以在 Web 的“系统设置”中修改,保存后再应用。生产环境中,建议把敏感值放在受控配置系统中,并限制 `config.yaml` 的文件权限。
|
||
|
||
## 基础配置
|
||
|
||
```yaml
|
||
version: "v1.6.51"
|
||
server:
|
||
host: 0.0.0.0
|
||
port: 8080
|
||
tls_enabled: true
|
||
tls_auto_self_sign: true
|
||
auth:
|
||
password: "change-me"
|
||
session_duration_hours: 12
|
||
log:
|
||
level: info
|
||
output: stdout
|
||
```
|
||
|
||
- `version`:前端展示版本。
|
||
- `server.host/port`:Web 服务监听地址和端口。
|
||
- `server.tls_*`:HTTPS 配置。生产环境建议使用 `tls_cert_path` 和 `tls_key_path`。
|
||
- `auth.password`:Web 登录密码,必须改为强密码。
|
||
- `auth.session_duration_hours`:登录会话有效期。
|
||
- `log.output`:可以是 `stdout`、`stderr` 或文件路径。
|
||
|
||
## 模型配置
|
||
|
||
```yaml
|
||
openai:
|
||
provider: openai
|
||
base_url: https://api.openai.com/v1
|
||
api_key: sk-...
|
||
model: gpt-4.1
|
||
max_total_tokens: 120000
|
||
reasoning:
|
||
mode: on
|
||
effort: high
|
||
allow_client_reasoning: true
|
||
profile: openai_compat
|
||
```
|
||
|
||
- `provider`:`openai` 表示 OpenAI 兼容接口;`claude` 会桥接到 Anthropic Claude Messages API。
|
||
- `base_url/api_key/model`:主模型配置。
|
||
- `max_total_tokens`:上下文压缩、攻击链构建、多代理摘要等共用的总预算。
|
||
- `reasoning`:控制推理扩展字段。不同网关支持差异较大,异常时先尝试 `mode: off`。
|
||
|
||
## Agent
|
||
|
||
```yaml
|
||
agent:
|
||
max_iterations: 12000
|
||
tool_timeout_minutes: 60
|
||
shell_no_output_timeout_seconds: 1200
|
||
workspace_root_dir: ""
|
||
system_prompt_path: ""
|
||
```
|
||
|
||
- `max_iterations`:单代理、多代理主执行器和子代理的默认迭代上限。
|
||
- `tool_timeout_minutes`:单次工具最长运行时间。
|
||
- `shell_no_output_timeout_seconds`:Shell 长时间无输出时终止。
|
||
- `workspace_root_dir`:会话工作区根目录,建议不要设置到系统 `/tmp`。
|
||
- `system_prompt_path`:单代理系统提示词覆盖文件。
|
||
|
||
## HITL
|
||
|
||
```yaml
|
||
hitl:
|
||
default_reviewer: audit_agent
|
||
retention_days: 90
|
||
tool_whitelist: [read_file, list_dir, glob, grep, tool_search]
|
||
audit_model:
|
||
provider: ""
|
||
base_url: ""
|
||
api_key: ""
|
||
model: ""
|
||
```
|
||
|
||
- `default_reviewer`:`human` 或 `audit_agent`。
|
||
- `tool_whitelist`:全局免审批工具列表,会与会话白名单合并。
|
||
- `audit_model`:审计 Agent 独立模型;留空复用主模型。
|
||
- `audit_agent_prompt` / `audit_agent_prompt_review_edit`:可覆盖默认审批策略。
|
||
|
||
更多策略见 [人机协同最佳实践](hitl-best-practices.md)。
|
||
|
||
## 多代理
|
||
|
||
```yaml
|
||
multi_agent:
|
||
enabled: true
|
||
robot_default_agent_mode: eino_single
|
||
batch_use_multi_agent: false
|
||
eino_skills:
|
||
disable: false
|
||
filesystem_tools: true
|
||
skill_tool_name: skill
|
||
```
|
||
|
||
支持模式:
|
||
|
||
- `eino_single`:Eino 单代理。
|
||
- `deep`:DeepAgent 风格多代理。
|
||
- `plan_execute`:规划、执行、重规划。
|
||
- `supervisor`:主管代理转交子代理。
|
||
|
||
`agents_dir` 指向 Markdown 子代理目录。单个代理可在 front matter 中设置 `tools`、`bind_role`、`max_iterations`。
|
||
|
||
## 工具与 MCP
|
||
|
||
```yaml
|
||
security:
|
||
tools_dir: tools
|
||
tool_description_mode: full
|
||
mcp:
|
||
enabled: false
|
||
host: 0.0.0.0
|
||
port: 8081
|
||
auth_header: "X-MCP-Token"
|
||
auth_header_value: ""
|
||
external_mcp:
|
||
servers: {}
|
||
```
|
||
|
||
- `security.tools_dir`:内置工具 YAML 目录。
|
||
- `tool_description_mode`:`short` 更省 token,`full` 更完整。
|
||
- `mcp.enabled`:是否启动独立 HTTP MCP 服务。
|
||
- `mcp.auth_header_value`:外部调用 MCP 时的共享密钥,生产环境必须设置。
|
||
- `external_mcp.servers`:外部 MCP 联邦配置。
|
||
|
||
工具 YAML 规则见 `tools/README.md`。
|
||
|
||
## 知识库
|
||
|
||
```yaml
|
||
knowledge:
|
||
enabled: false
|
||
base_path: knowledge_base
|
||
embedding:
|
||
provider: openai
|
||
model: text-embedding-v4
|
||
base_url: ""
|
||
api_key: ""
|
||
retrieval:
|
||
top_k: 5
|
||
similarity_threshold: 0.4
|
||
indexing:
|
||
chunk_size: 512
|
||
chunk_overlap: 50
|
||
batch_size: 10
|
||
```
|
||
|
||
启用后会注册知识库检索工具,并开放管理接口。详细说明见 [知识库](knowledge-base.md)。
|
||
|
||
## 数据库
|
||
|
||
```yaml
|
||
database:
|
||
path: data/conversations.db
|
||
knowledge_db_path: data/knowledge.db
|
||
```
|
||
|
||
默认使用 SQLite。`knowledge_db_path` 为空时可复用会话数据库;独立文件更便于迁移知识库。
|
||
|
||
## 审计与监控
|
||
|
||
```yaml
|
||
audit:
|
||
enabled: true
|
||
retention_days: 15
|
||
max_detail_bytes: 8192
|
||
monitor:
|
||
retention_days: 90
|
||
```
|
||
|
||
- `audit` 记录平台操作,不记录对话正文和每次工具调用正文。
|
||
- `monitor` 管理工具执行记录保留时间。
|
||
|
||
## C2、WebShell、项目
|
||
|
||
```yaml
|
||
c2:
|
||
enabled: true
|
||
project:
|
||
enabled: true
|
||
fact_index_max_runes: 65000
|
||
```
|
||
|
||
- `c2.enabled`:关闭后不启动 C2 监听器,也不注册 C2 MCP 工具。
|
||
- WebShell 连接配置存 SQLite,没有单独的主配置开关。
|
||
- `project` 控制跨对话事实黑板注入预算。
|
||
|
||
## 机器人
|
||
|
||
`robots` 支持个人微信 iLink、企业微信、钉钉、飞书、Telegram、Slack、Discord、QQ。详细配置步骤见 [机器人使用说明](robot.md)。
|
||
|
||
## 配置修改建议
|
||
|
||
- 先在测试环境验证模型、MCP、知识库和高风险工具。
|
||
- 改动 `tools_dir`、`roles_dir`、`skills_dir`、`agents_dir` 后,检查 Web 页面是否能列出对应资源。
|
||
- 生产环境避免开启不需要的 C2、WebShell、终端和外部 MCP。
|
||
- 修改敏感配置后,检查审计页面是否有异常登录或配置变更记录。
|
||
|
||
## 配置应用机制
|
||
|
||
配置不是所有字段都同等“热更新”。`/api/config/apply` 会做一组协调动作:更新模型配置、工具描述模式、重新注册部分 MCP 工具、初始化或更新知识库、重启机器人连接、按配置启停 C2。这个逻辑在 `internal/handler/config.go` 中由 `ConfigHandler` 协调。
|
||
|
||
实务判断:
|
||
|
||
| 配置段 | 应用后通常立即生效 | 需要额外动作 |
|
||
| --- | --- | --- |
|
||
| `openai` | 新请求使用新模型配置 | 旧的流式请求不会被强制切换 |
|
||
| `agent.max_iterations` | 新 Agent 任务生效 | 已运行任务按启动时状态继续 |
|
||
| `security.tool_description_mode` | 工具重新暴露时生效 | 模型已有上下文不会回滚 |
|
||
| `hitl.tool_whitelist` | 新工具调用审批判断生效 | 已挂起审批不自动重判 |
|
||
| `knowledge.enabled` | 会尝试初始化/更新组件 | 启用后仍需扫描和索引 |
|
||
| `knowledge.embedding` | 检索器/索引器配置更新 | 已有向量通常需要重建索引 |
|
||
| `robots` | 会触发连接重启 | 平台回调配置仍需在平台侧正确 |
|
||
| `c2.enabled` | 会协调 C2 runtime | 已暴露端口和会话要人工确认 |
|
||
| `server.port/tls` | 通常需要重启进程 | 监听地址不是普通热更新 |
|
||
|
||
## 配置优先级和派生关系
|
||
|
||
几个字段有“留空复用”的关系:
|
||
|
||
- `vision.api_key/base_url/provider` 留空时复用 `openai`。
|
||
- `hitl.audit_model` 留空时复用 `openai`。
|
||
- `knowledge.embedding.base_url/api_key` 留空时复用主模型或 embedding 默认配置。
|
||
- `knowledge.retrieval.rerank.base_url/api_key` 留空时复用 embedding/openai。
|
||
- `database.knowledge_db_path` 留空时可以复用主会话数据库,但独立文件更利于备份。
|
||
|
||
这类配置排障时不要只看子配置段,也要看它会回落到哪个上级配置。
|
||
|
||
## 参数取值建议
|
||
|
||
| 参数 | 保守值 | 激进值 | 判断依据 |
|
||
| --- | --- | --- | --- |
|
||
| `agent.tool_timeout_minutes` | 10-30 | 60+ | 扫描工具是否常跑长任务 |
|
||
| `shell_no_output_timeout_seconds` | 300-600 | 1200+ | 工具是否长时间静默 |
|
||
| `knowledge.indexing.batch_size` | 5-10 | 20+ | embedding 服务批量限制 |
|
||
| `knowledge.indexing.rate_limit_delay_ms` | 300-800 | 0-100 | 服务商 RPM 和 429 情况 |
|
||
| `retrieval.top_k` | 3-5 | 8-12 | 内容质量和上下文预算 |
|
||
| `similarity_threshold` | 0.35-0.45 | 0.5+ | 召回优先还是精度优先 |
|
||
| `audit.retention_days` | 15-30 | 90+ | 合规要求和磁盘空间 |
|
||
| `monitor.retention_days` | 30-90 | 180+ | 是否需要长周期复盘 |
|
||
|
||
## 变更前后验证模板
|
||
|
||
修改配置前记录:
|
||
|
||
```text
|
||
变更目的:
|
||
涉及配置段:
|
||
预期影响:
|
||
回滚方式:
|
||
验证接口:
|
||
```
|
||
|
||
修改后验证:
|
||
|
||
```bash
|
||
curl -k https://127.0.0.1:8080/api/auth/validate \
|
||
-H "Authorization: Bearer <token>"
|
||
```
|
||
|
||
再按配置类型验证模型、工具、知识库、C2 或机器人。不要只看 Web 保存成功提示。
|
||
|
||
## 源码锚点
|
||
|
||
- 配置结构:`internal/config/config.go`
|
||
- 环境变量展开:`internal/config/envexpand.go`
|
||
- Web 配置接口:`internal/handler/config.go`
|
||
- 路由注册:`internal/app/app.go`
|
||
- C2 配置协调:`internal/app/c2_lifecycle.go`
|