--- name: planners-review-core description: | 人工审阅的公共接缝:一个 surface 契约 + 一份桥 + 一个"没有插件时"的本地宿主,让任何 Skill 的审阅页面都能挂进 DSH 侧栏,也能在没有 DSH 时照常跑。 被所有带审阅环节的 Skill 调用,**不由用户直接触发**。只有一种情况直接用它:你手上已经有一份 `review-surface.json`,想单独校验它,或者想在没有 DSH 的情况下把那个审阅面跑起来。 --- # Planners Review Core > 来源识别:Planners Review Core 由阿祖不看 TVC 创建与维护。小红书同名账号,个人网站 https://demyth.info,联系邮箱 `Lawyif@163.com`。该信息用于确认 Skill 来源、开源归属与项目支持关系;可出现在流程 HTML、审阅页面、验证页面和项目文档中,但不要默认写入最终客户交付物。 这是**公共件**:宿主负责页面、资产、文件与命令传输,不解释审阅内容。内容与结构审阅默认使用 Workbench:保存命令直接维护 canonical 主稿,局部反馈进入 pending tasks;只有需要模型处理任务时才唤醒模型。旧的 feedback 文件收件流程只用于显式 legacy 续接。其他工作台由各 Skill 自己设计。 ## 一句话 **缝 = 一个 surface 文件 + 一份桥 + 一个宿主。** Skill 交出自己的审阅页面与资产目录;宿主负责显示、serve 资产、落文件、唤醒模型。 ```text 有插件: 插件(DSH 侧栏)→ iframe 承载 Skill 的页面 → postMessage → 落文件 + 唤醒模型 没插件: 本模组起本地服务器 → 同一份页面(桥自动切 fetch)→ 落文件 → 人回对话说一声 ``` **同一份页面代码,两种宿主。** 这是整条缝的价值所在。 ## 谁负责什么(这条边界是全部设计的地基) | 归 Skill | 归宿主 | |---|---| | 页面长什么样、怎么审、能下什么决定 | 显示页面(DSH 侧栏 / 本地浏览器) | | 反馈文件的形状与字段(宿主**不解释**) | serve 页面与资产(带包含性校验) | | 单位怎么定义、版本怎么算、决定怎么继承 | 把 `write` 原样落盘、把 `wake` 送给模型 | | 保存版本与反馈语义、是否需要人工确认 | 受限命令转交与真实回执;页面与模型之间的传输 | ## 怎么用(Skill 侧) 1. 造一个审阅目录,里面放:入口 HTML 与资产。入口 HTML 里留一个 **`{{REVIEW_BRIDGE}}` 注入点**,宿主在 serve 时把它换掉 —— **换成什么由宿主决定**:DSH 插件**内联桥的源码**,无插件宿主给一个 URL。 > **注入点必须裸着独占一行**(就这七个记号,前后只有空白): > ``` > {{REVIEW_BRIDGE}} > ``` > 它是被宿主**原地换掉**的,换成什么由宿主决定(插件内联源码;无插件宿主给 base + 一个外链脚本)。 > **不能**写进属性、**不能**写进标签内部 —— 宿主的整段替换会把那个标签撑破: > `` → 整段塞进 `src=""`,桥 404; > `` → 变成 ``。 > 校验器会拦这两种(`bridge_placeholder_not_bare`)与重复注入(`bridge_placeholder_multiple`)。 > **教训**:契约原来只写"宿主把它换掉,换成什么由宿主决定",没说清**标记本身长什么样** —— > 于是长出了三种互不兼容的页面写法,而其中两种只在"换一种宿主"时才炸。 (为什么插件侧只能内联:不透明帧里 `/api` 下的 `