com um clique
cron-multi-platform-delivery
将单个 cron job 输出同时推送到 Telegram 和微信;QQ 仍不可用。
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
将单个 cron job 输出同时推送到 Telegram 和微信;QQ 仍不可用。
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
个股深度分析的核心工作流。当用户要求"深度分析 / 全面分析 / 帮我看看 / 值不值得买 / DCF / 机构建模 / 首次覆盖 / 投委会备忘录"等涉及个股研究的请求时触发。覆盖 A 股、港股、美股,产出 24 个报告维度(0-22,其中 `6_fund_holders` 与 `6_research` 分列)+ 51 位大佬量化评审 + 6 种机构级估值建模 (DCF/Comps/LBO/3-Stmt/Merger) + 7 种研究产物 (首次覆盖/财报解读/催化剂日历/投资逻辑追踪/晨报/量化筛选/行业综述) + 6 种决策方法 (IC Memo/DD/Porter/单位经济/VCP/再平衡) + 杀猪盘检测,最终生成 Bloomberg 风格 HTML 报告 + 社交分享战报。关键词:股票、个股、深度分析、估值、DCF、comps、首次覆盖、IC memo、杀猪盘、龙虎榜、akshare。
中港股行情追踪 — 双数据源(新浪实时 + Yahoo v8 收盘),覆盖 A 股芯片半导体 + 港股科技/LLM 概念。含大盘/板块/异动/52周位置分析 + 叙事生成。
抓取 5ch.io 实时热帖(ikioig 全板勢い)前100条,筛选20条最逆天帖子生成中日双语锐评报告,输出到 D:\hermes\5ch-reports\YYYY-MM-DD\。
生成 LoveLive / BanG Dream 未来一年 live 活动倒计时报表。当前只展示 BanG Dream! 与 LoveLive!,不展示偶像大师。
美股行情追踪 — 双数据源(新浪实时 + Yahoo v8 收盘),含大盘/板块/异动/52周位置分析。
Scrape Yahoo Japan News hot topics (Yahoo!ニュース トピックス一覧) — extract article summaries and AI-generated comment digests (ヤフコメAI要約). Handles pickup pages, /articles/ pages, and comments pages with dual curl+browser approach.
| name | cron-multi-platform-delivery |
| description | 将单个 cron job 输出同时推送到 Telegram 和微信;QQ 仍不可用。 |
当前策略改为:所有启用中的 recurring 内容任务统一使用显式、逗号分隔的双投递 target:
telegram:[REDACTED],weixin:[REDACTED]
实际 chat_id 由环境变量、~/.hermes/secrets/cron_delivery_targets.json 或 CLI 参数提供;公开文档只写脱敏示例。delivery_policy.py 作为 CLI 审计 live jobs 时缺少真实 target 会 fail-closed,不再退回可误用的 dummy target;模块级默认假值只服务单元测试/显式传参路径。
Hermes cron scheduler 已支持 deliver 字段用逗号分隔多个目标;同一个 job 生成一次报告后会依次投递到所有解析出的目标。不要为同一日报创建 Telegram/微信两套重复 job。
| 平台/target | 状态 | 备注 |
|---|---|---|
telegram:[REDACTED] | ✅ 必选 | 必须使用数字 chat_id;不要用 bare telegram |
weixin:[REDACTED] | ✅ 必选 | 使用当前微信 DM 的显式 chat_id |
telegram:[REDACTED],weixin:[REDACTED] | ✅ 标准 | 所有启用 recurring 内容任务必须精确使用 |
origin | ❌ 内容任务禁用 | 只能指向创建任务时的单一来源,无法保证 Telegram+微信双投递 |
bare telegram | ❌ | 当前 Home ID 可能是 thsung,会触发 numeric chat_id 解析问题 |
bare weixin | ❌ | 依赖 Home channel;显式 chat_id 更稳定 |
telegram:[REDACTED](显示名/非数字目标) | ❌ | 会超时,不要用;公开文档不写具体显示名 |
QQ / qqbot | ❌ | QQ bot WebSocket 断线 → ErrorCheckGuildAuth/11263,暂不启用 |
┌──────────────────────────┐
│ 主任务 (skill=xxx) │
│ 生成报告一次 │
│ deliver=telegram:[REDACTED],weixin:[REDACTED] │
└──────────────────────────┘
不使用转发器、不创建重复 job。 所有 content type 各一个 cron job。后台守卫 Cron投递策略守卫 每 30 分钟静默审计一次,发现任何启用中的 recurring 内容任务偏离标准双投递 target,由守卫 agent 通过 cronjob update 纠偏;delivery_policy.py 本身只做审计/建议,不直接改写 jobs.json。
cronjob(
action='create',
name='xxx日报',
skills=['xxx-tracker'],
prompt='加载并执行 xxx-tracker skill。生成完整报告作为最终回复。',
schedule='0 9 * * *',
# 不要传 repeat='forever':cronjob.repeat 参数是整数;recurring schedule 省略 repeat 即默认 forever。
deliver='telegram:[REDACTED],weixin:[REDACTED]',
)
| 任务 | skill | 时间 |
|---|---|---|
| 美股收盘日报 | us-stock-tracker | 07:00 |
| 偶像Live倒计时 | anison-live-countdown | 09:00 |
| 中港股午市快报 | cnhk-stock-tracker | 12:00 |
| 中港股收盘日报 | cnhk-stock-tracker | 16:10 |
| Yahoo JP 锐评日报 | yahoo-jp-roast | 22:00 |
当前部署策略:所有启用中的 recurring 内容任务必须
deliver='telegram:[REDACTED],weixin:[REDACTED]'。Cron投递策略守卫每 30 分钟检查并自动纠偏;守卫自身deliver='local',避免刷屏。
投递规则已固化为 Python 模块,真实投递 ID 不写入 Git。守卫脚本从以下来源读取真实 target:
HERMES_DELIVERY_TELEGRAM_CHAT_ID、HERMES_DELIVERY_WEIXIN_CHAT_ID;~/.hermes/secrets/cron_delivery_targets.json;--telegram-chat-id / --weixin-chat-id。私密文件格式:
{
"telegram_chat_id": "<numeric_chat_id>",
"weixin_chat_id": "<explicit_weixin_chat_id>"
}
公开仓库与测试只能使用脱敏/假 ID,scripts/skills_audit.py 会阻止 telegram:[REAL_NUMERIC_ID] / weixin:[REAL_CHAT_ID] 这类未脱敏 target 入库。
投递规则模块运行方式:
python3 cron-multi-platform-delivery/scripts/delivery_policy.py ~/.hermes/cron/jobs.json
脚本会检查启用中的 recurring cron job:
at 2026-...)会被归类为 one-shot,不参与 recurring 内容任务纠偏;cron 表达式、every ...、30m 等 duration 才视为 recurring;Cron投递策略守卫 作为例外,必须是仅加载 cron-multi-platform-delivery 的守卫任务,并使用 deliver='local' 静默运行;update-fedora-packages 或 hermes-snapshot 的任务)作为例外,必须使用 deliver='local' 静默运行;update-fedora-packages / hermes-snapshot 逃过内容投递策略;origin、bare telegram、bare weixin、Telegram 显示名目标、qqbot;build_create_kwargs() 为新建 cron job 提供默认强制参数。配套测试:
python3 -m pytest cron-multi-platform-delivery/tests/test_delivery_policy.py -q
当用户说“重试这个定时任务”且上下文指向刚失败/刚运行的 recurring job 时,按以下顺序处理,不要只调用 cronjob(action='run') 后就结束:
cronjob(action='list') 找到目标 job,优先选择最近 last_run_at、名称/上下文匹配、或 last_delivery_error/输出异常的任务;不要猜 job_id。deliver 是标准双投递 target;若不是,先 cronjob(action='update', job_id=..., deliver='telegram:[REDACTED],weixin:[REDACTED]')。cronjob(action='run', job_id=...) 触发重跑。cronjob(action='list') 验证:
last_run_at 是否已更新;last_status 是否为 ok;last_delivery_error 是否为 null。next_run_at 被设置到过去、但 last_run_at 长时间未更新,检查是否存在过期 tick lock:
date '+%F %T %z'
stat -c '%y %s' ~/.hermes/cron/.tick.lock
ps -ef | grep -E 'cron|hermes_cli|目标job_id' | grep -v grep
若 .tick.lock 明显陈旧且没有正在运行的 cron/job 进程,可删除:
rm -f ~/.hermes/cron/.tick.lock
## Response 内容不是 API call failed...、[SILENT] 或空输出。对 Yahoo JP 锐评等长报告,还要快速确认条数(例如搜索 ^## #20)。| ❌ 不要 | ✅ 用 |
|---|---|
| 创建 Telegram/微信两套重复日报 job | 单 job 逗号分隔双投递 |
| 创建 QQ/微信转发器 | 单任务直投 telegram:[REDACTED],weixin:[REDACTED] |
使用 bare telegram | telegram:[REDACTED] |
使用 bare weixin | weixin:[REDACTED] |
使用 origin 投递内容任务 | 标准双投递 target |
| 未检查任务投递 target | 运行 delivery_policy.py,或依赖守卫自动纠偏 |
创建 recurring job 时不要传 repeat='forever' | 省略 repeat;cronjob 的 repeat 入参是整数,recurring schedule 默认 forever |
| 在 no_agent 脚本内按「消息1→TG→微信→消息2→TG→微信」交替投递,或让平台之间串行等待 | 长/多条内容应按平台级 worker 并发投递:每个平台内部保持顺序,平台之间互不阻塞;微信/iLink 限流时只跳过微信剩余项 |
| 为 QQ 做 retry chain | 11263 是 WebSocket 问题,retry 无效 |
| 看到 11263 就改 target 格式 | 翻官方文档查真实错误含义 |