SSkill 广场
Skill 广场/ 办公/ biweekly-report-generator

biweekly-report-generator

双周报生成助手

下载技能包
自研 办公 v1.0.0
14 次下载热度 23更新 2026-09-08 1 个文件 8.3 KB MIT 许可
描述

基于用户画像、钉钉日报、OKR、日程、邮件、待办、文档等多数据源自动生成结构化双周报

SKILL.md 正文

双周报生成助手

触发条件

当用户需要生成双周报/半月报时触发此技能。典型场景:

  • "帮我写双周报"
  • "生成过去两周的工作总结"
  • "结合日报和日程写周报"
  • "完善双周报内容"

核心原则

  1. 用户画像先行:首先获取用户基础信息,确定报告语气和工作视角
  2. 日报是内容基石:必须优先通过 dws report outbox list 获取用户钉钉日报
  3. OKR指引方向:通过OKR判断工作重点,将日常工作与战略目标对齐
  4. 多数据源融合:结合日程、邮件、待办、文档等多维度信息,构建完整工作画像
  5. 严格遵循模板:按照五段式结构组织内容(个人双周重点工作、MaaS项目双周进展、AI全栈项目双周进展、双周业务思考、产品需求与问题反馈),与钉钉「新东区SA双周报」模板的5个字段一一对应
  6. 业务思考精简:无标题、每条约50字、基于具体案例+洞察+建议的微缩结构

执行流程

步骤1:获取用户画像(必选)

通过 ei-search-server::get_related_info 工具获取用户基础画像信息:

aone-kit call-tool ei-search-server::get_related_info '{"param": {"bizDomain": "workclaw"}}'

提取关键信息

  • 花名/姓名:用于报告署名和语气风格
  • 职级/角色:判断工作视角(架构师/SA/研发等)
  • 团队/BU:明确组织归属
  • 直属上级:了解汇报关系
  • 最近编辑文档:辅助理解当前工作重点

用途

  • 确定报告的语气风格和叙述视角
  • 验证日报中的工作内容是否与用户角色匹配
  • 从最近编辑文档中提取潜在的工作重点线索

步骤2:确定时间范围

关键规则:时间范围为上周一到本周五,而非简单的"过去14天"。

计算方法:

  • 获取当前日期,确定本周五的日期
  • 计算上周一的日期(本周五往前推9天)
  • 例如:当前是2026-06-26(周五),则时间范围为 2026-06-15(周一)至 2026-06-26(周五)

使用完整ISO-8601格式:YYYY-MM-DDTHH:mm:ss+08:00

步骤3:获取钉钉日报(必选)

dws report outbox list --start "<上周一>T00:00:00+08:00" --end "<本周五>T23:59:59+08:00"
  • 获取"我发出的"日报(outbox),不是收到的(inbox)
  • 这是报告的核心内容来源,包含客户拜访、技术进展、问题解决等详细信息
  • 逐条读取日报正文,提取关键客户和工作细节

步骤4:获取OKR信息(必选)

通过 dws 技能或相关接口获取用户的OKR信息:

  • 获取当前周期(季度/半年度)的OKR目标
  • 重点关注:关键结果(KR)的完成进度、重点项目进展
  • OKR作为工作方向的指引,帮助判断哪些工作属于重点事项
  • 将日报中的工作与OKR对应,标注哪些工作直接支撑了OKR达成
  • 在报告中体现工作与战略目标的关联性

步骤5:获取日程信息(必选)

dws calendar event list --start "<上周一>T00:00:00+08:00" --end "<本周五>T23:59:59+08:00"
  • 提取关键会议:客户拜访、方案沟通、技术研讨、内部会议等
  • 将日程中的具体时间补充到日报对应条目中(如"6月17日进行声纹识别方案沟通")
  • 如JSON解析失败,使用 execute_shell + python3 -c 处理标准输出流

步骤6:获取邮件信息(必选)

关键前置条件dws mail message list 命令必须提供 --email 参数指定用户的企业邮箱地址。

执行流程

  1. 尝试从用户画像获取邮箱:检查 ei-search-server::get_related_info 返回的用户信息中是否包含邮箱字段
  2. 如未获取到邮箱,必须向用户询问
   为获取您的邮件数据,请提供您的企业邮箱地址(例如:yourname@example.com)
  1. 使用邮箱地址获取邮件
   dws mail message list --email <用户邮箱> --format json
  • 获取用户发送或接收的重要工作邮件
  • 重点关注:客户沟通邮件、方案确认邮件、会议纪要邮件、项目推进邮件
  • 邮件可作为日报内容的补充验证,特别是正式的方案确认和商务沟通
  • 注意:当前API不直接支持时间范围过滤,获取后需自行筛选双周期间的邮件

步骤7:获取待办事项(必选)

dws todo list --status "all" --start "<上周一>T00:00:00+08:00" --end "<本周五>T23:59:59+08:00"
  • 获取已完成和进行中的待办事项
  • 重点关注:已完成的客户任务、技术调研任务、方案编写任务、问题跟进任务
  • 将待办完成情况转化为工作成果描述,补充到对应客户条目中
  • 未完成的待办可作为各客户/项目条目中"下一步"描述的参考

步骤8:获取相关文档(必选)

推荐方法:从用户画像获取最近编辑文档

通过 ei-search-server::get_related_info 获取用户最近编辑的文档列表,然后筛选双周期间的文档:

aone-kit call-tool ei-search-server::get_related_info '{"param": {"bizDomain": "workclaw"}}'

从返回的 content.data.recentEditDocs 中提取双周期间更新的文档:

  • 检查每个文档的 updateAt 字段(毫秒时间戳)
  • 筛选条件:START_TS <= updateAt <= END_TS
  • 记录文档标题、更新时间、链接等信息

优势

  • 覆盖范围广,包含用户所有空间的最近编辑文档
  • 直接反映用户实际工作内容,准确度高
  • 避免 dws doc list 仅扫描特定目录的局限性

补充方法:使用 dws doc list

如需获取特定文件夹或知识库中的文档,可使用:

dws doc list --folder <folder_id> --limit 50

适用场景:

  • 需要查询特定客户文件夹中的文档
  • 需要遍历项目文件夹的子目录
  • 用户画像中未包含某些文档(如共享文档)

注意事项

  • 优先使用用户画像方法,覆盖率更高
  • dws doc list 作为补充,用于特定场景
  • 如OAuth限制无法读取正文,仅记录文档标题和更新时间
  • 文档标题可作为工作成果的佐证(如"编写了XX技术方案")

步骤9:数据融合与结构化

按以下五段式结构组织内容(与钉钉「新东区SA双周报」模板的5个字段一一对应):

一、个人双周重点工作

不归属于具体客户项目的个人重点工作:

  • 团队例行会议、跨团队协作(从日程提取)
  • 能力提升计划学习、培训认证
  • 休假记录(从日程或日报提取)
  • 双周内的关键里程碑与重要成果概述
  • 标注与OKR的关联,说明工作的战略价值

二、MaaS项目双周进展

按客户分点(标注日GAAP级别):

  • 客户名称-日GAAP千元级/百元级
    • a. 具体工作内容(主要来自日报)
    • b. 具体时间(从日程补充,如"6月17日进行声纹识别方案沟通")
    • c. 关键成果或下一步(结合邮件、待办、文档)
    • d. 与OKR的关联(说明该工作支撑了哪个OKR目标)

三、AI全栈项目双周进展

AI全栈相关项目进展(如 Qoder / Teambition / AI工具链集成、自动化demo、全栈AI方案落地等):

  • 按客户或项目分点,写法同MaaS项目进展(工作内容、具体时间、关键成果/下一步、OKR关联)
  • 如某项目横跨MaaS与AI全栈,按主要属性归入其一,避免两处重复

四、双周业务思考

核心要求

  • 从具体事项提炼拔高:不要停留在"做了什么"的层面,要上升到行业趋势、技术演进、方法论沉淀的高度
  • 避免流水账式总结:禁止简单罗列工作内容(如"完成了A客户方案""参与了B会议"),必须提炼出可复用的洞察
  • 每条字数控制在50字左右
  • 基于具体案例+洞察+建议的微缩结构

写作原则

  1. 从点到面:从单个客户案例中抽象出行业共性需求或痛点
    • ❌ "爱普生客户需要语音合成方案"
    • ✅ "制造业客户对AI语音交互需求激增,需建立标准化TTS接入模板"
  1. 从执行到策略:从日常工作中识别模式,提出系统性改进方向
    • ❌ "完成了Qoder集成演示"
    • ✅ "低代码平台与AI工具链融合成为趋势,应沉淀自动化Demo生成能力"
  1. 从问题到趋势:将遇到的问题上升为行业挑战或技术机会
    • ❌ "客户反馈文档管理混乱"
    • ✅ "企业知识资产碎片化问题凸显,需构建统一的知识图谱检索体系"

示例格式

1. [行业现象]显示[深层原因],需[战略级行动建议]。
2. [技术趋势]表明[演进方向],应[能力建设重点]。

反面示例(过于聚焦具体事项):

❌ 本周拜访了3个客户,分别讨论了方案A、B、C
❌ 完成了XX项目的技术方案编写
❌ 参加了团队周会和技术分享

正面示例(提炼到趋势层面):

✅ 制造业客户集中咨询AI质检方案,反映传统视觉检测向多模态AI演进的行业拐点,需预研视频+文本联合分析能力
✅ 多个项目遇到知识库检索效率瓶颈,暴露RAG技术在垂直领域的落地难点,应建立领域术语增强机制
✅ 客户对实时协作需求增加,暗示云端协同编辑将成为SAAS标配功能,需评估WebSocket架构升级路径

五、产品需求与问题反馈

  • 客户提出的产品需求(产品/功能 + 需求描述 + 来源客户)
  • 推进中遇到的问题与卡点(问题描述 + 影响范围 + 当前状态或建议)
  • 如本双周无新增,如实写"本双周无新增产品需求与问题反馈"

注意:新版模板(2026-08-01 更新)已移除独立的"未来两周工作计划"字段。后续计划以"下一步"形式简要附在各客户/项目条目内,不再单独成章;未完成的待办、日报中的"待跟进"事项、日程中已安排的未来会议、OKR未完成的关键结果均可作为"下一步"描述的素材。

步骤10:生成报告文件

使用 create_file 生成Markdown格式的双周报:

  • 文件名格式:YYYYMMDD_biweekly_report.md(使用本周五的日期)
  • 保存路径:当前工作目录

步骤11:迭代优化

根据用户反馈进行修改:

  • 如需补充日程细节,读取当前报告并修改对应部分
  • 如需精简业务思考,去除标题并将每条压缩到50字左右
  • 如需调整客户排序或GAAP级别,根据实际业务重要性调整
  • 使用 modify_file 进行精确替换

步骤12:提交钉钉日志(可选)

触发条件:用户明确要求"用XX模板提交日志"或"发到钉钉日志"时执行。

新东区SA双周报模板信息(2026-08-01 更新,由原"新东区SA周报"更名并扩展而来):

  • 模板名称:新东区SA双周报
  • 模板ID:18c47f1af2ff4f19232ae794f1197e8a(未变化)
  • 字段定义(5个文本字段,下表为参考快照,提交前必须重新 template get 核对最新值):
field_namefield_sortfield_type
一、个人双周重点工作11
二、MaaS项目双周进展41
三、AI全栈项目双周进展21
四、双周业务思考31
五、产品需求与问题反馈51

⚠️ 注意 field_sort 与字段中文序号并不一致(二=4、三=2、四=3),这是模板接口返回的原始值。拼装 contents 时必须原样透传,不要按序号自行纠正。

提交流程(严格按顺序执行,不可跳步):

  1. 确认模板可用(若不确定模板是否存在):
   dws report template get --name "新东区SA双周报" --format json

从返回中提取 report_template_idresult.report_template_fields[]

  1. 拆分报告内容:将生成的双周报按上述5个字段拆分为JSON数组,写入临时文件:
   [
     {
       "key": "一、个人双周重点工作",
       "sort": "1",
       "type": "1",
       "content": "<第一部分完整内容>",
       "contentType": "markdown"
     },
     {
       "key": "二、MaaS项目双周进展",
       "sort": "4",
       "type": "1",
       "content": "<第二部分完整内容>",
       "contentType": "markdown"
     },
     {
       "key": "三、AI全栈项目双周进展",
       "sort": "2",
       "type": "1",
       "content": "<第三部分完整内容>",
       "contentType": "markdown"
     },
     {
       "key": "四、双周业务思考",
       "sort": "3",
       "type": "1",
       "content": "<第四部分完整内容>",
       "contentType": "markdown"
     },
     {
       "key": "五、产品需求与问题反馈",
       "sort": "5",
       "type": "1",
       "content": "<第五部分完整内容>",
       "contentType": "markdown"
     }
   ]
    • key 必须与 template get 返回的 field_name 完全一致(不要自己改写)
    • sort 对齐 field_sort,传字符串如 "1"
    • type 对齐 field_type1=文本类,传字符串如 "1"
    • contentType 文本类用 "markdown"
  1. 提交日志
   dws report entry submit --template-id <templateId> --contents-file <tmp.json路径> --format json
    • 长内容必须走 --contents-file,避免shell引号转义破坏JSON
    • contents JSON大小限制为10MB,不支持分批次提交
  1. 获取查看链接:submit成功后会自动反查详情并追加 dingtalkOpenMarkdownLink,直接使用该字段生成可点击链接:
   [在钉钉中查看日志](dingtalk://...)
    • 禁止把raw dingtalk://... URL原样写进回复,必须包成markdown link

常见错误处理

  • PARAM_ERROR:跳过第1步直接编templateId,或跳过第2步用LLM经验编key名 → 必须重走 template list → template get → entry submit
  • INPUT_INVALID_JSON--contents--contents-file 内容非合法JSON → 检查数组结构,每项必须是object且含5个字段
  • INPUT_FILE_NOT_FOUND--contents-file 路径不存在 → 先确认sandbox OS与路径风格,改写到可移植目录
  • 连续≥3次返回PARAM_ERROR → 停止重试,降级建议用户在钉钉客户端手动填写

内容格式规范(关键)

钉钉日志文本字段对 Markdown 嵌套列表渲染支持有限,a. b. c.i. ii. iii. 等子项若在同一行用分号分隔,会导致内容挤在一起无法阅读。必须在提交前将报告内容扁平化

  • 主条目:保持 1. 2. 3. 编号,每个客户独占一行
  • 子项:全部改为 - 开头的独立行,不要使用 a. b. c.i. ii. iii.
  • 禁止:同一行内用分号连接多个子项(如 a. xxx; b. yyy; c. zzz
  • 缩进:子项可使用两个空格缩进表示层级关系,但必须独占一行

错误示例(会导致内容挤在一起):

1. 立讯-日GAAP千元级, a. Teambition + Qoder自动化联动demo完成并现场演示; b. teambition + Qoder接入链路完成打通; c. 研发负责人拜访;

正确示例(每个子项独立成行):

1. 立讯-日GAAP千元级
- Teambition + Qoder自动化联动demo完成并现场演示(6月25日),推进Qoder使用
- teambition + Qoder接入链路完成打通,待后续设计更直观的demo效果演示
- 研发负责人拜访,沟通qwen3-TTS未来演进到CosyVoice

注意事项

  • 本步骤为可选操作,默认不执行;仅在用户明确要求时才触发
  • 不同团队的日志模板字段可能不同,提交前必须先 template get 确认字段定义
  • 如果用户指定的模板不在可用列表中,需先确认模板名称是否正确,或建议用户选择现有相近模板

关键客户与GAAP级别参考

从历史记忆中提取的关键客户及其GAAP级别(需根据实际情况更新):

  • 珞博:日GAAP千元级
  • 立讯通讯:日GAAP千元级
  • 东浩兰生:日GAAP千元级
  • 爱普生:日GAAP百元级
  • 怪兽充电:重要客户(GAAP级别待确认)
  • 纳芯微、天马微、诺基亚、光曜、福思优、龙旗等:跟进中

常见陷阱

  1. 不要编造数据:如果无法获取邮件或文档正文,如实说明限制
  2. 时间范围必须是上周一到本周五:不是简单的"过去14天"滚动窗口
  3. 时间格式必须完整:使用 YYYY-MM-DDTHH:mm:ss+08:00 格式
  4. JSON解析降级:遇到截断或嵌套结构时,用shell命令而非复杂脚本
  5. 业务思考避免空泛:必须基于过去两周的具体工作案例,不能泛泛而谈
  6. 不要重复内容:日程中的会议如果日报已提及,只需补充时间细节,不要重复描述
  7. 日报优先原则:当日程、邮件、待办与日报冲突时,以日报为准(日报是用户主动记录的工作)
  8. GAAP级别标注:每个重点客户必须标注日GAAP级别,如不确定可标注"待确认"
  9. OKR关联不可缺:必须在报告中体现工作与OKR的关联,说明工作的战略价值
  10. 用户画像先行:必须先获取用户画像再开始数据收集,确保报告语气和视角正确
  11. 模板会随组织调整而变化:如2026-08-01"新东区SA周报"更名为"新东区SA双周报",字段从3个变为5个(新增MaaS/AI全栈项目进展与产品需求反馈,移除未来工作计划)。本文中的字段表仅为参考快照,生成报告结构和提交日志前都必须实时 dws report template get 核对最新字段定义

工具使用规范

  • ei-search-server::get_related_info:获取用户画像(第一步必选)
  • dws report outbox list:获取用户发出的钉钉日报(核心数据源)
  • dws calendar event list:获取用户日程(补充时间线和会议细节)
  • dws mail inbox list:获取邮件(补充正式沟通和方案确认)
  • dws todo list:获取待办事项(补充任务完成情况和未来计划)
  • dws doc list:获取文档列表(补充工作成果佐证)
  • dws okr 或相关接口:获取OKR信息(指引工作方向)
  • execute_shell + python3 -c:解析JSON数据
  • read_file / modify_file / create_file:生成和修改报告
  • grep_search:在已有文件中搜索特定内容

输出质量检查

在完成前确认:

  • [ ] 是否先获取了用户画像?
  • [ ] 时间范围是否为上周一到本周五(而非过去14天)?
  • [ ] 是否获取并融合了OKR信息?
  • [ ] 是否包含所有日报中的关键客户?
  • [ ] 是否补充了日程中的具体时间?
  • [ ] 是否融合了邮件、待办、文档的补充信息?
  • [ ] 是否标注了工作与OKR的关联?
  • [ ] 业务思考是否无标题且每条约50字?
  • [ ] 是否标注了客户的日GAAP级别?
  • [ ] MaaS项目进展与AI全栈项目进展是否分开呈现在对应字段?
  • [ ] 产品需求与问题反馈字段是否已填写(无新增则如实说明)?
  • [ ] 五个模板字段(个人双周重点工作/MaaS项目双周进展/AI全栈项目双周进展/双周业务思考/产品需求与问题反馈)是否全部覆盖?
  • [ ] 是否有编造的数据或信息?