AI 原生周报:从「周五补作业」到「数据自然长出来」

AI-Native Weekly Report — From Friday Homework to Organic Data Aggregation

每个周五下午,你的团队在做同一件事:打开空白文档,回忆这周干了什么,凑出一份周报。

这件事的荒谬之处在于——周一到周五,你们已经开了 10 次站会,讨论了 50 个问题,做了 20 个决策。所有信息都已经存在了,只是散落在会议录音、聊天记录、任务系统里。周报不是「写」出来的,应该是「长」出来的。

这篇文章用一个 War Room Scrum 的完整案例,说明怎么用 AI 原生思维重构日报和周报流程。核心转变: 不是让 AI 帮你润色周报,而是让 AI 从日常运转的数据中自动聚合出周报

先搞清楚问题在哪

传统周报流程:

周五下午 → 回忆这周干了啥 → 写成流水账 → 提交

问题不是「写得慢」,而是 信息在生产端就已经丢失了

信息源产生时间信息量周报利用率
站会发言每天 2 次几乎为 0
任务系统更新实时手动搬运
会议讨论不定时凭记忆
群聊记录实时低信噪比几乎为 0

AI 原生思维的第一步: 不要想着「怎么写周报」,先想「信息已经在哪里了」

案例:War Room 的一天

War Room 是一个技术支持团队的作战模式。每天早上站会对齐目标,晚上站会更新进展。数据天然结构化:

┌─────────────────────────────────────────────────────┐
│                  War Room Daily Flow                 │
├─────────────────────────────────────────────────────┤
│                                                     │
│  早会 (9:30)                                        │
│  ├── 听记录音 → ASR 转写                             │
│  └── 每人汇报今日目标                                │
│                                                     │
│  白天                                               │
│  ├── 任务系统:接单、处理、评分                       │
│  └── 群聊:实时讨论                                  │
│                                                     │
│  晚会 (17:30)                                       │
│  ├── 听记录音 → ASR 转写                             │
│  └── 每人汇报今日进展                                │
│                                                     │
│  产出                                               │
│  ├── 日报:结构化数据(自动聚合)                     │
│  └── 周五:周报(自动聚合 5 天日报)                  │
│                                                     │
└─────────────────────────────────────────────────────┘

War Room 日报模板

团队需要的日报长这样:

# War Room 日报 2026-05-25

## 1. 今日问题处理概览

今天 5 位用户总共处理了 23 个问题

其中:
- 90 分+ 任务数:12
- 60-90 分任务数:8
- <60 分任务数:3

## 2. Harness 规则沉淀

今天沉淀了 4 条 harness 规则:

| 任务类型 | 规则 | 提出人 |
|----------|------|--------|
| K8s OOM | 先看 request/limit → 再看 node memory pressure → 最后看 heap dump | 张三 |
| 数据库慢查询 | EXPLAIN 分析 → 检查索引 → 检查数据分布 → 考虑分区 | 李四 |
| Redis 超时 | 检查连接池 → 检查大 key → 检查网络抖动 | 王五 |
| 接口 5xx | 看 error log → 检查下游超时 → 检查自身资源水位 | 赵六 |

## 3. 任务类型满意度汇总

| 任务类型 | 处理数 | 平均满意度 |
|----------|--------|------------|
| K8s 问题 | 8 | 4.2 |
| 数据库问题 | 6 | 4.5 |
| 网络问题 | 5 | 3.8 |
| 应用问题 | 4 | 4.0 |

关键观察:这份日报的数据 没有一个需要人手动写

三层数据,三种采集策略

数据层示例采集方式人工介入
硬数据任务数、分数分布、满意度API 直接拉取
半结构化每人今日目标/进展听记 ASR → AI 提取2 分钟校对
软知识Harness 规则沉淀会议讨论 → AI 提取5 分钟校准

第一层:硬数据直接拉

任务系统有 API,分数和满意度都是现成字段:

from dataclasses import dataclass
from collections import defaultdict
from datetime import date

@dataclass
class DailyMetrics:
    total_users: int
    total_tasks: int
    score_90_plus: int
    score_60_90: int
    score_below_60: int
    type_satisfaction: dict[str, float]

def collect_daily_metrics(day: date) -> DailyMetrics:
    """从任务系统拉取当日硬数据"""
    tasks = task_system.query(date=day, team="war_room")
    
    users = {t.assignee for t in tasks}
    
    score_buckets = {"90+": 0, "60-90": 0, "<60": 0}
    for t in tasks:
        if t.score >= 90:
            score_buckets["90+"] += 1
        elif t.score >= 60:
            score_buckets["60-90"] += 1
        else:
            score_buckets["<60"] += 1
    
    # 按任务类型聚合满意度
    type_scores: dict[str, list[float]] = defaultdict(list)
    for t in tasks:
        if t.satisfaction is not None:
            type_scores[t.type].append(t.satisfaction)
    
    type_avg = {
        k: round(sum(v) / len(v), 1)
        for k, v in type_scores.items()
    }
    
    return DailyMetrics(
        total_users=len(users),
        total_tasks=len(tasks),
        score_90_plus=score_buckets["90+"],
        score_60_90=score_buckets["60-90"],
        score_below_60=score_buckets["<60"],
        type_satisfaction=type_avg,
    )

# generated by hugo AI

这一步没有任何 AI 参与的必要。用 AI 去「总结任务系统数据」是浪费——SQL 聚合比 LLM 又快又准。

第二层:听记 ASR → 结构化提取

早晚会用钉钉听记录音,ASR 转写后丢给 AI 提取。但 ASR 文本有三个坑:

  1. 口语化:「那个…审批流那边,灰度放到 50% 了,目前看没啥问题」
  2. 多人混合:没有明确说话人标记
  3. 早晚混合:同一段录音里可能既有目标又有进展

提取 Prompt 要针对这三个坑设计:

从以下站会 ASR 转写中提取每人的日报信息。

提取规则:
1. 忽略口语填充词(那个、就是、嗯、啊)
2. 根据内容推断说话人(如提到「我负责的审批流」→ 审批流 owner)
3. 区分「计划」(早会)和「结果」(晚会)
4. 只提取可验证的事实,忽略情绪表达

输出格式(每人一条):
姓名|目标/进展|任务描述|状态(✅/⚠️/❌)|卡点(如有)

ASR 文本:
"""
{听记转写内容}
"""

为什么不用听记自带的 AI 总结? 因为听记的总结是面向「会议纪要」的,而你需要的是面向「日报字段」的结构化数据。目标不同,提取逻辑不同。

第三层:Harness 规则沉淀

这是最有价值也最难自动化的部分。War Room 会议中经常有这样的讨论:

「刚才那个 K8s Pod OOM 的问题,我们发现通用的排查步骤应该是先看 request/limit 配置,再看 node memory pressure,最后才看应用 heap dump。以后遇到 OOM 都可以按这个顺序来。」

这句话就是一条 Harness 规则。但它混在 30 分钟的会议录音里,如果不刻意提取,下周就没人记得了。

提取 Prompt:

从以下 War Room 会议 ASR 中提取可复用的 Harness 规则。

判断标准(必须同时满足):
1. 描述的是通用排查步骤或解决方案模式
2. 不是针对单个问题的临时 fix
3. 有人明确提出了「以后遇到这类问题应该...」的意图

输出格式:
| 任务类型 | 规则(用 → 连接步骤)| 提出人 |

如果没有符合条件的规则,输出:无新增规则

ASR 文本:
"""
{听记转写内容}
"""

人工校准点:AI 提取的规则需要人花 5 分钟确认——有些规则看起来通用但实际上只适用于特定场景,有些口语化的表达需要改写成标准格式。

日报自动化流程

把三层数据拼起来:

import json
from pathlib import Path

def generate_daily_report(
    day: date,
    asr_morning: str,
    asr_evening: str,
) -> str:
    """生成 War Room 日报"""
    
    # 第一层:硬数据(API 拉取)
    metrics = collect_daily_metrics(day)
    
    # 第二层:AI 提取每人目标/进展
    personal_updates = ai_extract_updates(asr_morning, asr_evening)
    
    # 第三层:AI 提取 Harness 规则
    harness_rules = ai_extract_harness_rules(asr_evening)
    
    # 组合成日报 markdown
    report = f"""# War Room 日报 {day}

## 1. 今日问题处理概览

今天 **{metrics.total_users} 位**用户总共处理了 **{metrics.total_tasks} 个**问题

其中:
- 90 分+ 任务数:**{metrics.score_90_plus}**
- 60-90 分任务数:**{metrics.score_60_90}**
- <60 分任务数:**{metrics.score_below_60}**

## 2. Harness 规则沉淀

今天沉淀了 **{len(harness_rules)} 条** harness 规则:

{format_rules_table(harness_rules)}

## 3. 任务类型满意度汇总

{format_satisfaction_table(metrics.type_satisfaction)}
"""
    
    return report

# generated by hugo AI

然后通过 dws report 提交到钉钉日志系统:

dws report create --template "War Room 日报" --content "$(cat daily_report.md)" --format json

每天投入时间: 2 分钟校对 AI 提取结果

从日报到周报:周五聚合

5 天日报已经在钉钉日志系统里了,周五只需要做一次聚合:

# 拉取本周日报
dws report inbox --start-date "2026-05-25" --end-date "2026-05-29" --format json > weekly_raw.json

然后用 AI 聚合,关键是告诉 AI 怎么合并

基于本周 5 天 War Room 日报,生成周报。

聚合规则:
1. 问题处理:计算本周总量、日均、峰值,对比上周趋势
2. 分数分布:90+ 占比是否提升,<60 分任务有什么共性
3. Harness 规则:本周累计条数,按任务类型分类
4. 满意度趋势:哪些类型在提升,哪些在下降
5. 下周改进:基于 <60 分任务的共性原因给出建议

输出格式:
## 本周关键数据
## Harness 规则沉淀(本周累计)
## 满意度趋势
## 未解决的卡点
## 下周优先级

周报长什么样

AI 聚合后的周报:

## 本周关键数据

- 总处理问题:**112 个**(日均 22.4,峰值周三 28 个)
- 较上周 +15%

分数分布变化:
- 90+ 占比:**55%**(上周 48%,提升 7pp)
- <60 分任务 **11 个**,共性原因:新上线的微服务缺少文档

## Harness 规则沉淀(本周累计 18 条)

| 任务类型 | 规则数 | 代表性规则 |
|----------|--------|------------|
| K8s 问题 | 6 | OOM 排查三步法 |
| 数据库问题 | 5 | 慢查询 EXPLAIN 四步法 |
| 网络问题 | 4 | DNS 解析超时排查 |
| 应用问题 | 3 | 5xx 快速定位法 |

## 满意度趋势

| 任务类型 | 本周均值 | 上周均值 | 趋势 |
|----------|----------|----------|------|
| K8s 问题 | 4.3 | 4.1 | ↑ |
| 数据库问题 | 4.5 | 4.4 | → |
| 网络问题 | 3.6 | 4.0 | ↓ |
| 应用问题 | 4.0 | 3.8 | ↑ |

网络问题满意度下降,主因:2 个 DNS 相关问题处理时间过长。

## 未解决的卡点

- 新微服务缺少文档,导致 <60 分任务集中在第一周(张三跟进)
- DNS 排查工具不统一,效率低(王五跟进)

## 下周优先级

1. 新微服务文档补全(解决 <60 分任务根因)
2. DNS 排查 SOP 沉淀(基于本周 4 条 Harness 规则)
3. 满意度回访:针对本周 <60 分的 11 个任务

管理者要做的事:花 5 分钟 review,删掉 AI 生成的套话,补充只有你知道的判断(比如「网络问题满意度下降是因为某某人的 DNS 经验还没沉淀」)。

投入产出对比

传统方式AI 原生方式
每人每天写日报10 分钟 × 5 人 = 50 分钟0(站会就是日报)
管理者每天 review15 分钟2 分钟(校对 AI 提取)
周五写周报30 分钟0(自动聚合)
周五 review 周报15 分钟5 分钟(校准)
周总投入7.5 小时1.2 小时

但省时间不是重点。重点是 信息保真度——周报里的每个数字都可以追溯到当天的站会录音和任务系统记录,不是靠记忆「编」出来的。

写在最后

AI 原生写周报的核心不是「用 AI 写」,而是 让数据在生产过程中自然结构化,然后让 AI 做聚合

三个层次:

  1. 硬数据用 API——任务系统里已有的数据,不要让人再抄一遍
  2. 半结构化用 ASR + AI——站会发言用听记录音,AI 提取结构化字段
  3. 软知识用 AI 提取 + 人校准——会议中的经验沉淀,AI 初筛,人做最终判断

日报是周报的子集,站会是日报的子集。信息从站会开始,每天聚合一次成日报,每周聚合一次成周报。没有额外的「写」的动作,只有「确认」的动作。

这才是 AI 原生的工作方式——不是替代你写,而是让「写」这个动作变得不必要


你在用什么方式写周报?还是周五补作业?欢迎分享你的实践。


See also