CAI 快速上手:从终端启动到自主安全任务的完整指南
【免费下载链接】caiCybersecurity AI (CAI), the framework for AI Security项目地址: https://gitcode.com/GitHub_Trending/cai3/cai
本篇技术指南以 Cybersecurity AI(CAI)框架的官方快速入门文档为核心,讲解如何通过一行cai命令启动终端交互式安全助手、理解底部状态栏信息、掌握全套环境变量配置方式,并运用--continue自主模式让 Agent 无人值守地完成漏洞审计、SQL 注入检测、代码安全审查等实战任务。读完本文,你将能够独立完成 CAI 的初始化、按需配置模型与成本上限,并编写可复用的自主安全任务命令。
一、启动 CAI:一条命令进入安全作战终端
安装 CAI 之后,只需在终端输入cai即可完成初始化并进入交互式提示符:
└─# cai CCCCCCCCCCCCC ++++++++ ++++++++ IIIIIIIIII CCC::::::::::::C ++++++++++ ++++++++++ I::::::::I CC:::::::::::::::C ++++++++++ ++++++++++ I::::::::I C:::::CCCCCCCCCC::::C +++++++++ ++ +++++++++ II::::::II C:::::C CCCCCC +++++++ +++++ +++++++ I::::I C:::::C +++++ +++++++ +++++ I::::I C:::::C ++++ ++++ I::::I C:::::C ++ ++ I::::I C:::::C + +++++++++++++++ + I::::I C:::::C +++++++++++++++++++ I::::I C:::::C +++++++++++++++++ I::::I C:::::C CCCCCC +++++++++++++++ I::::I C:::::CCCCCCCC::::C +++++++++++++ II::::::II CC:::::::::::::::C +++++++++ I::::::::I CCC::::::::::::C +++++ I::::::::I CCCCCCCCCCCCC ++ IIIIIIIIII Cybersecurity AI (CAI), v0.4.0 Bug bounty-ready AI CAI>初始化成功后你会看到CAI>提示符,可以在其中执行任意安全任务。屏幕底部的导航栏会持续显示重要的系统信息(当前 Agent、模型、会话成本、运行时长等),帮助你随时了解运行环境。
从源码结构看,启动流程由 src/cai/cli.py 中的main()函数驱动:它先调用fix_litellm_transcription_annotations()修复 LiteLLM 的注解兼容性问题,再依据CAI_AGENT_TYPE(默认one_tool_agent)通过get_agent_by_name()实例化 Agent,最后进入 run_cai_cli() 的主循环——该循环负责读取用户输入、拼接对话上下文(history_context)、调用Runner.run()执行 Agent,并处理CAI_MAX_TURNS轮次上限、CAI_PARALLEL并行实例等运行时逻辑。
启动后最有效的学习方式是直接下达任务,例如让 CAI 执行一次针对认证系统的安全检查。原文档提供了对应的演示视频,你可以按同样的步骤从启动工具一路走到运行第一个 AI 驱动的安全任务。
二、环境变量全景:控制 CAI 行为的 20+ 个开关
CAI 通过环境变量来配置几乎所有的运行行为。下表完整列出了快速入门文档中的变量清单,并补充了源码(src/cai/cli.py 顶部模块文档与 src/cai/repl/commands/config.py 中的ENV_VARS定义)确认的默认值与可选值:
| 变量 | 说明 |
|---|---|
CTF_NAME | 要运行的 CTF 挑战名称(如"picoctf_static_flag") |
CTF_CHALLENGE | CTF 内的具体子挑战名(如CTF_NAME="kiddoctf"包含 4 个子挑战,运行其中之一:"01 linux i") |
CTF_SUBNET | CTF 容器的网络子网(默认192.168.3.0/24) |
CTF_IP | CTF 容器的 IP 地址(默认192.168.3.100) |
CTF_INSIDE | 是否在容器内部攻克 CTF(默认true) |
CAI_MODEL | Agent 使用的模型(默认alias1) |
CAI_DEBUG | 调试输出级别:0仅显示工具输出,1详细调试输出,2CLI 调试输出(默认1) |
CAI_BRIEF | 启用/禁用精简输出模式(默认false) |
CAI_MAX_TURNS | Agent 交互的最大轮数(默认inf,即不限) |
CAI_TRACING | 启用/禁用 OpenTelemetry 追踪(默认true) |
CAI_AGENT_TYPE | 指定使用的 Agent(默认one_tool_agent;如boot2root、redteam_agent等,可用/agent命令列出全部) |
CAI_PRICE_LIMIT | 会话的价格上限,单位美元(默认1) |
CAI_WORKSPACE | 工作区名称(影响日志文件命名) |
CAI_GUARDRAILS | 启用/禁用提示注入防护的 guardrails(默认true) |
在 src/cai/repl/commands/config.py 的ENV_VARS注册表中,还可以看到快速入门未列出的扩展变量,供深入使用时参考:
| 变量 | 说明(含默认值) |
|---|---|
CAI_STATE | 启用状态化模式(默认false),开启后 Agent 会用状态 Agent 追踪网络状态与已发现 flag |
CAI_MEMORY | 记忆模式:episodic(情景记忆)、semantic(语义记忆)、all(两者并用),默认false |
CAI_MEMORY_ONLINE/CAI_MEMORY_OFFLINE | 在线/离线记忆开关(默认false) |
CAI_MEMORY_ONLINE_INTERVAL | 在线记忆更新的轮次间隔(默认5) |
CAI_ENV_CONTEXT | 是否将目录与当前环境加入 LLM 上下文(默认true) |
CAI_SUPPORT_MODEL | 支持 Agent 使用的模型(默认o3-mini) |
CAI_SUPPORT_INTERVAL | 支持 Agent 执行的轮次间隔(默认5) |
CAI_STREAM | 是否以实时分块流式输出(默认false) |
CAI_TELEMETRY | 是否上传遥测数据(默认true) |
CAI_PARALLEL | 并行运行的 Agent 实例数(默认1,大于 1 时同屏展示所有结果) |
CAI_REPORT | 报告模式(扩展):ctf(CTF 解决报告,默认)、nis2、pentesting |
提示:
CAI_GUARDRAILS在 config.py 注册表中对应编号26,CAI_PRICE_LIMIT对应编号18,这与快速入门文档及 src/cai/cli.py 中"/config set 26 false"的提示完全一致。
三、三种配置环境变量的方式
快速入门文档给出了三种互相等价、可灵活组合的配置手段,以下逐一展开。
1. 使用.env文件(推荐,持久化)
在启动目录放置.env文件,CAI 会自动加载。值得注意的是,src/cai/cli.py 在导入任何其他模块之前就调用load_dotenv(override=True),且.env的优先级高于系统环境变量,因此这是最可靠的配置来源:
# 在 .env 文件中添加任意环境变量 CAI_PRICE_LIMIT="0.004" CAI_MODEL="qwen2.5:72b"2. 命令行参数(单次会话)
直接在启动命令前以键值对形式传入,适合临时覆盖:
CAI_PRICE_LIMIT="0.004" CAI_MODEL="qwen2.5:72b" cai3. 运行时/config配置(不重启生效)
进入 CAI 后输入/config,会以 Rich 表格形式展示全部环境变量及当前值、默认值。根据第一列的数字编号执行set即可热更新:
cai /config # 显示包含所有环境变量的面板,取第一列的引用编号 # 例如 18 对应 CAI_PRICE_LIMIT /config set 18 "0.004"/config的实现细节(src/cai/repl/commands/config.py)值得留意:
- 支持子命令
list(列全部)、get <number>(查单个)、set <number> <value>(改单个); ConfigCommand._add_agent_model_vars()会为每个已注册 Agent 动态追加CAI_<AGENT>_MODEL覆盖变量,并行模式(CAI_PARALLEL > 1)下还会追加CAI_<AGENT>_<N>_MODEL实例级覆盖变量;- 主循环 run_cai_cli() 每轮都会重新读取
CAI_MAX_TURNS,若运行时调大上限,会解除之前的“仅允许 CLI 命令”锁定状态,提示Turn limit increased. You can now continue using CAI.
结合cli.py的用法示例,可以组合出典型的真实场景:
# 针对 CTF 运行(指定挑战、Agent 与模型,关闭追踪) CTF_NAME="kiddoctf" CTF_CHALLENGE="02 linux ii" \ CAI_AGENT_TYPE="one_tool_agent" CAI_MODEL="alias1" \ CAI_TRACING="false" cai # 开启在线情景记忆:每 5 轮注册一次记忆,成本上限 5 美元 CTF_NAME="hackableII" CAI_MEMORY="episodic" \ CAI_MODEL="alias1" CAI_MEMORY_ONLINE="True" \ CTF_INSIDE="False" CTF_HINTS="False" \ CAI_PRICE_LIMIT="5" cai四、--continue自主模式:让 Agent 不停机地完成任务
CAI 最强大的特性之一是--continue自主模式:Agent 在原本会停下等待用户输入的位置,自动生成智能续接指令,持续工作直至任务完成或被中断。
基本用法
# 让 CAI 连续讲安全笑话 cai --continue --prompt "tell me a joke about security" # 运行自主安全审计 cai --continue --prompt "perform security audit of authentication system" # 自动寻找漏洞 cai --continue --prompt "find SQL injection vulnerabilities"启用--continue后,CAI 会:
- 每一轮结束后分析对话上下文;
- 生成智能化的续接提示(
Auto-continuing with: ...); - 持续工作,直到任务完成或被
Ctrl+C中断。
工作原理解读
续接系统在 Agent 完成一轮后,会综合分析以下信号来决定下一步动作(详细机制参见 docs/continue_mode.md):
- 原始请求:用户最初下达的任务;
- 对话历史:最近的用户消息与 Agent 回复;
- 工具使用:使用了哪些工具及其输出;
- 错误状态:遇到的错误类型;
- 任务进度:当前完成度。
随后系统使用配置的模型生成上下文感知的续接提示,例如:
# 系统构建的上下文摘要示意 context_summary = """ ORIGINAL TASK: Tell me a joke about security CONVERSATION FLOW: User: Tell me a joke about security Agent: Why did the hacker break up with their password? Because it wasn't strong enough! CURRENT STATUS: - Last action: Told a cybersecurity joke - Tools used: None - Errors: No Generate a specific continuation prompt... """当主模型不可用时,系统还内置了基于上下文的智能回退(fallback)策略,部分典型映射如下:
| 场景 | 回退续接提示 |
|---|---|
| 讲完安全笑话 | "Tell another cybersecurity joke or pun." |
| 文件未找到 | "Search for the correct file path or create the missing resource." |
| 搜索完成 | "Examine the search results in detail and investigate the most relevant findings." |
| 安全分析 | "Analyze the code for security vulnerabilities like injection flaws or authentication issues." |
| 权限被拒 | "Check permissions and try accessing the resource with appropriate credentials." |
终止与防失控机制
系统通过以下规则判断是否停止:
- 完成指示:Agent 明确说出 "completed"、"finished"、"done" 时停止;
- 活跃工作检测:仍有工具调用进行时继续;
- 错误恢复:尝试自动解决错误;
- 任务进度:评估原始目标是否已达成。
若担心无限循环,可以组合CAI_MAX_TURNS限制轮数:
# 在代码集成中使用 max_turns 限制 run_cai_cli( starting_agent=agent, initial_prompt="analyze security", continue_mode=True, max_turns=10 # 限制为 10 轮 )五、自主模式的典型实战场景
1. 自动化安全审计
cai --continue --prompt "perform a security audit of the authentication system"Agent 会依次:搜索认证相关文件 → 分析代码漏洞 → 检查常见安全问题 → 生成综合报告。
2. 持续漏洞狩猎
cai --continue --prompt "find and document all XSS vulnerabilities"Agent 会:搜索用户输入处理代码 → 识别潜在 XSS 向量 → 记录发现 → 给出修复建议。
3. 扩展代码分析(OWASP Top 10)
cai --continue --prompt "analyze this codebase for OWASP Top 10 vulnerabilities"Agent 会系统性逐类检查漏洞类型,直至全部覆盖。
4. 与 Session Resume 组合:断点续跑
--continue可与--resume无缝配合,让中断的会话自主恢复(详见 docs/session_resume.md):
# 恢复上次会话并继续自主工作 cai --resume --continue # 恢复指定会话并继续 cai --resume abc12345 --continue # 从交互选择器恢复并继续 cai --resume list --continue该组合的能力链条是:恢复完整对话历史 → 基于上次停点自动生成续接提示 → 无需人工输入持续工作。
六、与--continue配套的模型与功能配置
模型与密钥
# 为续接生成指定不同模型 export CAI_MODEL=gpt-4 cai --continue --prompt "analyze this code" # 设置主模型失败时的回退模型 export CAI_CONTINUATION_FALLBACK_MODEL=gpt-3.5-turbo cai --continue --prompt "test application security" # 为自定义模型配置 API 密钥 export ALIAS_API_KEY=your-api-key cai --continue --prompt "perform penetration testing"与其他 CAI 特性组合
# 指定特定 Agent 进入自主模式 CAI_AGENT_TYPE=bug_bounter_agent cai --continue --prompt "test example.com" # 设置工作区便于文件操作 CAI_WORKSPACE=project1 cai --continue --prompt "audit all Python files" # 开启流式输出,实时监控进度 CAI_STREAM=true cai --continue --prompt "monitor security events"七、可运行的示例脚本
仓库提供了两个开箱即用的示例,展示如何以编程方式驱动--continue:
- examples/continue_mode_jokes.py:演示连续讲安全笑话,包含
Ctrl+C优雅中断与输出高亮; - examples/continue_mode_security_audit.py:演示自主漏洞扫描,会创建含 SQL 注入、命令注入、路径穿越、硬编码凭据的示例文件,让 CAI 连续审计直至发现多处问题,并在结束后自动清理。
运行方式:
python examples/continue_mode_jokes.py python examples/continue_mode_security_audit.py从实现看,两个脚本均通过subprocess.Popen以python src/cai/cli.py --continue --prompt "..."的方式调用 CLI,并逐行读取输出、统计Auto-continuing with:续接次数,展示了自主模式在无人值守场景下的完整调用链。
八、最佳实践与故障排查
编写高质量的初始提示
# 好——具体、可执行 cai --continue --prompt "find SQL injection vulnerabilities in user.py" # 差——过于模糊 cai --continue --prompt "check security"监控与限流
- 定期检查输出,确保方向正确;
- 需要停止时使用
Ctrl+C; - 查看
logs/last符号链接指向的会话日志(该链接由 run_cai_cli() 在退出时自动创建)获取详细执行历史。
常见问题
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| 续接提示总是泛化文本(如 "Continue working on the task based on your previous findings") | 模型配置错误或 API 密钥失效 | 检查模型配置与密钥有效性,查看调试日志中的 API 错误 |
| 续接未触发,Agent 一轮即停 | Agent 明说任务 "completed/done"、无工具调用、续接模块报错 | 使用更开放式的初始提示;检查日志中的完成指示;确认--continue已正确传入 |
| 无限循环,反复做同一件事 | 任务定义过宽或模型陷入循环 | 设置max_turns上限;改用更具体的初始提示;Ctrl+C中断后细化任务 |
九、结语
从cai一条命令启动交互式终端,到通过.env/ 命令行 //config三路配置环境变量,再到用--continue把 CAI 变成可无人值守的自主安全助手——快速入门文档覆盖的正是 CAI 日常使用中最核心的路径。结合 src/cai/cli.py 的主循环实现、src/cai/repl/commands/config.py 的变量注册表以及 examples 目录下的可运行示例,你可以在此基础上进一步探索 CAI PRO 特性、完整命令参考 与 自主模式详解,将 CAI 深度接入自己的安全研究与漏洞挖掘工作流。
【免费下载链接】caiCybersecurity AI (CAI), the framework for AI Security项目地址: https://gitcode.com/GitHub_Trending/cai3/cai
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考