Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc [SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
11 KiB
🔄 铸渊指令|全自动闭环对接规范 · Notion Agent ↔ 人格体 ↔ GitHub(2026-03-13·曜冥签发)
签发人:曜冥(冰朔口述 · 曜冥架构设计)
执行人:铸渊
签发时间:2026-03-13T19:49+08:00
优先级:P0 · 核心架构
前置依赖:📡 SYSLOG自助提交系统指令(已发)+ 🔧 补丁指令(已发)
一、目标
冰朔零介入。从开发者 git push SYSLOG 到新广播下发回 GitHub 仓库,全链路自动。
当前状态:前半段(GitHub Actions 解析 SYSLOG + 写入 Notion)已经自动化。本指令补全后半段:Notion 侧接到工单后,自动唤醒人格体处理,处理完自动把广播推回 GitHub。
二、全链路架构
【阶段A — 已完成】
GitHub 仓库(开发者 push SYSLOG)
↓ GitHub Actions(铸渊已搭好)
↓ 解析 SYSLOG + 通过 Notion API 写入工单
↓
【阶段B — 本指令要搭的】
Notion 工单队列(新工单创建 → 触发 Notion Agent)
↓ Notion Agent 被自动触发
↓ Agent 调用铸渊的 HTTP API endpoint
↓ → 唤醒人格体(Claude API)
↓
人格体处理(一次性实例)
├─ 读取工单内容(SYSLOG 原文)
├─ 全链路处理:回执/画像/成长记录/RT-02调度/广播生成
├─ 处理完毕 → 写工单回执到 Notion
└─ 如果卡住 → 无回执
↓
Notion Agent(心跳监控)
├─ 每5分钟检测:工单回执到了吗?
│ ├─ 没到 → 重新调用 API 唤醒人格体(重试)
│ └─ 到了 → 继续
├─ 读取人格体写的处理结果
└─ 把新广播文件推回 GitHub 仓库
↓
【阶段C — 闭环完成】
GitHub 仓库(收到广播文件,开发者拉取执行)
三、铸渊要搭的东西(逐步)
Phase B1:工单写入标准化
目的:GitHub Actions 写入 Notion 工单时,格式必须标准化,这样 Notion Agent 才能识别和触发。
工单队列位置:数字地球·工单队列(数据库已存在)
写入工单时必须包含的字段:
{
"工单类型": "SYSLOG处理",
"状态": "待处理",
"来源": "GitHub Actions",
"taskId": "BC-M23-001-AW",
"developer": "DEV-012 Awen",
"syslog_raw": "<完整SYSLOG JSON原文>",
"created_at": "<ISO 8601时间戳>",
"retry_count": 0,
"receipt_status": "pending"
}
关键:receipt_status 字段初始为 pending,人格体处理完后改为 completed,Agent 靠这个字段做心跳检测。
Phase B2:搭建 HTTP API Endpoint(中间服务)
目的:Notion Agent 不能直接裸调 Claude API。铸渊需要提供一个 HTTP endpoint,Agent 调用这个 endpoint,endpoint 内部调用 Claude API 唤醒人格体。
建议部署方式:GitHub Actions 提供的 workflow_dispatch 或独立部署一个轻量服务(Cloudflare Workers / Vercel Serverless Function)
Endpoint 规范:
POST /api/persona/invoke
Content-Type: application/json
Authorization: Bearer <INVOKE_API_KEY>
Request Body:
{
"workOrderId": "<Notion工单页面ID>",
"taskId": "BC-M23-001-AW",
"developer": "DEV-012 Awen",
"syslog_raw": "<SYSLOG JSON原文>",
"action": "process_syslog"
}
Response:
{
"status": "invoked",
"invocation_id": "<唯一调用ID>",
"message": "人格体已唤醒,等待处理结果写入Notion"
}
Endpoint 内部逻辑(铸渊实现):
# 伪代码
def invoke_persona(request):
# 1. 从 Notion API 读取曜冥核心大脑 v4.0(协议动态注入)
core_brain = notion.get_page(CORE_BRAIN_PAGE_ID)
# 2. 读取开发者画像(最近2-3条)
portrait = notion.query_database(PORTRAIT_DB_ID,
filter={"developer": request.developer})
# 3. 读取模块指纹
fingerprint = notion.query_database(FINGERPRINT_DB_ID,
filter={"taskId": request.taskId.split("-")[0:2]})
# 4. 读取当前广播原文
current_broadcast = notion.get_page(request.broadcast_page_id)
# 5. 组装 system prompt(含协议注入)
system_prompt = build_system_prompt(
core_brain=core_brain,
portrait=portrait,
fingerprint=fingerprint,
broadcast=current_broadcast,
rules={
"broadcast_code_injection": "always", # 自动化链路一律写完整代码
}
)
# 6. 调用 Claude API(第三方兼容·自动检测模型)
response = call_llm(
base_url=LLM_BASE_URL,
api_key=LLM_API_KEY,
system=system_prompt,
user_message=f"处理以下SYSLOG:\n{request.syslog_raw}"
)
# 7. 人格体处理完毕后,结果通过 Notion API 写回
# - 更新工单:receipt_status = "completed"
# - 写入回执、画像、成长记录、新广播等
write_results_to_notion(response, request.workOrderId)
return {"status": "invoked"}
Phase B3:Notion Agent 配置
目的:在 Notion 里创建一个 Agent,监听工单队列,自动调用 Phase B2 的 endpoint。
Agent 名称:光湖调度器(或铸渊觉得合适的名字)
触发条件 1 — 工单创建触发:
- 监听:工单队列数据库
- 事件:新页面创建(
receipt_status = pending) - 动作:调用
/api/persona/invokeendpoint,传入工单内容
触发条件 2 — 心跳检测(定时 · 重点):
❗ 核心逻辑:如果铸渊侧人格体(铸渊核心大脑)在 5 分钟内没有在仓库回应、没有自动触发铸渊 Agent、也没有写回工单回执——就让 Notion Agent 再次调用相关 API 接口,重新和铸渊核心大脑的人格体说话,再次唤醒一次。
这不是简单的接口重试,而是真正的「重新唤醒人格体」——因为上一次唤醒的人格体实例可能已经卡死或超时消失了,需要创建一个全新的人格体实例来重新处理。
- 频率:每 5 分钟
- 逻辑:
查询工单队列,找 receipt_status = "pending" 且 created_at > 5分钟前 的工单
FOR EACH 工单:
IF retry_count < 3:
// 重新调用 API → 重新唤醒铸渊人格体(全新实例)
// 这是一次全新的唤醒,不是简单重试
// 上一次的人格体实例已经不存在了
调用 /api/persona/invoke(完整传入 syslog_raw + 工单信息)
retry_count += 1
ELSE:
标记工单 receipt_status = "error"
标记工单 状态 = "⚠️ 异常·等人工介入"
发邮件通知冰朔:EMAIL_REDACTED@qq.com
触发条件 3 — 回执到达后推送广播:
- 监听:工单队列数据库
- 事件:
receipt_status从pending变为completed - 动作:
- 从工单中读取人格体生成的广播内容
- 通过 GitHub API 把广播文件推到对应开发者的仓库目录
- 更新工单
状态=✅ 已完成
Phase B4:广播推回 GitHub
目的:人格体在 Notion 生成广播后,自动推回 GitHub 仓库,开发者直接拉取。
推送规范:
仓库路径:broadcasts/{developer_id}/{taskId}.md
示例:broadcasts/DEV-012/BC-M23-002-AW.md
提交信息:[AutoBroadcast] {taskId} · {开发者名} · {模块名}环节{N}
示例:[AutoBroadcast] BC-M23-002-AW · Awen · M23环节1
推送方式:通过 GitHub API(PUT /repos/{owner}/{repo}/contents/{path}),使用已配置的 GitHub Token。
四、Secrets 总览
| Secret | 用途 | 状态 |
|---|---|---|
LLM_API_KEY |
第三方 Claude API 密钥 | ✅ 已配置 |
LLM_BASE_URL |
第三方 API 地址 | ✅ 已配置 |
NOTION_TOKEN |
Notion API Token | ✅ 已配置 |
SMTP_USER |
QQ邮箱(EMAIL_REDACTED@qq.com) | ✅ 已配置 |
SMTP_PASS |
QQ SMTP授权码 | ✅ 已配置 |
CORE_BRAIN_PAGE_ID |
曜冥核心大脑 v4.0 页面 ID | ⚠️ 待配置 |
PORTRAIT_DB_ID |
开发者动态画像库 数据库 ID | ⚠️ 待配置 |
FINGERPRINT_DB_ID |
模块指纹注册表 数据库 ID | ⚠️ 待配置 |
INVOKE_API_KEY |
中间服务鉴权密钥(铸渊自己生成) | ⚠️ 待配置 |
GITHUB_TOKEN |
GitHub API Token(推送广播用) | ⚠️ 确认是否已有 |
五、接口协议(人格体 → Notion 回写)
人格体处理完 SYSLOG 后,必须通过 Notion API 回写以下内容:
| 回写目标 | 内容 | Notion位置 |
|---|---|---|
| 工单回执 | 更新 receipt_status = completed,写入处理摘要 |
工单队列·当前工单页 |
| SYSLOG回执 | 验收明细、时间戳、连胜数 | 对应广播归档页 |
| 画像快照 | PCA评分 + 五维度 | 开发者动态画像库 |
| 成长记录 | 本次任务成长描述 | 开发者成长记录(公开) |
| 新广播 | 下一环节广播全文(含完整代码) | 对应开发者广播归档页(新子页) |
| 模块指纹 | 更新当前环节状态 | 模块指纹注册表 |
| 主控台状态 | 更新连胜数、当前任务、等待项 | 曜冥主控台·当前状态 |
六、容错与异常处理
| 异常场景 | 处理方式 |
|---|---|
| 人格体 5 分钟无回执 | Agent 重新调用 API 唤醒(最多 3 次) |
| 3 次重试仍无回执 | 标记工单 ⚠️ 异常,发邮件通知冰朔 |
| Claude API 调用失败(余额/网络) | 记录错误到工单,标记异常,通知冰朔 |
| Notion API 写入失败 | 人格体侧重试 1 次,仍失败则在工单备注错误信息 |
| GitHub 推送失败(网络) | Agent 标记 广播待推送,下次心跳重试 |
| SYSLOG 格式异常 | 人格体返回解析错误,工单标记 格式异常·待人工检查 |
七、执行顺序
- B1 — 标准化 GitHub Actions 写入工单的格式(改你现有的 Actions 代码)
- B2 — 搭建 HTTP API Endpoint(建议先用 Cloudflare Workers 或 Vercel 快速上线)
- B3 — 配置 Notion Agent(触发 + 心跳 + 回执监听)
- B4 — 广播推回 GitHub(收尾闭环)
- 联调 — 用一个测试 SYSLOG 走完全链路,确认每个环节都通
八、联调检查清单
- GitHub push SYSLOG → Actions 触发 → 工单写入 Notion ✓
- 工单创建 → Notion Agent 自动触发 ✓
- Agent 调用 endpoint → 人格体唤醒成功 ✓
- 人格体读取协议(核心大脑动态注入)✓
- 人格体处理 SYSLOG → 回执/画像/成长/广播 全部写入 Notion ✓
- 工单
receipt_status变为completed✓ - Agent 检测到回执 → 读取广播 → 推送 GitHub ✓
- 开发者在 GitHub 能拉取到新广播文件 ✓
- 心跳测试:故意让人格体卡住 → 5分钟后 Agent 重试 ✓
- 异常测试:3次重试失败 → 工单标记异常 + 邮件通知 ✓
🌍 曜冥签发 · 2026-03-13 · 全自动闭环对接指令
这是光湖系统从半自动走向全自动的关键一步。
搭完这条链路,冰朔不需要再手动贴 SYSLOG,不需要手动触发霜砚。
开发者 push 代码 → 系统自动处理 → 新广播自动下发 → 开发者继续干活。
全自动。零等待。