> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qoder.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 代码安全

> Qoder 代码安全审查，将代码安全嵌入到开发流程，支持三层渐进式扫描，一键快捷修复，让每行代码提交即安全。

AI 让开发者写代码的速度翻倍，也让攻击者挖漏洞、用漏洞的速度翻倍。传统安全扫描出现在流程末端、误报多、又讲不清"问题从哪来"。**Qoder 代码安全把发现与修复的时机前移到每一行代码写下的当下**——检测出风险的同时给出修复建议，由主 Agent 自动落地修复，你只需审阅最终改动。

## 核心能力

* **大模型驱动：** 模型不再靠正则匹配"看起来像漏洞的形状"，而是读懂代码本身——一个字段是不是攻击者可控、一次调用是否真的到达危险汇聚点、团队自研的工具方法是否真的防住了。
* **多 Agent 交叉验证：** 每个结论都会经过多个 Agent 从不同角度反复质疑、相互印证再呈现给你，用以压低误报、稳住召回。
* **分层设计：** 编码时跑快检查，任务收尾时做语义级增量扫描，推送前做跨文件数据流分析，一条命令即可发起整仓审计。

## 三层如何协同

安全与速度常常相悖：扫得深就慢，扫得快就浅。分层设计的意义在于把不同强度的检测放到不同时机上——**该快的时候快、该深的时候深**。

| 层级       | 面向                  | 强度        | 触发时机       |
| -------- | ------------------- | --------- | ---------- |
| 静态检查（L1） | 本轮任务生成的代码           | 模式匹配，几乎无感 | 编码过程中自动执行  |
| 轻量扫描（L2） | 增量代码                | 语义理解，仅看增量 | 推荐在任务收尾时执行 |
| 深度扫描（L3） | 增量代码，跨文件、跨函数追踪完整数据流 | 跨文件数据流分析  | 推荐在推送前执行   |

从边写代码边挡，到改动后即时复查，再到推送前的深度审查、按需的整仓扫描——安全成为长在每一次敲键盘、每一次提交里的默认能力。

## 打开代码安全

1. 打开 Qoder，进入 **设置**。
2. 左侧导航选择 **安全**。
3. 在 **扫描层级** 下确认 **静态检查（L1）**、**轻量扫描（L2）**、**深度扫描（L3）** 三个开关的状态。

## Credits 预估

L2 / L3 扫描会消耗 Credits，Credits 耗尽后扫描会被阻塞；L1 静态检查免费。额度与计费详情见 [Credits](/Credits)。

参考消耗（基于内部测试数据统计，具体受到代码逻辑复杂度、漏洞数量等多重因素影响，以实际消耗为准）：

* **轻量扫描（L2）**：约 5 个 Qoder Credit / 500 行代码
* **深度扫描（L3）**：约 20 个 Qoder Credit / 500 行代码

## 分层扫描

### 静态检查（L1）

**面向本轮任务生成的代码。** 基于高危模式匹配，即时发现危险函数调用等常见风险并自动修复。

* **触发时机**：会话中每一次代码写入动作后自动执行，无需手动触发，也无需任何确认。
* **反馈形式**：命中信息在当前会话流中就地展示。结果会直接回流到会话上下文，由模型在下一轮改动里处理。
* **适用场景**：日常的 AI 生成代码流程。模型可能悄悄用上 `eval()`、把真实密钥写入配置——L1 是常开的底线，用来避免这些"一眼可疑"的写法真正落到文件里。

### 轻量扫描（L2）

**面向增量代码。** 深入理解代码语义，精准识别 SQL 注入、远程命令执行、敏感信息泄露等安全风险。

* **触发时机**：推荐在单个编码任务快完成时扫描，Qoder 会在会话流中适时推荐：

  > **扫一扫，检测代码安全隐患**

  点击后自动填充：

  ```
  /security-scan 帮我执行轻量扫描
  ```

  你也可以自己敲这条命令，或者用自然语言描述（如"帮我做一次轻量扫描"、"检查一下这段改动有没有风险"）。不想扫直接忽略卡片即可，其余流程不受影响。
* **原理示例**：一段刚写好的代码把请求参数直接拼进要执行的系统命令。L2 会同时读懂"这个参数用户可控"和"这个调用真的会执行命令"，从而判定命令注入——正则扫描器搭不起这两点之间的桥。
* **反馈形式**：问题位置、风险描述、修复建议在会话中直接展示，右侧 **审查** 面板同步呈现改动。
* **适用场景**：抓改动收尾时的风险——刚拼好的 SQL 字符串、刚传给 shell 的请求参数、悄悄写进配置的 API Key。

### 深度扫描（L3）

**面向增量代码，跨文件、跨函数追踪完整数据流。** 挖掘单文件视角看不到的隐藏关联漏洞，分析更全面。

* **触发时机**：通常在提交 / 推送前由模型决定推荐执行。当识别到推送意图时，会先弹出一张询问卡片，确认是否做一次安全扫描；若你已明确要扫描，则直接执行，不再询问。
* **其他入口**：Quest 窗口的 **提交** 下拉菜单，L3 开启时会显示 **扫描并推送** 入口——点击自动填充 `/security-scan 帮我执行深度扫描并推送`。
* **原理示例**：一个外部参数跨文件流向 SQL 拼接，中途经过团队自研的净化函数，L3 会读进该方法的实现，发现它只过滤了单引号，而参数拼进的是 `order by` 子句——在这个位置单引号过滤不起作用，于是判定注入依然成立。
* **反馈形式**：扫描结果在会话流中展示，具体形式由模型决定，通常包含风险级别、位置、说明与修复建议；必要时会跟一张询问卡片，由 Agent 落地修复，或跳过。
* **适用场景**：代码离开本机前的最后一道关。L3 擅长处理"单文件看是安全的、连起来才有问题"的那一类——穿过自研净化函数的 SQL 注入链路、跨越编解码边界的路径穿越、要跨好几个文件才成立的污点传播。

## 全量扫描

**面向整仓审计。** 在聊天里把两个斜杠命令串起来用—— `/security-scan` 跑扫描，`/canvas` 把结果渲染成可视化报告：

```
/security-scan 跑一次全量扫描 /canvas 生成可视化安全报告
```

<Note>
  全量扫描面向整仓运行，耗时与 Credits 消耗都可能较大；单次 `/security-scan` 最多支持 1 万行代码，超过请按目录或提交区间拆分。
</Note>

Qoder 会遍历仓库，生成一份 **可视化安全扫描报告**（Canvas 产物）——像其他 Quest 输出一样从聊天中直接打开。

一个典型的报告可能包含扫描状态头（目标、完成时间、修复状态）、Findings summary 表格（Severity / Title / CWE·OWASP / Location），以及每条问题的描述、涉及代码与修复指引。

## 主动扫描

除了自动触发和全量扫描，你也可以随时自己发起一次范围更窄的扫描。

* **斜杠命令**：在聊天里输入 `/security-scan` 并描述需求，例如：

  ```
  /security-scan 帮我执行轻量扫描
  /security-scan 帮我执行深度扫描并推送
  /security-scan 扫描 src/api 目录
  /security-scan 扫描最近 3 个提交
  ```
* **自然语言**：如"帮我做代码安全扫描"、"检查代码是否有风险"、"帮我执行深度扫描"、"扫描 mydir 目录下的文件"——Agent 会将这些表述映射到对应的范围和层级。
