OpenClaw实战:5分钟搞定自动日报系统
作者: 老班长
很多团队每天花30分钟做日报,但最后形成的只是几行“今天完成了什么”的流水账,既难以沉淀知识,也无法被后续检索复用。2026年已经有不少团队开始用大模型做周报自动生成,却在落地“日报自动化”时被各种配置问题卡住,效果常常是3分钟生成一堆废话。本文将完整演示如何用 OpenClaw 从零搭建一个可落地的自动日报系统:包括环境准备、数据抓取、提示词配置、定时任务与结果校验,让你用 10 分钟搭一个真正可用、可扩展的日报自动化方案。
一、遇到的问题
实际团队在尝试用大模型生成日报时,常见的问题可以归纳为几类:
1. 数据来源混乱:日报内容要来自哪里?是从 Git 提交、任务系统(如 Jira)、即时通讯工具(如飞书、企业微信)还是本地记录中抽取?很多方案停留在“手动整理后丢给模型”,自动化程度几乎为零。
2. 输出质量不稳定:直接把“今天提交记录”贴给模型,得到的日报要么太口语,要么信息遗漏严重,甚至模型还会生成不存在的任务,导致管理者对自动化日报产生不信任。
3. 缺乏可配置性:不同团队对日报要求不同,有的强调进度,有的强调风险,有的需要中英双语。有的工具几乎无法根据团队规范调整,或者配置方式过于复杂,无法在团队内部推广。
4. 部署与集成困难:实际落地时需要考虑:如何与现有 Git 仓库集成?如何对接公司内网的任务系统 API?如何用一个统一的定时任务在每天下班前自动生成并推送日报?当中一旦有一步不清晰,就会变成需要运维支持的大工程。
OpenClaw 提供的能力,正是把“数据抓取 + 结构化提示词 + LLM 调用 + 任务编排”串成一个统一的流程。下面将以“从 Git 提交和任务管理系统自动生成日报”为例,带你从空环境开始搭建完整系统。
二、准备工作
在开始实战操作之前,需要先确认以下环境条件和依赖项已经就绪:
1. 系统与基础环境
(1)操作系统:建议使用 Linux 服务器(如 Ubuntu 22.04),也可以在 macOS 本地测试;本文以 Ubuntu 为例。
(2)Python 环境:需要 Python 3.10 及以上。输入命令:python3 --version,按回车。预期结果:输出类似 Python 3.10.12 的版本信息。
(3)Git:用于读取提交记录。输入命令:git --version,按回车。预期结果:输出类似 git version 2.34.1。
2. OpenClaw 安装
本文以 OpenClaw 官方基于 Python 的 CLI 工具为例,确保 pip 已安装。输入命令:pip3 --version,按回车。预期结果:输出 pip 版本号。
在终端执行安装命令:pip3 install openclaw,按回车。预期结果:成功安装后无报错,最后一行出现 Successfully installed openclaw-...。
验证 OpenClaw CLI 是否可用。输入命令:openclaw --help,按回车。预期结果:终端输出 OpenClaw 帮助信息,包括可用子命令列表(如 run、init、config 等)。
3. LLM 接口配置
OpenClaw 需要调用大模型 API。以支持 OpenAI API 兼容协议的接口为例:
(1)申请或准备好 API Key,例如来自兼容 OpenAI 协议的国内厂商或自建代理网关。
(2)在服务器上设置环境变量。输入命令:export OPENCLAW_API_KEY="你的APIKey",按回车。预期结果:命令执行无报错。
(3)如使用自建兼容网关,需要设置 API Base 地址。输入命令:export OPENCLAW_API_BASE="https://你的网关域名/v1",按回车。预期结果:命令执行无报错。
为避免每次登录丢失环境变量,可以将上述两行加入 ~/.bashrc。输入命令:echo 'export OPENCLAW_API_KEY="你的APIKey"' >> ~/.bashrc,按回车;再输入命令:echo 'export OPENCLAW_API_BASE="https://你的网关域名/v1"' >> ~/.bashrc,按回车。预期结果:无报错,配置写入文件。重启服务:执行 source ~/.bashrc 重新加载环境变量。
4. 项目代码仓库与任务系统访问权限
(1)准备一个 Git 仓库,该仓库包含本团队日常开发代码,且本机拥有拉取权限。输入命令:cd /opt/project && git log -5 --oneline,按回车。预期结果:输出最近 5 条提交记录。
(2)准备任务系统的访问方式。以常见的 REST API 任务系统为例,需要一个可访问的 HTTP API 地址以及访问 Token。可以将 Token 写入环境变量。输入命令:export TASK_API_TOKEN="你的任务系统Token",按回车。预期结果:无报错。
三、核心步骤:搭建 OpenClaw 自动日报流程
本节将从初始化项目开始,逐步完成“数据收集 → 提示词设计 → 流程编排 → 定时任务”四个核心步骤。
步骤 1:初始化 OpenClaw 项目
(1)新建一个专门用于自动日报的目录。输入命令:mkdir -p /opt/openclaw-daily-report && cd /opt/openclaw-daily-report,按回车。预期结果:目录创建成功并切换到该目录。
(2)使用 OpenClaw 初始化项目。输入命令:openclaw init,按回车。预期结果:当前目录生成基础配置文件,如 claw.yaml、flows/ 目录等。
打开 claw.yaml 配置模型和全局参数,在服务器上使用文本编辑器修改(如 nano)。输入命令:nano claw.yaml,按回车。在文件中添加或调整如下内容:
model: "gpt-4.1"
timeout: 60
max_tokens: 1024
编辑完成后按 Ctrl+O 保存,按回车确认,按 Ctrl+X 退出。预期结果:claw.yaml 文件中已包含上述配置。重启服务:此处无需重启服务,后续执行流程时会自动使用新配置。
步骤 2:实现数据收集节点(Git + 任务系统)
OpenClaw 支持通过自定义 Python 脚本作为数据节点。下面创建一个脚本用于收集当天 Git 提交以及任务完成情况。
(1)创建数据收集脚本目录和文件。输入命令:mkdir -p nodes && nano nodes/collect_data.py,按回车。
在编辑器中输入以下代码:
import os
import subprocess
import requests
from datetime import datetime, timedelta
def get_git_commits(repo_path: str, since_hours: int = 24) -> str: since_time = (datetime.now() - timedelta(hours=since_hours)).strftime("%Y-%m-%d %H:%M:%S") cmd = [ "git", "-C",
repo_path, "log", f'--since={since_time}', "--pretty=format:%h %an %s" ] result = subprocess.run(cmd, capture_output=True, text=True, check=True) return result.stdout.strip()
def get_tasks(api_base: str, token: str) -> str: headers = {"Authorization": f"Bearer {token}"} url = f"{api_base}/tasks?status=done&range=today" resp = requests.get(url, headers=headers, timeout=10) resp.raise_for_status() tasks = resp.json() lines = [] for t in
tasks: line = f"{t.get('id')} {t.get('title')} 优先级:{t.get('priority')} 用时:{t.get('spent_hours')}h" lines.append(line) return "\n".join(lines)
def run(): repo_path = os.environ.get("PROJECT_REPO_PATH", "/opt/project") task_api_base = os.environ.get("TASK_API_BASE", "https://task.example.com/api") task_token = os.environ.get("TASK_API_TOKEN", "") git_part = get_git_commits(repo_path) tasks_part = "" if task_token: tasks_part =
get_tasks(task_api_base, task_token) return { "git_commits": git_part, "tasks": tasks_part }
编辑完成后,按 Ctrl+O 保存文件,按回车,再按 Ctrl+X 退出。预期结果:nodes/collect_data.py 文件已生成且包含以上代码。
配置环境变量,指定代码仓库路径和任务系统 API 地址。输入命令:echo 'export PROJECT_REPO_PATH="/opt/project"' >> ~/.bashrc,按回车;再输入命令:echo 'export TASK_API_BASE="https://task.example.com/api"' >> ~/.bashrc,按回车。预期结果:无报错。重启服务:执行 source ~/.bashrc 使配置生效。
步骤 3:设计日报生成提示词节点
OpenClaw 支持在流程中定义“LLM 节点”,将上一步收集的数据输入到模型中,并通过系统提示词控制输出格式。
(1)创建流程文件。输入命令:mkdir -p flows && nano flows/daily_report.yaml,按回车。
在文件中输入以下内容:
name: daily_report_flow nodes: - id: collect_data type: python path: nodes/collect_data.py entry: run - id: generate_report type: llm model: "gpt-4.1" prompt: system: | 你是一名资深研发团队负责人,
现在需要根据当天的提交记录和任务完成情况,生成一份结构化的日报。 要求: 1. 输出使用简体中文。 2. 按照“今日完成事项 / 进行中事项 / 明日计划 / 风险与问题 / 备注”五个部分输出。 3. 每个事项尽量对应具体任务或提交,
避免泛泛而谈。 4. 不要编造不存在的任务或进展。 5. 控制在 400 字左右。 user: | 以下是今天的 Git 提交记录: {{ git_commits }} 以下是今天任务系统中已完成的任务: {{ tasks
}} 请根据上述信息生成一份日报。 edges: - from: collect_data to: generate_report
保存并退出。预期结果:flows/daily_report.yaml 文件存在且结构正确。
步骤 4:配置输出保存与发送
通常需要将生成的日报保存到文件或通过邮件、IM 发送。这里先实现保存到本地文件。
(1)新增一个保存节点脚本。输入命令:nano nodes/save_report.py,按回车。
输入代码:
import os
from datetime import datetime
def run(report_text: str): output_dir = os.environ.get("REPORT_OUTPUT_DIR", "/opt/openclaw-daily-report/output") os.makedirs(output_dir, exist_ok=True) date_str = datetime.now().strftime("%Y-%m-%d") filepath = os.path.join(output_dir, f"daily-report-{date_str}.txt") with open(filepath, "w", encoding="utf-8") as
f: f.write(report_text) return {"path": filepath}
保存并退出。预期结果:nodes/save_report.py 文件保存成功。
(2)更新流程文件,将保存节点接入。输入命令:nano flows/daily_report.yaml,按回车,将文件内容修改为:
name: daily_report_flow nodes: - id: collect_data type: python path: nodes/collect_data.py entry: run - id: generate_report type: llm model: "gpt-4.1" prompt: system: | 你是一名资深研发团队负责人,
现在需要根据当天的提交记录和任务完成情况,生成一份结构化的日报。 要求: 1. 输出使用简体中文。 2. 按照“今日完成事项 / 进行中事项 / 明日计划 / 风险与问题 / 备注”五个部分输出。 3. 每个事项尽量对应具体任务或提交,
避免泛泛而谈。 4. 不要编造不存在的任务或进展。 5. 控制在 400 字左右。 user: | 以下是今天的 Git 提交记录: {{ git_commits }} 以下是今天任务系统中已完成的任务: {{ tasks
}} 请根据上述信息生成一份日报。 - id: save_report type: python path: nodes/save_report.py entry: run edges: - from: collect_data to: generate_report - from: generate_report to: save_report
四、验证结果
保存并退出。预期结果:流程中包含三个节点且连接顺畅。
(3)配置日报输出目录环境变量。输入命令:echo 'export REPORT_OUTPUT_DIR="/opt/openclaw-daily-report/output"' >> ~/.bashrc,按回车。预期结果:无报错。重启服务:执行 source ~/.bashrc 使配置生效。
步骤 5:添加定时任务实现自动化
最后,将 OpenClaw 流程通过 cron 定时任务在每个工作日自动执行。
(1)先确认手动执行命令。输入命令:cd /opt/openclaw-daily-report && openclaw run -f flows/daily_report.yaml,按回车。预期结果:流程成功执行,无错误输出,终端最后显示包含生成报告路径的信息。
(2)编辑当前用户的 crontab。输入命令:crontab -e,按回车。如果第一次使用,会提示选择编辑器,可选择 nano。
在 crontab 中新增一行定时任务,例如每天 18:30 自动生成日报:
30 18 * * 1-5 cd /opt/openclaw-daily-report && /usr/bin/env bash -c 'source ~/.bashrc && openclaw run -f flows/daily_report.yaml >> /opt/openclaw-daily-report/logs/cron.log 2>&1'
保存并退出。预期结果:crontab 安装成功,无报错提示。
创建日志目录,确保 cron 输出可记录。输入命令:mkdir -p /opt/openclaw-daily-report/logs,按回车。预期结果:目录创建成功。
在所有配置完成后,需要验证自动日报系统是否按预期工作。
1. 验证数据收集节点
(1)单独调用数据收集脚本,确保可以读取 Git 提交与任务数据。输入命令:cd /opt/openclaw-daily-report && python3 -c "from nodes.collect_data import run; import json; print(json.dumps(run(), ensure_ascii=False, indent=2))",按回车。
预期结果:终端输出一个 JSON 结构,包含 git_commits 和 tasks 字段,字段内容为多行文本。
2. 验证 OpenClaw 整体流程
(1)手动运行流程。输入命令:cd /opt/openclaw-daily-report && openclaw run -f flows/daily_report.yaml,按回车。
五、常见问题排查
预期结果:
1)终端显示流程节点执行日志,包括 collect_data、generate_report、save_report 三个节点。
2)在输出目录中生成当天的日报文件。输入命令:ls /opt/openclaw-daily-report/output,按回车。预期结果:看到类似 daily-report-2026-03-22.txt 的文件名称。
3)查看文件内容。输入命令:cat /opt/openclaw-daily-report/output/daily-report-2026-03-22.txt(将日期替换为当前日期),按回车。预期结果:文本内容按“今日完成事项 / 进行中事项 / 明日计划 / 风险与问题 / 备注”结构呈现,内容具体且与当天提交记录和任务记录相对应。
3. 验证定时任务执行
由于 crontab 按照设定时间执行,无法即时触发,但可以通过模拟执行时间进行验证:
(1)通过查看 cron 日志验证。到达设定时间后,输入命令:tail -n 50 /opt/openclaw-daily-report/logs/cron.log,按回车。
预期结果:日志中出现当天 18:30 左右的执行记录,且没有错误堆栈信息,提示流程执行成功。
(2)查看日报文件是否每天更新。输入命令:ls -ltr /opt/openclaw-daily-report/output,按回车。
预期结果:每个工作日生成一个新的 daily-report-YYYY-MM-DD.txt 文件,时间戳与定时任务执行时间一致。
在实践中,搭建和运行过程中可能会遇到一些典型问题,可以按以下方式排查:
问题 1:openclaw 命令找不到
现象:执行 openclaw --help 提示 command not found。
排查步骤:
1)确认 Python 安装路径。输入命令:which python3,按回车。预期结果:看到一个绝对路径,如 /usr/bin/python3。
2)确认 pip 安装路径。输入命令:which pip3,按回车。预期结果:路径通常在 /usr/bin/pip3。
3)查看 openclaw 安装位置。输入命令:pip3 show openclaw,按回车。预期结果:输出中包含 Location: 字段,后面是安装目录。
4)如果 openclaw 安装在用户本地 bin 目录(如 ~/.local/bin),需要将此路径加入 PATH。输入命令:echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc,按回车。重启服务:执行 source ~/.bashrc,然后再次输入 openclaw --help,按回车。预期结果:显示帮助信息。
问题 2:Git 提交记录为空
现象:生成的日报中“今日完成事项”很少或为空,手动执行数据收集脚本输出中 git_commits 为空字符串。
排查步骤:
1)检查项目路径。输入命令:echo $PROJECT_REPO_PATH,按回车。预期结果:输出 /opt/project 或设置的路径。
2)测试 Git 命令。输入命令:git -C $PROJECT_REPO_PATH log -5 --oneline,按回车。预期结果:至少有几条提交记录。
3)检查提交时间范围。如果当天没有新的提交,24 小时内可能确实为空;可以在 collect_data.py 中将 since_hours 调整为 48,保存后重跑流程。
问题 3:任务系统数据获取失败
现象:日志中提示任务系统接口请求错误,或日报中“任务完成情况”部分为“无”。
排查步骤:
1)确认 Token 设置。输入命令:echo $TASK_API_TOKEN,按回车。预期结果:输出非空字符串。
2)直接通过 curl 测试 API。输入命令:curl -H "Authorization: Bearer $TASK_API_TOKEN" "https://task.example.com/api/tasks?status=done&range=today",按回车。预期结果:返回 JSON 数据。
3)如果返回错误码(如 401、403),需要重新申请正确的 Token 或调整任务系统权限。
问题 4:模型调用失败或输出乱码
现象:执行流程时报错,提示无法连接 LLM API,或生成的日报内容出现乱码。
排查步骤:
1)确认网络连通。输入命令:curl -i "$OPENCLAW_API_BASE/models",按回车。预期结果:返回 200 或 401 等可预期状态码,而不是连接失败。
2)确认 API Key 是否正确。输入命令:
echo $OPENCLAW_API_KEY,按回车。预期结果:输出已设置的 Key。

