shuangyan-notebook/第五域 · Fifth Domain/⚒️ 铸渊·协作指令|GitHub ↔ Notion 桥接协议/📢 铸渊+舒舒指令|飞书SYSLOG全自动闭环 · Claude API唤醒人格体+广播生成+推回飞 f5af20c46ee941e68b4ec3ede8e0e629.md
Guanghu Domestic Migration a27e87cb99 chore: import sanitized domestic snapshot for REPO-007
Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc

[SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
2026-07-17 15:59:55 +08:00

624 lines
22 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
belongs_to:
- "[[INDEX · 铸渊·协作指令GitHub ↔ Notion 桥接协议]]"
---
# 📢 铸渊+舒舒指令飞书SYSLOG全自动闭环 · Claude API唤醒人格体+广播生成+推回飞书原窗口2026-03-14·霜砚签发
---
> **签发者**霜砚Notion执行体
>
> **签发时间**2026-03-14 23:36+08:00v2.0 更新 23:50
>
> **执行者**铸渊GitHub执行体+ 舒舒(飞书机器人)
>
> **优先级**P1-重要
>
> **前置依赖**[syslog-pipeline.yml 迁移指令](https://www.notion.so/d76959565bdf41ba80fb40a7dede4a4b)(需先完成)
>
> **关联指令**
>
> - [SYSLOG 自助提交系统 + 全自动闭环 v1.0](https://www.notion.so/58a4bfe3cea74305b2a49ea717d3b510)Claude API 唤醒方案原始设计)
>
> - [补丁指令:协议动态注入 + 第三方API自动检测](https://www.notion.so/b07bc29f218a4954a76c581d3e9e1bbf)API 自动检测 + v4.0 协议注入)
>
> - [全自动闭环对接规范](https://www.notion.so/c057d868ff5945f88b24b9b798fb3a8f)(铸渊 ↔ 人格体 ↔ Notion Agent 对接)
>
> - [Secrets ID 对照清单](https://www.notion.so/7ae6fa1f44a3483e9e2ca1e874a68220)(所有 Secrets 汇总)
>
---
## 目标
实现**开发者在飞书发日志 → 全自动处理 → 自动收到新广播**的完整闭环。
**核心原则:谁的窗口发了日志,就推回谁的窗口。不走邮件,直接飞书推送。**
---
## v2.0 重大更新说明
<aside>
🔄
**v1.0** 的架构是「pipeline 写入 Notion → **霜砚手动处理** → 生成广播 → 推回飞书」
**v2.0** 改为「pipeline 写入 Notion 的同时 → **Claude API 自动唤醒人格体** → 人格体跑完闭环 → 生成广播写入 Notion → 自动推回飞书」
**变更点:**
- 广播生成不再依赖霜砚手动处理,由 Claude API 唤醒的人格体全自动完成
- 之前的 GitHub Discussion 入口用邮件通知,现在飞书入口用飞书推送,不发邮件了
- Claude API 唤醒 + 协议动态注入的方案**完全复用**已有设计(见关联指令)
</aside>
---
## 完整闭环架构
```
① 开发者在飞书给舒舒发SYSLOG
舒舒记录 sender_open_id + chat_id
② 舒舒 repository_dispatch → payload 带上 sender_open_id + chat_id
③ feishu-syslog-bridge.yml 写入 syslog-inbox/xxx.json → git push
④ syslog-pipeline.yml 自动触发(根目录 workflows
⑤ process-syslog.js 解析SYSLOG
├─ 写入 Notion SYSLOG收件箱含 sender 信息)
└─ 调用 Claude API 唤醒人格体 ← 核心环节
⑥ 人格体Claude API 一次性实例)完整跑闭环:
├─ 读取核心大脑 v4.0 协议Notion API 动态注入)
├─ 读取开发者画像快照(画像库查询)
├─ 读取模块指纹(指纹注册表查询)
├─ 读取当前广播原文(广播归档页)
├─ 验收SYSLOG → 更新画像 → 更新指纹
├─ RT-02调度判断 → 生成新广播
└─ broadcast_code_injection = always一律写完整代码
⑦ 人格体输出结果 → pipeline 写入 Notion
├─ 新广播页写入广播归档
├─ 画像快照写入画像库
├─ 主控台状态更新
└─ 工单标记「已完成」
⑧ 触发 push-broadcast dispatch
├─ 广播内容 + sender_open_id + chat_id
└─ broadcast_url = 新广播的 Notion 页面链接
⑨ push-broadcast.yml → 调用舒舒 /webhook/push-broadcast
⑩ 舒舒发飞书消息卡片到原聊天窗口
⑪ 开发者在飞书原窗口收到新广播 ✅
```
---
## 当前状态
| **环节** | **状态** | **说明** |
| --- | --- | --- |
| ① 飞书 → 舒舒 → GitHub dispatch | ✅ 已通 | 舒舒识别SYSLOG并转发 |
| ② GitHub bridge → syslog-inbox/ | ✅ 已通 | feishu-syslog-bridge.yml |
| ③ syslog-pipeline → Notion | ⏳ 修复中 | 等铸渊执行 [🔧 铸渊指令syslog-pipeline.yml 迁移至根目录 workflows · 修复飞书→Notion自动写入断链2026-03-14·霜砚签发](%F0%9F%94%A7%20%E9%93%B8%E6%B8%8A%E6%8C%87%E4%BB%A4%EF%BD%9Csyslog-pipeline%20yml%20%E8%BF%81%E7%A7%BB%E8%87%B3%E6%A0%B9%E7%9B%AE%E5%BD%95%20workflows%20%C2%B7%20%E4%BF%AE%E5%A4%8D%E9%A3%9E%E4%B9%A6%20d76959565bdf41ba80fb40a7dede4a4b.md) |
| ④ Claude API 唤醒人格体 | 📋 已设计 | 方案在 [自助系统v1.0](https://www.notion.so/58a4bfe3cea74305b2a49ea717d3b510) • [补丁指令](https://www.notion.so/b07bc29f218a4954a76c581d3e9e1bbf),需铸渊对接飞书入口 |
| ⑤ 人格体处理 → 生成广播 | 📋 已设计 | 复用已有的 wake-persona.js + 协议动态注入 |
| ⑥ 广播 → 推送回飞书 | ❌ 待开发 | **本指令新增** |
---
## 执行指令(分四部分)
---
## Part 1 · 舒舒代码改造(飞书侧)
**文件**`/var/www/feishu-bot/index.js`
**执行者**冰朔SSH到服务器修改
### 改造 1.1 · dispatch payload 带上发送者信息
当前舒舒转发 SYSLOG 时的 `repository_dispatch` payload 需要包含发送者信息:
```jsx
// 在 forwardToGitHub 函数中payload 加上 sender 信息
const payload = {
event_type: 'feishu-syslog',
client_payload: {
syslog: messageContent,
source: 'feishu',
sender_open_id: event.sender.sender_id.open_id, // 发送者飞书ID
chat_id: event.message.chat_id, // 聊天窗口ID
sender_name: senderName || 'unknown', // 发送者名称
timestamp: new Date().toISOString()
}
};
```
**⚠️ 确保 `sender_open_id``chat_id` 都传给了 GitHub。这是回推的关键——没有这两个字段就不知道推给谁。**
### 改造 1.2 · 新增 /webhook/push-broadcast 接口
在舒舒的 Express 服务中新增一个接口,接收广播推送请求:
```jsx
// ===== 广播推送接口 =====
app.post('/webhook/push-broadcast', async (req, res) => {
try {
const { chat_id, sender_open_id, broadcast_title, broadcast_content, broadcast_url, feishu_doc_url } = req.body;
// 安全校验
const authToken = req.headers['x-push-token'];
if (authToken !== process.env.PUSH_BROADCAST_TOKEN) {
return res.status(401).json({ error: 'Unauthorized' });
}
// 构建飞书消息卡片
const elements = [
{
tag: 'markdown',
content: `**${broadcast_title}**\n\n${broadcast_content}`
}
];
// 按钮区Notion广播 + 飞书文档(如果有)
const buttons = [{
tag: 'button',
text: { tag: 'plain_text', content: '📖 查看完整广播Notion' },
url: broadcast_url,
type: 'primary'
}];
if (feishu_doc_url) {
buttons.push({
tag: 'button',
text: { tag: 'plain_text', content: '📄 飞书文档版' },
url: feishu_doc_url,
type: 'default'
});
}
elements.push({ tag: 'action', actions: buttons });
elements.push({
tag: 'note',
elements: [{ tag: 'plain_text', content: '由舒舒自动推送 · 光湖系统 · 人格体已验收' }]
});
const card = {
config: { wide_screen_mode: true },
header: {
title: { tag: 'plain_text', content: '📡 新广播已生成' },
template: 'green'
},
elements
};
// 发送到原聊天窗口
const targetId = chat_id || sender_open_id;
const idType = chat_id ? 'chat_id' : 'open_id';
await sendFeishuMessage(targetId, idType, {
msg_type: 'interactive',
card: JSON.stringify(card)
});
console.log(`[舒舒·广播推送] ✅ 已推送给 ${targetId}: ${broadcast_title}`);
res.json({ success: true, target: targetId });
} catch (err) {
console.error('[舒舒·广播推送] ❌ 推送失败:', err.message);
res.status(500).json({ error: err.message });
}
});
```
### 改造 1.3 · 飞书文档写入能力(可选增强)
如果希望舒舒把广播内容**同时写入飞书公共文档**(开发者在飞书里也能看到完整内容),需要:
1. **飞书开放平台** → 应用 `cli_a93f8afaabb89bdb` → 添加权限:
- `docx:document:write`(写入文档)
- `wiki:wiki`(知识库访问,如果用知识库的话)
2. **舒舒代码新增** `createFeishuDoc()` 函数:
```jsx
// 创建飞书文档并写入广播内容
async function createFeishuDoc(title, content, folderId) {
const token = await getTenantAccessToken();
// 创建文档
const createRes = await axios.post(
'https://open.feishu.cn/open-apis/docx/v1/documents',
{ title, folder_token: folderId },
{ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' } }
);
const docId = createRes.data.data.document.document_id;
// 写入内容(飞书文档 Block API
await axios.post(
`https://open.feishu.cn/open-apis/docx/v1/documents/${docId}/blocks/batch_update`,
{ /* 按飞书文档 Block 格式构建内容 */ },
{ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' } }
);
return `https://guanghulab.feishu.cn/docx/${docId}`;
}
```
1. 在推送广播前先创建文档,把文档链接一起推给开发者
**⚠️ 飞书文档写入是增强功能,不影响主链路。主链路优先保证消息卡片推送。**
### 改造 1.4 · .env 新增配置
```bash
# 广播推送接口的安全 token铸渊 GitHub Secrets 里也要存一份)
PUSH_BROADCAST_TOKEN=guanghu-push-2026
# 飞书文档相关(可选,用于写入飞书公共文档)
# FEISHU_DOC_FOLDER_TOKEN=飞书文件夹token放广播文档的文件夹
```
---
## Part 2 · 铸渊 GitHub 侧改造
**执行者**:铸渊(读到就做)
### 改造 2.1 · bridge.yml 保留 sender 信息
确认 `feishu-syslog-bridge.yml` 写入 `syslog-inbox/` 的 JSON 中保留了完整 `client_payload`,特别是 `sender_open_id``chat_id`
如果当前 bridge 只存了 `syslog` 字段,**需要修改 bridge.yml 保存完整 payload**
```yaml
- name: 📥 写入 syslog-inbox
env:
SYSLOG_RAW: $\ github.event.client_payload
run: |
mkdir -p syslog-inbox
TIMESTAMP=$(date -u +%Y%m%d-%H%M%S)
# 保存完整 payload含 sender_open_id + chat_id
echo '$\ toJSON(github.event.client_payload) ' > "syslog-inbox/${TIMESTAMP}_feishu.json"
```
### 改造 2.2 · syslog-pipeline 增加 Claude API 唤醒步骤
<aside>
🧠
**这是核心改造。pipeline 不再只是"写入 Notion",而是完整跑闭环:**
1. 解析 SYSLOG JSON提取广播编号、开发者、sender 信息)
2. 写入 Notion SYSLOG 收件箱
3. **调用 Claude API 唤醒人格体**(动态注入 v4.0 协议)
4. 人格体处理完 → 生成新广播 → 写入 Notion
5. 触发 push-broadcast → 推回飞书
</aside>
`syslog-pipeline.yml` 需要增加以下步骤:
```yaml
name: 铸渊 · SYSLOG Pipeline飞书入口
on:
push:
paths:
- 'syslog-inbox/**'
jobs:
process-syslog:
name: 📡 飞书SYSLOG → syslog-inbox
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
token: $\ secrets.GITHUB_TOKEN
# Step 1: 解析 SYSLOG
- name: 📥 解析 SYSLOG
id: parse
run: |
# 找到最新的 SYSLOG 文件
LATEST=$(ls -t syslog-inbox/*.json | head -1)
echo "file=$LATEST" >> $GITHUB_OUTPUT
# 提取 sender 信息(用于后续推回飞书)
SENDER_OPEN_ID=$(jq -r '.sender_open_id // empty' "$LATEST")
CHAT_ID=$(jq -r '.chat_id // empty' "$LATEST")
SENDER_NAME=$(jq -r '.sender_name // empty' "$LATEST")
SYSLOG_CONTENT=$(jq -r '.syslog // empty' "$LATEST")
echo "sender_open_id=$SENDER_OPEN_ID" >> $GITHUB_OUTPUT
echo "chat_id=$CHAT_ID" >> $GITHUB_OUTPUT
echo "sender_name=$SENDER_NAME" >> $GITHUB_OUTPUT
# Step 2: 写入 Notion SYSLOG 收件箱
- name: 📋 写入 Notion 收件箱
env:
NOTION_TOKEN: $\ secrets.NOTION_TOKEN
NOTION_DB_SYSLOG: $\ secrets.NOTION_DB_SYSLOG
run: node scripts/write-notion-syslog.js "$\ steps.parse.outputs.file "
# Step 3: 调用 Claude API 唤醒人格体
- name: 🧠 唤醒人格体处理 SYSLOG
env:
LLM_API_KEY: $\ secrets.LLM_API_KEY
LLM_BASE_URL: $\ secrets.LLM_BASE_URL
NOTION_TOKEN: $\ secrets.NOTION_TOKEN
CORE_BRAIN_PAGE_ID: $\ secrets.CORE_BRAIN_PAGE_ID
PORTRAIT_DB_ID: $\ secrets.PORTRAIT_DB_ID
FINGERPRINT_DB_ID: $\ secrets.FINGERPRINT_DB_ID
run: |
# wake-persona.js 内部流程:
# 1. 自动检测第三方 API 可用模型(/v1/models
# 2. 选择最优 Claude 模型
# 3. 通过 Notion API 动态读取:
# - 核心大脑 v4.0 协议BC-GEN/SYSLOG/PGP/RT-02
# - 开发者画像快照最近2-3条
# - 模块指纹(防重复广播)
# - 当前广播原文
# 4. 注入 system prompt + SYSLOG 内容
# 5. 人格体处理:验收→画像→指纹→调度→生成新广播
# 6. broadcast_code_injection = always一律写完整代码
# 7. 输出结果写入 Notion新广播页 + 画像 + 主控台)
node scripts/wake-persona.js "$\ steps.parse.outputs.file "
# Step 4: 推送广播回飞书
- name: 📢 推送广播到飞书
if: success()
env:
PUSH_URL: https://guanghulab.com/webhook/push-broadcast # nginx → 3003端口
PUSH_TOKEN: $\ secrets.PUSH_BROADCAST_TOKEN
run: |
# 读取人格体输出的广播信息
BROADCAST_TITLE=$(cat /tmp/broadcast-result.json | jq -r '.title')
BROADCAST_CONTENT=$(cat /tmp/broadcast-result.json | jq -r '.summary')
BROADCAST_URL=$(cat /tmp/broadcast-result.json | jq -r '.notion_url')
curl -X POST "$PUSH_URL" \
-H "Content-Type: application/json" \
-H "x-push-token: $PUSH_TOKEN" \
-d "$(jq -n \
--arg chat_id "$\ steps.parse.outputs.chat_id " \
--arg sender_open_id "$\ steps.parse.outputs.sender_open_id " \
--arg broadcast_title "$BROADCAST_TITLE" \
--arg broadcast_content "$BROADCAST_CONTENT" \
--arg broadcast_url "$BROADCAST_URL" \
'{chat_id: $chat_id, sender_open_id: $sender_open_id, broadcast_title: $broadcast_title, broadcast_content: $broadcast_content, broadcast_url: $broadcast_url}')"
echo "✅ 广播已推送到飞书"
# Step 5: 归档处理完的 SYSLOG
- name: 📦 归档 SYSLOG
run: |
mkdir -p syslog-processed
mv "$\ steps.parse.outputs.file " syslog-processed/
git config user.name "铸渊[bot]"
git config user.email "zhu-yuan-bot@guanghulab.com"
git add .
git diff --staged --quiet || git commit -m "📡 SYSLOG processed: 飞书→人格体→广播→推送 [auto]"
git push
```
### 改造 2.3 · Claude API 唤醒脚本wake-persona.js
<aside>
⚠️
**此脚本的完整设计方案已在以下指令中详细定义,铸渊必须严格参照:**
- [SYSLOG 自助提交系统 v1.0](https://www.notion.so/58a4bfe3cea74305b2a49ea717d3b510) — Phase 3 完整代码
- [补丁指令:协议动态注入 + 第三方API自动检测](https://www.notion.so/b07bc29f218a4954a76c581d3e9e1bbf) — API 自动检测 + 动态注入
**铸渊不要从零写,复用已有的 `wake-persona.js` 设计。**
只需要增加一个改动:输出结果时额外写一个 `/tmp/broadcast-result.json`,供 Step 4 推送用。
</aside>
`wake-persona.js` 核心流程(已有设计,此处仅概括):
```jsx
// 已有设计(见关联指令),核心步骤:
// 1. discoverModels() → 自动检测第三方平台可用 Claude 模型
// 2. selectBestModel() → 按优先级选最优模型
// 3. detectApiFormat() → 自动检测 API 格式OpenAI兼容 or Anthropic原生
// 4. loadProtocols() → Notion API 读取核心大脑 v4.0 各协议段
// 5. loadDevContext() → 读取开发者画像 + 模块指纹 + 当前广播
// 6. callLLM(systemPrompt, syslogContent) → 唤醒人格体
// 7. parseResult() → 解析人格体输出
// 8. writeToNotion() → 写入新广播 + 画像 + 主控台
// 9. 新增:输出 /tmp/broadcast-result.json 供飞书推送
// === 新增输出(供 Step 4 推送) ===
const broadcastResult = {
title: parsedResult.broadcast_title, // 如 "BC-M-DINGTALK-009-ZZ · DEV-004之之 · Phase 9"
summary: parsedResult.broadcast_summary, // 广播摘要100字以内
notion_url: parsedResult.notion_page_url, // 新广播的 Notion 页面链接
dev_id: parsedResult.dev_id,
dev_name: parsedResult.dev_name
};
fs.writeFileSync('/tmp/broadcast-result.json', JSON.stringify(broadcastResult));
```
**关键规则(从补丁指令继承):**
- `broadcast_code_injection = always` — 自动化链路出的广播一律写完整代码
- 不硬编码任何模型名和 API 地址,全部走自动检测
- v4.0 协议从 Notion 实时读取,不硬编码到代码里
### 改造 2.4 · 新建 push-broadcast.yml独立 workflow备用
除了 pipeline 内置的推送步骤,额外创建一个独立 workflow 用于手动触发推送:
```yaml
name: 铸渊 · 广播推送飞书(手动/独立触发)
on:
repository_dispatch:
types: [push-broadcast]
jobs:
push-to-feishu:
name: 📢 推送广播到飞书
runs-on: ubuntu-latest
steps:
- name: 📢 推送广播
env:
PUSH_URL: https://guanghulab.com/webhook/push-broadcast # nginx → 3003端口
PUSH_TOKEN: $\ secrets.PUSH_BROADCAST_TOKEN
run: |
curl -X POST "$PUSH_URL" \
-H "Content-Type: application/json" \
-H "x-push-token: $PUSH_TOKEN" \
-d '$\ toJSON(github.event.client_payload) '
echo "✅ 推送请求已发送"
```
**用途**:当自动链路的推送步骤失败时,可通过 `repository_dispatch` 手动补推。
### 改造 2.5 · GitHub Secrets 汇总
| **Secret 名称** | **用途** | **状态** |
| --- | --- | --- |
| `LLM_API_KEY` | 第三方 Claude API 密钥 | ✅ 已配置(见[清单](https://www.notion.so/7ae6fa1f44a3483e9e2ca1e874a68220) |
| `LLM_BASE_URL` | 第三方 API 基础地址 | ✅ 已配置 |
| `NOTION_TOKEN` | Notion API Token | ✅ 已配置 |
| `NOTION_DB_SYSLOG` | SYSLOG收件箱数据库ID | 需确认(正确值:`330ab17507d542c9bbb96d0749b41197` |
| `CORE_BRAIN_PAGE_ID` | 曜冥核心大脑 v4.0 页面ID | 需配置 |
| `PORTRAIT_DB_ID` | 开发者动态画像库数据库ID | 需配置 |
| `FINGERPRINT_DB_ID` | 模块指纹注册表数据库ID | 需配置 |
| `PUSH_BROADCAST_TOKEN` | 广播推送接口鉴权 | ❌ 新增(值:`guanghu-push-2026` |
---
## Part 3 · 与已有 GitHub Discussion 入口的关系
<aside>
🔀
**两条入口并存,共用同一套处理内核:**
**入口 A · GitHub Discussion已有设计**
- 开发者在 GitHub 仓库 Discussion 提交 SYSLOG
- `syslog-auto-pipeline.yml` 监听 Discussion → 唤醒人格体 → 生成广播 → **发邮件**
**入口 B · 飞书舒舒(本指令)**
- 开发者在飞书给舒舒发 SYSLOG
- `feishu-syslog-bridge.yml``syslog-pipeline.yml` → 唤醒人格体 → 生成广播 → **推回飞书**
**共用部分(不要重复开发):**
- `wake-persona.js` — Claude API 唤醒 + 协议注入
- `discoverModels()` / `selectBestModel()` / `detectApiFormat()` — API 自动检测
- `loadProtocols()` / `loadDevContext()` — Notion 数据读取
- 写入 Notion 的逻辑
**不同部分:**
- 入口 ADiscussion 触发结果发邮件QQ SMTP
- 入口 B飞书 dispatch 触发结果推回飞书原窗口push-broadcast
</aside>
---
## Part 4 · 触发模式
### 模式 A · 全自动(目标状态·本指令实现)
```
开发者飞书发SYSLOG → 全自动 → 开发者飞书收到新广播
```
整个过程无人参与。pipeline 从解析到唤醒到生成到推送一气呵成。
### 模式 B · 半自动(过渡状态)
如果 Claude API 唤醒环节还没完全调通,可以先用半自动模式:
1. pipeline 写入 Notion 收件箱 ✅
2. 冰朔告诉霜砚处理 → 霜砚手动跑闭环
3. 霜砚生成广播后,冰朔说"推给开发者"
4. 霜砚触发 `push-broadcast` dispatch → 推回飞书
### 模式 C · 手动推送(兜底)
冰朔直接在飞书告诉舒舒:
> 推送广播给之之BC-M-DINGTALK-008-ZZ Phase 8
>
舒舒解析命令 → 查找之之的 chat_id → 直接发送。
---
## 验收标准
1. ✅ 舒舒 dispatch payload 包含 `sender_open_id``chat_id`
2. ✅ 舒舒新增 `/webhook/push-broadcast` 接口可用
3.`syslog-pipeline.yml` 包含 Claude API 唤醒步骤
4.`wake-persona.js` 输出 `/tmp/broadcast-result.json`
5. ✅ pipeline 最后一步自动调用 push-broadcast
6.`push-broadcast.yml` 独立 workflow 存在(备用手动推送)
7. ✅ 所有 Secrets 已配置
8.**端到端测试**飞书发SYSLOG → 人格体唤醒 → 广播生成 → 飞书原窗口收到广播卡片
---
## 执行顺序
<aside>
📋
**请严格按以下顺序执行:**
1. **先完成** [syslog-pipeline.yml 迁移指令](https://www.notion.so/d76959565bdf41ba80fb40a7dede4a4b)(前置依赖)
2. **铸渊执行** Part 2改造 pipeline + 对接 wake-persona + 创建 push-broadcast.yml + 配置 Secrets
3. **冰朔执行** Part 1修改舒舒代码 + 飞书文档权限 + 重启 PM2
4. **端到端测试**(先测模式 B 半自动,再测模式 A 全自动)
</aside>
---
> 霜砚签发 · 2026-03-14 23:36v2.0 更新 23:50· 飞书全自动闭环 · Claude API 唤醒 + 广播回推
>
---
## ✅ 执行确认区
铸渊完成 Part 2 后追加:
`✅ pipeline 已改造 + wake-persona 已对接 + push-broadcast.yml 已创建 + Secrets 已配置 · [日期时间] · commit SHA`
冰朔完成 Part 1 后追加:
`✅ 舒舒 push-broadcast 接口已上线 + sender 信息已加入 payload · [日期时间]`
半自动模式测试通过后追加:
`✅ 模式B半自动测试通过 · [日期时间]`
全自动模式测试通过后追加:
`✅ 模式A全自动测试通过 · [日期时间] · 开发者飞书窗口已收到AI生成的广播`