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

# 把生产流量变成训练数据

> 把部署的真实流量变成它下一版的训练数据

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
sf model ls                    # 找到这个部署对应的模型
```

Reflow 是从一个部署的生产流量回到它下一版训练数据的受治理路径。
你按部署打开采集，让缓冲区填满，从中挖掘候选，再把通过审核的部分推广成一个数据集版本。

它闭合的是平台原本留着的那个开口：数据进去、模型出来、模型在服务——
而它从服务中学到的东西，哪也没去。

<Warning>
  被采集的是真实用户输入，是这个平台会持有的最敏感的数据。
  采集默认关闭，直到有人打开它；打开的人会被记录，设置的每一次改动都进审计。
</Warning>

## 它的形状

```text theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
流量 → 回流缓冲区 → 挖掘 → 候选集 → [ 你来 Promote ] → 数据集版本
        （会过期）          （被替换）    （审计）          （不可变）
```

**只有最后一步不可逆。** 之前的每一步要么过期要么被覆盖——正因如此，在采样、脱敏、挖掘上出错才是可承受的。

## 开启

部署详情 → **生产回流** 页。

| 设置    | 含义                                                                   |
| ----- | -------------------------------------------------------------------- |
| 采样率   | `0` 表示关闭，也是所有地方的默认值。采样在请求发出前就定，未被采中的请求不产生任何开销                        |
| 保留天数  | 默认 30 天。到期即真删除，没有归档层                                                 |
| 系统提示词 | 默认捕获。它往往是你自己的 prompt 工程，也是这里最敏感的字段——不捕获会让记录对训练更弱，因为模型行为条件于一段记录里没有的文本 |

缓冲区字节计入所有者的存储配额。**配额优先于保留期**：超了就从最旧的缓冲文件开始提前回收，并计数。共享盘写满会让整个集群停训。

### 永不捕获的东西

任何请求头（所以 `Authorization` 不可能误入）；部署 Token 本身（只留它的 id，那是单个部署内部的租户边界）；以及 chat completions 之外的一切。

### 脱敏

掩码在**任何东西落盘之前**完成——在持久化之后跑的不叫脱敏，叫过滤。默认规则包覆盖邮箱、手机号（中国大陆与 E.164）、美国 SSN、中国大陆身份证、疑似银行卡号、疑似密钥串。它带版本号，且版本盖在每条记录上，这样事后能查清哪批记录是用哪套规则洗的。

它**刻意偏向多掩码**。代码样例里的长十六进制会被当成疑似密钥掩掉，代价是训练样本略差；反过来的错误是把客户凭据留在语料里。

## 挖掘难例

缓冲区里有用的那一半很小，而且不是平均请求。挖掘挑出值得再训一轮的：

| 信号      | 含义                                             |
| ------- | ---------------------------------------------- |
| 请求失败    | 最便宜的标记                                         |
| 回答被截断   | 撞上长度上限，说明没答完                                   |
| 工具调用不合法 | 参数不是合法 JSON，或调用了请求未声明的工具                       |
| 用户重发    | 几分钟后又发了同样的问题。**这个判断是客户已经替你做完的**                |
| 评分过低    | 用你指定的 rubric 给免费信号没标出来的打分。**只有这一条会消耗裁判 token** |

挖掘会替换掉上一次的候选集；它是一份工作建议，不是台账。

## Promote

选中候选、指定目标数据集、提升。三道检查，全部 fail-closed：

* **可见性**。部署只对它的所有者和管理员可见，所以唯一不构成提权的目标是**该所有者自己的 private 数据集**——包括已经存在的那些。提升进公开数据集等于把你用户的流量公开给平台上每一个账号；管理员可以这么做，审计记录会写明。
* **污染**。点名要对照的评测集，或者显式声明跳过检查。这个选择会记进版本的溯源，因为\*\*「没查过」和「查过且干净」事后不能看起来一样\*\*。生产流量与评测集重合是常态——那个评测集多半就是从同一个分布里造的。
* **非空**。一个存在、可被引用、却什么也教不了的版本，比没有这个版本更糟。

<Note>
  污染估算用的是 13-gram、1/64 抽样的指纹。少量短 prompt 的 Promote 切不出足够的 n-gram，估算就没有意义——这种情况会报**证据不足**，而不是当作通过。
</Note>

## 看整个环

模型 → 展开某个模型 → **数据飞轮**。它展示一个版本的完整链条：数据来源、训练 run、评测裁决、在线服务与捕获量、以及回流成的数据集。

「已闭环」的判定**刻意从严**：捕获流量不算闭环，挖掘也不算。只有流量变成了别人能拿去训练的数据集才算。
