biweekly-report-generator
双周报生成助手
基于用户画像、钉钉日报、OKR、日程、邮件、待办、文档等多数据源自动生成结构化双周报
双周报生成助手
触发条件
当用户需要生成双周报/半月报时触发此技能。典型场景:
- "帮我写双周报"
- "生成过去两周的工作总结"
- "结合日报和日程写周报"
- "完善双周报内容"
核心原则
- 用户画像先行:首先获取用户基础信息,确定报告语气和工作视角
- 日报是内容基石:必须优先通过
dws report outbox list获取用户钉钉日报 - OKR指引方向:通过OKR判断工作重点,将日常工作与战略目标对齐
- 多数据源融合:结合日程、邮件、待办、文档等多维度信息,构建完整工作画像
- 严格遵循模板:按照五段式结构组织内容(个人双周重点工作、MaaS项目双周进展、AI全栈项目双周进展、双周业务思考、产品需求与问题反馈),与钉钉「新东区SA双周报」模板的5个字段一一对应
- 业务思考精简:无标题、每条约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 参数指定用户的企业邮箱地址。
执行流程:
- 尝试从用户画像获取邮箱:检查
ei-search-server::get_related_info返回的用户信息中是否包含邮箱字段 - 如未获取到邮箱,必须向用户询问:
为获取您的邮件数据,请提供您的企业邮箱地址(例如:yourname@example.com)
- 使用邮箱地址获取邮件:
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字左右
- 基于具体案例+洞察+建议的微缩结构
写作原则:
- 从点到面:从单个客户案例中抽象出行业共性需求或痛点
- ❌ "爱普生客户需要语音合成方案"
- ✅ "制造业客户对AI语音交互需求激增,需建立标准化TTS接入模板"
- 从执行到策略:从日常工作中识别模式,提出系统性改进方向
- ❌ "完成了Qoder集成演示"
- ✅ "低代码平台与AI工具链融合成为趋势,应沉淀自动化Demo生成能力"
- 从问题到趋势:将遇到的问题上升为行业挑战或技术机会
- ❌ "客户反馈文档管理混乱"
- ✅ "企业知识资产碎片化问题凸显,需构建统一的知识图谱检索体系"
示例格式:
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_name | field_sort | field_type |
|---|---|---|
| 一、个人双周重点工作 | 1 | 1 |
| 二、MaaS项目双周进展 | 4 | 1 |
| 三、AI全栈项目双周进展 | 2 | 1 |
| 四、双周业务思考 | 3 | 1 |
| 五、产品需求与问题反馈 | 5 | 1 |
⚠️ 注意
field_sort与字段中文序号并不一致(二=4、三=2、四=3),这是模板接口返回的原始值。拼装 contents 时必须原样透传,不要按序号自行纠正。
提交流程(严格按顺序执行,不可跳步):
- 确认模板可用(若不确定模板是否存在):
dws report template get --name "新东区SA双周报" --format json
从返回中提取 report_template_id 和 result.report_template_fields[]。
- 拆分报告内容:将生成的双周报按上述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_type,1=文本类,传字符串如"1"contentType文本类用"markdown"
- 提交日志:
dws report entry submit --template-id <templateId> --contents-file <tmp.json路径> --format json
- 长内容必须走
--contents-file,避免shell引号转义破坏JSON - contents JSON大小限制为10MB,不支持分批次提交
- 获取查看链接:submit成功后会自动反查详情并追加
dingtalkOpenMarkdownLink,直接使用该字段生成可点击链接:
[在钉钉中查看日志](dingtalk://...)
- 禁止把raw
dingtalk://...URL原样写进回复,必须包成markdown link
常见错误处理:
PARAM_ERROR:跳过第1步直接编templateId,或跳过第2步用LLM经验编key名 → 必须重走template list → template get → entry submitINPUT_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级别待确认)
- 纳芯微、天马微、诺基亚、光曜、福思优、龙旗等:跟进中
常见陷阱
- 不要编造数据:如果无法获取邮件或文档正文,如实说明限制
- 时间范围必须是上周一到本周五:不是简单的"过去14天"滚动窗口
- 时间格式必须完整:使用
YYYY-MM-DDTHH:mm:ss+08:00格式 - JSON解析降级:遇到截断或嵌套结构时,用shell命令而非复杂脚本
- 业务思考避免空泛:必须基于过去两周的具体工作案例,不能泛泛而谈
- 不要重复内容:日程中的会议如果日报已提及,只需补充时间细节,不要重复描述
- 日报优先原则:当日程、邮件、待办与日报冲突时,以日报为准(日报是用户主动记录的工作)
- GAAP级别标注:每个重点客户必须标注日GAAP级别,如不确定可标注"待确认"
- OKR关联不可缺:必须在报告中体现工作与OKR的关联,说明工作的战略价值
- 用户画像先行:必须先获取用户画像再开始数据收集,确保报告语气和视角正确
- 模板会随组织调整而变化:如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全栈项目双周进展/双周业务思考/产品需求与问题反馈)是否全部覆盖?
- [ ] 是否有编造的数据或信息?