bk-daily-report

star 1

自动生成并上传蓝鲸日报。分析Git提交和iWiki文档编辑,生成今日总结和明日计划,上传到蓝鲸平台。当用户提到"写日报"、"生成日报"、"上传日报"、"自动日报"时使用此技能。

1StephenCurry1 By 1StephenCurry1 schedule Updated 3/5/2026

name: bk-daily-report description: 自动生成并上传蓝鲸日报。分析Git提交和iWiki文档编辑,生成今日总结和明日计划,上传到蓝鲸平台。当用户提到"写日报"、"生成日报"、"上传日报"、"自动日报"时使用此技能。

🚀 蓝鲸日报自动生成与上传

📋 核心职责

自动执行完整的日报生成流程:

  1. ✅ 分析 Git 提交记录(今天优先,今天无则昨天)
  2. ✅ 获取 iWiki 文档编辑(如果 MCP 可用)
  3. ✅ 综合分析并生成日报内容
  4. ✅ 上传到蓝鲸平台(日期始终为今天)

⚠️ 关键规则(必须遵守)

规则 1:日期处理策略

  • 代码提交日期 vs 日报提交日期
    • 代码提交日期:今天优先,今天无则使用昨天(用于生成内容)
    • 日报提交日期:永远使用今天report_date 参数)
  • 原因:日报记录的是"今天写的日报",而不是"代码提交的日期"

规则 2:全自动执行

  • 禁止向用户提问(如"是否上传?""需要修改吗?")
  • 直接执行整个流程:分析 → 生成 → 上传
  • 只在最后报告结果

规则 3:内容质量要求

  • 今日总结:3-7 项,每项 < 30 字,具体且有价值
  • 明日计划:基于今日工作推断,2-5 项
  • 优先级:重要功能 > 小优化 > 配置变更

🔧 执行流程

第零步:环境检测

检查必要组件:

# 检查配置文件
ls {SKILL_BASE_DIR}/assets/daily_report_config.yml

# 检查上传脚本
ls {SKILL_BASE_DIR}/scripts/upload_daily_report.py

# 检查 iWiki MCP(可选)
# 如果可用,后续步骤会使用

第一步:Git 提交分析

使用 Git 分析脚本:

# 方式A:使用脚本(推荐)
python3 {SKILL_BASE_DIR}/scripts/analyze_git_commits.py \
    --repo . \
    --period auto \
    --format json

或者 手动执行 Git 命令:

# 今天的提交
git log --since="today 00:00" --pretty=format:"%h|%an|%ad|%s" --date=format:"%Y-%m-%d %H:%M:%S"

# 如果今天没有,获取昨天的
git log --since="yesterday 00:00" --until="today 00:00" --pretty=format:"%h|%an|%ad|%s" --date=format:"%Y-%m-%d %H:%M:%S"

输出处理

  • 提取提交消息(%s 部分)
  • 按重要性分类:功能开发 > Bug 修复 > 优化 > 文档
  • 合并相似提交(如多次调试同一功能)

第二步:iWiki 文档分析(可选)

检测 iWiki MCP 是否可用

# 检查 MCP 工具列表中是否有 iWiki
iwiki_available = check_if_mcp_tool_exists("iWiki", "searchDocument")

如果 iWiki 可用,执行以下步骤

2.1 搜索作者的所有文档

⚠️ 注意:iWiki 按时间搜索不可靠,需要先搜索所有文档再筛选。

from datetime import datetime

# 获取今天的日期
today = datetime.now().strftime('%Y-%m-%d')

# 第一步:搜索作者的所有文档(用通配符 "*")
mcp_call_tool(
    serverName="iWiki",
    toolName="searchDocument",
    arguments={
        "query": "*",  # ⚠️ 不要用 modified:date,搜索不可靠
        "search_type": ["page"],
        "author": ["perryyzhang"]  # 替换为实际用户名
    }
)

2.2 从结果中筛选今天修改的文档

# 第二步:从返回的 contents 列表中筛选今天的
today_docs = []
for doc in results['contents']:
    modify_time = doc.get('modify_time', '')
    if modify_time.startswith(today):
        today_docs.append({
            'title': doc['title'],
            'modify_time': modify_time,
            'href': doc['href']
        })

输出处理

  • 提取文档标题和修改时间
  • 生成简要描述(如"更新了 X 文档")
  • 添加到今日总结

第三步:生成日报内容

综合 Git 提交和 iWiki 文档,生成日报:

今日总结生成规则

  1. 功能开发(优先级最高):

    • 示例:"完成 XXX 功能开发"
    • 示例:"实现 YYY 模块的 ZZZ 能力"
  2. Bug 修复

    • 示例:"修复 XXX 问题"
    • 示例:"解决 YYY 场景下的 ZZZ 异常"
  3. 优化改进

    • 示例:"优化 XXX 性能"
    • 示例:"重构 YYY 模块代码"
  4. 文档编辑(如果有 iWiki):

    • 示例:"更新 XXX 技术文档"
    • 示例:"编写 YYY 使用说明"

明日计划生成规则

  • 基于今日工作推断下一步
  • 示例:今日"完成登录功能" → 明日"测试登录功能并优化"
  • 示例:今日"修复拨测问题" → 明日"验证修复效果并回归测试"

格式要求

  • 每项以 - 开头
  • 换行符使用 \n
  • 示例:
    today_summary = "- 完成拨测模块重构\n- 修复引用路径问题\n- 优化代码结构"
    tomorrow_plan = "- 测试拨测功能\n- 编写单元测试\n- 更新技术文档"
    

第四步:上传到蓝鲸平台

使用上传脚本:

python3 {SKILL_BASE_DIR}/scripts/upload_daily_report.py \
    --summary "- 任务1\n- 任务2\n- 任务3" \
    --plan "- 计划1\n- 计划2" \
    --feeling "无" \
    --date "$(date +%Y-%m-%d)"  # ⚠️ 必须使用今天的日期

或者 在 Python 中调用:

import sys
from pathlib import Path
from datetime import datetime

# 添加脚本路径
sys.path.insert(0, str(Path("{SKILL_BASE_DIR}/scripts")))
from upload_daily_report import upload_report

# ⚠️ 日期必须使用今天,即使分析的是昨天的代码
today = datetime.now().strftime('%Y-%m-%d')

result = upload_report(
    today_summary="- 任务1\n- 任务2\n- 任务3",
    tomorrow_plan="- 计划1\n- 计划2",
    feeling="无",
    report_date=today  # ⚠️ 必须是今天的日期
)

if result['success']:
    print(f"✓ {result['message']}")
else:
    print(f"✗ {result['message']}")

📊 完整执行示例

用户输入:"帮我写今天的日报"

Agent 执行流程

  1. 分析 Git

    python3 {SKILL_BASE_DIR}/scripts/analyze_git_commits.py --period auto --format json
    

    输出:今天有 3 个提交

  2. 分析 iWiki(如果可用):

    # 搜索所有文档
    docs = mcp_call_tool("iWiki", "searchDocument", {"query": "*", "author": ["perryyzhang"]})
    # 筛选今天修改的
    today_docs = [d for d in docs['contents'] if d['modify_time'].startswith(today)]
    

    输出:今天编辑了 1 篇文档

  3. 生成内容

    今日总结:
    - 完成拨测模块底座切换
    - 修复引用路径问题
    - 优化代码结构
    - 更新"拨测能力切换"文档
    
    明日计划:
    - 测试拨测功能
    - 编写单元测试
    - 验证生产环境
    
  4. 上传

    python3 {SKILL_BASE_DIR}/scripts/upload_daily_report.py \
        --summary "- 完成拨测模块底座切换\n- 修复引用路径问题\n- 优化代码结构\n- 更新拨测能力切换文档" \
        --plan "- 测试拨测功能\n- 编写单元测试\n- 验证生产环境" \
        --date "2026-03-05"
    
  5. 输出结果

    ✓ 日报上传成功
    日期: 2026-03-05
    今日总结: 4 项
    明日计划: 3 项
    

🔍 故障排查

问题 1:配置文件未找到

错误信息配置文件不存在

解决方案

# 确认配置文件存在
ls {SKILL_BASE_DIR}/assets/daily_report_config.yml

# 如果不存在,从根目录复制
cp /path/to/daily_report_config.yml {SKILL_BASE_DIR}/assets/

问题 2:认证凭证过期

错误信息权限不足 (403)认证失败 (401)

解决方案

  1. 打开浏览器登录蓝鲸平台
  2. 打开开发者工具 → Network
  3. 提交一次日报,查看请求头
  4. 更新配置文件中的凭证:
    credentials:
      bk_ticket: "新的 ticket"
      bk_csrf_token: "新的 csrf token"
      bk_sessionid: "新的 session id"
    

问题 3:今天和昨天都没有提交

行为:无法生成日报

解决方案

  • 提示用户:"今天和昨天都没有代码提交,无法生成日报"
  • 建议用户手动填写日报内容

📁 文件结构

bk-daily-report-skill/
├── SKILL.md                          # 本文件(Skill 定义)
├── scripts/
│   ├── upload_daily_report.py        # 上传脚本(核心)
│   └── analyze_git_commits.py        # Git 分析脚本
├── assets/
│   └── daily_report_config.yml       # 配置文件(凭证)
└── references/
    └── (可选) 蓝鲸 API 文档

🎯 触发关键词

当用户消息包含以下关键词时,自动触发此 Skill:

  • "写日报" / "写蓝鲸日报"
  • "生成日报" / "自动日报"
  • "上传日报" / "提交日报"
  • "今天的日报" / "日报上传"

✅ 成功标准

执行成功的标志:

  1. ✅ Git 提交分析完成(今天或昨天)
  2. ✅ iWiki 文档分析完成(如果可用)
  3. ✅ 日报内容生成(3-7 项总结,2-5 项计划)
  4. ✅ 上传成功(输出包含"日报上传成功")

🚫 注意事项

  1. 不要询问用户:全自动执行,除非遇到无法解决的错误
  2. 日期必须是今天:即使分析昨天的代码,report_date 也用今天
  3. iWiki 搜索策略:不要用 modified:date,先搜全部再筛选
  4. 内容质量:确保每项总结具体且有价值,避免空洞描述

📞 依赖项

  • Python 3.8+
  • PyYAML
  • Git(命令行工具)
  • curl(命令行工具)
  • iWiki MCP(可选,用于文档分析)
Install via CLI
npx skills add https://github.com/1StephenCurry1/daily_report --skill bk-daily-report
Repository Details
star Stars 1
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator
1StephenCurry1
1StephenCurry1 Explore all skills →