金融晨报智能体设计

介绍官方金融晨报监控智能体的定时调度、双插件分工和无人值守运行方式,并提供起始配置、运行成本估算与搭建指南。

阅读时长:12 分钟更新于:2026-10-20
金融晨报监控智能体:工作日触发器每周一至周五 08:00 新建会话并投递任务,持仓清单以只读副本挂进触发器;智能体通过金融市场终端从 11 个数据源取数、按机构金融插件的晨报工作流生成 HTML 早报,经 Artifacts 下载后交投研团队阅读

人工每天从 11 个数据源整理持仓晨报,通常需要 1–2 小时。官方金融晨报监控智能体每个工作日 08:00 自动完成取数、核对和排版,单次常规晨报耗时约几分钟到十几分钟;财报季会对当日发布财报的持仓股额外生成业绩点评,单次 trigger 约 50 分钟。人工负责复核与决策。

Agent 架构总览

金融晨报监控智能体:工作日触发器每周一至周五 08:00 新建会话并投递任务,持仓清单以只读副本挂进触发器;智能体通过金融市场终端从 11 个数据源取数、按机构金融插件的晨报工作流生成 HTML 早报,经 Artifacts 下载后交投研团队阅读

一次晨报任务的数据流如下:

  1. cron 触发器在每个工作日 08:00 自动创建一个新会话,并将 initial_events 中的任务指令投递给智能体;

  2. 智能体收到晨报任务后,按系统提示词约定的顺序执行:先获取隔夜行情(美股、港股、大宗商品、汇率),再检查持仓标的异动;

  3. 通过金融市场终端插件获取数据。智能体通过「能力名」请求数据(如 market.price.eod、fundamental.estimates),无需直接处理供应商接口差异;

  4. 如果已挂载持仓文件,则使用持仓数据进行异动检测和归因分析,逐条列出涨跌幅超过阈值的标的并附原因;

  5. 智能体汇总当日财报事件和宏观日历,生成尾部风险提示;

  6. 按晨报工作流技能的排版规范生成 HTML 早报,写入 output/ 目录并登记为产物;

  7. 会话回到 idle,产物可通过 API 取回,或转发到邮件、企业微信。

层职责数据范围
触发器按 cron 表达式定时创建会话并投递任务指令不直接处理数据,仅负责调度
工作流(系统提示词 + 技能)确定晨报的板块、生成顺序和排版方式通过数据源层获取的结构化数据
数据源(金融市场终端插件)统一接入 11 个数据供应商,按能力名路由行情、财报、新闻、公告等外部数据

触发器负责调度,工作流负责内容,数据源负责取数。三者可以分别调整,减少相互影响。

核心设计

官方金融晨报监控智能体由模型、系统提示词、插件和触发器组成,使用平台默认内置工具集。设计重点包括:

  • 定时运行与无人值守:每个工作日 08:00 自动触发,产出写入 output/ 目录;

  • 结论先行,便于快速阅读:面向开盘前快速浏览的读者,每个板块先给出结论,再列出支撑数据,目标是 3 分钟内读完;

  • 数据可溯源,缺失不编造:所有数据标注来源与取数日期;无法获取或无法核实的内容列入「待核实」,严禁编造。

以下介绍各项配置的作用,以及自建时的取舍。

触发器:每个工作日 08:00 自动运行

定时触发是晨报智能体与其他五个金融智能体的主要区别。官方配置了 cron 触发器,表达式为 0 8 * * 1-5(每周一到周五 08:00),时区为 Asia/Shanghai。触发后,平台自动创建会话并投递 initial_events 中的任务指令,智能体开始执行,产出写入 output/ 目录。

自建时可按需调整触发频率:改为 30 7 * * 1-5 表示 7:30 运行,改为 0 18 * * 5 表示每周五 18:00 运行周报。完整配置方式见 触发器。

系统提示词:晨报工作流、数据口径与任务边界

晨报智能体的系统提示词用于每日定时生成晨报,核心约定如下:

  • 晨报工作流:收到晨报任务后,按固定顺序执行:先获取隔夜行情(A 股收盘后到当日开盘前的美股、港股、大宗商品、汇率),再检查持仓标的的异动(涨跌幅超阈值、成交量异常、公告 / 新闻),然后汇总当日财报事件和宏观日历,最后生成尾部风险提示;

  • 结论先行:面向开盘前快速浏览的读者,每个板块的第一句话先给出结论,再列出支撑数据,避免使用「综上所述」「总体来看」等过渡语;

  • 数据口径:每次晨报使用同一套数据口径,包括市场范围(A 股 / 港股 / 美股)、币种和数据质量策略,智能体无需向用户询问这些信息;

  • 任务边界:不执行任何交易;缺失数据不得按零处理;无法获取或无法核实的内容列入「待核实」并注明原因;建议与事实分开呈现。

插件:工作流与数据源分工

晨报智能体配置两个插件,分别负责以下工作:

  • 机构金融插件(institutional-finance-kit):提供晨报工作流技能。插件中的 morning-briefing 技能定义持仓早报的完整生成流程(数据获取、异动检测、报告排版);财报点评属于独立任务,使用 earnings-review 技能,需要单独配置触发器或任务指令。这些技能定义晨报的生成方法;

  • 金融市场终端(financial-market-terminal):统一接入 11 个数据源,包括万得 Wind、同花顺 iFinD、恒生聚源、S&P、新华财经、财联社、财新、东方财富、金融研究、Yahoo Finance、国际组织数据。智能体通过「能力名」请求数据(如 market.price.eod、fundamental.estimates),无需直接处理供应商接口差异。

两个插件分别负责工作流和数据源。morning-briefing 技能确定晨报的板块和生成顺序,但不直接对接数据供应商;数据获取由金融市场终端的数据源技能完成。因此,更换数据源时无需修改工作流,更换工作流时也无需修改数据接入。

自建时,可根据需要替换插件。数据源需要授权时,将凭据统一保存在 凭据库,运行时注入,不写入智能体配置。插件的引用方式和版本固定规则见 插件。

配置选择

本案例选择 kimi-k3。晨报需要同时处理多个数据源的返回结果、持仓清单和新闻文本,对长上下文和结构化输出能力要求较高。平台默认内置工具集提供文件读写、代码运行和联网检索能力,可直接使用;外部数据能力已由插件的数据源路由覆盖,通常无需额外接入 MCP 服务。如需接入,参见 接入 MCP。

各项资源的配置如下:

资源用途本案例的选择
智能体定时生成晨报单智能体,kimi-k3
插件晨报工作流技能 + 数据源接入institutional-finance-kit + financial-market-terminal
技能晨报生成流程、财报点评插件中的 morning-briefing、earnings-review
执行环境运行取数与排版通用云沙箱,无特殊依赖
文件持仓清单(推荐)上传后挂载到会话或触发器
凭据库数据源授权数据插件需要时配置
触发器定时调度cron 0 8 * * 1-5,时区 Asia/Shanghai
记忆库当前不需要每日晨报独立生成,不依赖跨会话记忆

运行成本

成本主要来自模型 tokens。沙箱按运行时长计费,价格为 ¥0.072 / 小时,一次晨报约几分钟到十几分钟,费用不到 ¥0.1;文件上传与抽取限时免费,详见 托管智能体定价。按 kimi-k3 的 公开单价,单次晨报与按月定时运行的成本估算如下:

任务内容单次成本
单次晨报(无持仓文件)拉取隔夜行情 + 新闻公告,生成市场概览 HTML约 ¥6
单次晨报(含持仓文件)拉取行情 + 持仓异动检测 + 归因分析 + 财报事件,生成完整 HTML 早报约 ¥21
财报季晨报(full 模式夹带业绩点评)同上,再对当日发财报的持仓股额外生成业绩点评约 ¥98,约 50 分钟(实测一次 trigger 同时出早报 + 业绩点评两份产物)
一个月(按 22 个工作日)每个工作日一次晨报(大部分日子常规晨报,财报季部分日子夹带点评)约 ¥500

一次含持仓文件晨报的成本构成:

计费项用量成本
命中缓存的输入约 8M tokens约 ¥16
未命中缓存的输入(含缓存写入)约 150K tokens约 ¥3–6
输出约 60K tokens约 ¥6
沙箱约几分钟到十几分钟不到 ¥0.1

测算口径:数据来自 2026 年 9 月底至 10 月初的生产会话实测(kimi-k3,每日定时触发),按每次模型调用的上下文长度与输出长度折算。一次含持仓文件的常规晨报累计输入约 8M tokens,主要包括 11 个数据源的返回结果和持仓清单,其中约 95% 为重复前缀,命中上下文缓存后按缓存命中价计费;如果同等输入量全部按未命中价计费,成本约为当前的六至七倍。需要说明的是,实测某次财报季 trigger 同时生成早报和业绩点评两份产物(full 完整模式,夹带 60 步点评),单次 trigger 成本约 ¥98。这是「full 模式早报 + 业绩点评」的累计成本,不是单次常规晨报的成本。大部分非财报季日子只有常规晨报,单次约 ¥21(无持仓时约 ¥6)。按月成本根据大部分日子常规晨报、财报季部分日子夹带点评估算;持仓规模较小、数据源返回较少时,单次成本相应更低。实际成本和时间随标的数据量、页数与深度、上传材料数量及返工轮次变化,以控制台账单为准。插件按调用次数另行计费,不同插件分档定价,见 托管智能体定价,未计入上表。

从最小版本开始搭建

晨报智能体的最小配置为「单智能体 + 两个插件 + 一个触发器」。以下按步骤提供可运行的创建命令,该示例并非官方配置的逐字拷贝,官方当前配置以 GET /v1/agents 返回为准。

第 1 步:创建智能体

cURL:

curl -X POST https://api.moonshot.cn/v1/agents \
  -H "Authorization: Bearer $KIMI_API_KEY" \
  -H "kimi-api-version: 2026-09-01-beta" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "我的晨报监控",
    "model": {"id": "kimi-k3"},
    "system": "你是一个金融晨报监控助手,每个工作日自动生成持仓晨报。\n- 收到晨报任务后,按固定顺序执行:隔夜行情 → 持仓异动 → 今日事件 → 风险提示。\n- 每个板块结论先行,第一句话就是结论,后面才是支撑数据。\n- 所有数据标注来源与取数日期;无法取数或无法核实的内容列入「待核实」并注明原因,严禁编造。\n- 不执行任何交易;缺失数据不当作零;建议与事实分开呈现。\n- 产出文件写到 output/ 目录,最终回复用相对路径列出。\n- 回复只讲产出了什么、放在哪里,不汇报中间过程。",
    "plugins": [
      {"plugin_id": "<机构金融插件 ID>"},
      {"plugin_id": "<金融市场终端插件 ID>"}
    ],
    "description": "自建晨报监控:定时触发、自动取数、结论先行的每日持仓早报"
  }'

CLI:

kha agents create --file - <<'JSON'
{
    "name": "我的晨报监控",
    "model": {"id": "kimi-k3"},
    "system": "你是一个金融晨报监控助手,每个工作日自动生成持仓晨报。\n- 收到晨报任务后,按固定顺序执行:隔夜行情 → 持仓异动 → 今日事件 → 风险提示。\n- 每个板块结论先行,第一句话就是结论,后面才是支撑数据。\n- 所有数据标注来源与取数日期;无法取数或无法核实的内容列入「待核实」并注明原因,严禁编造。\n- 不执行任何交易;缺失数据不当作零;建议与事实分开呈现。\n- 产出文件写到 output/ 目录,最终回复用相对路径列出。\n- 回复只讲产出了什么、放在哪里,不汇报中间过程。",
    "plugins": [
      {"plugin_id": "<机构金融插件 ID>"},
      {"plugin_id": "<金融市场终端插件 ID>"}
    ],
    "description": "自建晨报监控:定时触发、自动取数、结论先行的每日持仓早报"
  }
JSON

创建成功后,从响应中保存 id 作为 AGENT_ID。通过 GET /v1/plugins 查询插件 ID,并按显示名「机构金融插件」和「金融市场终端」查找,或在控制台智能体表单中直接勾选。

可根据需求调整以下字段:

字段调整频率配置建议
system经常调整固定持仓范围、市场口径和晨报板块顺序
plugins按数据源调整替换为同系列其他数据插件,或增加新闻类插件
model通常保持默认kimi-k3 已适配长上下文与结构化产出
工具集通常保持默认默认内置工具集即可满足需求

第 2 步:创建执行环境

通用云沙箱即可,config 传 {"type": "cloud"},全部使用默认值:

cURL:

curl -X POST https://api.moonshot.cn/v1/environments \
  -H "Authorization: Bearer $KIMI_API_KEY" \
  -H "kimi-api-version: 2026-09-01-beta" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "晨报沙箱",
    "config": {"type": "cloud"}
  }'

CLI:

kha environments create --name "晨报沙箱"

从响应中保存 id 作为 ENVIRONMENT_ID。如果需要访问特定数据源的外部接口,在网络白名单中放行对应域名,详见 执行环境。

第 3 步:上传持仓文件(推荐)

先通过 POST /v1/files 上传持仓清单并获取 file_id,后续创建触发器时挂载到 resources。持仓数据有助于提高异动检测和归因分析的针对性,详见 文件。

cURL:

curl https://api.moonshot.cn/v1/files \
  -H "Authorization: Bearer $KIMI_API_KEY" \
  -H "kimi-api-version: 2026-09-01-beta" \
  -F "[email protected]"

CLI:

kha files upload --file holdings.csv

从响应中保存 id 作为 FILE_ID。

第 4 步:创建触发器

有了 AGENT_ID 和 ENVIRONMENT_ID 之后,创建 cron 触发器:

cURL:

curl -X POST https://api.moonshot.cn/v1/triggers \
  -H "Authorization: Bearer $KIMI_API_KEY" \
  -H "kimi-api-version: 2026-09-01-beta" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "工作日晨报",
    "agent_id": "'"$AGENT_ID"'",
    "environment_id": "'"$ENVIRONMENT_ID"'",
    "session_mode": "new_session",
    "policy": {
      "type": "cron",
      "expression": "0 8 * * 1-5",
      "timezone": "Asia/Shanghai"
    },
    "resources": [
      {"type": "file", "file_id": "'"$FILE_ID"'"}
    ],
    "initial_events": [
      {
        "type": "user.message",
        "data": {
          "content": [
            {"type": "text", "text": "生成本日持仓晨报:隔夜行情、持仓异动、今日财报事件、尾部风险提示。产出 HTML 早报,保存到 output/ 目录。"}
          ]
        }
      }
    ]
  }'

CLI:

kha triggers create --file - <<JSON
{
    "name": "工作日晨报",
    "agent_id": "$AGENT_ID",
    "environment_id": "$ENVIRONMENT_ID",
    "session_mode": "new_session",
    "policy": {
      "type": "cron",
      "expression": "0 8 * * 1-5",
      "timezone": "Asia/Shanghai"
    },
    "resources": [
      {"type": "file", "file_id": "$FILE_ID"}
    ],
    "initial_events": [
      {
        "type": "user.message",
        "data": {
          "content": [
            {"type": "text", "text": "生成本日持仓晨报:隔夜行情、持仓异动、今日财报事件、尾部风险提示。产出 HTML 早报,保存到 output/ 目录。"}
          ]
        }
      }
    ]
  }
JSON

需要注意以下配置:

  • session_mode 使用 new_session:每次触发都会创建新会话,避免不同晨报相互影响;如需保持上下文连续,可改为 reuse_session;

  • initial_events 用于指定自动投递的任务内容:缺少该字段时,智能体无法确定执行目标;

  • expression 的五个字段:依次为分、时、日、月、星期。

创建成功后保存 id 作为 TRIGGER_ID。触发器创建后即为 active 状态。调试时,调用 POST /v1/triggers/$TRIGGER_ID/run 手动运行一次,并从返回的运行记录中保存 session_id 作为 SESSION_ID,供第 6 步取回产物。暂停、恢复、运行记录等完整操作见 触发器。

定时触发时,initial_events 中的任务描述会影响每次晨报的质量。建议遵循以下三条原则:

  1. 明确持仓范围。 上传持仓文件后,写明「基于绑定的持仓数据」即可;没有文件时,可直接描述持仓,如「我持有宁德时代 1000 股、贵州茅台 500 股」。

  2. 明确异动阈值。 在任务中注明具体标准,例如「涨跌幅超 3% 的逐条列出」或「只关注涨跌幅超 5% 的」。

  3. 明确关注事件。 例如「重点关注美联储议息会议和国内央行公开市场操作」,或「只看我持仓公司的财报事件」。

第 5 步:手动调用(可选)

除定时触发外,也可以随时手动创建会话并提交晨报任务。创建会话:

cURL:

curl -X POST https://api.moonshot.cn/v1/sessions \
  -H "Authorization: Bearer $KIMI_API_KEY" \
  -H "kimi-api-version: 2026-09-01-beta" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": "'"$AGENT_ID"'",
    "environment_id": "'"$ENVIRONMENT_ID"'",
    "title": "手动晨报",
    "resources": [
      {"type": "file", "file_id": "'"$FILE_ID"'"}
    ]
  }'

CLI:

kha sessions create --file - <<JSON
{
    "agent_id": "$AGENT_ID",
    "environment_id": "$ENVIRONMENT_ID",
    "title": "手动晨报",
    "resources": [
      {"type": "file", "file_id": "$FILE_ID"}
    ]
  }
JSON

从响应中保存 id 作为 SESSION_ID,订阅事件流(见 快速开始),然后提交任务:

cURL:

curl -X POST https://api.moonshot.cn/v1/sessions/$SESSION_ID/events \
  -H "Authorization: Bearer $KIMI_API_KEY" \
  -H "kimi-api-version: 2026-09-01-beta" \
  -H "Content-Type: application/json" \
  -d '{
    "events": [
      {
        "type": "user.message",
        "data": {
          "content": [
            {"type": "text", "text": "基于绑定的持仓数据,生成本日晨报:隔夜美股和港股行情、持仓标的异动(涨跌幅超 3% 的逐条列出)、今日财报事件、尾部风险提示。产出 HTML 早报,保存到 output/ 目录。"}
          ]
        }
      }
    ]
  }'

CLI:

kha sessions send "$SESSION_ID" "基于绑定的持仓数据,生成本日晨报:隔夜美股和港股行情、持仓标的异动(涨跌幅超 3% 的逐条列出)、今日财报事件、尾部风险提示。产出 HTML 早报,保存到 output/ 目录。"

第 6 步:取回产物

会话回到 idle 后,通过产物接口取回交付物:

cURL:

curl "https://api.moonshot.cn/v1/artifacts?session_id=$SESSION_ID" \
  -H "Authorization: Bearer $KIMI_API_KEY" \
  -H "kimi-api-version: 2026-09-01-beta"

CLI:

kha artifacts list --session "$SESSION_ID"

找到 HTML 早报的产物 id,下载:

cURL:

curl "https://api.moonshot.cn/v1/artifacts/$ARTIFACT_ID/content" \
  -H "Authorization: Bearer $KIMI_API_KEY" \
  -H "kimi-api-version: 2026-09-01-beta" \
  -o morning_report.html

CLI:

kha artifacts download "$ARTIFACT_ID" --out morning_report.html

产物列表为空或需要中间文件时,浏览会话文件系统(见 文件)。

晨报智能体的产出是一份 HTML 早报,设计目标是「开盘前 3 分钟读完」。文件保存在会话的 output/ 目录下,下载后可在浏览器中阅读,也可直接转发到邮件或企业微信。需要 PDF 时,在任务描述中追加「同时导出 PDF」。

早报的结构按阅读优先级排列(板块结构由 morning-briefing 技能定义,可能随版本调整):

  • M1 流动性脉搏:美债 / 中债收益率、中美利差、南向资金、VIX、资金利率,标注数据日期;

  • M2 叙事扫描:昨日回看(对照上期逐条结算)+ 今日主线若干条,每条附可证伪的观察点;

  • M3 市场快照:美股、港股、A 股、大宗商品、汇率的收盘 / 盘中数据和涨跌幅,标注数据时间;

  • M4 持仓快照:持仓组合整体表现 + 各标的行情,涨跌幅超阈值的逐条列出并附异动原因,无法确认原因的标注「待核实」;

  • M5 主线 Deep Dive:周 / 月尺度展开当日最重要的主线,区分「已发生的事实」和「基于推断的判断」;

  • M6 今日待盯与尾部情景:今晚 / 未来需要盯的事件(财报、宏观数据、政策日程)+ 尾部情景推演。

运行监控

定时触发后,可通过事件流查看智能体的完整工作过程,并通过以下字段判断运行是否正常:

  • session.status:回到 idle 表示本轮完成,可以取回早报;

  • agent.tool_use:可查看每次数据获取使用的数据源;

  • session.error:任务失败时出现,包含错误类型和信息;定时触发失败时,通过 GET /v1/triggers/$TRIGGER_ID/runs?has_error=true 查询失败记录。

晨报场景还需关注以下事项:

观察项检查内容排查用途
触发器运行记录GET /v1/triggers/$TRIGGER_ID/runs 的状态检查触发器是否按计划执行
agent.tool_use 中的数据源调用每次取数使用的能力名检查数据源是否全部可用,以及是否有数据源持续超时
产物文件大小HTML 早报的字节数文件异常小时,检查数据获取是否完整

可扩展方向

  • 晨报 + 周报:增加一个触发器,设置为 0 18 * * 5(每周五 18:00),将任务描述改为「生成本周持仓周报」,复用同一个智能体;

  • 嵌入自有系统:通过 API 创建触发器、订阅事件流并取回产出,接入自有业务看板或邮件分发;

  • 接入记忆库:将每日晨报要点写入记忆库,周报触发时自动回顾本周晨报并生成趋势分析,详见 记忆库;

  • 多智能体拆分:先验证「单智能体 + 插件 + 触发器」的配置,再拆分团队,详见 多智能体编排。

相关文档

金融晨报智能体设计:定时调度、双插件分工与无人值守晨报搭建指南