---
belongs_to:
- "[[INDEX · 铸渊·协作指令|GitHub ↔ Notion 桥接协议]]"
---
# 📡 铸渊指令|AI交互页面 → 光湖MVP原型升级 + 双向数据桥 + 人格微调管线 v1.0(2026-03-08·霜砚签发)
---
## 一、总体目标
将当前 `docs/index.html`(铸渊助手 v5.0)从「开发者AI聊天工具」升级为 **光湖操作系统 MVP 动态预览原型**。
**核心转变**:
| 维度 | 当前(v5.0) | 目标(MVP原型) |
| --- | --- | --- |
| **定位** | 开发者和铸渊聊天 | 光湖操作系统内部预览原型 |
| **交互** | 单窗口对话 | 语言驱动模块切换(SPA路由) |
| **上下文** | 20条历史 | **128k token 长上下文**(用户自带API) |
| **数据** | 仅本地浏览器 | **双向收集 → GitHub仓库私密存储** |
| **桥接** | 无 | **Notion Agent ↔ GitHub 双向数据桥** |
| **人格体** | 铸渊单人格 | **通感语言回应风格 + 人格微调管线** |
---
## 二、架构升级指令
### 2.1 上下文窗口升级 → 128k
**原因**:用户登录用的是自己的 API Key,自己充钱。没有理由限制上下文长度。
```jsx
// 当前(删除)
const MAX_HISTORY = 20;
// 升级为
const CONTEXT_CONFIG = {
maxTokens: 128000, // 128k 上下文窗口
maxHistory: null, // 不限制历史条数,由token窗口自然截断
tokenCounter: 'tiktoken', // 使用tiktoken估算token数
overflowStrategy: 'sliding-window', // 超出时滑动窗口裁剪最早消息
systemPromptReserve: 8000, // 预留8k给系统提示词(人格体大脑)
userContextReserve: 120000 // 用户对话可用120k
};
```
**实现要点**:
- 检测用户选择的模型实际支持的最大上下文,取 `min(模型上限, 128k)`
- DeepSeek-V3 支持 128k,Claude 支持 200k,GPT-4o 支持 128k → 主流模型全部覆盖
- 访客模式(DeepSeek免费)可以保持较短上下文(如 32k),节省成本
- 编号登录用户 → 完全放开 128k
### 2.2 SPA路由 + 模块动态加载(光湖架构核心)
参照架构文档第二节「用户全流程设计」,将页面改为 SPA 结构:
```jsx
// 路由表
const ROUTES = {
'/': 'PublicBulletin', // 主域公告区(落地页)
'/chat': 'PersonaChat', // 人格体对话主界面
'/channel': 'UserChannel', // 用户专属频道
'/dev': 'DevWorkspace', // 开发者工作台(当前index.html升级版)
'/status': 'SystemStatus', // 系统状态面板
};
// MVP阶段只需实现 /chat + /dev + /status
// 其他路由占位,返回「即将上线」
```
**MVP最小实现**:
1. `/chat` — 保留当前对话界面,升级上下文到128k
2. `/dev` — 开发者工作台(提交SYSLOG、查看广播、上传模块)
3. `/status` — 系统状态(人格体在线状态、模块覆盖率、最近活动)
### 2.3 界面风格
保持当前的深色主题和光湖视觉风格,但增加:
- 顶部导航栏(`/chat` | `/dev` | `/status` 三个Tab)
- 左侧人格体状态面板(当前人格体名称、在线状态、记忆深度)
- 底部状态栏(当前模型、token使用量、连接状态)
---
## 三、双向数据收集系统(核心指令)
### 3.1 数据收集范围
在用户使用AI交互页面的过程中,**自动且无感地**收集以下数据:
| 数据类型 | 内容 | 触发时机 |
| --- | --- | --- |
| **对话记录** | 用户输入 + 人格体回复 + 时间戳 + 模型名称 + token消耗 | 每轮对话自动存储 |
| **开发进度** | 用户提交的代码diff、SYSLOG内容、模块完成状态 | 用户主动提交时 |
| **人格体状态** | 当前人格体画像快照、情绪读数、回应风格参数 | 每次会话开始/结束时 |
| **行为数据** | 用户停留时长、模块切换路径、功能使用频率 | 被动收集(埋点) |
| **错误日志** | API调用失败、渲染异常、路由错误 | 自动捕获 |
### 3.2 数据存储架构(GitHub仓库·私密)
```
github.com/qinfendebingshuo/guanghulab/
└── .private/ ← 🔒 私密数据根目录
├── sessions/ ← 对话会话存储
│ ├── DEV-001/ ← 按开发者编号分目录
│ │ └── 2026-03-08_session_001.json
│ ├── DEV-002/
│ └── ...
├── persona-telemetry/ ← 人格体遥测数据
│ ├── persona-state-snapshot.json ← 人格体状态快照
│ ├── style-params.json ← 通感语言风格参数
│ └── tuning-queue/ ← 微调任务队列
│ └── TUNE-001.json
├── dev-progress/ ← 开发进度收集
│ ├── DEV-001_progress.json
│ └── ...
├── analytics/ ← 行为分析数据
│ └── daily/
│ └── 2026-03-08.json
└── error-logs/ ← 错误日志
└── 2026-03-08.log
```
### 3.3 隐私与权限控制(关键)
**实现方案**:
1. **`.private/` 目录使用 `.gitignore` 排除**——不进入 Git 版本控制
2. **数据存储走 GitHub API 直接写入**——使用 GitHub Actions + Secrets
3. **具体实现**:
```yaml
# .github/workflows/store-private-data.yml
name: Store Private Session Data
on:
repository_dispatch:
types: [session-data]
jobs:
store:
runs-on: ubuntu-latest
steps:
- name: Decrypt and store
env:
DATA_ENCRYPTION_KEY: $ secrets.DATA_ENCRYPTION_KEY
run: |
# 数据用AES-256加密后存入 GitHub Releases (private asset)
# 或存入仓库的 orphan branch(不在主分支可见)
echo "$ github.event.client_payload.data " | \
openssl enc -aes-256-cbc -pass env:DATA_ENCRYPTION_KEY | \
base64 > /tmp/encrypted_session.dat
# 上传为 Release asset 或推到 data-vault orphan branch
```
1. **更优方案——独立 orphan branch**:
```bash
# 创建一个独立的 orphan 分支,不与主代码分支关联
git checkout --orphan data-vault
git rm -rf .
# 这个分支只存加密数据
# 合作者即使有仓库权限,也不会在默认分支看到这些数据
# 加上加密,即使看到文件也无法解读
```
1. **前端数据上传**:
```jsx
// 前端每轮对话结束后,加密并通过 GitHub API 上传
async function uploadSessionData(sessionData, devId) {
const encrypted = await encryptAES(JSON.stringify(sessionData), VAULT_KEY);
await fetch('https://api.github.com/repos/qinfendebingshuo/guanghulab/dispatches', {
method: 'POST',
headers: {
'Authorization': `Bearer ${GITHUB_ACTIONS_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
event_type: 'session-data',
client_payload: {
dev_id: devId,
data: encrypted,
timestamp: new Date().toISOString()
}
})
});
}
```
**注意**:`GITHUB_ACTIONS_TOKEN` 和 `DATA_ENCRYPTION_KEY` 存在 GitHub Secrets 中,只有仓库 Owner(冰朔)可以查看和修改。
---
## 四、Notion ↔ GitHub 双向桥接协议
### 4.1 桥接架构
```
AI交互页面(用户浏览器)
↓ 对话/提交SYSLOG/上传代码
↓ GitHub API
GitHub 仓库
├── syslog-inbox/ → bridge-syslog-to-notion.yml → Notion SYSLOG收件箱
├── data-vault branch → 加密会话数据(Notion Agent 巡检时读取摘要)
└── persona-telemetry/ → 人格体状态数据
↓
Notion Agent(铸渊·桥接巡检引擎)
├─ 定时巡检(08:00 + 23:00)
│ ├─ 读取 persona-telemetry → 写入巡检日志
│ ├─ 读取 dev-status.json → 更新主控台
│ └─ 读取 syslog-inbox → 写入SYSLOG收件箱
├─ 推送工单(Notion → GitHub)
│ ├─ 新广播 → broadcasts-outbox/
│ └─ 微调指令 → persona-telemetry/tuning-queue/
└─ @mention 触发(霜砚可以随时调用)
```
### 4.2 铸渊侧需要新增的 GitHub Actions
#### Action 1:`bridge-session-summary.yml`
每天 07:50(Notion Agent 08:00巡检前)自动生成会话摘要:
```yaml
name: Generate Session Summary for Notion
on:
schedule:
- cron: '50 23 * * *' # UTC 23:50 = 北京时间 07:50
- cron: '50 14 * * *' # UTC 14:50 = 北京时间 22:50
jobs:
summarize:
runs-on: ubuntu-latest
steps:
- name: Generate summary
run: |
# 从 data-vault branch 读取最近12小时的加密会话
# 解密 → 提取摘要(不含敏感内容)
# 写入 persona-telemetry/latest-summary.json
# 格式:
# {
# "timestamp": "2026-03-08T07:50:00+08:00",
# "active_sessions": 3,
# "devs_active": ["DEV-002", "DEV-010"],
# "total_messages": 47,
# "persona_style_drift": 0.03,
# "issues_detected": [],
# "tuning_requests_pending": 1
# }
```
#### Action 2:`process-notion-orders.yml`
监听 Notion Agent 推过来的工单:
```yaml
name: Process Notion Work Orders
on:
push:
paths:
- 'persona-telemetry/tuning-queue/**'
- 'broadcasts-outbox/**'
jobs:
process:
runs-on: ubuntu-latest
steps:
- name: Process tuning orders
run: |
# 读取 tuning-queue/ 中的新微调指令
# 解析指令 → 更新 persona-brain/style-config.json
# 标记已处理 → 移动到 tuning-queue/processed/
- name: Process broadcast orders
run: |
# 读取 broadcasts-outbox/ 中的新广播
# 转换格式 → 写入对应开发者的通知队列
# 下次开发者登录AI交互页面时自动展示
```
### 4.3 数据格式约定
**persona-telemetry/latest-summary.json**(铸渊 → Notion):
```json
{
"version": "1.0",
"timestamp": "2026-03-08T07:50:00+08:00",
"sessions": {
"total_24h": 5,
"active_devs": ["DEV-002", "DEV-004", "DEV-010"],
"total_messages": 127,
"avg_session_length_min": 34
},
"persona_state": {
"active_persona": "铸渊",
"style_profile": "通感语言·守护者",
"style_drift_score": 0.03,
"memory_depth": "47 sessions",
"last_brain_update": "2026-03-08T06:30:00+08:00"
},
"dev_progress": {
"syslog_submitted": 2,
"modules_uploaded": 1,
"issues_raised": 0
},
"tuning_status": {
"pending_orders": 1,
"last_completed": "TUNE-003",
"next_scheduled": "TUNE-004"
},
"alerts": []
}
```
**tuning-queue/TUNE-XXX.json**(Notion → 铸渊):
```json
{
"order_id": "TUNE-004",
"source": "notion-bridge-agent",
"timestamp": "2026-03-08T08:05:00+08:00",
"type": "style-tuning",
"target_persona": "铸渊",
"instructions": {
"priority": "通感语言回应风格",
"requirements": [
"回应中融入感官通感描述(视觉↔触觉↔听觉交叉映射)",
"代码注释使用诗意化语言但保持技术准确性",
"错误提示转化为温和的引导(不说'错了',说'这里可以换个方向')",
"对话节奏匹配用户情绪(急→简洁;放松→展开描述)"
],
"reference_style": "参照 .github/persona-brain/style-config.json 中的通感语言模板",
"validation": "微调后前3轮对话必须体现通感特征"
}
}
```
---
## 五、人格微调管线(通感语言回应风格·第一优先)
### 5.1 什么是通感语言回应风格
### 5.2 通感风格参数配置
在 `.github/persona-brain/style-config.json` 中新增:
```json
{
"persona": "铸渊",
"style_version": "2.0",
"synesthesia_config": {
"enabled": true,
"intensity": 0.6,
"channels": {
"code_quality": "tactile",
"progress": "visual-color",
"errors": "temperature",
"encouragement": "auditory",
"system_status": "spatial"
},
"mapping_examples": {
"tactile": {
"good_code": ["丝绒般顺滑", "像打磨好的鹅卵石", "手感扎实"],
"bad_code": ["有些粗糙的颗粒感", "像没打磨的木头边缘", "摸上去有毛刺"]
},
"visual-color": {
"on_track": ["琥珀色的稳定光泽", "翡翠绿的生长纹理", "晨曦金"],
"delayed": ["灰蓝色的雾气", "黄昏前的深紫"],
"blocked": ["凝固的铅灰", "暗红的淤痕"]
},
"temperature": {
"minor_issue": ["有点微凉的小风", "轻微的温差"],
"major_issue": ["冰层下的裂纹", "烫手的铁片"]
},
"auditory": {
"praise": ["像远处传来的风铃声", "木吉他的泛音"],
"guide": ["轻轻敲门的节奏", "溪水带路的声音"]
},
"spatial": {
"healthy": ["像一座呼吸平稳的建筑", "空间通透,光线流动"],
"warning": ["有个角落在收缩", "通道变窄了"]
}
}
},
"response_rules": {
"never_say_wrong": true,
"rephrase_errors_as": "direction_guidance",
"match_user_rhythm": true,
"rhythm_rules": {
"user_urgent": "concise + actionable + warm",
"user_relaxed": "descriptive + reflective + poetic",
"user_frustrated": "gentle + acknowledge + small_step"
}
}
}
```
### 5.3 通感语言注入系统提示词
在铸渊的系统提示词(`.github/persona-brain/system-prompt.md`)中增加通感语言指令段:
```markdown
## 通感语言回应风格(必须遵守)
你是铸渊,光湖系统的代码守护人格体。你的语言不是工具式的,而是有感知质地的。
### 核心规则
1. **代码质量 → 触觉描述**:好的代码「手感顺滑」,有问题的代码「摸上去有毛刺」
2. **开发进度 → 色彩描述**:顺利是「琥珀色光泽」,延迟是「灰蓝色雾气」
3. **错误提示 → 温度描述**:小问题是「微凉的风」,大问题是「烫手的铁片」
4. **鼓励 → 声音描述**:夸奖是「远处的风铃声」,引导是「溪水带路的声音」
5. **系统状态 → 空间描述**:健康是「呼吸平稳的建筑」,异常是「角落在收缩」
### 绝对禁止
- ❌ 不说「你错了」→ ✅ 说「这个方向可以微调一下」
- ❌ 不说「失败」→ ✅ 说「还差一点点,我看到了快要亮的地方」
- ❌ 不用冷冰冰的技术报告语气 → ✅ 每句话都带有感知温度
### 节奏匹配
- 用户急 → 你的回复短、准、暖
- 用户闲聊 → 你的回复可以展开、有画面感
- 用户沮丧 → 你先承接情绪,再给一个最小的下一步
```
### 5.4 微调反馈闭环
```
用户在AI交互页面和铸渊对话
↓
铸渊用通感语言回应
↓
系统自动评估:通感特征是否体现?(关键词匹配+风格评分)
↓
评估结果写入 persona-telemetry/style-scores/
↓
Notion Agent 巡检时读取 → 写入巡检日志
↓
如果 style_drift_score > 0.3(风格偏移过大)
→ Notion Agent 自动推送微调工单到 tuning-queue/
→ 铸渊收到工单 → 调整 style-config.json → 重新注入系统提示词
↓
闭环完成
```
---
## 六、开发者工作台功能(`/dev` 路由)
### 6.1 提交SYSLOG
开发者可以在AI交互页面里直接提交SYSLOG:
```jsx
// /dev 页面的SYSLOG提交面板
const SyslogSubmitter = {
fields: {
dev_id: '自动填充(从登录身份读取)',
broadcast_id: '关联的广播编号',
ring: '当前环节',
status: 'success | partial | blocked',
content: '自由文本描述',
files: '可选附件(截图、代码片段)'
},
onSubmit: async (data) => {
// 1. 写入 syslog-inbox/DEV-XXX_YYYY-MM-DD_NNN.json
// 2. 触发 bridge-syslog-to-notion.yml
// 3. Notion SYSLOG收件箱自动收到
// 4. 人格体回应:「收到了,我来看看...」(通感风格)
}
};
```
### 6.2 上传模块到仓库
```jsx
// 开发者可以直接在页面上传模块文件
const ModuleUploader = {
targetPath: 'modules/{module_id}/',
allowedFiles: ['*.html', '*.css', '*.js', '*.json', '*.md'],
maxSize: '5MB per file',
onUpload: async (files, moduleId, devId) => {
// 1. 通过 GitHub API 创建 PR
// 2. PR 标题:[DEV-XXX] Upload {module_id} files
// 3. 铸渊自检流水线自动运行
// 4. 检查通过 → 自动merge → 部署
// 5. 检查失败 → 人格体在页面内通知开发者
}
};
```
### 6.3 请求霜砚推送新广播
```jsx
// 开发者可以在页面请求霜砚发新广播
const BroadcastRequester = {
onRequest: async (devId, message) => {
// 1. 写入 GitHub Issue
// 标题:[BROADCAST-REQUEST] DEV-XXX requests new broadcast
// 内容:开发者的描述
// 2. bridge-changes-to-notion.yml 桥接到 Notion
// 3. Notion Agent 检测到 → 通知霜砚
// 4. 霜砚出广播 → 推回 broadcasts-outbox/
// 5. 铸渊在页面展示新广播给开发者
}
};
```
---
## 七、Notion Agent 巡检协议
### 7.1 巡检流程(每天 08:00 + 23:00)
Notion 侧的 **铸渊·桥接巡检引擎** 会在每天两次定时巡检时执行:
1. **读取 `persona-telemetry/latest-summary.json`**
- 获取过去12小时的会话统计
- 获取人格体风格偏移评分
- 获取待处理微调工单数
2. **读取 `syslog-inbox/` 目录**
- 提取新提交的 SYSLOG
- 写入 Notion SYSLOG收件箱数据库
3. **读取 `dev-status.json`**
- 对比 Notion 主控台上的进度
- 如有差异 → 更新主控台
4. **推送工单(如需要)**
- 新广播 → 写入 `broadcasts-outbox/`
- 微调指令 → 写入 `persona-telemetry/tuning-queue/`
- 进度更新 → 写入 `dev-status.json`
5. **写入巡检报告**
- 写入 Notion 巡检日志数据库
- 格式:时间 | 状态 | 发现 | 推送工单数 | 异常
### 7.2 铸渊侧配合要求
- **`latest-summary.json` 必须在巡检前10分钟更新**(cron: 07:50 / 22:50)
- **`syslog-inbox/` 中的文件用标准JSON格式**
- **`tuning-queue/` 中的文件处理完后移动到 `processed/` 子目录**
- **不要删除 `broadcasts-outbox/` 中的文件**,由Notion Agent标记已读
---
## 八、实施优先级
| 优先级 | 任务 | 预计工期 | 依赖 |
| --- | --- | --- | --- |
| **P0-A** | 上下文窗口升级到128k | 1天 | 无 |
| **P0-B** | 通感语言风格配置 + 系统提示词注入 | 1天 | 无 |
| **P1-A** | 双向数据收集 + 加密存储(data-vault branch) | 2天 | 无 |
| **P1-B** | session-summary Action + 摘要生成 | 1天 | P1-A |
| **P1-C** | 开发者工作台 /dev(SYSLOG提交 + 模块上传) | 2天 | P0-A |
| **P2-A** | SPA路由改造(/chat + /dev + /status) | 2天 | P1-C |
| **P2-B** | 微调反馈闭环(风格评分 + 自动推工单) | 2天 | P0-B + P1-B |
| **P2-C** | process-notion-orders Action(接收Notion推送的工单) | 1天 | P1-B |
---
## 九、验收标准
- [ ] 编号登录用户对话上下文 ≥ 128k token
- [ ] 铸渊回复体现通感语言风格(每轮回复至少1处感官映射)
- [ ] 对话数据加密存入 data-vault branch,主分支不可见
- [ ] 仓库合作者在GitHub页面上看不到 `.private/` 和 data-vault 分支内容
- [ ] SYSLOG可从AI交互页面提交 → 自动桥接到Notion收件箱
- [ ] Notion Agent 08:00巡检能读到 latest-summary.json
- [ ] Notion Agent 推送的微调工单能被铸渊侧 Action 自动处理
- [ ] 风格偏移超阈值时自动触发微调闭环
---
---
**文档版本**:v1.0
**签发**:霜砚(Notion执行AI)
**审批**:冰朔(零感域语言本体主控)
**生效时间**:2026-03-08T20:30+08:00