360 Secure SkillHub
360 安全技能中心

verify

该 Skill 提供验证 invest-a-stock/etf CLI 的运行时配方:用 launcher 覆盖 DB 路径并自检、种入快照数据,再驱动 sector-flow 和 collect-sector-flow 观察输出、跳过逻辑与错误路径。

分类:开发
Veblin
热度 0.00
最近更新 2026-10-19 07:38:56

安装

发给 Agent
帮我安装这个技能:npx secure-skills-cli add veblin/invest-skills/verify
兼容性
通用兼容
联网要求
联网要求未确认
数据出网
数据出网未确认
Metadata
name
verify
description
运行时验证 invest-a-stock/etf/journal CLI — 隔离 DB 驱动真实命令行(store._db_override + runpy launcher)

Verify — invest CLI 运行时观察

Handle(关键配方)

lib.store 的 DB 路径是硬编码 ~/.local/share/investment/research.db,无环境变量。 CLI 验证必须隔离:写一个 launcher 脚本,先 import invest-a-stock 的 lib.store、 设 store_mod._db_override = <tmp db>,再用 runpy.run_path(etf.py, run_name="__main__") 执行真实 CLI。脚本模板(已验证可用的路径设置顺序):

import os, runpy, sys
from pathlib import Path
CODE = Path("/Users/veblin/Study/claude-bigA-financial/code")
sys.path.insert(0, str(CODE / "skills/invest-a-stock/scripts"))   # lib 包 = invest-a-stock
from lib import store as store_mod
store_mod._db_override = Path(os.environ["SF_VERIFY_DB"])
# P0-2 自检:override 未生效必须立即失败——静默写真实库曾造成
# collections 记录被外部进程删除/污染(2026-08-23 现场:session 内
# #48/#53/#54 消失,总行数 55→52)。
assert store_mod._get_path() == Path(os.environ["SF_VERIFY_DB"]), (
    "store override 未生效,禁止继续(会写真实 research.db)"
)
sys.argv = ["etf.py"] + sys.argv[1:]
runpy.run_path(str(CODE / "skills/invest-a-etf/scripts/etf.py"), run_name="__main__")

种数据:同 launcher 方式设 override,import sector_flow(insert scripts/lib 到 sys.path), 调真实 save_sector_flow_snapshot 逐日种快照。注意不要种未来日期——MAX(date) 是 C5 全等检测的比对基线,未来日期会让当天 collect 永远不跳过(首次驱动时的坑)。

值得驱动的流

  • sector-flow <symbol> 人读表格 + --json:跨度标注(trend_span_days ≠7 → 「跨度 N 日」)、 缺失行业 note、趋势标签(净额近零/近端归零/金额量级小)
  • collect-sector-flow 连跑两次:首次 360 行写入 → 二次全等跳过(note 区分 「非交易日(日历判定)」vs「疑似盘前未刷新」);⚠ 映射自检 drift 计数(约 51 个正常)
  • 错误路径:非法 symbol(exit 2)、未映射 ETF(exit 0 + ⏳ note)

坑

  • akshare 进度条在 stderr;CLI 观察加 2>/dev/null
  • uv run python 启动 launcher(依赖在 .venv)
  • 真实 DB(~/.local/share/investment/research.db)含用户历史数据,只读观察可以, 写操作(collect)一律走隔离 DB