设计日报/周报自动生成流水线:多数据源到成稿
谁在问:效率工具、内部平台团队;这道题容易被低估,面试官爱在「值不值得写」上做文章
口语化问法
- 我们想自动生成周报,数据从代码仓库、任务系统、会议纪要来,怎么做?
- 怎么让它别写成一堆流水账?
- 某个数据源接口挂了,这个流水线怎么办?
考察意图
这道题最常见的失分点是把它当成生成问题。它实际上是:
- 一道 workflow 题,不是 Agent 题。路径完全确定,上 Agent 只会更贵更不稳——考你会不会克制。
- 难点在筛选不在生成。把两百条事件压成五条值得说的,才是这个系统的价值所在;生成是最简单的一环。
- 脏活在数据对齐。同一个人在三个系统里三个 ID、同一件事在两个系统里两条记录、时区不一致——这些不解决,后面全是垃圾进垃圾出。
- 隐私边界。哪些数据能进、哪些不能进(私聊、他人任务、未公开的人事信息),是这类内部工具最容易翻车的地方。
参考答案
60 分答案(及格线)
定时任务每天拉取各个数据源的数据,做清洗和归一化,按人和项目聚合,然后把聚合结果喂给模型,用固定的模板 prompt 生成结构化的日报,最后推送到群里或邮件。可以让用户配置模板和关注的项目。
流程完整,及格。但它默认了「把数据给模型,模型自然会写好」——事实上这一步生成出来的东西读起来会像流水账,因为筛选逻辑没有设计,模型只能对着一堆同等重要的事件平铺直叙。
90 分答案(有生产经验的回答)
① 先问四个问题:这份报告给谁看——写给自己留档、给主管看、还是给跨部门同步?三者要的内容完全不同。读者最想知道什么——进度、风险、还是需要他决策的事项?数据源有哪些、各自的可靠性如何?以及一个很实际的问题:现在没有这套系统时,人是怎么写的、花多久——这就是基线。
② 基线:一个不含模型的版本。 定时拉数、按人和项目聚合、按固定模板填空、推送。这套东西已经能解决「忘了写」和「格式不统一」两个问题,而这往往是需求的一大半。先摆出来,是为了让后面「加模型」这件事必须自证价值——如果加了模型只是把结构化列表改写成句子,那就是负收益。
③ 加挂,每样说代价:
- 多源对齐(这是最重的脏活,也是最容易被低估的)。三件事:身份对齐(同一个人在代码平台、任务系统、日历里三个 ID,要有一张映射表,且要处理离职与改名);事件去重(一次改动在代码平台有提交、在任务系统有状态流转、在群里有一条消息,是同一件事,要合并);时间对齐(时区、跨天边界、以及「昨天下班后提交的算哪天」)。代价:这层没有任何智能可言,就是持续维护的规则;但它决定了上限——对齐做不好,后面模型再强也是垃圾进垃圾出。
- 筛选层(本题的真正难点)。把两百条事件压到五条,筛选规则要显式而不是交给模型:优先级来自「是否阻塞他人」「是否偏离计划」「是否是首次出现的风险」「是否需要读者做决定」。代价:规则要按团队调;为什么不交给模型——模型缺少「读者关心什么」这个外部信息,它只能按文本显著性排序,而文本显著性和业务重要性经常相反。
- 生成层:模型只负责把已经选好的事实写成人话,并且严格约束不得引入未在输入中出现的内容。代价:文风受限;收益:可控、可审计。这里的一个关键设计是**「无内容就不写」**——某个板块没有值得说的事,就应该空着或省略,而不是硬凑一段。
- 批处理:这类任务对延迟不敏感,天然适合走批处理接口,价格通常是标准价的一半左右。代价:结果不是实时的;这个场景恰好完全不在意。这是这道题里性价比最高的一条。
- 隐私边界:明确列出可进与不可进的数据源与字段;私聊、他人未公开的任务、人事相关一律不进。代价:覆盖面变小;必须付——内部工具的一次越界,足以让整个项目下线。
④ 评测:这类系统没有标准答案,评测要换思路:
- 对照评测:让人写一份、系统写一份,双盲让读者选哪份更有用——比任何自动指标都直接。
- 零成本信号优先:打开率、阅读完成率、以及「被引用到其他场合」的次数(有人把它复制到别的文档里,说明真有用);反向信号是编辑率——收到后被大幅改写的比例。
- 负向断言:不得出现输入中不存在的事实、不得出现被标记为不可进的数据源内容、不得出现具体人员的负面评价。这一层是发布闸门。
- 不要花力气去做「文本质量打分」,那个分数和有没有人看几乎无关。
⑤ 演进:出现「读者反复问同一个补充问题」→ 把那个字段加进模板,而不是让模型自由发挥;出现「多个团队想要不同视角」→ 从一份报告变成同一份事实的多个视图;出现「筛选规则越来越复杂且频繁变」→ 才考虑用模型做筛选,并且必须先有对照数据。退路:如果打开率长期低迷,砍掉生成层退回结构化列表——没人看的漂亮文字不如有人扫一眼的清单。
追问链
多个数据源怎么对齐?同一个人、同一件事怎么认出来?
期望三层,无捷径。身份:以人事或 SSO 为权威源建映射表,处理离职、改名、个人与机器人账号;事件:靠任务号、分支名、PR 号串联,没关联键才用时间窗 + 人 + 关键词弱匹配,宁可不合并也别错合并 —— 错合并会编出不存在的因果;时间:统一时区,定死「一天」的边界,处理跨天长任务信号说出「宁可不合并也不要错合并」→ 处理过真实数据;只说「用 ID 关联」→ 没遇到过没有关联键的情况怎么判断哪些事值得写进去?
期望显式规则优先,模型排序次之。写:阻塞他人、偏离原计划、新风险、需要读者做决定、里程碑;不写:例行事务、无状态变化的进展、纯个人操作。模型没有「读者关心什么」这个外部信息,只能按文本显著性排:长描述的小任务会盖过一句话带过的大风险。再开「不该写/漏了这条」的反馈入口,沉淀成规则信号说出「文本显著性 ≠ 业务重要性」→ 真调过这类系统;答「让模型判断重要性」→ 还没见过生成出来的流水账这种没有标准答案的东西怎么评?
期望① 人机对照双盲最有效,直接问「哪份更有用」;② 行为信号优先于内容打分:打开率、完读率、被复制引用次数、编辑率,且零成本;③ 负向断言做闸门:不得凭空捏造、不得越界数据源。别去做文本质量评分 —— 分高的报告和有人看的报告是两回事,读者行为才是终审信号主动说「不做文本质量打分」→ 理解了这类产品的评价本质;只说「用 judge 打分」→ 会把资源花在无关指标上某个数据源接口挂了怎么办?
期望静默降级,不报错也不硬编:① 缺失板块要显式标注「本次未获取到某某数据」而不是省略 —— 省略会让读者以为没事发生,更不能让模型脑补;② 流水线不因单源失败而整体失败,其余照常产出;③ 降级事件告警给维护者,不告警给读者。理由:一份被发现编造过一次的报告,之后没人再信它信号说出「缺失要显式标注而不是省略」→ 考虑过读者视角;答「重试或拿上次数据补上」→ 会造成更隐蔽的错误用户说「读起来一股 AI 味,没人看」,你怎么改?
期望「AI 味」= 信息密度低 + 没取舍 + 没立场,三件都不是文风问题,是筛选与结构问题。按性价比修:① 砍长度,每条一句话、整篇限条数 → ② 收紧「值得写」的规则,宁可三条不写十条 → ③ 模板加「风险」「要决定的事」这类必须给结论的字段逼出立场 → ④ 最后才动文风,拿团队写过的报告做示例。验证靠打开率与完读率对比;改不动就退回结构化清单,没人要就停掉信号直接去调文风提示词 → 停在表面;把「AI 味」拆成信息密度、取舍、立场三件事,还敢说「可能该停掉它」→ 有产品判断力
评分要点
- 明确这是 workflow 不是 Agent,并说得出为什么不上 Agent
- 基线是不含模型的版本,并说明它已经解决了需求的一大半
- 识别出筛选是真正的难点,且筛选规则显式而非交给模型
- 多源对齐讲到身份 / 事件 / 时间三层,且弱匹配保守
- 生成层严格约束不得引入输入中没有的内容,且「无内容就不写」
- 用批处理降成本,并说明这个场景不在意延迟
- 明确隐私边界(哪些源与字段不可进)
- 评测用人机对照 + 行为信号 + 负向断言,不做文本质量打分
- 单源失败静默降级并显式标注缺失