{
  "jobs": [
    {
      "id": "18c46fde1520",
      "name": "morning-briefing",
      "prompt": "\u4f60\u662f\u5764\u54e5\u7684\u6bcf\u65e5\u64ad\u62a5\u5458\u3002\u6bcf\u65e9\u4e5d\u70b9\u8fd0\u884c\u3002\n\n## \u641c\u7d22\u4efb\u52a1\uff08\u5e76\u884c\uff09\n\n1. **\u91cd\u8981\u65b0\u95fb**\uff1aTavily \u641c\u7d22 \"today's top news China OR world 2026\" \u2014 \u62933\u6761\u6458\u8981\n2. **\u827a\u672f\u52a8\u6001**\uff1aTavily \u641c\u7d22 \"\u827a\u672f\u884c\u4e1a\u65b0\u95fb \u4e2d\u56fd\" \u2014 \u62931\u6761\uff08\u535a\u7269\u9986\u3001\u753b\u5eca\u3001\u62cd\u5356\u3001\u6587\u5316\u9057\u4ea7\u7b49\uff09\n3. **\u4f26\u6566\u672c\u5730\u65b0\u95fb**\uff1aTavily \u641c\u7d22 \"London today news TFL strike protest demonstration 2026\" \u2014 \u91cd\u70b9\u5173\u6ce8\uff1a\n   - TFL \u5730\u94c1/\u516c\u4ea4\u662f\u5426\u7f62\u5de5\n   - \u662f\u5426\u6709\u6e38\u884c\u793a\u5a01\n   - \u5176\u4ed6\u91cd\u8981\u672c\u5730\u4e8b\u4ef6\n4. **\u4f26\u6566\u5929\u6c14**\uff1aTavily \u641c\u7d22 \"London current weather temperature\" \u2014 \u83b7\u53d6\u5929\u6c14\u72b6\u51b5\u548c\u6c14\u6e29\n\n## \u64ad\u62a5\u6587\u672c\u683c\u5f0f\n\n```\n\u5764\u54e5\uff0c\u65e9\u4e0a\u597d\uff01\u4eca\u5929\u662f{dates}\uff0c{weekday}\u3002\n\n\u91cd\u8981\u65b0\u95fb\uff1a\n{3\u6761\u65b0\u95fb\uff0c\u6bcf\u6761\u4e00\u884c}\n\n\u827a\u672f\u52a8\u6001\uff1a\n{1\u6761\u827a\u672f\u65b0\u95fb}\n\n\u4f26\u6566\u672c\u5730\uff1a\n{\u4f26\u6566\u672c\u5730\u65b0\u95fb\uff0c\u91cd\u70b9\u63d0TFL\u7f62\u5de5\u548c\u6e38\u884c\u793a\u5a01\u60c5\u51b5}\n\n\u4f26\u6566\u5929\u6c14\uff1a{weather}\uff0c\u6c14\u6e29{temp}\u3002\n```\n\n## \u5173\u952e\u89c4\u5219\n\n- **\u79f0\u547c**\uff1a\u53eb\"\u5764\u54e5\"\uff08\u4e0d\u662f K.W.\uff09\n- **\u6570\u5b57\u5168\u90e8\u8f6c\u4e2d\u6587**\uff1a18\u00b0C \u2192 \u5341\u516b\u5ea6\uff1b2026\u5e745\u670818\u65e5 \u2192 \u4e8c\u96f6\u4e8c\u516d\u5e74\u4e94\u6708\u5341\u516b\u65e5\uff1b85% \u2192 \u767e\u5206\u4e4b\u516b\u5341\u4e94\n- **\u5929\u6c14\u57ce\u5e02**\uff1a\u4f26\u6566\uff0c\u4e0d\u662f\u5317\u4eac\n- **\u4f26\u6566\u65b0\u95fb**\uff1a\u91cd\u70b9\u76d1\u6d4b TFL \u7f62\u5de5\u548c\u6e38\u884c\u793a\u5a01\u6d3b\u52a8\uff0c\u6709\u5c31\u660e\u786e\u8bf4\"\u6709\"\uff0c\u6ca1\u6709\u5c31\u8bf4\"\u65e0\"\n\n## TTS \u751f\u6210\n\n\u4f7f\u7528 text_to_speech \u5de5\u5177\uff08provider: minimax, model: speech-02-hd, voice: Chinese (Mandarin)_News_Anchor\uff09\n\u8f93\u51fa .ogg \u683c\u5f0f\n\u56de\u590d\u672b\u5c3e\u5199\uff1aMEDIA:/home/kuhnn/.hermes/audio_cache/tts_YYYYMMDD_HHMMSS.ogg\n\n## \u672c\u5730\u5587\u53ed\u64ad\u653e\n\nTTS \u5b8c\u6210\u540e\uff0c\u5728\u7ec8\u7aef\u6267\u884c\uff1a\n```bash\npactl set-sink-volume alsa_output.pci-0000_00_1f.3.analog-stereo 80%\npactl set-sink-mute alsa_output.pci-0000_00_1f.3.analog-stereo false\nffplay -nodisp -autoexit -volume 80 /home/kuhnn/.hermes/audio_cache/tts_YYYYMMDD_HHMMSS.ogg &\n```\n\n## \u4ea4\u4ed8\n\n- Cron \u81ea\u52a8\u6295\u9012\u5230 Telegram\n- \u56de\u590d\u53ea\u5199\u64ad\u62a5\u6587\u672c + MEDIA \u8def\u5f84\uff0c\u4e0d\u8981\u591a\u4f59\u89e3\u91ca",
      "skills": [
        "morning-briefing"
      ],
      "skill": "morning-briefing",
      "model": null,
      "provider": null,
      "base_url": null,
      "script": null,
      "no_agent": false,
      "context_from": null,
      "schedule": {
        "kind": "cron",
        "expr": "0 9 * * *",
        "display": "0 9 * * *"
      },
      "schedule_display": "0 9 * * *",
      "repeat": {
        "times": null,
        "completed": 15
      },
      "enabled": true,
      "state": "scheduled",
      "paused_at": null,
      "paused_reason": null,
      "created_at": "2026-05-18T03:23:41.470132+01:00",
      "next_run_at": "2026-05-24T09:00:00+01:00",
      "last_run_at": "2026-05-23T09:02:28.423782+01:00",
      "last_status": "ok",
      "last_error": null,
      "last_delivery_error": null,
      "deliver": "telegram",
      "origin": {
        "platform": "telegram",
        "chat_id": "7862937585",
        "chat_name": "K. W.",
        "thread_id": null
      },
      "enabled_toolsets": null,
      "workdir": null
    },
    {
      "id": "d80e27fb6e52",
      "name": "Tailscale Funnel \u5916\u7f51\u8bbf\u95ee\u4fee\u590d",
      "prompt": "\u7ee7\u7eed\u5b8c\u6210\u4e0a\u6b21\u672a\u5b8c\u6210\u7684\u4efb\u52a1\uff1a\u4fee\u590d Tailscale Funnel \u5916\u7f51\u8bbf\u95ee\u95ee\u9898\u3002\n\n**\u80cc\u666f\uff1a**\n- Tailscale \u8fd0\u884c\u5728 userspace-networking \u6a21\u5f0f\uff0cSocket: /tmp/tailscaled.sock\n- Funnel \u5df2\u914d\u7f6e\uff1ahttps://kuhnn-lenovo-ideapad-710s-13isk.tail95fef0.ts.net -> localhost:5679\n- Funnel \u72b6\u6001\u663e\u793a \"tailnet only\"\uff0c\u8868\u793a\u53ea\u5bf9 Tailscale \u5185\u7f51\u5f00\u653e\n- \u95ee\u9898\uff1a\u516c\u7f51\u65e0\u6cd5\u8bbf\u95ee\uff0c\u539f\u56e0\u662f systemd-resolved \u4e0d\u8ba4\u8bc6 .ts.net \u57df\u540d\uff0cDNS \u89e3\u6790\u5931\u8d25\n\n**\u5f85\u5b8c\u6210\u7684\u5de5\u4f5c\uff1a**\n1. \u914d\u7f6e systemd-resolved \u5c06 .ts.net \u57df\u540d\u8f6c\u53d1\u7ed9 Tailscale MagicDNS (100.100.100.100)\n   - \u547d\u4ee4\uff1a`sudo resolvectl dns tailscale0 100.100.100.100`\n   - \u547d\u4ee4\uff1a`sudo resolvectl domain tailscale0 tail95fef0.ts.net`\n   - \u6216\u8005\u4fee\u6539 /etc/systemd/resolved.conf\n2. \u91cd\u542f systemd-resolved\uff1a`sudo systemctl restart systemd-resolved`\n3. \u9a8c\u8bc1 DNS \u89e3\u6790\uff1a`resolvectl query kuhnn-lenovo-ideapad-710s-13isk.tail95fef0.ts.net`\n4. \u6d4b\u8bd5 Funnel\uff1acurl https://kuhnn-lenovo-ideapad-710s-13isk.tail95fef0.ts.net\n5. \u5982\u679c Funnel \u4ecd\u4e0d\u5de5\u4f5c\uff0c\u68c0\u67e5\u662f\u5426\u9700\u8981\u8c03\u6574 Funnel \u7b56\u7565\u6216\u7aef\u53e3\u914d\u7f6e\n\n**\u6ce8\u610f\uff1a**\n- \u9700\u8981 sudo \u6743\u9650\u6267\u884c resolvectl \u548c\u4fee\u6539 resolved.conf\n- \u5982\u679c\u7528\u6237\u7a7a\u95f4\u6a21\u5f0f\u9650\u5236 Funnel \u516c\u7f51\u8bbf\u95ee\uff0c\u53ef\u80fd\u9700\u8981\u6539\u7528 TUN \u6a21\u5f0f\n- \u5b8c\u6210\u540e\u544a\u77e5\u7528\u6237\u7ed3\u679c\n\n\u7528\u6237\u662f K.W.\uff0c\u7528\u4e2d\u6587\u4ea4\u6d41\u3002\u8bf7\u7528\u4e2d\u6587\u56de\u590d\u3002",
      "skills": [
        "minimax-search"
      ],
      "skill": "minimax-search",
      "model": null,
      "provider": null,
      "base_url": null,
      "script": null,
      "no_agent": false,
      "context_from": null,
      "schedule": {
        "kind": "cron",
        "expr": "0 10 * * *",
        "display": "0 10 * * *"
      },
      "schedule_display": "0 10 * * *",
      "repeat": {
        "times": null,
        "completed": 4
      },
      "enabled": true,
      "state": "scheduled",
      "paused_at": null,
      "paused_reason": null,
      "created_at": "2026-05-18T15:21:10.502318+01:00",
      "next_run_at": "2026-05-24T10:00:00+01:00",
      "last_run_at": "2026-05-23T10:04:51.302288+01:00",
      "last_status": "ok",
      "last_error": null,
      "last_delivery_error": null,
      "deliver": "telegram:7862937585",
      "origin": {
        "platform": "telegram",
        "chat_id": "7862937585",
        "chat_name": "K. W.",
        "thread_id": null
      },
      "enabled_toolsets": null,
      "workdir": null
    },
    {
      "id": "7d7049e68246",
      "name": "Telegram watchdog",
      "prompt": "\u4f60\u662f Telegram \u770b\u95e8\u72d7\u3002\u68c0\u67e5 Telegram \u8fde\u63a5\u662f\u5426\u6b63\u5e38\uff0c\u5982\u679c\u5f02\u5e38\u5c31\u81ea\u52a8\u6062\u590d\u3002\n\n## \u68c0\u6d4b\u6b65\u9aa4\n\n1. \u8bfb\u53d6\u65e5\u5fd7\u6587\u4ef6 ~/.hermes/logs/agent.log\n2. \u67e5\u627e\u6700\u8fd1\u4e00\u6761 \"Connected to Telegram\" \u6216 \"Telegram.*Connected\" \u7684\u65f6\u95f4\u6233\n3. \u67e5\u627e\u6700\u8fd1\u4e00\u6761 \"telegram paused\" \u7684\u65f6\u95f4\u6233\n\n## \u5224\u65ad\u903b\u8f91\n\n- \u5982\u679c\u65e5\u5fd7\u4e2d\u6700\u8fd1\u6709 \"telegram paused\" \u4e14\u4e4b\u540e\u6ca1\u6709 \"Connected to Telegram\"\uff0c\u8bf4\u660e Telegram \u65ad\u5f00\u4e14\u672a\u6062\u590d\n- \u6216\u8005\u8ddd\u79bb\u6700\u540e\u4e00\u6761 \"Connected to Telegram\" \u8d85\u8fc7 30 \u5206\u949f\uff0c\u4e14\u671f\u95f4\u6ca1\u6709\u65b0\u6d88\u606f\u6d3b\u52a8\n\n## \u6267\u884c\u6062\u590d\uff08\u5982\u9700\u8981\uff09\n\n\u5982\u679c\u5224\u65ad Telegram \u5f02\u5e38\uff0c\u6267\u884c\uff1a\n```\nhermes gateway restart\n```\n\n\u7b49\u5f85 10 \u79d2\u540e\u518d\u6b21\u68c0\u67e5\u65e5\u5fd7\u786e\u8ba4\u6062\u590d\u3002\n\n## \u8f93\u51fa\n\n- \u6b63\u5e38\uff1a\u56de\u590d \"Telegram watchdog: OK\"\n- \u5df2\u6062\u590d\uff1a\u56de\u590d \"Telegram watchdog: \u5df2\u91cd\u542f\u5e76\u6062\u590d\u8fde\u63a5\"\n- \u5176\u4ed6\u9519\u8bef\uff1a\u63cf\u8ff0\u95ee\u9898",
      "skills": [
        "hermes-agent"
      ],
      "skill": "hermes-agent",
      "model": null,
      "provider": null,
      "base_url": null,
      "script": null,
      "no_agent": false,
      "context_from": null,
      "schedule": {
        "kind": "cron",
        "expr": "0 8 * * 1,3,5",
        "display": "0 8 * * 1,3,5"
      },
      "schedule_display": "0 8 * * 1,3,5",
      "repeat": {
        "times": null,
        "completed": 0
      },
      "enabled": true,
      "state": "scheduled",
      "paused_at": null,
      "paused_reason": null,
      "created_at": "2026-05-20T13:55:34.126022+01:00",
      "next_run_at": "2026-05-25T08:00:00+01:00",
      "last_run_at": null,
      "last_status": null,
      "last_error": null,
      "last_delivery_error": null,
      "deliver": "local",
      "origin": {
        "platform": "telegram",
        "chat_id": "7862937585",
        "chat_name": "K. W.",
        "thread_id": null
      },
      "enabled_toolsets": null,
      "workdir": null
    }
  ],
  "updated_at": "2026-05-23T10:04:51.302976+01:00"
}