← 归档索引 · 2026-10-08 23:21 · 信号纵向跟踪+反馈闭环-23:15(原23:30并入·2合1)
# Cron Job: 信号纵向跟踪-每日23:15

**Job ID:** c85cc7fd1251
**Run Time:** 2026-10-08 23:21:20
**Schedule:** 15 23 * * 1-5

**Prompt Characters:** 8578
## Prompt

[IMPORTANT: The user has invoked the "script-output-integrity" skill, indicating they want you to follow its instructions. The full skill content is loaded below.]

---
name: script-output-integrity
description: 消费预跑脚本注入的数据时加载。先判数据真假再分析,识别假成功/降级/空段并标注完整度。
version: 1.0.0
author: Hermes Agent
license: MIT
category: fugui
tags: [data-integrity, silent-failure, consumer-side, cron]
metadata:
  hermes:
    tags: [data-integrity, silent-failure, consumer-side, cron]
    related_skills: [silent-failure-defense, pan-gan-signals]
---

# 消费脚本输出 —— 先判真假,再分析

> 面向**读**注入数据的人(分析 cron),不是**写**脚本的人。
> 建造侧(怎么写不产生假成功)看 `silent-failure-defense`。

## When to Use

```
□ prompt / 上下文里出现「预跑脚本输出」「Script Output」「以下数据由预跑脚本采集」
□ 要用脚本采集的数据做判断、写报告
□ 某段数据看起来"有内容"但可疑(一行字样、空段、括号里的说明)
```

## 铁律:数据段先过完整性,再进入分析

**禁止把「缺失/降级」当作「正常数据」分析。** 缺失要标注,不要脑补。

### 识别清单(按严重度)

| 形态 | 真实含义 | 动作 |
|---|---|---|
| `xxx.sh: timeout` | **该段根本没跑**(不是"超时所以没数据")。典型是 `timeout N cd` 类缺陷 | 该段判为【零数据】,禁用其做主力判断 |
| `failed to run command '...'` | 内建命令被 timeout 包住 → 整段从未执行 | 同上 |
| `Traceback` / `ModuleNotFoundError` | 该段完全不可用 | 同上 |
| `❌<名> 失败(rc=N)` | 该段采集失败(已诚实上报) | 标注缺失,相关结论降级 |
| `(xxx不可用)` / `[超时]` / `数据采集失败` | 降级标记,段落内容为空 | 标注缺失 |
| `[SILENT]` | 无内容(合法语义:无异常/无新增) | 不要当数据,也不要当错误 |
| 空段 / 只有标题 | 采集为空 | 标注缺失 |
| 接口**无报错返回空 DataFrame** | 路由瞬时降级(非"今天无数据") | 重试一次再定性;仍空 → 判缺失 |

> 实测(2026-09-28 12:05):`data_hub.get_realtime_quotes(8 codes)` 一次返回 0 行**且不抛异常**,同一批码 30 秒后重跑全部正常 → 是瞬时静默降级。
> 判据:**空/无异常 ≠ 无数据;先重试,再定性**。消费侧把"空"当"没有"会导致整段结论凭空消失。

### 必须做的三件事

```
1. 报告开头标注完整度:「数据完整度: N/M 段可用」,缺失段逐条列名
2. 缺失段对应的结论 → 标注「基于间接推理 / 置信度降级」,不得伪装成实测
3. 禁止:用缺失段当论据;用"数据暂缺"当结论;脑补缺失段的内容
```

### 反面案例(实测,2026-09-11)

```
## Script Output
【午间扫描 | 2026-09-11 12:00】
midday_scan.sh: timeout        ← 整块市场数据就是这一行假的
【心法扫描 | 2026-09-11 12:00】
════ Phase 0: 板块主力方向 ════
```

该报告被连续数周当成正常午间分析发出,AI 拿着这行假消息当市场数据做判断。
**根因:消费侧没有"先判真假"这一步。**

### 一句话判据

**看到数据段,先问「这段是真的吗」,再问「这段说明什么」。**
顺序反了,后面全废。

The user has provided the following instruction alongside the skill invocation: [IMPORTANT: You are running as a scheduled cron job. DELIVERY: Your final response will be automatically delivered to the user — do NOT use send_message or try to deliver the output yourself. Just produce your report/output as your final response and the system handles the rest. SILENT: If there is genuinely nothing new to report, respond with exactly "[SILENT]" (nothing else) to suppress delivery. [SILENT] is a literal ASCII control token — never translate or rephrase it, whatever language the rest of your answer uses. Never combine [SILENT] with content — either report your findings normally, or say [SILENT] and nothing more. FAILURE: If a delegated child fails and this cron run must be recorded as failed, put [CRON_FAILURE] on the first line by itself, then explain the child failure on following lines. RECURSION: This is a run of an EXISTING scheduled job — execute the task now. NEVER create or update a cron job because of recurring or future-schedule language in the task prompt below; treat phrasing like "each Monday" or "every day at 9" as context for this run, not as a request to schedule another job.]

## Output from job 'bc9b3ca8cc33'
The following is the most recent output from a preceding cron job. Use it as context for your analysis.

```
# 富贵复盘·判断层 2026-10-08

**① 大盘定性:下跌态,空方循环确认。** 科创50 -4.82%领跌,创业板-3.15%,深成-2.07%,上证-0.79%靠电力/银行扛。量能0.89x缩量下跌=没人接盘,闸门关闭,环境评分13.3。与昨日比:破位延续,防御板块(电力+2.78%、银行+1.97%)吸金,科技全线失血——资金方向明确从AI生态撤向防守。

**② 主线:旧主线心法高分但盘面背离,警惕。** 心法榜光纤光缆98/光模块97/PCB94,可收盘扫描通信光纤-4.61%、AI光模块-4.55%、芯片-5.37%——**心法分是酝酿期口径,今日量价是出货口径,背离本身就是信号**:主线在高位换手,不是启动。新萌芽无(收扫描最强全是防御)。

**③ 机会轨(先说机会):** 光通信板块内强弱已分化——长飞光纤留存+3.67%强承接,新易盛仅+1.52%。跌市中资金留存率就是主力态度,长飞是板块内唯一"跌得少=有人管"样本。

**④ 明日验证(3条):**
1. 深成指不破12620今收 → 缩量企稳可试探;放量再破 → 闸门继续关,仓上限30%不动。
2. 长飞光纤若逆势收红且量不放大 → 承接确认,纳入观察池;随板块补跌留存转负 → 证伪,光通信整体按出货对待。
3. 电力/银行若补跌 → 恐慌未释放完;若续强 → 资金防守延续,不做进攻。

**风险轨:** 空方循环下不追反弹、不接芯片飞刀(-5.37%未止跌)。🎯一言:主线心法与盘面背离日,防守为主,只盯长飞一个承接样本。
```

## Output from job 'e710af0bbd73'
The following is the most recent output from a preceding cron job. Use it as context for your analysis.

```
# 🚨 晚间21:30扫描失败报告 · 2026-10-08

## 结论先行
今晚 4 步里 **[1] 步 rc=1、[4] 步里"产业链动态扫描"整段崩溃**,共 2 处失败。**其余数据全绿**(daily/daily_basic 5557条、top_list 74、涨跌停79/19、北向4条、板块/情绪/HMM/龙头/轮动各段均正常产出)。两处都是**存量老病,不是今晚新出的**。

---

## 失败①:产业链动态扫描 → AttributeError(核心失败)

**现象**:`chain_definition_card.py` 抛 `AttributeError: 'DataHub' object has no attribute 'smart_select'`,链A(AI产业链)+链B(创新药)整段没了,AI判断层少了一个标注"必引用"的数据段。

**根因(我跑了验证)**:
- 调用点 `chain_definition_card.py:182` → `hub.smart_select(query)`
- 实测(venv python):`hasattr(hub,'smart_select') = False`、`hasattr(hub,'select_stocks') = True`
- `smart_select` **只存在于废树** `~/stock/data_hub.py:2211`(iFinD主→mx备);而 `stock_workspace/data_hub.py` 是软链 → 规范版 `~/.hermes/scripts/data_hub.py`,那里只有 `select_stocks`(2747行,纯mx路由),**规范库从未有过 smart_select**(`git log -S 'def smart_select'` 零命中)
- 一句话:**脚本写给废树 API,底座已换成规范库 → 接口断链**

**存活时间**:10/06、10/08 两晚日志都有同一行 Traceback(1005日志无该段)→ **已连续带病 ≥3 天**。影响面:全库仅此 1 个调用方。

**半静默风险**:`evening_master_scan.sh:46` 用 `CHAIN=$(... 2>&1)` 捕获,Traceback 被打进报告但 **step4 退出码仍=0**,所以总 rc 没红——只在文本里可见,容易被当成"格式噪音"刷过去。

**修复方案(未执行,前端只读值班)**:
- 方案A(1行+适配):改调 `hub.select_stocks()`,但 mx 返回裸 `resp.json()`(`{"error":...}` 或 MX包),与脚本期待的 `{ok,source,data}` **形状不匹配**,`_smart_select_stocks` 的解析要一起适配
- 方案B(推荐):把废树的 `smart_select()` 移植进规范 `data_hub.py`(iFinD search_stocks 主 → mx stock_select 备,返回 `{ok,source,data}`)——保住 iFinD 路由,且与脚本 docstring 声明一致

---

## 失败②:tushare盘后数据采集 rc=1 —— 已知"狼来了"

**根因**:`data_hub.get_moneyflow_by_date` 已按老板 10/05 口径**硬禁用**(data_hub.py:218「资金流数据已禁用→改用 kpv_judge」),必然返回空 → `night_batch_collect._collect_moneyflow` 落 `status=empty` → `evening_2130_scan.py:31` 把它算进 `bad` → 恒 `return 1`。

**这行告警 10/06 已被诊断过并写明**:「只要不禁用口径,此后**每晚恒 rc=1** → 真失败会被狼来了淹没」(证据:`/tmp/evening_2130_20261005.log`、`..._1006.log`、`..._1008.log` 三晚同一行)。**至今未修,第3晚**。

**修复建议**:把 moneyflow 从"必绿名单"摘掉(标记 `status=disabled` 不计入 `bad`),让 rc=1 只代表真失败。

---

## 顺带发现(不阻塞)
- `judgment_extract(v3)` 不认今晚报告格式 → 0条入台账(脚本自报"待实现v4抽取器")
- `judgment_extract`/两融 `margin no data in 7d` 属数据源空窗,非管道故障

## 修什么就修什么(待你点头,不加戏)
1. 移植 `smart_select` 到规范 data_hub(或改链脚本+形状适配)→ 恢复产业链段
2. moneyflow 退出"必绿名单" → 让 rc=1 重新有意义
改完各跑一次 `evening_2130_scan.py` / `chain_definition_card.py scan --top 1` 验证 rc=0。
```

## Script Output
The following data was collected by a pre-run script. Use it as context for your analysis.

```
=== 信号纵向跟踪 ===
验证/回填: 85条
更新70条
信号总数: 98 | 已完整验证(T+20齐): 13 | 跟踪中(未到T+20): 85

          类型   数量    T+5命中    T+5均值
----------------------------------------
    breakout    9  1/9=11%    -5.2%
      launch   28 8/10=80%    +5.7%
  pre_launch   61 21/35=60%    +5.1%

最近信号:
  2026-10-06 恒烁股份(688416.SH) T5=- -
  2026-10-06 德明利(001309.SZ) T5=- -
  2026-10-06 东芯股份(688110.SH) T5=- -
  2026-10-06 普冉股份(688766.SH) T5=- -
  2026-10-06 普冉股份(688766.SH) T5=- -
  2026-10-06 兆易创新(603986.SH) T5=- -
  2026-10-06 赢时胜(300377.SZ) T5=- -
  2026-10-06 长飞光纤(601869.SH) T5=- -
信号纵向跟踪报告
============================================================
总计: 196只 | 命中(T+5>2%): 42只 命中率21% | 平均T+5=-1.8%

来源                     数量    命中率    平均T+5   平均T+20
--------------------------------------------------
  dragon_preselect     98    24%    -0.9%  —(无T+20)
  low_launch           75    15%    -3.7%  —(无T+20)
  pre_launch           19    32%    +1.1%    +7.3%
  launch                3    33%    -0.7%    +0.3%
  breakout              1     0%    -4.0%   -11.7%

板块                 数量    命中率    平均T+5
----------------------------------------
  半导体              41    39%    -0.3%
  未知               23    30%    +0.6%
  生物制药             16    12%    -4.9%
  汽车配件             13     8%    -2.8%
  火力发电             12     8%    -4.8%
  元器件              10    20%    -4.7%
  电器仪表             10    30%    +1.0%
  塑料                9    33%    +0.1%
  玻璃                7    29%    +2.2%
  IT设备              7    14%    -3.3%
=== 参数反馈 ===
{
  "pre_launch": {
    "hit_rate": 31.6,
    "count": 19,
    "avg_t5": 1.09
  },
  "launch": {
    "hit_rate": 33.3,
    "count": 3,
    "avg_t5": -0.7
  },
  "breakout": {
    "hit_rate": 0.0,
    "count": 1,
    "avg_t5": -4.04
  },
  "dragon_preselect": {
    "hit_rate": 24.5,
    "count": 98,
    "avg_t5": -0.9
  },
  "low_launch": {
    "hit_rate": 14.7,
    "count": 75,
    "avg_t5": -3.74
  }
}
```

信号纵向跟踪:1) signal_feedback.db 渐进验证(缺T+20的行持续回填,未到T+20不提前落标);2) 更新 signal_track.json 所有信号的 T+1/T+3/T+5/T+10/T+20 快照;3) 输出 signal_feedback.db 类型命中率报告(阈值统一2%);4) 有已完成信号时输出各来源/板块命中率与参数反馈(low_launch/dragon_preselect 来源,数据齐了自然出现,无数据不硬凑)。

**Response Characters:** 1413
## Response

# 富贵·信号纵向跟踪报告 2026-10-08

**数据完整度: 4/4 段可用(已对库复核)**
- 复核方式:直读 signal_feedback.db + signal_track.json 与注入输出逐项比对 —— 98总/13已验证(T+20齐)/85跟踪中、196 done/42命中/均值-1.8%、各类型与来源分桶数字**全部与库内实值一致**,无空段、无降级标记、无timeout行。
- 一个小提示:10-06起的113条新信号快照全为空,这是**正常的**(国庆休市后今天10-08才是首个交易日,T+1尚未到),不是采集失败。

## ① 总体:池子是负期望,只有 pre_launch 一条线在赚钱

- 全池 196 只已到T+5:命中(T+5>2%) 42只 = **21%**,平均T+5 **-1.8%**。
- 分来源(数据源=扫描器):

| 来源 | n | 命中率 | 均T+5 | 均T+20 |
|---|---|---|---|---|
| pre_launch | 19 | 32% | +1.1% | **+7.3%**(n=11) |
| dragon_preselect | 98 | 24% | -0.9% | 无数据 |
| low_launch | 75 | **15%** | **-3.7%** | 无数据 |
| launch/breakout | 4 | — | — | 个位数不统计 |

- 分信号类型(feedback.db,K线诊断口径):pre_launch 60%(n=35) +5.1%、launch 80%(n=10) +5.7%、**breakout 11%(n=9) -5.2%**。

## ② 三个可操作判断

1. **low_launch 是主要亏损源**:75只、命中15%、均-3.7%,样本够大不是噪声。参数反馈给出的就是收紧信号——低启动扫描在9月下跌市里大面积失效,建议提高准入门槛或环境闸门联动(大盘下跌态直接停发)。
2. **breakout 双口径都差**(track 0/1、feedback 1/9=-5.2%),样本小但方向一致,暂按"不产生正贡献"对待,不加仓依据。
3. **pre_launch 是唯一有 T+20 正收益的来源(+7.3%,n=11)**,与 feedback.db 类型口径(60%/+5.1%)互相印证——两个独立口径同向,这条线的可信度最高,可作为优先跟踪对象。

## ③ 口径与局限(不掩盖)
- 两套口径不可直接横比:feedback.db 是池内K线诊断信号(launch 80%那格 n=10),track 是扫描器来源信号(launch 33% n=3)——**同名不同源**,不是矛盾。
- T+20 覆盖仅 13/98(8月入场的才有),dragon_preselect/low_launch 全部无T+20 → 中期结论置信度降级,只有 T+5 证据。
- 板块表里"未知"23只占30%,板块维度结论降级使用。
- 命中率受9月下跌环境压制,环境修复后需重估——不把弱市命中率当信号永久质量。

🎯 一言:**砍 low_launch、弃 breakout、跟 pre_launch**;T+20 数据齐(10月下旬)前,中期结论全部标注置信度不足。