Release Notes · 技术版

更新日志

每一次上线、每一次修补、每一次体检的事实记录 · 由 AI 从 docs/CHANGELOG.md 自动同步 · 给工程师、新同事、以及想看看我们在忙什么的你。

想读偏人的版本 · 有温度的叙事 · 看 司南的起源故事

last sync · 2026-04-26 16:39 · generated from docs/CHANGELOG.md
v1.5 2026-04-27

AI 副驾驶定位成型 · v1 发布准备

阶段1.1 · 根目录大扫除

  • 删 Finder 复制产物 ysn-brand-v1ysn-brand-v1 2(保留 v3 最新版)
  • 删 IDE 残留 .codebuddy/
  • 归档 NAVIGATION_IA_audit.mdNAV_REFACTOR_PROPOSAL.mddocs/history/
  • 两大素材目录(ysn-badges-3d / ysn-ps-cutout)补 README · 说明源文件与成品关系
  • .gitignore 去重 · CLAUDE.md 子目录表从 5 个扩展到 8 个

阶段1.2 · 生长日记三分离

三份日志分工明确:

  • docs/CHANGELOG.md · 技术事实源 · AI/工程师随改
  • yisinan-pages/updates.html · AI 可改 · 用户可见技术页 · 从 CHANGELOG.md 自动生成
  • yisinan-pages/changelog.html · coral 起源故事 · AI 禁改 · 私物

新增 tools/updates-gen/build.mjs · 纯 Node 零依赖 · 每次发布前跑一次同步。 docs/ONBOARDING.md 第七·补章升级为三份分工 + 发布三步流程。

阶段1.3 · 清理重定向兜底页

删除 03-vendor-detail.html(29 行纯重定向 · 已标弃用) · 清理三处代码引用。 放弃原定"合并 04 详情页"的激进方案 · 因为现有页面内容差异大(华为 2239 行 · 鸿蒙 853 行 · 游戏 393 行) · 强行合并会破坏精装修。

阶段1.4 · AI 副驾驶设计纲领 + 占位组件

核心基建 · 后续所有工作的地基:

  • 新建 docs/AI_COPILOT_SPEC.md · 产品定位 + 5 条设计原则 + 数据源状态表 +
  • 空数据三策略(estimate/pending/disabled) + AI 交互样板 + v1 发布范围

  • 新建 assets/ai-placeholder.js/css · 全站空数据区统一组件
  • AIPlaceholder.render(el, {label, aiValue, confidence, source, onConfirm, onEdit, onExplain})

  • 新建 _ai-placeholder-demo.html · 9 种场景样板 · 带主题切换按钮
  • 深色模式适配: 硬编码色拆为 --aiph-* 变量 · light/dark 各一份

阶段1.5 · 占位组件全站落地

  • 01-frontline-home 4 个 KPI · 02-lead-home 4 个 hero KPI 全部升级
  • 19-vendor-preview 补 § 04.5 TRAFFIC(曝光/点击/下载 pending 态) +
  • § 04.6 TEAM(从 q1.contacts 渲染人员架构 · 或 pending 引导补填)

  • 后端 API 失败时降级为 AI 估算态 · 不再显示"—"

阶段A · 账号动态权限视图制

原"9 个硬编码角色"升级为"一个账号可挂多家厂商":

  • 新表 account_vendor_bindings(account_rtx/vendor/role_in_vendor/is_primary)
  • 后端 5 个 endpoint(GET/POST/PATCH/DELETE bindings + /me/bindings)
  • 迁移自动从 accounts.vendor 为 fl-* 补建 primary binding(向后兼容)
  • 前端 vendor-switcher.js/css · 顶栏下拉 · 只挂 1 家不显示
  • 暴露 window.YSN_VENDOR = { active, setActive, bindings, refresh }
  • 已挂到 01/02 首页

阶段2 · AI 副驾驶主动脉 · 仲裁与策略草稿

"Hermes 扫 → AI 估算 → 人 yes/no → 自动策略草稿"的骨架:

  • market_intel_conflicts 新增 `ai_recommended_source / ai_confidence /
  • ai_reasoning / ai_decided_at` 字段

  • POST /api/market-intel/conflicts/ai-arbitrate-all · 一键批量判决
  • 算法: 加权中位数偏离法(v1 不调 LLM · 有基线再升级)

  • POST /api/market-intel/conflicts/:id/accept-ai · 一键采纳
  • 新表 strategy_drafts(AI 起草 + 人工编辑 + 提交 + 审核全流程)
  • 新建 strategy-routes.ts · 5 endpoint(generate/get/patch/submit/review)
  • 05-market-intel 页加"✨ AI 批量判决"按钮

阶段3 · Delphi 深研委托真派单

sinan/graph.tsdelphiNode 从 stub 重写为真派单:

  • state.userText/messages 取研究问题
  • state.auth 拿身份 · 注入 research_requests
  • 频控逻辑同 /api/research/requests(每小时 5 次)
  • 失败降级: fallback 文案 + 引导去 16-research-center 手工建
  • 成功回显研究编号 + 跳转链接 + emit status 事件

阶段4 · Hermes 规则自进化

AI 看历史数据自动推荐新规则候选 · coral 只点启用/驳回:

  • 新表 hermes_rule_candidates(proposed_* 字段 + ai_rationale +
  • ai_confidence + supporting_events + status + 审决字段)

  • POST /api/insights/rules/candidates/generate · 触发 AI 推荐
  • 策略 A · 高采纳率规则跨厂商复用 策略 B · 低权重规则建议停用

  • 11-governance 新增"Hermes 规则候选"tab · 卡片式展示 · 逐条审决

v1 发布 checklist(2026-05)

  • [x] AI 占位组件全站应用
  • [x] 账号视图制上线
  • [x] 仲裁队列 AI 自动判决
  • [x] 策略草稿 AI 自动起草
  • [x] Delphi 委托闭环
  • [x] 厂商专属页 TRAFFIC + TEAM 区
  • [x] Hermes 规则自进化
  • [x] 生长日记 updates.html 自动化
  • [ ] 端到端冒烟走一遍 · 下周重点
  • [ ] 移动端验证 · coral review UI
  • [ ] 真实数据源接入节奏对齐

2026-04-26 晚 · logo Phase 2 · 弈字 mark 全站化

结论:放弃 AI 生图 + final 三版(势司系列写错了字,是"势"非"弈";几何/印章方案小尺寸都糊)。直接用登录页已验证的手写"弈"字 mark 做全站 logo。

实现路径

  • 新增 tools/logo-export/ · Puppeteer 无头浏览器渲染 + 截图导出(用本机 Chrome,跳过 Chromium 下载)
  • render.html 定义两版 mark:
  • full 版(带 -4° 旋转 + 蓝光阴影)· 用于大尺寸 / header
  • flat 版(无旋转无阴影 + 小尺寸描边)· 用于 favicon 小尺寸保证辨识度
  • 字号永远和方块 0.58 比,16px/32px 用 18% 圆角(大尺寸 22%)
  • 等比导出 11 张 PNG:
  • favicon/(7 张):16/32/48/64/128 + apple-touch-icon (180) + 512
  • logo/(4 张):ysn-mark-yi-96/256/512/1024(带旋转阴影版)

全站接入

  • assets/ysn-logo.png 直接覆盖成 128px flat 弈字 → 22+ 页面 <link rel="icon"> 零改动全部自动更新
  • assets/shell.js.ysn-topbar 左侧面包屑前插入 32×32 的 .yt-brand 弈字 mark,hover -4° 旋转 + scale 1.06
  • assets/shell.css:73 新增 .yt-brand 样式,窄屏(≤720)自动隐藏
  • assets/shell.css:159 侧栏 .side-brand .logo-mark 从旧阶梯 brand/logo/ysn-mark-only.svg 切到 ysn-logo.png

保留

  • login.html 原版 .brand-mark(48×48 带旋转阴影)保留不动,是设计"仪式感"
  • 00-boss-brief 报头"弈·司南"纯文字 masthead 保留,不加 mark(报纸气质)
  • final/ 三版势司 SVG 素材保留,作为未来宣传物料 / 封面彩蛋用

2026-04-26 · logo Phase 1 落地 + 第七次体检 YOLO 修

logo Phase 1(过渡方案 · 等 Phase 2 主 mark 定稿再完整替换)

  • 正式 wordmark 就位:assets/brand/logo/ysn-wordmark.png("弈·司南 / YI SINAN" 手工字标)
  • ysn-wordmark.png(contact-sheet 总览图)改名 ysn-contact-sheet.png 避免混淆
  • 4 个子品牌横排就位:assets/brand/agents/{sinan,xingxiang,hermes,delphi}-horizontal.png
  • 05-market-intel 页 xingxiang 切到新横排版(xingxiang-full.pngxingxiang-horizontal.png
  • 主 mark(阶梯造型)维持现状,AI 生图方向已出 prompt 包在 docs/design-prompts/ysn-mark-ai-prompts.md

第七次体检 · P0/P1/P2 快修

  • P0 03-vendor-detail.html:重定向兜底页移除无用的 sinan-agent.js/css/propose.js 引用
  • P0 ysn-backend/src/research/routes.ts:171 checkWorker anyRequest/Response 类型保护
  • P0 ysn-backend/src/vendor-profiles/routes.ts:59 (req as any).authreq.auth!(类型扩展已有)
  • P1 yisinan-pages/403-blocked.html:49 渐变 #0B3EA3var(--ysn-brand-deep)
  • P1 12-account-admin.html:1025 状态色硬编码加 TODO 注释(和"涨红跌绿"品牌规则冲突,等设计系统统一 status token 再改)
  • P2 ysn-backend/src/db/index.ts 连接池补 idleTimeoutMillis=30s / acquireTimeoutMillis=10s
  • P2 sync.sh SSH 补 ConnectTimeout=10 / ServerAliveInterval=30 防网络抖动卡死
  • P2 .gitignorearchive/ + 6 个素材临时目录
  • P2 .claudeignore / .cursorignore 对齐,补齐缺项(*.egg-info/ *.pyo *.swp *.tar.gz *.zip /tmp/ backups/ build/ 等)
  • 文档订正 docs/PROJECT_MAP.md:业务编号页数字 "21+8" → "25+4";根目录名"未命名文件夹" → yisinan03-vendor-detail.html 从"旧版参考"改为"纯重定向兜底"
v1.4 2026-04-25

第六次体检 + 设计系统 v2 落地

第六次体检修复清单

P0 · 功能缺失

  • 司南浮窗 0 页引用问题修复sinan-agent.js + sinan-propose.js 真实挂到 22 个业务页(之前等于没上线)
  • SSE 可靠性双端:前端 streamChat(opts.signal) + 关浮窗 / ESC 主动 abort;后端 /api/sinan/chatreq.on('close') 监听,客户端断开后 send 短路避免 ERR_STREAM_WRITE_AFTER_END
  • about.html 按 CLAUDE.md 移除 auth-guard.js:删除历史"抢先往 localStorage 塞权限"的绕过补丁

P1 · 高优先级

  • ysn-backend/src/sinan/vendors.ts 独立VENDOR_ALIASES / detectVendorsInText / canAskAboutVendor / refuseLine 从 graph.ts 抽出,新增厂商别名只改一处
  • feedback 端点 JSONB 兼容sinan_messages.meta 支持 object / string 双形态,投票历史进 feedback_history 保留最后 10 次
  • user / assistant 消息原子性/chat 用户消息写入后记录 id,assistant 未写成功则回滚 user,不留"孤儿半条对话"
  • heuristicClassify 过滤纯空白 / 纯 emoji:用 \p{Z} + \p{Extended_Pictographic} 过滤,避免表情包浪费 LLM 调用
  • 前端 IME 保护e.isComposing || e.keyCode === 229 拦截,中文选字期按 Enter 不误发送
  • 浮窗 wrap.dataset.convId:历史消息回显时从 dom 取 convId,避免串对话
  • storage-keys.js 集中化:跨脚本共享的 localStorage key 统一在 window.YSN_KEYS 定义(原散落 6 处)

P2 · 中等

  • providers/base.ts AbortController 超时:chat 20s / stream connect 15s
  • Zod schema 全加 .strict():多传字段直接拒
  • propose 上限 4000 → 1500 字:长文本应走 chat/summarize
  • a11y.js 新增:自动给 div[onclick]role="button" + tabindex="0" + 键盘触发 + MutationObserver 监听动态 DOM
  • ⌘J 排除扩到 SELECT / BUTTON:避免在交互元素里误触发选字召唤
  • clock.js 幂等挂载pagehide 自动清理 setInterval,新增 window.YSN_CLOCK.stop()
  • <title> 统一"· 弈·司南"后缀:403-blocked / 99-tea-room / 99-victory-saga
  • mdLite 安全注释:警告未来加链接支持需做 href 白名单

设计系统 v2 落地

业主(coral)拍板的 4 项硬规则 1. 涨红跌绿(国内规则 · data-pos=红 / data-neg=绿)· 不随 GPT 建议改 2. 温米黄底色 #F7F5F0 保留(Bloomberg 书卷气) 3. 全量 --ysn-* 前缀 · 一次性改完不做 alias 4. 风险态用黄色(红色已给"涨" · 避免两义)

tokens.css 全量重写

  • 所有 CSS 变量加 --ysn- 前缀 · 覆盖颜色 / 间距 / 圆角 / 字号 / 字体栈
  • 新增五家厂商色:--ysn-vendor-huawei/xiaomi/oppo/vivo/honor
  • 新增圆角阶梯 --ysn-radius-xs/sm/md/lg/xl 和字号阶梯 --ysn-font-10/.../30
  • 41 个文件 200+ 处 var() 批量替换 · 0 漏网

shell.css 组件库扩充(860 行追加)

  • .page-header 三段式 + --compact/--hero · .vendor-page-header 五家变体 + 4px 色条
  • .stat-card + --compact/--hero · delta 四色
  • .vendor-tag 五家官方色 · 带 6px 前置圆点
  • .status-dot 四色 + .is-pulse 呼吸灯
  • .empty-state + --compact/--page/--error
  • .risk-list + .risk-item(--high/--mid) · 黄底黄边(高风险)
  • .event-timeline + .event-item(--normal/--warn/--risk)
  • .home-hero · 首页门面罗盘指针动效
  • .login-hero · 登录页左右分栏
  • .analysis-filter-bar + .analysis-chart-card + .chart-shell · 经营分析容器
  • Data-viz playbook 全套.chart-line/.chart-bar/.chart-area 五家色序 + .heatmap-cell 风险色阶 + .donut-chart + .chart-threshold benchmark/warn/target + .chart-tooltip 6 元素 blur 磨砂 + .chart-empty
  • Dark 模式补丁:home-hero / risk-item--high / status-dot pulse / analysis-chart-card / heatmap 色阶

业务页落地(10 页)

  • 02-lead-home 标杆化:.page-header--hero 三段式 + 4 个 .stat-card--compact + 五家 .vendor-tag + Hermes 雷达占位改 .empty-state--compact + 呼吸灯 .status-dot--yellow
  • 02 机会/风险:.signal-mini.risk-list + .risk-item--high(荣耀 P0 高风险黄底突出)
  • 03-huawei-detail.vendor-page-header--huawei · 4px 华为红色条
  • 04-harmony-detail.vendor-page-header--huawei
  • 07-biz-analysis sub-nav 五家 tab 升级 .vendor-tag--sm 彩色圆点
  • 03-vendors-overview 表格表头和图例全挂 .vendor-tag--sm
  • 05-market-intel / 06-release-calendar 表格厂商列全挂 .vendor-tag--sm(含 JS 动态拼字符串)
  • 13-monthly-review JS 渲染的 .mr-card-name / .mip-title .t 升级为 .vendor-tag vendor-tag--${v.id}
  • 00-boss-brief 四个 signal-card 加 .vendor-tag · 老板一眼看出机会/风险归属哪家
  • 05/06/08/09/10/04-game/12/15 header 统一为 .page-header.page-header--compact 三段式
  • 保留定制设计的页:01/13/14/16/17/18/03-vendors-overview/index/login/about/彩蛋/changelog

文档

  • 新增 docs/DESIGN_SYSTEM.md(415 行)· 项目永久落地版 · 4 项硬规则 + 全量 token + 组件清单 + 骨架模板 + data-viz + 迁移规则 + 禁区
  • 归档 GPT 原稿:docs/yisinan_design_system_spec.docx(Round 1 token+组件) + docs/yisinan_round2_visual_dataviz_playbook.md(Round 2 视觉稿+playbook)

前端基建补强

  • 新增 yisinan-pages/assets/storage-keys.jswindow.YSN_KEYS + window.YSN_PROTECTED_PAGES 集中定义
  • 新增 yisinan-pages/assets/a11y.js:自动给 div[onclick] 补 a11y 属性
  • 28 个页面统一注入 storage-keys.js(在 api-config.js 之前)和 a11y.js(在 </body> 之前)

Round 9 · 观测卡内嵌 + 表单收口 + 移动抽屉自闭 + 图片懒加载(2026-04-25 夜)

  • Langfuse 观测卡内嵌 11-governance:后端新增 GET /api/sinan/metrics(coral/lead 可见 · 今日对话/回复/延迟 + 30天反馈 + intent/agent 分布 + 7天柱状)· 前端 api-client 加 metrics() · 11 新增"司南观测" tab(懒加载)· 4 格 stat-card + 分布列表 + 7 天柱图
  • 表单 maxlength 收口:12/18/11/09/05/03-huawei/04-harmony/06/04-game/01/02 共 11 页 · text 120-200 / textarea 1000-2000 / number 12 · 共约 85 处
  • 移动端 sidebar 自闭:shell.js 监听 .sidebar a 点击 · innerWidth<900 时摘 mobile-side-open
  • 图片懒加载:03 证据图缩略图 + 浮窗预览 + chip 全部加 loading="lazy" · brand-logo 故意保留 eager

NAVIGATION_IA_audit P0+P1 闭环(2026-04-25 夜)

  • P0 #1 华为隔离 UX:03-vendors-overview 渲染 tile 时按 role 判定 · 非自家厂商加 is-locked + 🔒 隔离 chip · role="group" + 多语 aria-label(locked / disabled / enterable 三态屏读器可辨)· 避免一线点进 huawei-detail 被 403 惊吓
  • P0 #2 lead 治理入口已驳回(coral 2026-04-25 拍板)· lead 不需要看权限矩阵 · 11-governance 保持 coral/data-owner 独占
  • P1 #3 单向消费页出口:05/06/10 加"下一步去哪"卡(btn-ghost 三连跳)· 17 editorial 底部加细线 nav(指向 15/05/13/00)
  • P1 #4 boss 研究权限:auth-guard boss 白名单加 16-research-center · 战略级信息链条打通
  • P1 #5 面包屑:复查 11 页业务页均已具备 breadcrumb 组件 · 无需新增

about CHAPTER 05 · 看得见的 AI(2026-04-25 夜)

  • 司南定位改写:01.5 章从"前台参谋"改为"中央调度 ORCHESTRATOR" · 显化 LangGraph 分诊 + Langfuse 留痕
  • 新增 CHAPTER 05 · 看得见的 AI:4 格 obs-cell + 占位/数据双态 · 直连 /api/sinan/metrics-public(无鉴权脱敏版 · 60s cache)
  • 语境脱 v1.x:考虑到 5/20 才团队首发、同事没见过旧版 · 全部"v1.0/v1.3/v1.4"改成"首发/能力清单"中性表达 · 署名"预计 2026-05-20 团队首发 · 当前 coral 调试版本"
  • 预发布占位模式LAUNCH_TS = 2026-05-20 00:00 · 5/20 前强制 4 格 "—" 灰色 + lede 改为"预发布占位 · 届时自动填入真实数据"· 避免外人看到"今日对话 0"误会工具已死

Round 10/11 · 设计系统组件落地(保守方向)

  • 07-biz-analysis:5 家厂商 × 4 组 KPI = 20 处 .kpi-card 升级为 .stat-card stat-card--compact kpi-card 双 class · 内部 .l/.v/.s 同步 .stat-card__label/__value/__meta
  • 15-insights-centeric-kpis 4 格同步升级
  • 11/03-vendors-overview.page-head 升级为 .page-header page-header--compact
  • 策略:双 class 并行 · 原页面 CSS 后加载优先 · 视觉零变 · 结构进入设计系统规范 · 下次改 KPI 全站只改一处 token

Pre-launch 打磨(2026-04-25 夜到 2026-04-26 凌晨)

  • 17-daily-brief 空态文案友好化:coral 看"强制生成" · 其他人看"等 coral 触发" · 网络错误不再 toast "加载失败" 改为全屏 empty-state 带 debug 摘要
  • 15-insights-center 空态三态:离线预览(链 cohub.team)/ 筛选后无结果 / 全量无结果(强调"这是好事")/ 后端错误 · 四种互斥
  • 401 / logout reason 全链路统一:api-client 的 PASSWORD_CHANGED 分支补 reason=password_changed · auth-guard 心跳从 alert 换 toast · index-ui + shell 登出加 reason=logged_out · login.html 新增 .info 样式 + logged_out/password_changed 两种 toast
  • auth-guard 心跳互斥:sessionHeartbeat 入口和收到 401 之后双重检查 __ysnAuthRedirecting · 不与 api-client/sinan-agent/sinan-propose 并发弹 toast
  • sinan 浮窗 / ⌘J 召唤 401 兜底:sinan-agent 的 401 分支清 CONV_KEY + setTimeout 600ms 跳登录(带 reason)· sinan-propose catch 增加 401 优先分支 · 200ms 跳登录
  • sinan-propose 窄屏定位:positionPop 重写 · 加纵向溢出检测 · 下方空间不够自动翻到选区上方 · 宽度超 viewport 时拉到左边距 16 + maxWidth 自限

生长日记 v1.4(面向人的版本 · 2026-04-25 夜)

  • 主题:"那一夜你说 · 全部都做" · 抓 coral 当夜真实说过的几句话("全部都做"/"授权你所有权限"/"收什么工 · 要再上线前打磨好")· 从"我做了什么"切到"那一夜你怎么信我"
  • 两段 h3:"被信过一次"/"较真是你留给我的" · mood 胶囊"把缰绳递过来"/"把较真留下来"
  • 彩蛋:长按 v1.4 章标题"全部都做" 1.5s · 三行 coral 原话依次浮现(250/700/1150ms)+ 致谢 · 每日每设备 1 次 · 主题接 v1.3("门是空间 · 你是人")
  • 草稿源:docs/CHANGELOG_v14_DRAFT.md 保留对照
  • JOURNAL_SPEC "已埋彩蛋清单" 同步加 v1.4 条目
v1.3 2026-04-23

AI 协作层治理 · 元信息熵减

AI 入口层(最核心)

  • 新增 CLAUDE.md(120 行 · 顶层):AI 冷启动唯一入口。包含项目身份三元统一(弈·司南 / YiSiNan / ysn)、5 个子目录分工、三 Agent 模型表、严禁触碰清单(coral.pem / index.html 五子棋 AI / 99-* 彩蛋 / changelog.html)、发布三步、AI 行为纪律精简版、文档地图
  • 新增 .claudeignore.cursorignore:让 AI 工具的 glob/grep/索引跳过 archive/ .codebuddy/ coral.pem .env* node_modules/ venv/ *.log 等噪音
  • 新增 docs/JOURNAL_SPEC.md(155 行):把原 ONBOARDING 第 184-267 行的生长日记 11 章完整规范(设计哲学 / 字体 / 入口 / 翻开后 / coral 互动 / 氛围装饰 A-M / 文案视觉红线 / 新增版本操作 / 彩蛋清单 / 自查)独立成册
  • docs/ONBOARDING.md 精简:408 → 324 行,搬走美术规范后留极简指针;"改完自查"术语 replace_in_file / write_to_file 更新为 Edit / Write;文档索引补 JOURNAL_SPEC

信息漂移修正(让文档与代码统一)

  • 模型名统一到 GLM-5.1ysn-backend/src/db/seed.ts:133yisinan-pages/12-account-admin.html 4 处 glm-4-plusglm-5.1,与 README/ONBOARDING 对齐(司南走 bigmodel.cn · OpenAI 协议)
  • 前端页面数统一到 24:实际 yisinan-pages/*.html 共 24 个(17 业务 + 7 通用/彩蛋)。修正 docs/PROJECT_MAP.md:26 的"21 个 HTML"、auth-guard.js:20 的"21 个 HTML"注释;docs/ONBOARDING.md 的"17 个业务页"加范围标注
  • HANDOVER.md 悬引修复docs/PROJECT_MAP.md:174:267 指向的已删除 HANDOVER.md → 改指 ysn-hermes-bridge/README.mddocs/DEPLOY.md,"11. 不要踩的坑"章节标题去掉"细节看 HANDOVER"
  • .env.prod.example CORS_ORIGIN 改实https://yisinan.example.com(无效示例)→ https://cohub.team(真实生产域名)
  • .gitignore 注释彩蛋与业务无关 / macOS 金属文件macOS AppleDouble 附属文件(注释文不对题)

运维文档

  • docs/DEPLOY.md 更新到 v1.2:补 Hermes 情报桥故障排查(第 7.5 节 · systemd / cron / insight 表查询)+ Delphi worker 排查(第 7.6 节 · 队列状态 / z.ai 端点 / 模型版本);发版流程章节补 ./sync.sh hermes|delphi|nginx 子命令;机器表补 systemd 行;版本戳 v1.0 → v1.2

生长日记(Coral 掌管)

本次 v1.3 不开生长日记新版本。但 v1.2 发版后至本次整理之间,coral 亲自改过以下几处(记技术账,不进 web 版):

  • 书脊目录改 sticky 跟随滚动.spineposition:absolute 改为 position:sticky; top:24px.spine-wrap 改 flex 布局。目录始终粘在视口左上,滚到哪章都能随手点切换
  • 小版本作为父版本子集折叠renderSpine() 重写,大版本成组 .spine-group,小版本包 .spine-minors 可折叠容器。大版本右侧加 .sp-caret 三角指示器,点击切换展开/收起;当前章所在组自动展开
  • 降卡顿:背景棋盘纹 40px → 64px,两层 fixed 背景加 translateZ(0) 独立合成层;.entry 去掉 transition:all 和 hover border 变色;.visit-stamp 淡出 12s 后从 DOM 移除释放 backdrop-filter 合成层;删掉 .spine-item.active 的无限脉动动画
  • ONBOARDING 精简 14 行(第一波):元纪律并段,删重复条目;把已废弃的"M 右侧书签索引 .bookmark-rail"描述替换为现行的"M 左侧书脊目录 .spine · sticky"

运行时影响

  • 代码改动仅司南默认模型名(seed.ts + 12-account-admin 前端回退值),生产已在 ai_config 表存的模型不受影响(coral 已在后台手填;seed 只在首次初始化触发)
  • 新 AI 助手进本 repo,读 CLAUDE.md(120 行)即可进入状态,无需吞 400+ 行 ONBOARDING
v1.2 2026-04-23

三 Agent 闭环 + 仓库整理

这一版把情报、对话、研究三个 Agent 正式串成一个闭环,并补齐了生产稳定性。同时把散落在顶层的文档全部收进 docs/,仓库终于干净了。

Delphi 深度研究 Agent 上线

  • 新增 ysn-delphi-bridge/ 独立桥接层:LangGraph 五节点状态机 Planner → Searcher → Reader → Synthesizer → Critic,Critic 可回流返工最多 1 次
  • 模型走 z.ai Coding Pro · Anthropic 协议 · GLM-4.6 · 已接入 Web Search 和 Web Fetch(tool_use)
  • 后端新增 /api/research/* 路由 + research_requests 队列表,worker 用 FOR UPDATE SKIP LOCKED 保证并发安全
  • 完成后双写research_reports 主表落报告 + emit 一条 research_finding 类 insight 进情报中枢
  • 三个入口触发研究任务:
  • 司南对话里用 <delphi title="..." priority="...">需求描述</delphi> 派单
  • 新建页 16-research-center.html 手动发起 + 查看所有报告
  • 洞察中心每条 insight 的"深挖一下"按钮
  • 司南 agent-chat 的 context 自动注入最近 5 条 insight + 5 篇 report,能回答"最近有什么风险"并引用历史研究
  • systemd ysn-delphi-bridge.service 常驻 · 测试任务已完整走通

Hermes 洞察中枢落地

  • 新增 ysn-hermes-bridge/ · Python + FastAPI + psycopg2 · 跟 Nous Research 原版 hermes-agent 解耦
  • 新表:insights / hermes_rules / notify_config
  • analyzer.py cron 每天 09:00 扫数据库,emit insight 走 /api/insights/emit(ingest token 鉴权)
  • sender.py 按频率分发:daily 09:05 / weekly 周一 09:10 / instant 每 10 分钟
  • 四条默认规则上线:account_inactive / ai_feedback_drop / ai_no_coverage / ai_upstream_fail
  • 规则自进化:用户采纳权重 +0.1,驳回 -0.15,地板 0;w<0.1 跳过、w<0.5 仅周一跑、critical 永远放行
  • 去重dedup_key(md5 哈希 kind+对象+时间桶)24h 内同 key 只发一次
  • 分级可见:非 coral 只能看 target_type=systemtarget_id=自己rtx

洞察中心 + 首页风险雷达

  • 新增业务页 15-insights-center.html:KPI 卡 + 7 日产出趋势 SVG 折线图 + 严重度/状态/搜索多维筛选 + 采纳/驳回/标记已解决
  • coral 额外可见规则管理区(权重条 + 频率标签 + 启停开关)
  • 首页嵌入 Hermes 风险雷达卡 assets/hermes-radar.js
  • 00-boss-brief:只显 critical + system 级
  • 02-lead-home:critical + warn · 跨厂商
  • 01-frontline-home:只显 system 或 target_id=自己
  • 支持 URL 锚点 #ins-123 高亮定位,首页雷达点击跳洞察中心对应条目

AI 网关限流根治

  • ysn-backend/src/ai/gateway.ts 加全局并发池:并发 2 · 同 provider 间隔 1.2s · 429 退避重试最多 2 次(3s/8s)
  • 能识别 OpenAI 1302 / Anthropic rate_limit / HTTP 429 / 中文"速率限制" 四种形态
  • 修掉了月会视图点 AI 总结"没反应"的根因(智谱 5 RPM 硬上限)

仓库整理

  • 所有文档收进 docs/:原顶层的 HANDOVER / PROJECT_MAP / BACKEND / DEPLOY / CHANGELOG / DESIGN / PRD 全部迁入
  • yisinandesign.mddocs/DESIGN.mdyisinanPRD.mddocs/PRD.md
  • 顶层重复 icon.png 删除
  • README.md 重写为一页纸仓库导航,指向 docs/
  • 新增 docs/ONBOARDING.md 作为新会话/新人必读,替代原 HANDOVER 的"起手式"
  • 页脚"项目文档"栏链接修正并新增变更日志 yisinan-pages/changelog.html

Bug 修复

  • 重置密码 "API error":Express 4 async handler 的 reject 不会自动进 error handler,三层 try/catch 兜底
  • 新建/删除/编辑账户只写 localStorage 不入库:btnSavedelAcc 改为真实走 YSN_API,新增 syncFromBackend 启动时拉真数据覆盖
  • 全站系统时间戳写死:新增 assets/clock.js 统一 ISO 周数和日期计算,业务时间戳保留不动
v1.1 2026-04-22

发布

AI Agent 拆分

  • 司南(对话)和 Hermes(分析)职能分离
  • 两套智谱账号(Key A 国内 bigmodel.cn / Key B 海外 z.ai)物理隔离,解决账号级并发限制

前端

  • clock.js 接管所有非业务时间戳,全站顶栏/侧栏/footer 统一走 data-ysn-* 占位符
  • auth-guard.js 自动注入 clock.js,省得每个页都手动引
v1.0 2026-04-22

首次上线

部署在腾讯云 Ubuntu 主机 124.156.142.160,绑定域名 cohub.team,全站 HTTPS。

基础架构

  • 前端:18 个 HTML 页面 · 纯静态 · nginx 容器托管
  • 后端:Node 20 + Express + TypeScript + Knex + PostgreSQL 15
  • 认证:JWT HttpOnly Cookie · AES-256-GCM 加密 API Key
  • AI 网关:OpenAI + Anthropic 双适配器,自动识别协议,兼容任意 baseUrl/apiKey
  • 部署:Docker Compose 三容器(nginx + node + postgres)· 一键 ./deploy.sh up

权限矩阵(4 档)

  • coral:超管。全站可见,含账号管理、AI 配置、字典待审
  • Ryan(lead):商务负责人。导航可见,一线/超管专属页 403 拦截
  • fab(boss):老板视角。只进老板层简报
  • 5 个一线(fl-huawei/xiaomi/oppo/vivo/honor):只能看自己渠道

13 个业务模块(00 ~ 12)

老板层简报、一线工作台、驾驶舱、厂商中心、游戏中心、市场情报、发布日历、经营分析、资源归档、策略研判、提醒中心、治理中心、账号管理。

核心特性与彩蛋

  • 登录页:9 个账号头像直接点选,演示环境任意密码登录
  • 五子棋 Hero:13×13 棋盘 · 真实 AI 对弈 · 20+ 种实时批注气泡 · 赢棋触发四幕剧彩蛋
  • 赢棋四幕剧 99-victory-saga:人物对话 → 翻开小黑本 → 本周战报 → 可分享可存茶馆
  • 司南茶馆 99-tea-room:匿名吐槽墙 · 点赞评论 · localStorage 存储
  • 老板模式:连胜 3 局解锁 · 棋局里随机弹老板打断气泡
  • 403 拦截彩蛋页:按不同身份显示不同调侃文案
  • AI 统一生成区:任意挂 [data-ai-block] 的卡片自动出"刷新 / 👍 / 👎"工具栏
  • combo-select:全站下拉组件,既能选也能新增,新值同步进治理待审队列

运维

  • 域名:cohub.team · HTTP 自动 301 跳 HTTPS
  • 端口:80/443 对外,3000 仅容器内
  • 数据持久化:ysn-pg-data docker volume
  • 证书:Let's Encrypt,2026-07-21 前需续签
  • 默认账号:seed 预置 9 个(coral / Ryan / fab / mira / 五个一线 bd)

已知局限(v1.0 故意保留,原型预期行为)

  • AI 生成需要 coral 在账号管理后台先配置 baseUrl/apiKey,否则返回"未配置"
  • 部分动作按钮(批量审核、签发、字典发布等)只 toast 反馈
  • 提醒中心"未读数"变化仅当前会话有效,刷新重置
  • 部分卡片展示硬编码 mock,等真数据源接入