feishu-session-notifylisted
Install: claude install-skill AMortalsOdyssey/feishu-session-notify
# 飞书交付通知
让用户离开电脑后仍能知道 Agent 何时完成、交付了什么、是否需要回来验收。每个正式用户轮次都要通知;内部任务和 subagent 不要通知。
## 交付本轮
在最终回答前暂存摘要:
```bash
python3 /path/to/feishu-session-notify/notify.py \
--cli-session <session-or-thread-id> \
--summary "第一项交付
第二项交付
关键限制或待验收项"
```
- 只暂存,不发送网络请求;让结束回调在输出完整结束后发送。
- 不要在正常交付中使用 `--now`。
- 使用纯文本白话,最多 3 行,一行一件事;不要手写列表符号。
- 给出明确的 `--cli-session`,避免多会话环境猜错。
- Claude Code 使用 session id;Codex 使用 thread id。
## 保持卡片规则
- 每个新轮次发送一张新卡片;保留旧卡,不归档、不撤回。
- 同一轮重复交付时 PATCH 最新卡片,不制造第二条通知。
- 标题格式使用 `Session 标题 · 第 N 轮`。
- 副标题只放项目名。
- 正文依次展示用户问题、最多 3 条摘要和耗时。
- Claude 使用橙色,Codex 使用蓝色,Cursor 使用灰色。
- 通知栏使用 `App · Session 标题|本轮摘要`。
- 不添加虚假的消息级跳转链接��当前 Agent 客户端没有稳定的消息锚点。
## 获取会话数据
- Claude:从桌面版 session 元数据和 transcript 配对当前用户轮次。
- Codex:优先从 `session_index.jsonl` 获取侧边栏显示标题,从线程数据库获取 cwd、来源和 rollout,再从 rollout 获取真实用户轮次与耗时。
- Codex 只通知正式线程库中的根用户任务或自动化任务。
- 遇到无正式 thread、无 rollout、无用户轮次、turn id 不匹配或 `thread_source=subagent` 时直接跳过。
- 取问题时从本轮助手输出向前匹配用户消息,不要简单取 transcript 的最后一条用户消息。
## 首次安装
1. 确认 `opencli lark-cli --profile <profile> whoami` 返回 bot 身份。
2. 复制 `config.example.json` 到 `~/.claude/feishu-notify.json`,填写 `receiver_open_id` 和 `lark_profile`。
3. 安装对应回调:
```bash
# Claude Code
python3 /path/to/feishu-session-notify/notify.py --install-hook
# Codex
python3 /path/to/feishu-session-notify/notify.py --install-codex-hook
```
安装器必须保持幂等、先备份原配置;Codex 必须串联已有 `notify` 命令。
## 验证
```bash
python3 -m unittest -v test_notify.py
python3 /path/to/skill-creator/scripts/quick_validate.py /path/to/fe