跳到主内容
快讯直播
AI智模界
教程

AI 写周报:让领导爱看的汇报

这篇能做出什么

照着做完,你会得到一条可复用的流水线:把一周的零散记录(Git 提交、待办清单、会议纪要)丢进一个本地目录,跑一条命令,产出一份 400~800 字的结构化周报。它满足三个可检查的标准:

  • 每条产出都落到「动作 + 对象 + 数字 + 影响」四段式。例如:「把订单查询接口的缓存粒度从 5 分钟调到 30 秒,P95 延迟从 820ms 降到 340ms,覆盖每天约 12 万次调用。」
  • 风险段落写清影响范围与需要的支持,而不是「继续跟进」这类无法验证的话。
  • 全文控制在 1 分钟内读完,领导扫一眼就能看到数字和明确请求。

时间投入大致是这样:搭建流程约 30 分钟;之后每周约 10 分钟,其中 3 分钟收集素材、5 分钟人工核对数字、2 分钟微调措辞。相比从空白文档开始回忆一周干了什么,这条路径的差别在于——素材是现成的,AI 只负责排版和提炼,你负责核对事实。

前置条件清单

动手前先确认这几项:

1. 一个可调用的模型接口。可以是云端 API,也可以是本地部署的推理服务,只要提供 OpenAI 兼容的 chat/completions 接口即可。具体地址、模型名、计费方式以各服务商官方文档当前版本为准。

2. Python 3。用于跑收集、生成、校验三个脚本,版本以 Python 官方文档当前版本为准。只用标准库,不需要额外安装依赖。

3. 一个 Git 仓库。如果工作内容不在 Git 里,用任意文本文件代替也行,素材格式不影响流程。

4. 密钥管理方式。把密钥放进环境变量,不要写死在脚本里。

配置环境变量(bash):

```bash

export LLM_API_KEY="你的密钥"

export LLM_BASE_URL="https://你的服务地址/v1" # 以官方文档为准

export LLM_MODEL="你的模型名" # 以官方文档为准

```

把这三行加到 ~/.bashrc~/.zshrc 末尾,之后新开的终端都能直接用。

目录结构建议这样组织:

```text

weekly/

├── prompt.md # 提示词模板

├── weekly.py # 生成脚本

├── check.py # 质量校验脚本

├── Makefile

├── raw/ # 原始素材

└── out/ # 生成的周报

```

先定义「领导爱看」的硬标准

「爱看」听起来主观,但拆开之后是可以打分的。用这五条约束模型输出,比反复调措辞有效:

  • 结论前置:开头一句话说清本周整体状态,是「按计划」还是「有延期」。
  • 数字先行:每条成果至少带一个可核对的数字,没有数字的写「待补充」。
  • 状态分明:区分「已完成」「进行中」「受阻」,不要让三者混在一段里。
  • 请求具体:需要支持时写清「谁、在什么时间前、给什么」。
  • 篇幅有上限:超过 800 字就删,领导的注意力是有限资源。

这五条同时写进提示词和校验脚本,形成闭环。

建立素材池

周报写不出来,多数时候不是文笔问题,是一周的内容已经忘了。解决办法是让素材自动积累。

收集本周提交(bash):

```bash

mkdir -p raw out

git log --since="7 days ago" \

--pretty=format:'%h %ad %s' --date=short \

> raw/git.log

```

统计代码改动量(bash):

```bash

git log --since="7 days ago" --numstat --pretty=format:'--- %s' \

| awk '/^---/{msg=$0; next} NF==3 {add+=$1; del+=$2} END{print "新增行:", add, "删除行:", del}'

```

然后在 raw/week.md 里补三块内容,用纯文本写就行,不用讲究格式:

```markdown

本周任务

  • 订单查询慢,排查到缓存粒度问题,已改配置并观察三天
  • 对接支付渠道联调,卡在对方沙箱环境不稳定,已发邮件催
  • 帮新同事过了一遍发布流程

会议要点

  • 周三评审:下个迭代要接入对账系统,我负责接口部分
  • 周五同步:运营反馈导出功能偶尔超时

零散数字

  • 线上告警从 14 次降到 3 次
  • 联调阻塞了 2 个工作日

```

这一步的关键是先记流水账,再让模型提炼。指望模型从「优化系统」四个字里写出量化成果,做不到。

写提示词模板

prompt.md 建好,内容如下(text):

```text

你是一名严谨的汇报助理,只依据给定素材作答。

【写作要求】

1. 只使用素材中出现的数字、项目名、日期。素材里没有的数字一律写成「待补充」,

禁止推算、估算或补全。

2. 每条成果写成「动作 + 对象 + 量化结果 + 影响」四段式,一行一条。

3. 明确标注状态:已完成 / 进行中 / 受阻。

4. 风险部分必须写清三件事:影响范围、当前应对、需要谁在什么时间前给什么支持。

5. 全文控制在 800 字以内,用短句和列表。

6. 禁止使用「努力」「积极推进」「持续优化」「一定程度上」这类无法验证的词。

【输出格式】

一句话结论

本周产出

关键数字

风险与阻塞

下周计划(含预期完成时间)

需要的支持

【受众】

{{AUDIENCE}}

【原始素材】

{{RAW}}

```

{{AUDIENCE}} 是可变项,按汇报对象替换。给技术主管看,重点写技术方案和技术债;给业务主管看,重点写进度、影响面和交付时间;给更高层看,压缩到结果和资源请求。同一个素材,换一句话受众描述,输出结构会明显不同。

跑通生成脚本

weekly.py 只用标准库,直接调接口(python):

```python

import os, sys, json, pathlib, urllib.request

API_KEY = os.environ["LLM_API_KEY"]

BASE_URL = os.environ.get("LLM_BASE_URL", "").rstrip("/")

MODEL = os.environ["LLM_MODEL"]

def call(prompt: str) -> str:

payload = {

"model": MODEL,

"messages": [

{"role": "system", "content": "你是一名严谨的汇报助理,只依据给定素材作答。"},

{"role": "user", "content": prompt},

],

"temperature": 0.3,

}

req = urllib.request.Request(

f"{BASE_URL}/chat/completions",

data=json.dumps(payload).encode("utf-8"),

headers={

"Authorization": f"Bearer {API_KEY}",

"Content-Type": "application/json",

},

)

with urllib.request.urlopen(req, timeout=120) as resp:

data = json.loads(resp.read().decode("utf-8"))

return data["choices"][0]["message"]["content"]

def main():

audience = sys.argv[1] if len(sys.argv) > 1 else "技术主管"

raw = pathlib.Path("raw/week.md").read_text(encoding="utf-8")

git = pathlib.Path("raw/git.log")

if git.exists():

raw += "\n\n## Git 提交\n" + git.read_text(encoding="utf-8")

tpl = pathlib.Path("prompt.md").read_text(encoding="utf-8")

prompt = tpl.replace("{{AUDIENCE}}", audience).replace("{{RAW}}", raw)

text = call(prompt)

pathlib.Path("out").mkdir(exist_ok=True)

out = pathlib.Path("out/report.md")

out.write_text(text, encoding="utf-8")

print(f"已写入 {out},共 {len(text)} 字")

if __name__ == "__main__":

main()

```

运行(bash):

```bash

python weekly.py "技术主管"

cat out/report.md

```

第一次建议先用自己上一周的真实素材试,比用示例数据更容易发现问题。

加一道质量校验

模型偶尔会漏掉数字,或者偷偷用上「持续优化」这类词。写个几十行的检查脚本兜住(python):

```python

import re, sys, pathlib

text = pathlib.Path(sys.argv[1]).read_text(encoding="utf-8")

issues = []

量化密度:数字出现次数

nums = re.findall(r"\d+(?:\.\d+)?%?", text)

if len(nums) < 6:

issues.append(f"量化偏少:全文只有 {len(nums)} 处数字,建议每条成果都带数字")

不可验证措辞

filler = ["努力", "积极", "进一步", "一定程度上", "大力", "持续优化"]

hits = [w for w in filler if w in text]

if hits:

issues.append("含不可验证措辞:" + "、".join(hits))

待补占位

todo = text.count("待补充")

if todo:

issues.append(f"有 {todo} 处「待补充」,需要人工回填")

篇幅

if len(text) > 800:

issues.append(f"篇幅 {len(text)} 字,超过 800 字上限")

结构完整性

for section in ["一句话结论", "本周产出", "风险与阻塞", "下周计划"]:

if section not in text:

issues.append(f"缺少段落:{section}")

print("\n".join(issues) if issues else "检查通过")

```

运行(bash):

```bash

python check.py out/report.md

```

校验只负责提醒,不负责改。看到「待补充」就去素材里翻,翻不到就删掉那条——宁可少写一条,也别放一个模糊的数字进去。

固化成一键流程

用 Makefile 把三步串起来(makefile):

```makefile

.PHONY: collect report check all

collect:

mkdir -p raw out

git log --since="7 days ago" --pretty=format:'%h %ad %s' --date=short > raw/git.log

@echo "素材已收集,请补充 raw/week.md 中的任务与会议要点"

report:

python weekly.py "技术主管"

check: report

python check.py out/report.md

all: collect report check

```

每周五下午跑(bash):

```bash

make all

```

屏幕上会先打印素材收集提示,再打印生成的周报,最后列出需要人工处理的问题。整个过程通常在一分钟内结束。

常见坑与排错

输出全是空话。 原因是素材太薄。检查 raw/week.md,如果只有三四行概括,模型只能把这几行换个说法。补足原始记录,尤其是数字和具体人名、系统名。

数字对不上。 模型有时会把「三天」和「3 次」串在一起。提示词里已经禁止推算,但仍要人工核对每个数字的来源。校验脚本报出的「待补充」必须逐个处理。

接口报 401 或 403。 多半是环境变量没生效。用 echo $LLM_API_KEY | head -c 6 确认前几位是否正常,注意新开的终端才会读到 ~/.bashrc 的新内容。

接口报 404。 LLM_BASE_URL 少了或多了 /v1,或者末尾多了斜杠。脚本里已经做了 rstrip("/"),剩下的按服务商文档核对路径。

超时。 素材太长时会更慢。urlopentimeout 已经设成 120 秒,如果仍超时,先删掉 raw/git.log 里冗长的提交信息,只保留标题行。

内容不适合外发。 客户名、未公开的财务数据、内部代号不要直接传给第三方接口。写素材时用代号替换,或者在提示词里加一句「把方括号包裹的内容原样保留、不要改写」。对保密要求高的场景,改用本地部署的模型服务。

生成完就直接交。 留 5 分钟做三处人工干预:开头的一句话结论改成你自己的判断;风险段落里补上你才知道的背景;下周计划里把时间点写成具体日期。这五分钟决定了周报是「AI 味」还是「你的周报」。

下一步建议

  • 按受众存多份提示词prompt-tech.mdprompt-biz.mdprompt-exec.md 各存一份,脚本加个参数切换,同一周素材能产出三种版本。
  • 做月度复盘。把四周的 out/report.md 拼起来,用同一套流程生成月报,模板里把「下周计划」换成「趋势与偏差」。
  • 接提醒机器人。用系统的定时任务在每周固定时间提醒收集素材,避免周五临时回忆。
  • 建数字台账。把每周出现的关键指标记进一个 CSV,几个月后回看,述职和晋升材料基本就是现成的。
  • 把模板纳入版本管理。提示词改了什么、效果如何,留个提交记录,团队里其他人也能复用。

流程搭好之后,周报的定位会变:它不再是每周五的负担,而是一周工作的自动留痕。你要做的只是保证素材真实、数字准确,剩下的交给脚本。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。