> ## Documentation Index
> Fetch the complete documentation index at: https://platform.kimi.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 监管处罚日报智能体设计

> 用托管智能体每天定时下载监管机构行政处罚公示，结构化保存处罚记录并生成日报草稿，覆盖职责分工、技能打包、定时任务、按域代理与人工审核流程。

监管罚单是银行判断监管执法重点的直接依据，银行合规、法务和风险管理团队需要每日跟踪监管机构新增的处罚公示。按单次处理 2 个监管来源、32 条处罚公示记录的工作量估算，人工完成下载、整理、查重和日报起草约需 **3 小时**；Kimi 托管智能体每日定时触发，将这一过程缩短至 **20 分钟**。

本案例介绍监管公示下载、处罚记录结构化保存、日报草稿生成和人工审核的实现方式。读者可以将这一流程复用到其他监管来源和存储数据库。

## Agent 架构总览

<img src="https://mintcdn.com/moonshotcn/4Kcr6Eq3i8zM7z8W/assets/pics/hosted-agents/regulatory-daily-agent-architecture.png?fit=max&auto=format&n=4Kcr6Eq3i8zM7z8W&q=85&s=8d3b57361d5b7c2ded43c0a83b3b77cf" alt="监管处罚日报智能体架构图" width="4078" height="4096" data-path="assets/pics/hosted-agents/regulatory-daily-agent-architecture.png" />

应用由三部分组成：

* **监管机构网站**：本案例以金融监管总局和中国人民银行的行政处罚公示为核心来源。智能体只读取公开页面，不登录、不提交表单。
* **Kimi 托管智能体**：平台托管智能体、会话和每日定时任务。智能体用技能中的下载脚本获取新增内容，按统一字段抽取罚单和案由，调用处罚记录库接口保存记录，再查询当天数据生成日报草稿。
* **企业自建服务**：企业提供一个轻量的处罚记录库，负责校验、查重、保存罚单、查询报告数据集和保存日报草稿。本文只定义记录库的接口和业务规则，企业接入时实现为自定义工具，接已有数据库或业务服务。

一次每日运行的流程如下：

1. **定时启动**：Kimi 托管智能体的触发器每天早上创建一个新会话。
2. **读取来源**：下载脚本逐一读取来源清单中的网站，找到新增的列表、详情页或公示文件。
3. **结构化抽取**：智能体把不同页面形态统一整理为文号、当事人、案由、处罚内容、金额、机关、日期和来源链接。
4. **保存和查重**：处罚记录库按来源和文号保存记录，重复文号更新已有记录，保存时完成机构类型、省份和职能领域分类。缺文号的记录用机关、公示日期和当事人拼成查重键，照常保存。
5. **生成日报**：智能体查询统计日期范围的数据集，按固定口径生成 Markdown 草稿。
6. **人工审核**：合规人员核对来源、数字和异常记录，再决定是否发布。

日报之外，可以另外定义一个触发器按月运行，用同一套来源清单和处罚记录库生成月报；月报直接查询记录库中已保存的历史数据，不拼接每日草稿。

## 核心设计

### 各层职责分工

智能体的行为由三处定义：

| 层 | 负责什么 |
| - | - |
| 技能（监管日报技能） | 来源清单、下载脚本、数据格式约定、报告写作规则 |
| 系统提示词 | 读取、下载、抽取、保存、查数据集、生成草稿的步骤，以及行为边界（不登录、不编造文号、失败如实标记、数字只来自数据集、只存草稿） |
| 首条消息（触发器带入） | 任务指令和配置（日报还是月报、必需来源、统计时区、交付方式） |

* 共享内容进入技能和提示词，私有要求进触发器首条消息：来源清单和格式约定很少变化，任务配置可能经常调整。

### 先落库处罚记录，再生成日报

从官方公示到草稿经过四步：

| 步骤 | 数据形态 | 智能体 | 处罚记录库 |
| - | - | - | - |
| 读取公示 | 官方页面和公示文件 | 调用下载脚本并抽取 | 不参与 |
| 保存记录 | 处罚记录（含案由） | 调用保存接口 | 校验、查重、分类 |
| 查询统计 | 统计数据集 | 调用查询接口，按日期范围取数 | 按口径聚合、返回统计 |
| 生成草稿 | 日报草稿 | 按固定模板生成 | 不参与，草稿待人工审核 |

罚单记录是事实，日报是派生产物。先进行事实落库意味着：

* 同一罚单按文号查重，不会重复统计；
* 统计口径变化后可以从记录重新计算，不必重读网站；
* 日报中的每个数字都能回到具体记录和原文链接。

### 智能体和脚本的分工

脚本负责下载页面和公示文件、校验响应、控制分页。固定来源每天用固定脚本执行而不依赖模型当场判断，可以保证行为可复现、失败原因可定位。

智能体基于下载结果做语义工作：理解行列关系，拆分罚单，按统一字段抽取处罚内容和案由。

智能体直接读网页是遇到新来源时的探测手段：先让智能体直接读取入口，判断是列表、JSON、DOC 还是 HTML 表格，验证入口有效、格式可解析。探测时智能体可以用沙箱内置的网页读取工具，也可以调用 Kimi API 的 [Web Fetch](/docs/api/tools-fetch) 接口；如果来源封禁平台共享出口（例如返回 403 错误页），按「来源网站封禁共享出口时配置按域代理」一节配置代理，改用在会话内下载的方式探测。验证稳定后，把读取方式固化成脚本和测试，以技能形式挂载，并添加来源进入主流程。

## 配置选择

模型选 `kimi-k3`。智能体需要理解不同监管网站的页面结构，抽取处罚字段并遵守固定的数据格式与报告口径。

各项资源的配置如下：

| 资源 | 用途 | 本案例的选择 |
| - | - | - |
| 智能体 | 抽取处罚记录并生成日报草稿 | 单智能体，`kimi-k3` |
| 插件 | 当前不需要 | 下载与解析逻辑固化在监管日报技能和自定义工具中 |
| 技能 | 来源清单、下载脚本、数据格式与报告规则 | 监管日报技能 |
| 执行环境 | 运行下载脚本和语义抽取 | 通用云沙箱；来源封禁共享出口时按域配置代理 |
| 文件 | 当前不需要 | 公示由脚本下载，处罚记录写入企业处罚记录库 |
| 凭据库 | 处罚记录库接口和代理认证 | 创建触发器时通过 `resources` 绑定 |
| 触发器 | 每日定时运行，月报可另建 | cron `30 8 * * *`，`new_session` 模式 |
| 记忆库 | 当前不需要 | 跨天状态由处罚记录库保存，不依赖会话历史 |

## 运行成本

按单次处理 2 个监管来源、32 条处罚公示记录估算。模型输入按缓存未命中价计算，输出按输出价格计算，均见 `kimi-k3` 的 [公开单价](/docs/pricing/chat)；沙箱按 [托管智能体定价](/docs/pricing/hosted-agents) 的 ¥0.072 / 小时计算：

| 计费项 | 估算用量 | 估算成本 |
| - | - | - |
| 模型输入 | 约 0.5–1.5M tokens | 约 ¥10–30 |
| 模型输出 | 约 5–15K tokens | 约 ¥0.5–1.5 |
| 沙箱 | 约 20 分钟 | 约 ¥0.024 |
| **单次日报合计** | 2 个来源、32 条记录 | **约 ¥11–32** |
| **每月 30 次日报** | 每日运行 1 次 | **约 ¥316–946** |

同样是这批工作量，人工下载、整理、查重和起草约需 3 小时，智能体约需 20 分钟，耗时减少约 89%。以上为估算，实际用量随公示页数、附件篇幅、上下文缓存命中情况和返工轮次变化，以控制台账单为准。处罚记录库、企业代理和日报发布系统由企业自建，其基础设施与运维成本不计入上述费用。

## 从最小版本开始搭建

### 1. 准备处罚公示来源清单

处罚公示来源清单当前包含两个核心来源。来源 ID 是自己起的短名，用于在配置和报告中引用来源：

| 来源 ID | 来源 | 入口 URL |
| - | - | - |
| `nfra` | 金融监管总局行政处罚 | `https://www.nfra.gov.cn/cn/view/pages/ItemList.html?itemId=4113&itemName=%E6%80%BB%E5%B1%80%E6%9C%BA%E5%85%B3&itemPId=923&itemUrl=ItemListRightList.html&itemsubPId=931&itemsubPName=%E8%A1%8C%E6%94%BF%E5%A4%84%E7%BD%9A` |
| `pbc` | 中国人民银行行政处罚公示 | `https://www.pbc.gov.cn/zhengwugongkai/4081330/4081344/4081407/4081705/index.html` |

智能体只按清单读取，不自行增减来源。清单随下载脚本打包进技能，在第 3 节创建智能体时一并挂载。

### 2. 准备处罚记录库

智能体只需要三个接口：

```text theme={null}
保存处罚记录
查询报告数据集
保存日报草稿
```

记录库实现四类业务规则：

* 校验：来源和批次标识必填，缺失整批拒收；文号和当事人同时缺失的单条记录拒收并进入复核；
* 查重和保存：按来源和文号查重，相同文号更新已有记录；缺文号的记录用回退键照常保存；
* 分类：保存时按规则填充机构类型、省份和职能领域，判不了归 unknown；个人罚单名称中没有单位的，按同批次机构罚单关联推断；
* 报告：相同报告不重复生成草稿，日报初始状态始终是草稿。

记录库保存三类内容：

| 数据 | 保存内容 | 用途 |
| - | - | - |
| 处罚记录 | 文号、当事人、处罚内容、金额、机关、日期、来源 | 查重、查询和统计 |
| 读取批次 | 来源、时间范围、成功状态和异常记录 | 判断本次覆盖是否完整 |
| 日报草稿 | 数据集范围、统计 JSON、Markdown 和审核状态 | 人工审核和后续发布 |

企业接入时，把这三个接口实现为自定义工具绑定到智能体，背后接现有数据库或业务服务；操作名和输入输出保持不变，智能体的提示词和调用方式不需要改。

### 3. 创建监管处罚日报智能体

系统提示词负责定义任务和边界，而不是写死每个网站的解析程序。示例如下：

```text theme={null}
你负责每天整理银行监管行政处罚记录并生成日报草稿。

每次运行：
1. 读取处罚公示来源清单中的全部必需来源，只访问处罚公示来源清单中的网站域名。
2. 按技能固化的方式下载固定来源的公示；发现来源结构变化或新来源时，先小样本验证，不直接把新页面纳入统计。
3. 只抽取原文能够确认的字段，缺失字段保留为空。个人罚单必须抽取所在单位；文号缺失照常保存，不编造文号。
4. 按统一结构保存处罚记录和案由；机构类型、省份和职能领域由处罚记录库分类，你不需要分类；不要直接根据网页内容计算跨来源总数。
5. 保存完成后查询本次日期范围的数据集，基于数据集返回的统计结果生成 Markdown 日报草稿；数字只能来自数据集。
6. 日报必须列出网站覆盖情况和失败来源；待复核项以处罚记录库返回的复核队列为准。
7. 日报是监管线索整理，不是法律结论。

行为边界：
- 不使用搜索结果直接扩展正式统计来源。
- 不登录、不提交表单、不修改官方网站。
- 读取失败不能写成网站没有可确认的记录。
- 行政处罚和行政监管措施分开保存、分开统计。
- 日报只保存为草稿，等待人工审核。
```

监管日报技能随官方智能体交付，包含任务流程、数据格式约定、报告写作规则、来源清单和下载脚本。本案例的技能已经上传并挂载到官方智能体，可以直接复用；自建智能体时，按同样方式打包上传，记录技能 ID 和版本，创建时绑定。

#### 数据格式约定：统一字段

不同来源的页面形态不同，但智能体抽取和下载脚本都以同一组字段为目标；这组字段作为数据格式约定写入技能：

```json theme={null}
{
  "source_id": "official_source",
  "source_type": "administrative_penalty",
  "document_number": "处罚决定书文号",
  "party_name": "当事人名称",
  "party_type": "institution",
  "causes_raw": ["违法违规行为原文"],
  "penalty_content_raw": "行政处罚内容原文",
  "money_components": [
    {
      "type": "fine",
      "amount_cny": 1000000
    }
  ],
  "penalty_authority": "作出决定机关",
  "published_at": "2026-09-24",
  "decision_date": null,
  "source_url": "官方原文 URL",
  "extraction_status": "confirmed"
}
```

页面解析方式可以不同，字段结构和保存接口保持一致，新增来源时不需要改动保存逻辑。

创建智能体：

<CodeGroup>
  ```bash cURL theme={null}
  curl --request POST "https://api.moonshot.cn/v1/agents" \
    --header "Authorization: Bearer $KIMI_API_KEY" \
    --header "kimi-api-version: 2026-09-01-beta" \
    --header "Content-Type: application/json" \
    --data '{
      "name": "监管处罚日报智能体",
      "description": "定时读取监管处罚公示，保存结构化记录并生成日报草稿",
      "model": {"id": "kimi-k3"},
      "skills": [{"skill_id": "skill_your_skill_id", "version": "1"}],
      "tools": [
        {
          "type": "custom",
          "name": "save_penalty_records",
          "description": "校验并保存行政处罚记录，重复文号更新已有记录。",
          "input_schema": {"type": "object", "properties": {}}
        },
        {
          "type": "custom",
          "name": "query_report_dataset",
          "description": "按日期范围查询处罚报告的统计数据集。",
          "input_schema": {"type": "object", "properties": {}}
        },
        {
          "type": "custom",
          "name": "save_report_draft",
          "description": "保存监管日报 Markdown 草稿，供人工审核。",
          "input_schema": {"type": "object", "properties": {}}
        }
      ],
      "system": "你负责每天整理银行监管行政处罚记录并生成日报草稿。读取固定的处罚公示来源，保存罚单和案由，个人罚单抽取所在单位；分类由处罚记录库完成；基于已保存数据生成报告；读取失败如实标记覆盖不完整。"
    }'
  ```

  ```bash CLI theme={null}
  kha agents create --file - <<'JSON'
  {
      "name": "监管处罚日报智能体",
      "description": "定时读取监管处罚公示，保存结构化记录并生成日报草稿",
      "model": {"id": "kimi-k3"},
      "skills": [{"skill_id": "skill_your_skill_id", "version": "1"}],
      "tools": [
        {
          "type": "custom",
          "name": "save_penalty_records",
          "description": "校验并保存行政处罚记录，重复文号更新已有记录。",
          "input_schema": {"type": "object", "properties": {}}
        },
        {
          "type": "custom",
          "name": "query_report_dataset",
          "description": "按日期范围查询处罚报告的统计数据集。",
          "input_schema": {"type": "object", "properties": {}}
        },
        {
          "type": "custom",
          "name": "save_report_draft",
          "description": "保存监管日报 Markdown 草稿，供人工审核。",
          "input_schema": {"type": "object", "properties": {}}
        }
      ],
      "system": "你负责每天整理银行监管行政处罚记录并生成日报草稿。读取固定的处罚公示来源，保存罚单和案由，个人罚单抽取所在单位；分类由处罚记录库完成；基于已保存数据生成报告；读取失败如实标记覆盖不完整。"
  }
  JSON
  ```
</CodeGroup>

保存响应中的智能体 ID，创建定时任务时需要引用。企业接入时，再为智能体绑定处罚记录库的三个自定义工具。

### 4. 创建执行环境

执行环境承载会话、脚本运行和工具调用。创建一个云端执行环境即可：

<CodeGroup>
  ```bash cURL theme={null}
  curl --request POST "https://api.moonshot.cn/v1/environments" \
    --header "Authorization: Bearer $KIMI_API_KEY" \
    --header "kimi-api-version: 2026-09-01-beta" \
    --header "Content-Type: application/json" \
    --data '{
      "name": "监管处罚日报环境",
      "description": "运行每日监管处罚读取和日报生成任务",
      "config": {"type": "cloud"}
    }'
  ```

  ```bash CLI theme={null}
  kha environments create --name "监管处罚日报环境" --description "运行每日监管处罚读取和日报生成任务"
  ```
</CodeGroup>

保存响应中的执行环境 ID，创建定时任务时需要引用。

#### 来源网站封禁共享出口时配置按域代理

云端执行环境通过平台共享出口 IP 访问公网，个别监管网站会封禁这类 IP。

这种情况的标准解法是在执行环境中按域名配置自有代理（proxy）：

1. 准备一个出口 IP 未被该网站封禁的 HTTP(S) 代理。目标网站封的是数据中心 IP，代理出口需要家庭或办公宽带这类普通 IP；
2. 代理有认证时，先把凭据存入凭据库；
3. 在执行环境的网络配置中添加代理，主机只填被封的域名，不要开启全局代理，其他来源继续直连；
4. 保存后新建会话验证，旧会话仍使用旧配置。

<img src="https://mintcdn.com/moonshotcn/7vTNryc2dHvZ-DZR/assets/pics/hosted-agents/environment-add-proxy.png?fit=max&auto=format&n=7vTNryc2dHvZ-DZR&q=85&s=a7e6e7b51d431648c5d1452b64d15362" alt="在执行环境的网络配置中添加按域代理" width="3020" height="1638" data-path="assets/pics/hosted-agents/environment-add-proxy.png" />

### 5. 配置每日定时任务

使用 Kimi 托管智能体的触发器每天创建一个新会话，避免不同日期的任务上下文互相干扰。下面的示例每天 08:30 运行：

<CodeGroup>
  ```bash cURL theme={null}
  curl --request POST "https://api.moonshot.cn/v1/triggers" \
    --header "Authorization: Bearer $KIMI_API_KEY" \
    --header "kimi-api-version: 2026-09-01-beta" \
    --header "Content-Type: application/json" \
    --data '{
      "name": "每日监管处罚日报",
      "agent_id": "agent_your_agent_id",
      "environment_id": "env_your_environment_id",
      "session_mode": "new_session",
      "policy": {
        "type": "cron",
        "expression": "30 8 * * *",
        "timezone": "Asia/Shanghai"
      },
      "resources": [
        {"type": "vault", "vault_id": "vlt_your_vault_id"}
      ],
      "initial_events": [
        {
          "type": "user.message",
          "data": {
            "content": [
              {
                "type": "text",
                "text": "读取上一个自然日新增的行政处罚公示，必需来源为 nfra 和 pbc，统计时区为 Asia/Shanghai。保存结构化记录，生成日报草稿并报告网站覆盖情况；日报仅保存为草稿，不直接发布。"
              }
            ]
          }
        }
      ]
    }'
  ```

  ```bash CLI theme={null}
  kha triggers create --file - <<'JSON'
  {
      "name": "每日监管处罚日报",
      "agent_id": "agent_your_agent_id",
      "environment_id": "env_your_environment_id",
      "session_mode": "new_session",
      "policy": {
        "type": "cron",
        "expression": "30 8 * * *",
        "timezone": "Asia/Shanghai"
      },
      "resources": [
        {"type": "vault", "vault_id": "vlt_your_vault_id"}
      ],
      "initial_events": [
        {
          "type": "user.message",
          "data": {
            "content": [
              {
                "type": "text",
                "text": "读取上一个自然日新增的行政处罚公示，必需来源为 nfra 和 pbc，统计时区为 Asia/Shanghai。保存结构化记录，生成日报草稿并报告网站覆盖情况；日报仅保存为草稿，不直接发布。"
              }
            ]
          }
        }
      ]
  }
  JSON
  ```
</CodeGroup>

触发器除了指定智能体和执行环境，还要在 `resources` 中绑定凭据库，供智能体访问处罚记录库。必需来源、统计时区和交付方式等任务参数写入 `initial_events` 的任务指令，不作为独立的资源类型挂载。技能管"能读什么"，配置管"这次必须读到什么"：处罚记录库看不到智能体挂的技能，只能拿配置里声明的必需来源对照实际收到的记录，缺来源就标记覆盖不完整。

日常运行使用新会话；跨天状态由处罚记录库保存，不依赖会话历史。触发器负责按时间启动任务，不负责读取网页、查重或审核报告。

需要月报时，再创建一个触发器，把 cron 表达式改为按月运行（例如每月 1 日 09:30），并在任务指令中把统计范围设为上一个完整自然月。月报和日报共用智能体、技能和处罚记录库，只有触发时间和统计范围不同。

### 6. 手动运行并检查结果

定时任务创建后，先手动运行一次：

<CodeGroup>
  ```bash cURL theme={null}
  curl --request POST "https://api.moonshot.cn/v1/triggers/$TRIGGER_ID/run" \
    --header "Authorization: Bearer $KIMI_API_KEY" \
    --header "kimi-api-version: 2026-09-01-beta" \
    --header "Content-Type: application/json" \
    --data '{
      "payload": "运行一次测试：读取最近一次公示，保存记录并生成日报草稿。"
    }'
  ```

  ```bash CLI theme={null}
  kha triggers run "$TRIGGER_ID" --payload "运行一次测试：读取最近一次公示，保存记录并生成日报草稿。"
  ```
</CodeGroup>

检查以下结果：

* 两个必需来源是否都被读取；
* 每条记录是否保留原文链接；
* 重复文号是否没有新增第二条记录；
* 缺文号的记录是否用回退键保存，并在报告脚注按机关和公示日期指代；
* 无法确定所在单位的个人罚单是否进入复核队列；
* 报告是否从已保存的数据集生成；
* 报告状态是否仍为草稿；
* 网站读取失败时，报告是否明确标记覆盖不完整。

### 7. 审核日报草稿

日报草稿包含：

* 本次统计日期范围；
* 网站覆盖情况；
* 新增处罚记录；
* 处罚金额和处罚动作汇总；
* 大额处罚记录；
* 待复核项；
* 每条重点记录的原文链接。

合规人员确认来源、数字和文字表述后，再由企业应用发送到飞书、邮件或内部合规系统。智能体不直接发布未经审核的日报。

## 接入企业系统

三个接口以自定义工具的形式绑定到智能体，底层实现可以替换为 SQLite、PostgreSQL、MongoDB 或企业已有数据平台。

主流程来源的下载脚本随技能维护；来源必须经过企业网关、代理或专用解析服务时，把下载封装为自定义工具。新来源先由智能体探测，验证稳定后再固化脚本，不需要为每个网站提前开发程序。

## 下一步

<CardGroup cols={4}>
  <Card title="配置每日定时运行" icon="clock" href="/docs/hosted-agents/triggers">
    配置每日运行和查看运行记录。
  </Card>

  <Card title="配置处罚记录库工具" icon="wrench" href="/docs/hosted-agents/tools">
    了解网页读取和自定义工具配置。
  </Card>

  <Card title="配置执行环境与代理" icon="server" href="/docs/hosted-agents/environments">
    配置会话运行环境。
  </Card>

  <Card title="保存服务访问凭据" icon="key" href="/docs/hosted-agents/vaults">
    保存处罚记录库的访问凭据。
  </Card>
</CardGroup>
