17.5 报告生成与人工审阅

面向经管学生、研究者与从业者的 AI 智能体设计教材

作者

李学恒、林建浩、严翊歆

发布于

2026-05-11

配图:人机协作审阅流程

分析 agent 产出的是一组结构化中间文件,不是可以直接交给投资委员会的备忘录。报告撰写 agent 的任务是把散落在 analysis/ 目录下的基本面报告、估值报告和行业报告整合为一份完整的投资备忘录(Investment Memo),同时确保每个数字都有来源标注、每条结论都有分析支撑。

报告撰写 agent 的工作方式

report-writer 读取 analysis/ 下所有分析报告,按投资备忘录模板生成初稿,存入 output/memo_draft.md。模板结构固定为六个板块:

板块 内容 数据来源
投资概要 一段话概括标的、评级、核心理由 综合三份分析报告
核心逻辑 3-5 条支撑投资判断的关键论据 行业报告 + 基本面报告
财务分析 关键指标表(ROE、净利率、营收增速等) 基本面报告
估值分析 DCF、可比公司、可比交易三种方法的结果 估值报告
风险因素 按影响程度排序的 3-5 条核心风险 三份报告的风险章节
结论与建议 评级(增持/中性/减持)+ 目标价区间 + 关键假设 综合判断

下面是 report-writer 的 agent.md 定义:

▶ Agent
---
name: report-writer
description: 投资备忘录撰写子代理。读取 analysis/ 下所有分析报告,按模板生成投资备忘录初稿。每个数字必须标注来源文件和页码。
model: sonnet
tools: Read, Write
---

你是投资备忘录的撰写方。你的任务是整合分析结果,不做独立判断。

## 工作流

1. 读取 analysis/ 下所有 .md 文件,提取关键数据和结论
2. 按 CLAUDE.md 中定义的备忘录模板生成六板块初稿
3. 每个数字后面标注来源:[来源: fundamental_report.md, 表2]
4. 风险因素按影响程度排序,标注概率和影响等级
5. 写入 output/memo_draft.md,末尾附上免责声明

## 关键原则

- 不编造任何数字,所有数据必须可追溯到 analysis/ 中的源文件
- 不同分析维度的结论有冲突时,如实列出分歧,不擅自取舍
- 结论措辞不能有"建议买入""应该卖出"等投资建议用语
- 末尾必须包含"本报告仅供研究参考,不构成投资建议"免责声明

report-writer 只有 Read 和 Write 权限,没有 Bash。它不能跑任何计算脚本,只能基于已有分析报告做文本整合。这个权限设计是刻意的:撰写阶段不应再产生新数据,所有数字都应来自上游 agent 的产出。

人在回路的五个关键节点

投研流水线从信息采集到报告交付,有五个节点必须由分析师亲自把关。

五大 HITL 节点
节点 检查内容 为什么不能自动化
1. 数据源确认 采集的数据是否齐全、来源是否可靠 AI 无法判断数据源的权威性和时效性
2. 核心假设审查 增长率、折现率、终值倍数等关键参数 这些参数直接决定估值结论,需要行业经验
3. 分析逻辑审查 因果关系是否成立、推理链条是否完整 AI 可能把相关性当因果性
4. 结论措辞审查 是否过度自信、是否有误导性表述 措辞分寸涉及合规风险
5. 免责声明合规 免责声明是否完整、是否符合监管要求 法律文本需要专业审核

这五个节点的共同特征是:错误成本高、判断标准依赖领域经验、无法用规则自动检验。Hooks 可以在这些节点强制暂停,把决策权交还给分析师。

Hooks 做质量门禁

下面这份 hooks 配置覆盖了报告生成阶段的三类检查:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write",
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/check-disclaimer.sh \"$CLAUDE_FILE_PATH\""
          }
        ]
      },
      {
        "matcher": "Write",
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/check-source-tag.sh \"$CLAUDE_FILE_PATH\""
          }
        ]
      }
    ],
    "Stop": [
      {
        "matcher": "memo_draft",
        "hooks": [
          {
            "type": "command",
            "command": "echo '投资备忘录初稿已生成,请人工审阅 output/memo_draft.md 后再继续'"
          }
        ]
      }
    ]
  }
}

三个 Hook 各管一类风险。第一个 PostToolUse(Write) 在任何文件写入 output/ 后扫描是否包含免责声明,缺了就 exit 2 拦截。第二个 PostToolUse(Write) 检查正文中的数字是否带 [来源: ...] 标注,未标注的数字会触发提示回灌给模型。第三个 Stop 在会话结束输出中匹配到 memo_draft 关键词时打印提示,要求分析师人工审阅备忘录初稿。

AI 分析不构成投资建议

投资备忘录的末尾必须包含免责声明。但免责声明不只是一句法律套话。分析师需要确认:备忘录正文中是否有任何措辞暗示了投资建议(如”建议增持”“值得买入”)。即使免责声明存在,正文中的建议性措辞仍可能构成合规风险。Hook 能检查免责声明是否存在,但正文措辞的分寸只能靠人审。

迭代修改闭环

分析师审阅备忘录初稿后,可以直接在 Claude Code 中发出修改指令:

▶ Claude Code
output/memo_draft.md 的估值分析板块有两个问题:第一,DCF 的终值增长率用了 4%,偏高,改成 3%,重新计算估值区间;第二,风险因素里缺少政策风险,补充新能源补贴退坡的影响。修改后更新免责声明的日期。

report-writer 根据修改指令更新备忘录,PostToolUse Hook 再次检查免责声明和来源标注。分析师确认无误后,将 memo_draft.md 重命名为 memo_final.md,完成交付。

高效审阅的检查清单

审阅投资备忘录时,按以下顺序检查效率最高:

  1. 先看数字:关键财务指标是否与原始财报一致
  2. 再看逻辑:核心投资论据的因果链条是否成立
  3. 然后看一致性:不同板块的结论是否矛盾
  4. 最后看措辞:是否有过度自信或误导性表述
  5. 收尾看合规:免责声明是否完整

整个报告生成阶段的核心原则是:AI 做整合和格式化,人做判断和把关。report-writer 负责把散落的分析结果拼成一份结构完整的备忘录,分析师负责确认每个数字、每条逻辑、每句措辞都经得起投资委员会的追问。