免
免疫式内容扫描
作者:鹿Sir通用技能v1
混合自适应记忆系统,包含「速查表」(正向策略,生成前注入)与「免疫」(负向抗体,生成后扫描)两层记忆,支持冷热分级、多领域识别与自动学习,可检测已知错误模式并发现新威胁。当用户要求「扫描错误」「质量扫描」「检查输出质量」「模式检测」「内容体检」时触发。不适用于常规代码审查或仓库安全审计。
下载量
430
点赞
105
价格
免费
技能文档
---
name: mathews-tom-immune
title: 免疫式内容扫描
description: 混合自适应记忆系统,包含「速查表」(正向策略,生成前注入)与「免疫」(负向抗体,生成后扫描)两层记忆,支持冷热分级、多领域识别与自动学习,可检测已知错误模式并发现新威胁。当用户要求「扫描错误」「质量扫描」「检查输出质量」「模式检测」「内容体检」时触发。不适用于常规代码审查或仓库安全审计。
category: 通用技能
---
# 免疫系统 v3 —— 速查表 + 免疫混合记忆
本技能运行一套混合自适应系统,包含两层互补记忆:
- **速查表(Cheatsheet,正向模式)**:领域专属策略,在生成**之前**注入以提升输出质量
- **免疫(Immune,负向模式)**:抗体,在生成**之后**检测已知错误并发现新威胁
两层记忆均采用冷/热(Hot/Cold)分级,保持上下文精简。
## 输入解析
用户发起扫描时,解析以下参数:
- **input**:要扫描的文本/代码/内容(必填,可内联提供或取自上下文)
- **domain**:可选 fitness、code、writing、research、strategy、webdesign、`_global`(默认自动识别)
- **domains**:领域数组,覆盖单个 domain。示例:`domains=fitness,code`
- **constraints**:输出需满足的特定要求(可选)
- **mode**:`full`(速查表 + 扫描,默认)| `scan-only`(跳过速查表)| `cheatsheet-only`(只返回速查表)
<examples>
<example>
检查这个函数有没有常见坑
→ domains=["code"](自动识别),mode=full
</example>
<example>
domain=fitness 检查这份力量训练计划
→ domains=["fitness"](显式指定)
</example>
<example>
domains=fitness,code 检查这个训练计划生成接口
→ 多领域扫描
</example>
<example>
不带内容直接发起扫描
→ 扫描对话中最近一次实质性输出
</example>
</examples>
未提供内联文本时,扫描对话中最近一次实质性输出。
**领域自动识别:** 读取 `config.yaml`,将内容与 `domain_keywords` 匹配;无强匹配时使用 `["_global"]`。传入单个 `domain` 字符串时包装为数组:`domains = [domain]`。
## 技能工作流
### 步骤 0:注入速查表(正向模式)
`mode == "scan-only"` 时跳过本步。
1. **加载速查表**:读取本技能目录下的 `cheatsheet_memory.json`
2. **按领域过滤**:保留策略的 `domains` 与检测到的领域有交集、或包含 `_global` 的策略
3. **冷热分级**(与抗体同逻辑):满足任一条件即为 HOT:`effectiveness >= 0.7`;`seen_count >= 3`;`last_seen` 距今不足 30 天
4. **限制 HOT 数量**:按 effectiveness 降序、seen_count 降序排序,最多保留 **15** 条(`config.yaml` → `cheatsheet.max_hot`)
5. **组装速查表块**:将 HOT 策略格式化为:
```xml
<cheatsheet domain="{domains}">
<strategy id="{id}" effectiveness="{effectiveness}">
{pattern}
示例:{example}
</strategy>
...
</cheatsheet>
```
存在 COLD 策略时追加一行:
```xml
<cheatsheet_cold>另可考虑:{逗号分隔的 COLD 策略关键词}</cheatsheet_cold>
```
`mode == "cheatsheet-only"` 时输出速查表块后即结束。
日志:`[IMMUNE] Cheatsheet: {n_hot} 条 HOT + {n_cold} 条 COLD(领域:{domains})`
### 步骤 1:加载抗体并分级(冷/热)
读取 `immune_memory.json` 与 `config.yaml`。
1. **按领域过滤**:保留与检测领域有交集或含 `_global` 的抗体。兼容旧格式:字段为字符串 `domain` 时视为 `domains = [domain]`
2. **分级**:满足任一条件即为 HOT:`severity == "critical"`;`seen_count >= 3`;`last_seen` 距今不足 30 天
3. **限制 HOT 数量**:按严重度(critical > warning > info)、seen_count 降序排序,最多保留 **15** 条(`config.yaml` → `tiers.hot.max_per_scan`),溢出归入 COLD
4. **生成 COLD 摘要**:为每条 COLD 抗体从 `pattern` 提取一个短语关键词,逗号连接。示例:`"SQL 事务、肌腱炎、debug 开关、同义反复"`
日志:`[IMMUNE] Tier split: {n_hot} HOT + {n_cold} COLD / 共 {total} 条(领域:{domains})`
### 步骤 2:执行扫描
使用 `agents/immune-scan.md` 中定义的扫描提示词执行扫描,请求使用以下 XML 结构:
```xml
<scan_request>
<domains>{检测到的领域 JSON 数组}</domains>
<task>{任务描述,或「扫描以下内容中的错误与威胁」}</task>
<constraints>{constraints 或 "none"}</constraints>
<content>
{待扫描的文本/代码/内容}
</content>
<hot_antibodies>
{HOT 抗体 JSON 数组——完整对象,含 id、domains、pattern、severity、correction}
</hot_antibodies>
<cold_summary>
休眠模式(仅作知晓,不给详情):{逗号分隔的 COLD 关键词}
</cold_summary>
<cheatsheet_applied>
{步骤 0 注入的策略 ID 与 pattern 列表;scan-only 模式为 "none"}
</cheatsheet_applied>
</scan_request>
```
日志:`[IMMUNE] Scanning...({n_hot} 条活跃抗体)`,等待扫描结果。
- 应用修正时记录:`[IMMUNE] Match {antibody_id}: {original} → {corrected}`
- 发现新威胁时记录:`[IMMUNE] New threat: {pattern}`
- 发现新策略时记录:`[IMMUNE] New strategy: {pattern}`
### 步骤 3:更新免疫记忆(含 COLD 去重)
读取当前 `immune_memory.json`。
1. **命中的 HOT 抗体**:`seen_count` 加 1,`last_seen` 更新为今天
2. **新威胁与 COLD 去重**:对扫描结果中每个新威胁:
- 与全部 COLD 抗体做模糊匹配(同领域 + 关键词相近)
- **命中 COLD 抗体** → 复活:该抗体 `seen_count` 加 1、`last_seen` 更新为今天,记录 `[IMMUNE] Reactivated COLD antibody {id}: {pattern}`,**不新建抗体**(防重复)
- **无匹配** 且 `auto_add_threats` 为 true → 新建抗体:id 为 `AB-{下一序号}`;domains 取自威胁的 `recommended_antibody.domains`(数组);pattern、severity、correction 取自 `recommended_antibody`;seen_count 为 1;first_seen、last_seen 为今天;记录 `[IMMUNE] + New antibody {id}: {pattern}`
3. **更新统计**:`stats.outputs_checked` 加 1;`stats.issues_caught` 加上修正数 + 新威胁数;`stats.antibodies_total` 更新为当前抗体总数
写回 `immune_memory.json`。
### 步骤 3b:更新速查表记忆(正向模式)
`mode == "scan-only"` 或扫描结果无 `new_strategies_detected` 时跳过。
1. **去重强化**:新策略与全部既有策略模糊匹配(领域重叠 + pattern 相近):
- **命中** → 强化:`seen_count` 加 1、`last_seen` 更新为今天,效果值按指数移动平均调整:`new_eff = old_eff × 0.8 + reported_eff × 0.2`
- **无匹配** 且 `auto_add_strategies` 为 true → 新建策略:id 为 `{prefix}-{下一序号}`(prefix 取自 `config.yaml` → `cheatsheet.id_prefix.{domain}`);效果值缺省用 `cheatsheet.default_effectiveness`
2. **清理低效策略**:`effectiveness < cheatsheet.min_effectiveness` 且 `seen_count >= 5` 的策略删除
3. **更新统计**:`stats.outputs_assisted` 加 1;`stats.strategies_applied` 加上实际使用的策略数;`stats.strategies_total` 更新
写回 `cheatsheet_memory.json`。
### 步骤 4:输出结果
**无问题时:**
```
───
IMMUNE v3 | 领域={domains} | 状态:CLEAN
速查表:应用 {n_strategies} 条策略 | 抗体:{n_hot}/{max} 条 HOT,{n_cold} 条 COLD
未发现问题
───
```
**有修正或威胁时:**
```
───
IMMUNE v3 | 领域={domains} | 状态:{CORRECTED|FLAGGED}
已应用修正:
[AB-XXX] {pattern} → {correction}
发现新威胁:
[{severity}] {pattern} —— {suggested_correction}
复活抗体:
[AB-XXX] {pattern}(原 COLD,现转 HOT)
新学到的策略:
[CS-XXX] {pattern}(效果值:{effectiveness})
───
修正后输出:
{修正后的内容,按领域适当排版}
───
记忆:{total_ab} 条抗体 + {total_cs} 条策略 | +{new_ab} AB | +{new_cs} CS
───
```
随后以适合该领域的易读格式呈现修正后的输出。
## 异常处理
- `immune_memory.json` 不存在:创建 `{"version": 3, "antibodies": [], "stats": {"outputs_checked": 0, "issues_caught": 0, "antibodies_total": 0}}`
- `cheatsheet_memory.json` 不存在:创建 `{"version": 3, "strategies": [], "stats": {"outputs_assisted": 0, "strategies_applied": 0, "strategies_total": 0}}`
- `immune_memory.json` 为 `"version": 2`:自动迁移——把每个抗体的 `"domain"` 转为 `"domains": ["原值"]`,版本号置 3,立即写回
- 扫描返回非法 JSON:重试一次;仍失败则带警告输出原始结果
- 无输入且无最近输出:询问用户要扫描什么
- 全部抗体均为 COLD:仍发送扫描,`hot_antibodies` 为空数组并附完整 `cold_summary`,扫描流程仍可发现新威胁使用说明
# 免疫式内容扫描 混合自适应记忆系统:生成前注入「速查表」正向策略,生成后用「免疫抗体」扫描已知错误并发现新威胁。支持冷热分级记忆、多领域自动识别与自动学习,越用越准。 ## 使用场景 - 发布前检查文案、代码、研究内容的已知错误模式 - 积累各领域的优质策略与踩坑经验 - 对输出质量做例行体检 ## 用法示例 ```text 扫描这段输出有没有已知问题 检查这个函数有没有常见坑 domains=fitness,code 体检这份训练计划生成接口 ``` 记忆保存在 immune_memory.json(负向)与 cheatsheet_memory.json(正向),可跨会话复用。 ## 配置 config.yaml 支持调整冷热分级阈值、HOT 上限、领域关键词与自动学习开关。
支持平台:Qoder · QoderWork · Claude · Codex 等 AI 编程助手