@v587d/capital-generation 2.15.0 → 2.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,115 @@
7
7
  - **第三位(patch)**:不破坏既有工具 / 配置 / 会话的新增与修复(如 2.1.1、2.1.2)。
8
8
  - **第二位(minor)**:有需要用户知晓的行为变更,且段内附迁移说明(如 2.1.0 的图表呈现通道重做、2.2.0 的数据源与检索来源扩容、2.4.0 的**必须换宿主版本**、2.9.0 的选择器收敛与质检前置——本插件自己的工具与数据契约没变,所以只抬第二位)。
9
9
 
10
+ ## [2.15.1] - 2026-11-02
11
+
12
+ 内置任务模板从三个扩到十六个:三份旧指令重写为「主体 / 覆盖范围 / 什么算做完」,新增 08:00 的
13
+ 盘前公告补上晚间披露,盘后公告更名为当日公告(仍 16:00),每日复盘改为以自选股为主体;同时
14
+ 补上港美股收盘与盘前、午间快照、组合周报与风险月报、自选股周检、行业周报、研究选题、财报
15
+ 跟踪、下周事件日历与市场周报,并新增「组合」「监控」两个分类。数据纪律、分类输出结构与无人
16
+ 值守策略仍由 preset / runner 提供,模板不再复制,也不点名工具。同一版修正了图表时间轴按 UTC
17
+ 显示、A 股日 K 日期早一天的问题,并把调度器待命从任务通知里拆出来,改到页面底部「系统状态」,
18
+ 任务通知只留任务事件。
19
+
20
+ ### Added
21
+
22
+ - **盘前公告(08:00)**:补齐 16:00 之后到开盘前的晚间披露。覆盖上一交易日收盘后至运行时刻
23
+ 已披露的公告,先逐只过自选股(含已标持仓),再补权重股、行业龙头与政策相关的非自选股;
24
+ 逐条写标的、事项、关键数字、对基本面或交易的影响与开盘后要验证的点,按「开盘前必看 /
25
+ 只需知晓」两级排成清单;只写公告,不复述隔夜外盘与大盘行情,取不到写「未取到」。
26
+ - **午间快照(交易日 11:35)**:上午收盘的指数、两市成交额、涨跌家数与涨跌停、领涨领跌板块,
27
+ 自选股逐只写上午涨跌、量能与异动,加上午间已披露的公告与下午要验证的 2–3 个点;盘中数据
28
+ 可能延迟,注明采集时间,只写上午与午间。
29
+ - **美股收盘(周二至周六 07:00)**:三大指数与费半、利率与美元、原油与黄金,自选股里的美股
30
+ 与中概逐只写涨跌、量能与盘后异动,再给财报指引、宏观数据与对 A/H 的映射(只给条件)。
31
+ 按北京时间周二至周六触发,对应美股周一至周五收盘;美股休市直接说明。
32
+ - **美股盘前(周一至周五 20:30)**:今晚开盘前已知的财报与指引、宏观数据与事件、亚洲时段
33
+ 消息,以及自选股里的美股/中概动态,给出今晚最该盯的 3 件事。行情数据源不透出盘前盘后报价,
34
+ 模板明确要求盘前价格与期货取不到就写「未取到」,不拿昨收冒充盘前价。
35
+ - **港股收盘(交易日 16:30)**:恒生指数、恒生科技与国企指数,南向资金、成交与涨跌家数,
36
+ 自选股里的港股逐只写涨跌与异动,再给 AH 溢价与同日 A 股联动里的偏离。
37
+ - **组合周报(每周六 10:00)**:只认用户标记的持仓与自报权重,逐只写本周涨跌、成交与事件,
38
+ 再给单票 / 行业 / 市场 / 币种集中度、同向暴露与最大风险;没有标记就说明无法做组合层计算。
39
+ - **组合风险月报(每月最后一天 20:30)**:月度检查集中度、流动性、同向暴露与事件风险,有
40
+ 可靠数据才做简单情景或波动测算,数据不足标「未评估」,不填 0 也不称「安全」。
41
+ - **自选股周检(每周六 14:00)**:逐只过自选股,按「需要立刻准备 / 继续跟踪 / 可以移出」
42
+ 分级,理由看催化剂、流动性、重复暴露与证据是否还够,并写下一步该补什么。
43
+ - **行业周报(每周六 20:00)**:按可核实的行业/主题分类列本周领涨领跌、成交与资金集中度,
44
+ 解释驱动并点出自选股集中的行业与领涨方向的重合或偏离;市场周报只给板块轮动的一句话结论,
45
+ 行业与主题的细账不重复。
46
+ - **研究选题(每周日 14:00)**:从自选股与本周市场主线里挑 3 个最值得深挖的标的或主题,
47
+ 写清为什么是现在、核心问题、需要的证据与先做哪几步核查,不写成完整研报。
48
+ - **财报跟踪(每周日 16:00)**:过去一周已披露财报的营收、利润、毛利率与指引预期差、一次性
49
+ 项目与会计口径变化,加上未来两周的财报预约、一致预期与要盯的指标;没有财报就说明下一次
50
+ 披露窗口,不硬凑。
51
+ - **下周事件日历(每周日 18:00)**:自选股的财报预约、解禁、股东大会、分红与停复牌,加上
52
+ 宏观数据、重要会议与政策窗口,逐条写时间、影响与要提前准备什么。
53
+ - **市场周报(每周日 20:00)**:指数与量能、涨跌家数与风格、板块轮动的一句话结论、北向与
54
+ 两融、ETF 申赎等资金口径,给出市场状态、下周关键位与最大风险。
55
+ - **新增「组合」与「监控」分类**:`portfolio` 只处理标记持仓的组合层问题,`monitor` 负责清单
56
+ 与日历维护;服务端分类枚举、`/meta` 能力清单、页面筛选与标签、分类图标与配色同步。
57
+
58
+ ### Fixed
59
+
60
+ - **投研自动化的上限一直保存失败**:保存路径写在了 `automation` 这一层容器上,而设置服务只接受逐个可编辑字段,所有写入都被拒绝(界面提示「没有保存成功」)。改成逐字段保存后,改完失焦即生效。
61
+ - **图表时间轴按北京时间显示**:时间轴的 epoch 刻度与十字线此前交给库按 UTC 格式化,A 股日 K 的日期会比实际业务日早一天;现在统一按 Asia/Shanghai 格式化(日 K 显示 `MM-dd`,分钟线显示 `HH:mm`),纯日期串仍原样显示。无时区的 `YYYY-MM-DD HH:MM[:SS]` 改按北京时间墙钟解释,`range` 的 date-only 边界按本地日历日计、`to` 含当日 23:59:59;已生成的图不变,重新出图即按新口径。
62
+
63
+ ### Changed
64
+
65
+ - **插件设置拆出独立的「投研自动化」格**:原来压在「数据源」底部的检查间隔、最长运行时间、空闲超时、
66
+ 步骤与工具调用上限、通知开关,整组移到与「数据源」「精选 Skills」平级的第二格,并按「调度 / 单次
67
+ 运行上限 / 通知」分组;「数据源」只留五把密钥与本机直连回退。上限改成整数输入,清空或越界会在
68
+ 标题右侧点名允许范围(带毫秒 / 分钟 / 步 / 次),失焦后回填已保存值、不写回配置;「调度间隔」
69
+ 「wall-clock」两个内部说法改为「自动检查间隔」「最长运行时间」。范围同步收敛为:最长运行
70
+ 5–120 分钟、空闲 1–30 分钟、步骤 100–2000、工具调用 100–5000;最长运行时间的默认值从 30 分钟
71
+ 提到 60 分钟(午间任务可能跑满半小时);保存失败时的提示改成一句人话「没有保存成功,请再试一次」。
72
+ 已保存的值不受影响,调度与运行上限仍是任务级设置优先。
73
+ - **通用设置里的运行上限成为未单独设置任务的默认值**:内置模板或自定义任务没有单独改过上限时,
74
+ 直接跟随「投研自动化」里的值,改通用设置会同步生效;任务高级设置里改过的值仍然优先,把某项改回
75
+ 与通用值相同就恢复跟随。新建任务表单也以通用值为初始值。
76
+ - **盘后公告 → 当日公告(仍 16:00)**:改名避免「盘后」被读成当晚公告已出齐。指令与交付不变:
77
+ 截至运行时刻的当日已披露公告、次日复核清单、信息截止与待披露的已知事项。
78
+ - **早间资讯(08:30)**:开头先列今早最该知道的 3 件事,再逐档覆盖隔夜外盘、大宗商品与汇率,
79
+ 国内外宏观、政策与监管,自选股(含已标持仓)从昨收至今的新闻、异动与昨夜公告中会改变开盘
80
+ 判断的部分,以及今日披露、解禁、股东大会、数据与会议日程。每档必须有结论:确实没有写「无」,
81
+ 取不到写「未取到」并说明缺哪一块;自选股逐只过,没有新信息的并成一句。公告明细交给盘前公告,
82
+ 早间只留会影响开盘判断的那几条。
83
+ - **每日复盘(20:00)**:指令改为以自选股(含已标持仓)为主体,逐只写当天有变化的标的
84
+ (价格、量能、公告或消息)、驱动与风险信号,按「需优先复核 / 继续跟踪」分级;指数、量能
85
+ 与板块轮动只作解释个股的背景,明日观察条件要落到具体标的与触发点。
86
+ - 内置指令不再点名 `get_watchlist` 一类工具或角色:运行固定在自动模式,工具面由 preset 与
87
+ 运行期决定,写死工具名反而会在换实现时失效。
88
+ - **任务通知只留任务事件**:`scheduler_standby` 不再写通知记录(旧实现会按 10 分钟一条刷屏,
89
+ 并在 200 条上限下挤掉真实运行失败);页面底部新增「系统状态」展示定时调度与交易日历的当前
90
+ 状态、最近一次中断及折叠的技术原因,调度待命与租约失效不再进任务收件箱。
91
+ - **通知 API 增加 `scope`**:`GET /notifications?scope=task|system|all` 与
92
+ `POST /notifications/read` 的 `scope` 默认 `task`;未读计数与「全部已读」默认只处理任务事件,
93
+ `scope=system` 只用于诊断查看旧 `scheduler_standby` 记录。
94
+ - **通知开关联动**:关闭「写入任务通知」后,失败/成功两个开关置灰,避免看起来还会通知;
95
+ 调度与日历的 banner、通知文案改成「当前窗口没有定时调度权」「暂时无法确认交易日」等
96
+ 可操作的说法。
97
+
98
+ ### Migration
99
+
100
+ - 已添加的内置任务若没改过标题或指令,下一次读取就用新文案;自己改过的保留,想回到新版模板
101
+ 可在任务详情点「休眠并恢复默认」。盘后公告改名为当日公告只改默认标题,任务 id 与运行记录不变。
102
+ - 新增的十三个模板默认是未添加状态,需要在模板区点「添加」后才会按各自日程运行;只想用原来的
103
+ 三个交易日任务就不必添加。
104
+ - 当日公告仍是 16:00;单独改过触发时间的不受影响。16:00 时当日披露窗口尚未结束,模板会标注
105
+ 信息截止与待披露部分,晚间披露由次日 08:00 的盘前公告收口;想一次看全当日公告,可把
106
+ 当日公告时间改到 21:00 前后。
107
+ - 周末 / 月末模板用固定本地星期与月末触发,不受 A 股交易日历影响(周五休市也不会整周跳过);
108
+ 美股收盘按北京时间周二至周六 07:00、美股盘前按周一至周五 20:30 触发,对应美股的收盘与
109
+ 开盘时间。
110
+ - 美股盘前不承诺盘前报价:数据源不透出盘前盘后行情,模板只写有来源的盘前财报、宏观事件与
111
+ 消息;需要盘前价格时以券商或交易所页面为准。
112
+ - 投研自动化的步骤 / 工具调用下限抬到 100、工具调用上限收到 5000:profile 里已保存的越界值
113
+ 不会报错,运行期按新边界生效,之后可在「插件 → Capital Generation → 投研自动化」里重新填写。
114
+ - 最长运行时间的 60 分钟只是新默认值:profile 里已经保存过 30 分钟的保持 30,想延长到 60 可在
115
+ 「插件 → Capital Generation → 投研自动化」里直接改,区间仍是 5–120 分钟。
116
+ - 以前保存过任务上限的任务(内置模板覆盖或自定义任务)保留原值,不会自动跟随通用设置;在该任务
117
+ 的高级设置里把上限改成与通用值相同即可恢复跟随。
118
+
10
119
  ## [2.15.0] - 2026-10-31
11
120
 
12
121
  宿主基线从 `0.2.1-rc.3` 抬到 `0.2.1-rc.5`;同时修掉互动易问答列表的时间列解析——站点在提问与
package/README.md CHANGED
@@ -18,7 +18,7 @@
18
18
  <p align="center">
19
19
  <a href="https://awesome-dsh-plugin.com"><img src="https://awesome-dsh-plugin.com/badge.svg" alt="awesome · DSH plugin"></a>
20
20
  <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green" alt="License"></a>
21
- <a href="https://github.com/v587d/capital-generation/releases"><img src="https://img.shields.io/badge/version-2.15.0-9cf" alt="Version"></a>
21
+ <a href="https://github.com/v587d/capital-generation/releases"><img src="https://img.shields.io/badge/version-2.15.1-9cf" alt="Version"></a>
22
22
  <a href="https://www.npmjs.com/package/@v587d/capital-generation"><img src="https://img.shields.io/npm/v/%40v587d%2Fcapital-generation" alt="npm version"></a>
23
23
  <a href="https://github.com/deepseek-ai/deepseek-harness"><img src="https://img.shields.io/badge/powered_by-dsh-4D6BFE?style=flat-square&logo=deepseek&logoColor=white" alt="powered-by-dsh"></a>
24
24
  </p>
@@ -183,25 +183,20 @@ Capital Generation 是运行在 [DeepSeek Harness(DSH)](https://github.com/d
183
183
  | [Quant Agent Skills](https://github.com/Howard-Jerry/quant-agent-skills) | 1 个跨市场选线 Skill:同一家公司在 A 股与港股、或美股 ADR 与港股各有一条线时该走哪一条——价差、币种与股息税、流动性与通道、披露文件路径各不相同。公司本身只研究一次,便宜的那条线不构成"这家公司更值得买";A/H 溢价与 ADR 平价没有现成条目,须按两条线同一天的收盘价与当日汇率现算,缺任一项就只报缺的那一项 |
184
184
 
185
185
  <a id="capgen-automation" name="capgen-automation"></a>
186
- - **CapGen 投研自动化:** 内置早间资讯、盘后公告与每日复盘三个模板,也可新建自己的任务;到点自动新建 session 执行,也能手动运行。任务、运行历史与失败通知在同一页,支持运行预算、通知和仅交易日触发。
186
+ - **CapGen 投研自动化:** 内置 16 个模板(默认未添加,按需添加),覆盖资讯、行情、复盘、研究、组合与监控:交易日有盘前公告(08:00)、早间资讯(08:30)、午间快照(11:35)、当日公告(16:00)、港股收盘(16:30)与每日复盘(20:00),另有美股收盘(周二至周六 07:00)、美股盘前(周一至周五 20:30)、组合周报、自选股周检、行业周报、研究选题、财报跟踪、下周事件日历、市场周报与组合风险月报;也可新建自己的任务,并从 30 个图标里挑一个;内置模板也有各自的固定图标。到点自动新建 session 执行,也能手动运行。任务、运行历史与任务通知在同一页,支持运行预算、通知和仅交易日触发。
187
187
 
188
188
  <p align="center">
189
189
  <a href="assets/capgen-automation-tasks.png">
190
190
  <img src="assets/capgen-automation-tasks.png" alt="投研自动化:任务、日程与运行概览" width="800">
191
191
  </a>
192
192
  </p>
193
- <p align="center">
194
- <a href="assets/capgen-automation-runs.png">
195
- <img src="assets/capgen-automation-runs.png" alt="投研自动化:运行历史与错误详情" width="800">
196
- </a>
197
- </p>
198
193
 
199
194
  ## 常见问题
200
195
 
201
196
  - **安装后找不到模式?** 确认插件出现在「插件」→ 已安装列表;Web / CLI profile 安装后要重启该 profile,并在新会话选择模式。选择器里应看到自动模式、行情专家、资讯专员;分析师和绘图专员是自动模式的内部角色,不会出现在这里。
202
- - **配置在哪?** 打开「插件」→ 已安装的 **Capital Generation**,页面顶部就是「数据源 / 精选 Skills / 包含的组件」三格,五把密钥都在第一格;不在 DSH 的普通「设置」页面,也不用点进任何一行组件。保存密钥后新建会话再试。
197
+ - **配置在哪?** 打开「插件」→ 已安装的 **Capital Generation**,页面顶部就是「数据源 / 投研自动化 / 精选 Skills / 包含的组件」四格,五把密钥都在第一格,自动检查间隔与最长运行时间等上限在第二格;不在 DSH 的普通「设置」页面,也不用点进任何一行组件。保存密钥后新建会话再试。
203
198
  - **升级到 2.9.0 后,分析师和绘图专员去哪了?** 这一版把它们收进自动模式内部,不再出现在选择器与预设管理里,避免误开一个没有取数入口的空会话。旧会话仍能按原身份恢复;新任务直接用自动模式提出即可。
204
- - **桌面端升级后仍是旧版?** 桌面端安装时会固定所解析的版本,不会自动升级。卸载后重新安装,再到插件详情查看版本号;如需指定版本,可在地址末尾加 `#v2.15.0` 或 `@2.15.0`。
199
+ - **桌面端升级后仍是旧版?** 桌面端安装时会固定所解析的版本,不会自动升级。卸载后重新安装,再到插件详情查看版本号;如需指定版本,可在地址末尾加 `#v2.15.1` 或 `@2.15.1`。
205
200
  - **刚发布的新版本装不到?** 桌面端取包时会跳过**刚发布不久**的版本(宿主侧包管理器的发布冷却策略,实测会静默装成上一个版本),国内镜像的同步也可能滞后一段时间。急着用最新代码,改用仓库地址安装最直接。
206
201
  - **网页抓取失败?** 配置卡片中的「允许启动本地提取网页内容」默认开启:AnySearch 提取失败时可尝试本机直连。关闭后,本机直连的具名来源查询也不可用;请检查该开关和网络连接。
207
202
  - **Wind 那部分会消耗积分?** 会。公告与新闻检索、宏观 / 行业 / 汇率指标、按日期区间取的历史 K 线都按次消耗你在 Wind 侧的额度;额度与条款以 Wind 为准,插件不做用量封顶。没配 `WIND_API_KEY` 时这几类不可用,其余功能照常。
@@ -10,6 +10,7 @@
10
10
  | 组件 | 作者 | 许可证 | 原始仓库 | 许可文本 | 可选 Skill / 快照内共 | 用在哪里 |
11
11
  |---|---|---|---|---|---|---|
12
12
  | Lightweight Charts™ 5.2.1(standalone 构建) | TradingView | Apache-2.0 | <https://github.com/tradingview/lightweight-charts> | `lib/chart/vendor/LICENSE` | — | 插件内所有可交互图表的渲染层;`VERSION.json` 记有该构建的 sha256,归属标识(attribution logo)保持开启,出图产物页脚打印版本与许可。同一份副本又被 tree-shake 链接进图表卡片的客户端 bundle,那份里不再单独带许可文件——以 vendor 目录这份为准 |
13
+ | Tabler Icons(30 个 outline 图标,固定快照 `ed177a0`;只取路径几何,颜色与描边改为继承瓦片) | Paweł Kuna 与 Tabler 贡献者 | MIT | <https://github.com/tabler/tabler-icons> | `automation/TABLER-ICONS-LICENSE` | — | 投研自动化 16 个内置任务模板的固定图标,以及自定义任务可选的 30 个图标目录;模板/目录 id 与上游图标名的对照见 `automation/task-icons.js` 的 `source` 字段 |
13
14
  | Investment Skills Lexicon(`7235d34`,固定快照;路由段改写为纯 Markdown 映射) | finterm.ai | MIT | <https://github.com/finterm-ai/investment-skills> | `selected-skills/investment-skills/LICENSE` | 1 / 1 | 「精选 Skills」中的 `buffett-investment-framework` |
14
15
  | China Stock Research Skills(`d49f1f3`,固定快照;共享的 source-registry 取数阶梯改写为证据类型口径) | spikeHongg | MIT | <https://github.com/spikeHongg/china-stock-research-skills> | `selected-skills/china-stock-research-skills/LICENSE` | 6 / 6 | 「精选 Skills」中的六颗 A 股研究 Skill:`financial-health`、`risk-warning-catalysts`、`valuation-investment-strategy`、`strategy-business-transition`、`industry-competition-moat`、`business-decomposition-order-quality`;上游的 orchestrator 不收录,已从本仓删除 |
15
16
  | InvestSkill(`c3f2a17`,固定快照;补 `name` 字段 + 28 颗的取数口径改写,分析正文未改) | yennanliu | MIT | <https://github.com/yennanliu/InvestSkill> | `selected-skills/InvestSkill/LICENSE` | 28 / 28 | 「精选 Skills」中的 28 个美股 Skill(`fact-check`、`bear-case`、`10k-digest`、`stock-valuation`、`risk-stress-test`、`tax-lens` 等);另六颗(编排、报告输出口、自带出图、三颗 alias 残片)不收录,已从本仓删除 |
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2020-2026 Paweł Kuna
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -32,11 +32,62 @@ const SCHEDULE_COMMON = {
32
32
  tradingDaysOnly: true,
33
33
  }
34
34
 
35
+ /** Weekend/weekly tasks do not consult the A-share calendar: they run on fixed local days. */
36
+ const WEEKLY_TRIGGER = {
37
+ kind: 'schedule',
38
+ cadence: 'weekly',
39
+ timezone: 'Asia/Shanghai',
40
+ tradingDaysOnly: false,
41
+ }
42
+
43
+ const MONTHLY_TRIGGER = {
44
+ kind: 'schedule',
45
+ cadence: 'monthly',
46
+ timezone: 'Asia/Shanghai',
47
+ tradingDaysOnly: false,
48
+ }
49
+
50
+ // Each instruction states the coverage and the deliverable only: the runner owns the category
51
+ // output shape, data discipline and unattended policy, so repeating them here would double the
52
+ // prompt and drift out of sync. Tool names stay out too — auto mode already knows the surface.
35
53
  /** @type {readonly import('./schema.js').BuiltinDefinition[]} */
36
54
  export const BUILTIN_DEFINITIONS = [
55
+ {
56
+ id: 'us-close',
57
+ version: 1,
58
+ category: 'market',
59
+ defaults: {
60
+ state: 'dormant',
61
+ category: 'market',
62
+ title: '美股收盘',
63
+ description: '美股收盘后汇总指数、财报与盘后异动,逐只过自选股里的美股与中概,映射到 A/H 开盘。',
64
+ // 美股周一至周五收盘对应北京时间的周二至周六清晨。
65
+ trigger: { ...WEEKLY_TRIGGER, time: '07:00', weekdays: [2, 3, 4, 5, 6] },
66
+ instruction: '生成美股收盘快报:覆盖上一交易日美股三大指数与费半、关键利率与美元、原油与黄金;自选股(含已标持仓)里的美股与中概逐只写涨跌、量能与盘后异动;再写当日财报与指引、重要宏观数据,以及这些变化对 A 股/港股相关标的的映射(只给条件,不下买卖结论),结尾留 2–3 个开盘后要验证的点。美股休市就直说休市,不补写行情。',
67
+ cwdKind: 'profile',
68
+ limits: { ...DEFAULT_LIMITS },
69
+ notifications: { ...DEFAULT_NOTIFICATIONS },
70
+ },
71
+ },
72
+ {
73
+ id: 'pre-open-filings',
74
+ version: 1,
75
+ category: 'news',
76
+ defaults: {
77
+ state: 'dormant',
78
+ category: 'news',
79
+ title: '盘前公告',
80
+ description: '交易日开盘前汇总上一交易日收盘后至今的公告,筛出自选股与全市场开盘前必须处理的事项。',
81
+ trigger: { ...SCHEDULE_COMMON, time: '08:00' },
82
+ instruction: '生成交易日盘前公告:覆盖上一交易日收盘后至运行时刻已披露的公告,先逐只过自选股(含已标持仓),再补权重股、行业龙头与政策相关的非自选股——业绩预告、重组并购、重大合同、增减持与回购、股权激励、诉讼与风险警示、停复牌、分红。逐条写标的、事项、关键数字(金额/比例/期限)、对基本面或交易的影响与开盘后要验证的点,按「开盘前必看 / 只需知晓」两级排成清单;没有公告的自选股并成一句。只写公告,不复述隔夜外盘与大盘行情;取不到写「未取到」。',
83
+ cwdKind: 'profile',
84
+ limits: { ...DEFAULT_LIMITS },
85
+ notifications: { ...DEFAULT_NOTIFICATIONS },
86
+ },
87
+ },
37
88
  {
38
89
  id: 'morning-brief',
39
- version: 3,
90
+ version: 4,
40
91
  category: 'news',
41
92
  defaults: {
42
93
  state: 'dormant',
@@ -44,7 +95,23 @@ export const BUILTIN_DEFINITIONS = [
44
95
  title: '早间资讯',
45
96
  description: '交易日开盘前汇总隔夜外盘、自选股、重要公告与政策信息,给出当日需要盯住的线索。',
46
97
  trigger: { ...SCHEDULE_COMMON, time: '08:30' },
47
- instruction: '生成一份交易日早间资讯简报,供开盘前阅读。覆盖隔夜外盘、自选股、重要公告与政策信息、当日事件;自选股用 get_watchlist 读取,清单为空或读取失败要分开说明。',
98
+ instruction: '生成交易日早间资讯,供开盘前读完:开头先列今早最该知道的 3 件事,再逐档覆盖隔夜外盘、大宗商品与汇率,国内外宏观、政策与监管,自选股(含已标持仓)从昨收至今的新闻与异动、昨夜公告中会改变开盘判断的部分,今日披露、解禁、股东大会、数据与会议日程。每档都要有结论——确实没有写「无」,取不到写「未取到」并说明缺哪一块;自选股逐只过,没有新信息的并成一句。重大事件写清事实、影响与开盘后要验证什么。',
99
+ cwdKind: 'profile',
100
+ limits: { ...DEFAULT_LIMITS },
101
+ notifications: { ...DEFAULT_NOTIFICATIONS },
102
+ },
103
+ },
104
+ {
105
+ id: 'midday-snapshot',
106
+ version: 1,
107
+ category: 'market',
108
+ defaults: {
109
+ state: 'dormant',
110
+ category: 'market',
111
+ title: '午间快照',
112
+ description: 'A 股午间快照:上午指数、成交、涨跌停与板块,自选股异动与午间公告,下午关注点。',
113
+ trigger: { ...SCHEDULE_COMMON, time: '11:35' },
114
+ instruction: '生成 A 股午间快照:截至 11:35 的上午收盘数据——指数、两市成交额、涨跌家数与涨跌停、领涨领跌板块;自选股(含已标持仓)逐只写上午涨跌、量能与异动,并列出午间已披露的公告;最后给下午要验证的 2–3 个点。盘中数据可能延迟,注明采集时间;只写上午与午间,不重复昨日复盘和早间资讯的内容。',
48
115
  cwdKind: 'profile',
49
116
  limits: { ...DEFAULT_LIMITS },
50
117
  notifications: { ...DEFAULT_NOTIFICATIONS },
@@ -52,15 +119,31 @@ export const BUILTIN_DEFINITIONS = [
52
119
  },
53
120
  {
54
121
  id: 'post-close-filings',
55
- version: 3,
122
+ version: 4,
56
123
  category: 'news',
57
124
  defaults: {
58
125
  state: 'dormant',
59
126
  category: 'news',
60
- title: '盘后公告',
61
- description: '交易日收盘后梳理当日公告与盘面异动,筛出次日需要复核的事项。',
62
- trigger: { ...SCHEDULE_COMMON, time: '18:30' },
63
- instruction: '生成一份交易日盘后公告与异动复盘,筛出次日需要复核的事项。',
127
+ title: '当日公告',
128
+ description: '交易日收盘后梳理截至运行时刻的已披露公告,筛出自选股与全市场次日要复核的事项,并标明信息截止。',
129
+ trigger: { ...SCHEDULE_COMMON, time: '16:00' },
130
+ instruction: '生成当日公告清单:以运行时刻前已公开的当日披露为准,覆盖自选股(含已标持仓)与权重股、行业龙头、政策相关的非自选股,按业绩预告、重组并购、重大合同、增减持与回购、股权激励、诉讼与风险警示、停复牌、分红逐类过一遍。逐条写标的、事项、关键数字(金额/比例/期限)、影响方向与仍需核实的点,按「次日必须处理 / 只需知晓」两级排成复核清单;没有公告的自选股并成一句。写明信息截止时刻,把截止后仍待披露的已知事项单列——别把「暂未披露」写成「没有公告」。',
131
+ cwdKind: 'profile',
132
+ limits: { ...DEFAULT_LIMITS },
133
+ notifications: { ...DEFAULT_NOTIFICATIONS },
134
+ },
135
+ },
136
+ {
137
+ id: 'hk-close',
138
+ version: 1,
139
+ category: 'market',
140
+ defaults: {
141
+ state: 'dormant',
142
+ category: 'market',
143
+ title: '港股收盘',
144
+ description: '港股收盘后汇总指数、南向资金与 AH 溢价,逐只过自选股里的港股,给出明日验证点。',
145
+ trigger: { ...SCHEDULE_COMMON, time: '16:30' },
146
+ instruction: '生成港股收盘快报:覆盖恒生指数、恒生科技与国企指数,南向资金、成交与涨跌家数;自选股(含已标持仓)里的港股逐只写涨跌、量能与异动;再给 AH 溢价与同日 A 股联动里值得注意的偏离,以及明日要验证的 2–3 个点。港股休市就直说休市,不补写行情。',
64
147
  cwdKind: 'profile',
65
148
  limits: { ...DEFAULT_LIMITS },
66
149
  notifications: { ...DEFAULT_NOTIFICATIONS },
@@ -68,15 +151,159 @@ export const BUILTIN_DEFINITIONS = [
68
151
  },
69
152
  {
70
153
  id: 'daily-review',
71
- version: 3,
154
+ version: 4,
72
155
  category: 'review',
73
156
  defaults: {
74
157
  state: 'dormant',
75
158
  category: 'review',
76
159
  title: '每日复盘',
77
- description: '交易日收盘后复盘指数、量能、板块轮动与自选股表现,形成可验证的观察清单。',
160
+ description: '交易日收盘后复盘自选股当日表现与驱动,给出下一交易日的可验证观察条件。',
78
161
  trigger: { ...SCHEDULE_COMMON, time: '20:00' },
79
- instruction: '生成一份交易日复盘,覆盖指数与量能、板块轮动、自选股表现与风险异常。',
162
+ instruction: '生成交易日复盘,主体是自选股(含已标持仓):逐只写当天有变化的标的(价格、量能、公告或消息),交代当日涨跌、相对近 20 日区间的位置、驱动(公告、消息、板块或资金)与风险信号,按「需优先复核 / 继续跟踪」分级;没有变化的并成一句名单。指数、量能与板块轮动只作解释个股的背景,不单独成节。明日观察条件要落到具体标的与触发点。',
163
+ cwdKind: 'profile',
164
+ limits: { ...DEFAULT_LIMITS },
165
+ notifications: { ...DEFAULT_NOTIFICATIONS },
166
+ },
167
+ },
168
+ {
169
+ id: 'us-premarket',
170
+ version: 1,
171
+ category: 'market',
172
+ defaults: {
173
+ state: 'dormant',
174
+ category: 'market',
175
+ title: '美股盘前',
176
+ description: '美股开盘前提示:盘前财报、宏观事件与自选股美股/中概动态,列出今晚最该盯的事项。',
177
+ trigger: { ...WEEKLY_TRIGGER, time: '20:30', weekdays: [1, 2, 3, 4, 5] },
178
+ instruction: '生成美股盘前提示:覆盖今晚美股开盘前已知的信息——盘前公布或待公布的财报与指引、宏观数据与事件、亚洲时段的消息与公告,以及自选股(含已标持仓)里的美股与中概的盘前动态;逐条写事实、来源时间与开盘后要验证的点,并给出今晚最该盯的 3 件事。盘前报价与期货取不到就写「未取到」,不要用昨收冒充盘前价;美股休市就说明休市。',
179
+ cwdKind: 'profile',
180
+ limits: { ...DEFAULT_LIMITS },
181
+ notifications: { ...DEFAULT_NOTIFICATIONS },
182
+ },
183
+ },
184
+ {
185
+ id: 'portfolio-weekly',
186
+ version: 1,
187
+ category: 'portfolio',
188
+ defaults: {
189
+ state: 'dormant',
190
+ category: 'portfolio',
191
+ title: '组合周报',
192
+ description: '每周按自选股里标记的持仓复盘组合集中度、暴露与风险,列出下周要复核的事。',
193
+ trigger: { ...WEEKLY_TRIGGER, time: '10:00', weekdays: [6] },
194
+ instruction: '生成本周组合周报:以自选股里用户标记的持仓与自报权重为准,逐只写本周涨跌、成交与事件,再给组合层集中度(单票、行业、市场、币种)、同向暴露与最大风险;未标记的关注条目不算持仓,权重不补满 100%。没有持仓标记或权重缺失时,明确说无法做组合层计算,只做关注清单层面的观察。结尾列下周要复核的 3 件事与数据缺口。',
195
+ cwdKind: 'profile',
196
+ limits: { ...DEFAULT_LIMITS },
197
+ notifications: { ...DEFAULT_NOTIFICATIONS },
198
+ },
199
+ },
200
+ {
201
+ id: 'watchlist-weekly',
202
+ version: 1,
203
+ category: 'monitor',
204
+ defaults: {
205
+ state: 'dormant',
206
+ category: 'monitor',
207
+ title: '自选股周检',
208
+ description: '每周给自选股分诊:需要立刻准备、继续跟踪或可以移出,并写下一步该做什么。',
209
+ trigger: { ...WEEKLY_TRIGGER, time: '14:00', weekdays: [6] },
210
+ instruction: '生成本周自选股周检:逐只过自选股(含已标持仓),按「需要立刻准备 / 继续跟踪 / 可以移出」分级——依据是下周是否有催化剂、流动性是否够用、与已有标的或持仓是否重复、证据是否还够支撑判断;每只写一句理由与下一步该做什么(补数据、读公告、等事件),重复暴露合并成一组。没有变化的并成一句,不要只按涨跌幅排序。',
211
+ cwdKind: 'profile',
212
+ limits: { ...DEFAULT_LIMITS },
213
+ notifications: { ...DEFAULT_NOTIFICATIONS },
214
+ },
215
+ },
216
+ {
217
+ id: 'sector-weekly',
218
+ version: 1,
219
+ category: 'market',
220
+ defaults: {
221
+ state: 'dormant',
222
+ category: 'market',
223
+ title: '行业周报',
224
+ description: '每周行业与主题轮动:领涨领跌、资金集中度、驱动与自选股暴露,下周景气与事件。',
225
+ trigger: { ...WEEKLY_TRIGGER, time: '20:00', weekdays: [6] },
226
+ instruction: '生成本周行业周报:按可核实的行业/主题分类列出本周领涨领跌、成交与资金集中度,解释驱动(政策、数据、事件、海外映射),再点出自选股集中的行业与领涨方向的重合或偏离,最后给下周行业事件与需要验证的景气指标。分类口径写清楚,取不到就写缺口;不把单一板块的强势当成全市场结论。',
227
+ cwdKind: 'profile',
228
+ limits: { ...DEFAULT_LIMITS },
229
+ notifications: { ...DEFAULT_NOTIFICATIONS },
230
+ },
231
+ },
232
+ {
233
+ id: 'research-topics',
234
+ version: 1,
235
+ category: 'research',
236
+ defaults: {
237
+ state: 'dormant',
238
+ category: 'research',
239
+ title: '研究选题',
240
+ description: '每周从自选股与市场主线里挑出 3 个值得深挖的选题,写清问题、证据与核查步骤。',
241
+ trigger: { ...WEEKLY_TRIGGER, time: '14:00', weekdays: [7] },
242
+ instruction: '生成下周研究选题:从自选股与本周市场主线里筛出 3 个最值得深挖的标的或主题,每个写清为什么是现在、核心问题、需要哪些证据(数据/文件/口径)、先做哪 2–3 步核查,并按时间敏感度排序;证据不足的候选直接剔除。不要写成完整研报,也不要把新闻标题当结论。',
243
+ cwdKind: 'profile',
244
+ limits: { ...DEFAULT_LIMITS },
245
+ notifications: { ...DEFAULT_NOTIFICATIONS },
246
+ },
247
+ },
248
+ {
249
+ id: 'earnings-tracker',
250
+ version: 1,
251
+ category: 'research',
252
+ defaults: {
253
+ state: 'dormant',
254
+ category: 'research',
255
+ title: '财报跟踪',
256
+ description: '每周跟踪自选股已披露与即将披露的财报,对比预期、列要盯的指标与验证点。',
257
+ trigger: { ...WEEKLY_TRIGGER, time: '16:00', weekdays: [7] },
258
+ instruction: '生成财报跟踪:先看过去一周自选股(含已标持仓)已披露的财报——营收、利润、毛利率与指引相对一致预期的差异(预期取不到就写「未取到」)、一次性项目与会计口径变化,以及哪些判断被验证或推翻;再看未来两周的财报预约,逐只写披露日期、一致预期、要盯的 3 个指标与情景。没有自选股财报时直接说明,并给下一次披露窗口与现在该补的数据,不要硬凑。',
259
+ cwdKind: 'profile',
260
+ limits: { ...DEFAULT_LIMITS },
261
+ notifications: { ...DEFAULT_NOTIFICATIONS },
262
+ },
263
+ },
264
+ {
265
+ id: 'week-ahead-calendar',
266
+ version: 1,
267
+ category: 'monitor',
268
+ defaults: {
269
+ state: 'dormant',
270
+ category: 'monitor',
271
+ title: '下周事件日历',
272
+ description: '汇总自选股与全市场的下周事件:财报、解禁、股东大会、宏观数据与政策窗口。',
273
+ trigger: { ...WEEKLY_TRIGGER, time: '18:00', weekdays: [7] },
274
+ instruction: '生成下周事件日历:先列自选股(含已标持仓)的财报预约、解禁、股东大会、分红与停复牌,再列宏观数据发布、重要会议与政策窗口;逐条写日期时间、影响哪个标的或板块、要提前准备什么。同一天按影响大小排序,日期不确定的标「待确认」并说明依据;没有事件的日期不用占位。',
275
+ cwdKind: 'profile',
276
+ limits: { ...DEFAULT_LIMITS },
277
+ notifications: { ...DEFAULT_NOTIFICATIONS },
278
+ },
279
+ },
280
+ {
281
+ id: 'market-weekly',
282
+ version: 1,
283
+ category: 'market',
284
+ defaults: {
285
+ state: 'dormant',
286
+ category: 'market',
287
+ title: '市场周报',
288
+ description: '每周复盘指数、量能、板块轮动与资金面,给出市场状态、自选股所处环境与下周关键位。',
289
+ trigger: { ...WEEKLY_TRIGGER, time: '20:00', weekdays: [7] },
290
+ instruction: '生成本周市场周报:覆盖指数与量能、涨跌家数与风格、板块轮动的一句话结论、北向与两融、ETF 申赎等可核实的资金口径;用趋势、波动、广度与事件背景给出本周市场状态的一句话判断,再写下周关键位、需要验证的假设与最大风险。数据取不到就写缺口,不用记忆里的数补位;行业与主题的细账不在这里展开,也不把单一板块的强势当成全市场结论。',
291
+ cwdKind: 'profile',
292
+ limits: { ...DEFAULT_LIMITS },
293
+ notifications: { ...DEFAULT_NOTIFICATIONS },
294
+ },
295
+ },
296
+ {
297
+ id: 'portfolio-risk-monthly',
298
+ version: 1,
299
+ category: 'portfolio',
300
+ defaults: {
301
+ state: 'dormant',
302
+ category: 'portfolio',
303
+ title: '组合风险月报',
304
+ description: '每月按自选股里标记的持仓检查集中度、暴露与流动性风险,列出未评估项与要补充的信息。',
305
+ trigger: { ...MONTHLY_TRIGGER, time: '20:30', dayOfMonth: 'last' },
306
+ instruction: '生成月度组合风险报告:以自选股里用户标记的持仓与自报权重为准,检查单票、行业、市场与币种集中度,同向暴露、流动性与事件风险;有可靠数据时再做简单的历史情景或波动测算,并写清口径与假设,数据不足的部分标「未评估」,不填 0 也不称「安全」。结尾给下月要复核的风险点与需要用户补充的信息(成本、期限、风险预算)。',
80
307
  cwdKind: 'profile',
81
308
  limits: { ...DEFAULT_LIMITS },
82
309
  notifications: { ...DEFAULT_NOTIFICATIONS },