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

一次晨报任务的数据流如下:
cron 触发器在每个工作日 08:00 自动创建一个新会话,并将
initial_events中的任务指令投递给智能体;智能体收到晨报任务后,按系统提示词约定的顺序执行:先获取隔夜行情(美股、港股、大宗商品、汇率),再检查持仓标的异动;
通过金融市场终端插件获取数据。智能体通过「能力名」请求数据(如
market.price.eod、fundamental.estimates),无需直接处理供应商接口差异;如果已挂载持仓文件,则使用持仓数据进行异动检测和归因分析,逐条列出涨跌幅超过阈值的标的并附原因;
智能体汇总当日财报事件和宏观日历,生成尾部风险提示;
按晨报工作流技能的排版规范生成 HTML 早报,写入
output/目录并登记为产物;会话回到
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:
CLI:
需要注意以下配置:
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 中的任务描述会影响每次晨报的质量。建议遵循以下三条原则:
明确持仓范围。 上传持仓文件后,写明「基于绑定的持仓数据」即可;没有文件时,可直接描述持仓,如「我持有宁德时代 1000 股、贵州茅台 500 股」。
明确异动阈值。 在任务中注明具体标准,例如「涨跌幅超 3% 的逐条列出」或「只关注涨跌幅超 5% 的」。
明确关注事件。 例如「重点关注美联储议息会议和国内央行公开市场操作」,或「只看我持仓公司的财报事件」。
第 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.htmlCLI:
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 早报的字节数 | 文件异常小时,检查数据获取是否完整 |
可扩展方向
相关文档
配置每日晨报计划:cron 触发器的完整配置、暂停恢复与运行记录。
使用金融市场数据插件:插件的引用方式、版本固定与数据源路由。
上传持仓文件:上传持仓文件、挂载会话与取回产出。