关于 feishu-notify
feishu-notify 是供 ARIS 技能使用的 Feishu/Lark 通知工具,也可手动调用。它支持仅推送或双向交互,并在未配置时静默跳过,不阻塞原有工作流。
主要功能
- 01发送事件通知卡片
- 02支持 webhook 推送模式
- 03支持双向交互与回复
- 04无配置时静默禁用
- 05交互超时后自动继续
- 06通知失败时不阻塞工作流
适用场景
- 01发送实验完成结果
- 02通知审查评分与弱项
- 03在检查点请求用户选择
- 04报告流水线完成或错误
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ wanshuiyin/ auto-claude-code-research-in-sleep --skill feishu-notify安装后在 Claude Code 中输入/feishu-notify确认已加载。
详细介绍
飞书/Lark 通知
发送通知:$ARGUMENTS
概述
此技能为 ARIS 提供飞书/Lark 集成。它设计为一项内部工具——其他技能会在关键事件发生时调用它(实验完成、评审评分、检查点等待)。也可以手动调用。
零影响保证:如果不存在 feishu.json 配置,此技能不会执行任何操作,并静默返回。不会对任何现有工作流产生影响。
配置
此技能读取 ~/.claude/feishu.json。如果该文件不存在,所有飞书功能都会被禁用——技能的行为与之前完全相同。
配置格式
{
"mode": "push",
"webhook_url": "https://open.feishu.cn/open-apis/bot/v2/hook/YOUR_WEBHOOK_ID",
"interactive": {
"bridge_url": "http://localhost:5000",
"timeout_seconds": 300
}
}
模式
| 模式 | "mode" 值 | 功能 | 要求 |
|---|---|---|---|
| 关闭 | "off" 或文件不存在 | 不执行任何操作。保持纯 CLI 原样 | 无 |
| 仅推送 | "push" | 在关键事件发生时发送 webhook 通知。推送到移动端,不支持回复 | 飞书机器人 webhook URL |
| 交互式 | "interactive" | 完整双向交互。可在飞书中批准/拒绝,并回复检查点 | 正在运行的 feishu-claude-code |
工作流
第 1 步:读取配置
cat ~/.claude/feishu.json 2>/dev/null
- 未找到文件 → 静默返回,不执行任何操作
"mode": "off"→ 静默返回,不执行任何操作"mode": "push"→ 继续第 2 步(推送)"mode": "interactive"→ 继续第 3 步(交互式)
第 2 步:推送通知(webhook)
向飞书 webhook 发送富文本卡片:
curl -s -X POST "$WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d '{
"msg_type": "interactive",
"card": {
"header": {
"title": {"tag": "plain_text", "content": "TITLE"},
"template": "COLOR"
},
"elements": [
{"tag": "markdown", "content": "BODY"}
]
}
}'
按事件类型使用的卡片模板:
| 事件 | 标题 | 颜色 | 正文 |
|---|---|---|---|
experiment_done | 实验完成 | green | 结果表格、与基准的差异 |
review_scored | 第 N 轮评审:X/10 | blue(≥6)/ orange(<6) | 分数、结论、最突出的 3 项弱点 |
checkpoint | 检查点:等待输入 | yellow | 问题、选项、上下文 |
error | 错误:[type] | red | 错误消息、失败内容 |
pipeline_done | 流水线完成 | purple | 最终摘要、交付物 |
custom | 自定义 | blue | 来自 $ARGUMENTS 的自由格式消息 |
curl 后立即返回——推送模式绝不会等待回复。
第 3 步:交互式通知(双向)
交互式模式使用 feishu-claude-code 作为桥接:
-
向桥接发送消息:
curl -s -X POST "$BRIDGE_URL/send" \ -H "Content-Type: application/json" \ -d '{"type": "EVENT_TYPE", "title": "TITLE", "body": "BODY", "options": ["approve", "reject", "custom"]}' -
等待回复(带超时):
curl -s "$BRIDGE_URL/poll?timeout=$TIMEOUT_SECONDS"返回:
{"reply": "approve"}、{"reply": "reject"}、{"reply": "用户输入的消息"}或{"timeout": true} -
超时时:回退到
AUTO_PROCEED行为(使用默认选项继续)。 -
将用户的回复返回给调用技能,以便其据此执行操作。
第 4 步:验证送达情况
- 推送模式:检查 curl 退出代码。如果非零,记录警告,但不得阻塞工作流。
- 交互式模式:如果无法连接到桥接,则回退到推送模式(如果配置了 webhook),否则静默跳过。
辅助函数(供其他技能使用)
其他技能应使用以下模式发送通知:
### Feishu Notification (if configured)
Check if `~/.claude/feishu.json` exists and mode is not "off":
- If **push** mode: send webhook notification with event summary
- If **interactive** mode: send notification and wait for user reply
- If **off** or file absent: skip entirely (no-op)
**此检查始终受保护。**如果配置文件不存在,技能会完全跳过通知代码块——零开销,零副作用。
事件目录
技能会在以下时刻发送这些事件:
| 技能 | 事件 | 时机 |
|---|---|---|
/auto-review-loop | review_scored | 每轮评审评分后 |
/auto-review-loop | pipeline_done | 循环完成(得分为正或达到最大轮数) |
/auto-paper-improvement-loop | review_scored | 每轮评审评分后 |
/auto-paper-improvement-loop | pipeline_done | 所有轮次完成后 |
/run-experiment | experiment_done | Screen 会话结束后 |
/idea-discovery | checkpoint | 阶段之间(交互模式下) |
/idea-discovery | pipeline_done | 最终报告就绪后 |
/monitor-experiment | experiment_done | 收集结果后 |
/research-pipeline | checkpoint | 工作流阶段之间 |
/research-pipeline | pipeline_done | 整个工作流完成后 |
关键规则
- 绝不因无法连接 Feishu 而阻塞工作流。 始终采用失败时放行策略。
- 绝不要求配置 Feishu —— 所有技能都必须在未配置时正常工作。
- 配置文件不存在 = 模式关闭。 不报错、不警告、不记录日志。
- 推送模式采用即发即忘。 发送 curl,检查退出代码,然后继续。
- 交互超时 = 自动继续。 不要一直等待回复。
- 遵循
AUTO_PROCEED:在交互模式下,如果用户在超时时间内未回复,则使用调用该技能时相同的自动继续逻辑。 - 通知中不得包含机密信息。 绝不在 Feishu 消息中包含 API 密钥、令牌或密码。
评论
支持 Markdown