# 准备每周报告

群聊个人周报和飞书个人周报草稿默认直接返回完整 Markdown 正文，不依赖本地文件写入成功。明确指定 Markdown 输出路径时仍按文件交付，旧的文件交付恢复请求保持兼容。返回正文不会对外发送或提交。

`weekly_report` 是 Agent 路由入口：理解完整请求，选择飞书个人、群聊个人、小组、腾讯中的一项或多项，再将原话逐字传给对应 Workflow。不会按关键词或冒号拆分要求，不强制只生成草稿，也不设置共同周次或共同检查点。未提飞书时，「写个人周报 / 本周进展」走群聊三段短稿，不走飞书表单。

| 入口 | 用途 |
| --- | --- |
| `personal_weekly_report` | 个人飞书周报草稿、查看、只填写、明确要求的提交或修改 |
| `personal_chat_weekly_report` | 群里发的个人三段短稿（本周进展 / 开会讨论要点 / 下周计划），不发送 |
| `group_weekly_report` | 小组周报收集与本地汇总，不发送微信 |
| `tencent_weekly_report` | 约100字的本周腾讯进度稿，不写下周计划，不发送 |
| `weekly_report` | Agent 选择所需类型，完整传递请求，返回子入口结果 |

## 使用

直接输入“写个人周报”“个人和腾讯都做，小组不用”或“三个都做”。Agent 结合完整语义、否定和可用上下文选择；未指定受众时默认生成群聊个人周报草稿，不通过提问中止路由。单项结果原样返回，多项结果加类型标签。

显式 `requests` JSON 仍可直接指定子 Workflow，参数不改写。各子 Workflow 管理自己的进度与恢复；总入口不再恢复旧的共同检查点，请使用对应子入口的恢复参数。

## 材料与输出

腾讯入口语义理解周次与用户提供的进展，保留完整原话到后续模型上下文；提供的材料必须来自原文。未提供材料时查找已有原始报告、近期会话中的本人原始消息和有精确日期的记忆，排除其他周次和不可靠记录。腾讯周报同时读取近期会话中具有本人归属和精确日期的原始消息，保留 session/message 来源，排除助手草稿和未归属消息。聊天消息只是候选，仍需选择相关进展。派生的聊天来源引用不会再次作为原始证据导入。待确认的记忆和未可信归属的原始记忆来源被排除；生成的记忆笔记可以作为查找候选，但不等于独立核实的本人事实。会话检索最多读取近期 20 个会话及每个会话最后 200 条消息，合并候选最多 30 条、18,000 UTF-8 字节。证据不足仅描述本次已检查范围，不能据此断言其他记录中没有相关工作。 目标为约100字，通常80–120字，只报告本周实际进展。微信只读取、整理和生成本地稿件，由用户发送。

五个独立包位于 `openprogram/programs/workflow/weekly_report/`。在 Abilities 展开同名文件夹即可选择各入口。调用图显示总入口到路由 Agent 和四个子 Workflow 的可能调用关系；不代表每次全部执行。

路由、小组请求解析和个人周报的模型调用继承 Runtime 超时配置（`OPENPROGRAM_EXEC_TIMEOUT_S`），不再单独限制为 90 秒。小组请求对未验证原生 schema 能力的提供商允许使用提示词兼容模式，并保留 schema 校验和 Runtime 已有的有限格式修正重试；未恢复的模型异常保留真实失败类型，不再误报为缺少用户输入。外部记录写入结果不确定时不自动重复执行。

小组汇报可以只输入“做小组汇报”。流程主动从记忆、相关本地资料及已确定的微信群查找群、名单、当周材料和作者证据，不再要求用户补字段。原始正文保留；未指定周次时使用当前 ISO 周并标注这一假设。作者未核实则明确标注，资料不足则生成带来源限制的部分草稿，不编造进展。

默认 `source=auto`；显式 `source=supplied` 只使用输入材料。微信读取验证群身份并保留来源证据，历史覆盖始终不完整；微信访问失败时继续查询本地资料。流程不发送消息、不修改系统权限，也不因信息缺失调用 ask_user。

个人飞书和个人群聊周报的只读 Agent 使用 `list_agents(scope="all")` 和 `read_conversation` 检索其他会话，并读取记忆和原始本地记录。聊天原文保留 UTC 消息时间；没有指定报告周期时采用 `Asia/Shanghai` 当前 ISO 周。会话最近活动不代表旧消息属于本周。指令、计划、模型草稿和 README 功能描述不能证明工作已经完成；失败或未完成的工作保留原状态，证据缺失需要明确标注。 JSON Schema 校验完整字段或局部修改，使用 prompt fallback 和现有的一次格式修正，随后才允许写入。个人飞书周报将未恢复的模型失败原样抛出。远程写入结果不确定时会抛出不可自动重试的失败，必须先检查实际记录。

自然语言个人飞书和群聊周报逐条绑定实际读取的本人原始陈述或工具原始结果，引用包含精确来源 ID 和本次可见原文。记忆、文件和助手总结用于查找原始记录，仅有其叙述不能证明工作完成。当前用户提供的事实必须与实际本人输入一致，明确描述历史期间时须通过独立时间归属核验，实际输入日期保持原值。每种报告按自身受众解释完整请求中的周次，其他报告的周期不覆盖本报告；结构化个人周报也先绑定原始来源，再按输入材料范围核验。完整请求中唯一明确的 ISO 周次保持不变；多个受众分别指定周期时分别解释。原始来源自动发现最多列出近期 100 个会话、读取 10 个分支，优先选择请求提到的项目标题。来源保留消息自身日期、工具操作、参数、状态和错误标记。原始记录不足返回 `NEEDS_INPUT`，引用或语义不受原文支持返回 `NEEDS_REVIEW`，随后不交付草稿、不填写表单。独立语义核验逐条检查内容与请求周次，但不能保证事实完全正确。默认姓名、明确清空和可选空内容不作为研究进展事实。

结构化 Agent 的正常工具轮次由 `max_iterations` 限制，不消耗失败请求的重试预算。完成工具轮次后保留剩余重试额度；格式修正与失败请求仍共用该额度。达到轮次上限会停止执行，不重新执行已完成的工具。

记忆 search、grep、get、browse 使用正常只读安全工具策略，显式 deny/ask 规则与 `memory.read` 权限仍生效。个人操作选择、来源核验，以及腾讯各 JSON 输出步骤均声明 schema，复用 Runtime 的格式修正。个人飞书周报的格式失败原样抛出；腾讯周报保留原始模型异常类型及恢复任务，两者都不当作用户缺少输入。腾讯请求解释继承部署超时。

## 只填写个人飞书表单

选择 `personal_weekly_report`，输入“只填写个人网页周报，不要提交”。流程检查当前记录，准备六个字段，实际填写后重新逐字段读取。`FILLED` 表示已核对字段，未提交或保存；`SUBMITTED` 是明确要求提交后才能返回的独立结果。

只填写仅支持检查确认没有现存记录的新表单。已有记录或表单达到上限时返回 `BLOCKED`，不创建重复记录。这一模式允许已观察到的提交记录导航和准确的字段值，网页执行前拒绝提交/保存点击、按键、坐标操作和过期观察。字段缺失或归属不明确、值截断或脱敏、动作失败、写入结果不确定时不能返回 `FILLED`；不确定的写入不自动重试。

读回要求完整的实际字段值，逐字精确比较换行和连续空格。仅有 ARIA 文本不能确认填写成功；未提供实际值的旧浏览器 schema 不能返回 `FILLED`。原生浏览器 backend 支持普通表单标签及 contenteditable 周围唯一可见的字段标签；标签缺失或歧义会在字段写入前停止。浏览器可访问且能识别字段标签仍是填写的前提。

## 飞书网页操作失败

飞书检查和写入阶段只提供 `web_use`，使用当前的 `command` 参数协议。接受页面观察或报告写入前必须有真实工具回执，模型正文中的工具调用文本不算网页操作。这两个阶段不设置固定的总超时或工具轮次上限，显式 Runtime 部署限制仍然生效。网页访问失败通过总入口传递，不再作为成功文本返回。后续子 Workflow 失败时，原始异常保留此前已完成子任务的结果，总入口不会自动重跑这些任务。

提交和修改也要求准确字段绑定及重新读回字段。提交请求遇到已有记录时返回检查结果，只有明确要求修改才允许更新。最终提交或保存动作在派发前记录，结果不确定时不能自动再次点击。没有原始事实的五维空占位不计入进展正文。
