zhike-task-hub — 贵州之客任务中枢
三位一体:同步存档 + 周期报告 + 对话查询。
架构
Todo (Task v2) ──sync──→ Bitable (存档)
│ │
├──早晚报(cron)──→ 群消息 │
├──周报(cron)───→ 飞书文档 │
├──月报(cron)───→ 飞书文档 ←── 对话查询
配置
tasklist_guid: "c900dbc8-fa00-4154-a6a7-059669427b0f"
chat_id: "oc_40570cc921ca1f645f8667151c1e85e6"
子模块
| 模块 | 文件 | 触发 |
|---|---|---|
| Task v2 API 封装 | scripts/task_v2_api.py |
所有模块依赖 |
| 每日同步 | scripts/sync_todo_to_bitable.py |
cron 3:00 |
| 早报 | scripts/report_morning.py |
cron 9:00 |
| 晚报 | scripts/report_evening.py |
cron 23:00 |
| 周报数据收集 | scripts/report_weekly.py |
cron 周一 8:00 |
| 月报数据收集 | scripts/report_monthly.py |
cron 1日 7:30 |
| 对话查询 | scripts/query_handler.py |
关键词触发 |
使用方式
1. 对话触发(关键词自动匹配)
| 级别 | 关键词示例 | 行为 |
|---|---|---|
| 🟢 | 我的待办 XX项目进度 逾期任务 |
扫 Bitable → 格式化回复 |
| 🟢 | 创建任务 完成任务 |
调 Task v2 API → 确认 |
| 🟡 | 最近忙什么 进展如何 |
反问确认 → 确认后扫 |
| 🔴 | 有个事 工作 |
不触发 |
Cron 定时任务(已部署 5 个)
| Job ID | 名称 | 调度 | 模式 | 说明 |
|---|---|---|---|---|
d21e728651f5 |
zhike-sync | 0 3 * * * | no-agent | 每日同步 Todo→Bitable |
87f28de012ed |
zhike-morning | 0 9 * * * | no-agent | 早报 |
24891c7bd7a8 |
zhike-evening | 0 23 * * * | no-agent | 晚报 |
c2d478f5c5dc |
zhike-weekly | 0 8 * * 1 | agent | 周报:脚本收集+LLM分析+飞书文档 |
b8230ecd4a98 |
zhike-monthly | 30 7 1 * * | agent | 月报:脚本收集+LLM深度分析+飞书文档 |
模式说明:no-agent 脚本直出;agent 脚本只收集 JSON,LLM 分析+创建文档。
⚠️ agent 模式坑:避免加载大技能(如 feishu-doc 1575+ 行)到 agent cron job。详见 references/cron-agent-pattern.md。
周报/月报 Agent 输出流程
agent 模式 cron 执行三步:
Step 1: 确保 wiki「任务报告」节点存在
运营管理节点固定 token: W57jwRHJYimFRskVK2VcCQjfnXf
# 查找
lark-cli wiki +node-list --space-id 7643710721485753535 \
--parent-node-token W57jwRHJYimFRskVK2VcCQjfnXf --as user --json > /tmp/wiki_ops.json
# read_file 检查是否有 title="任务报告"
# 不存在则创建
lark-cli wiki +node-create --space-id 7643710721485753535 \
--parent-node-token W57jwRHJYimFRskVK2VcCQjfnXf \
--title "任务报告" --as user --json
Step 2: 创建文档直接挂在 wiki 节点下
用 --parent-token 避免 wiki:node:move scope 缺失:
# ✅ 推荐
lark-cli docs +create --as user --parent-token <node_token> \
--content "@relative.xml" --json
# ❌ 避免:先创建再 move(user 缺 wiki:node:move scope)
Step 3: 推送到群
文档链接 + ≤500 字核心摘要。
Feishu Docx XML 标签速查
| 用途 | 会被 escape | 正确标签 |
|---|---|---|
| 有序列表 | <ordered> |
<ol><li seq="auto"> |
| 无序列表 | <bullet> |
<ul><li> |
| 引用块 | <quote> |
<blockquote><p> |
| 分割线 | <dividing_line> |
<hr/> |
| 高亮框 | — | <callout emoji="📌" background-color="light-yellow" border-color="yellow"> |
cron 安全过滤器规避
| 拦截类型 | 触发条件 | 规避 |
|---|---|---|
execute_code blocked |
cron 不允许 | terminal + 文件中转 |
pipe_to_interpreter |
cmd | python3 |
> file 保存,read_file |
confusable_text |
shell 含全角符号 | write_file XML 到文件,@file |
@file 绝对路径 |
--content "@/abs/path" |
cp 到 cwd,相对路径 |
详见 references/cron-agent-pattern.md。
关键约束
- Todo 只读 — 同步方向始终 Todo → Bitable
- 报告优先读 Todo — 直接从 Task v2 API 拉取
- 不空发 — 周期内无任务则跳过报告
- 缺详情标记 — description 为空标记「缺详情」
- 周末节假日照发 — 不因节假日跳过
依赖
project-kanban— Bitable 结构feishu-table— Bitable CRUDfeishu-doc— 飞书文档创建zhike-content-output— 报告文案规范
参考
references/task-v2-api.md— v2 API 端点references/cron-agent-pattern.md— cron agent 模式templates/report_prompt.md— LLM 提示词模板