From f443f3bc668dfc6c9df111506d739d343ee82bba Mon Sep 17 00:00:00 2001 From: brother7 <7brother7@gmail.com> Date: Tue, 29 Sep 2026 17:23:55 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E8=AE=B0=E5=BD=95=E5=BF=AB=E6=8D=B7?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E4=B8=BB=E5=88=86=E6=94=AF=E9=9B=86=E6=88=90?= =?UTF-8?q?=E4=B8=8E=E5=B7=A5=E4=BD=9C=E6=A0=91=E6=B8=85=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ADR-2026-09-22-coding-teacher.md | 2 + .project-docs/10-decisions/decision-index.md | 2 + .../20-architecture/system-overview.md | 2 + .project-docs/30-worklog/current-state.md | 2 + ...0260929-integrate-shortcuts-ml-b75d3c29.md | 57 +++++++++++++++++++ .project-docs/40-domain/business-rules.md | 4 +- 6 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 .project-docs/30-worklog/tasks/20260929-integrate-shortcuts-ml-b75d3c29.md diff --git a/.project-docs/10-decisions/ADR-2026-09-22-coding-teacher.md b/.project-docs/10-decisions/ADR-2026-09-22-coding-teacher.md index c4209678..3cc24e31 100644 --- a/.project-docs/10-decisions/ADR-2026-09-22-coding-teacher.md +++ b/.project-docs/10-decisions/ADR-2026-09-22-coding-teacher.md @@ -10,6 +10,8 @@ ## Decision +- 2026-09-29 用户要求并授权合并可配置快捷提示。老师快捷提示由 Yuxi 的有序 `teacher_shortcuts` 配置拥有,每项分别保存展示文案 `label` 和实际提示词 `prompt`;最多 8 项,去除首尾空白后文案 1–40 字符、提示词 1–6000 字符。普通保存只改草稿,显式发布固定列表并以 `shortcuts` 下发;同一发布重试读取原快照。明确的空列表隐藏所有入口,历史快照缺字段或 null 保留客户端旧入口,未配置草稿提供可编辑的默认项。Makelore 按顺序渲染文案,点击通过普通提问发送实际提示词,聊天记录显示实际提问;目录刷新保留项目聊天和草稿。 + - 2026-09-29 用户确认一次显式发布和及时刷新并授权合并。Yuxi 管理员在可管理的原生智能体编辑页一次“保存并发布”即可更新 Makelore;普通保存只改草稿。Yuxi 固定不可变快照并携同一操作身份交给 WS,只有 WS 登记提交后才报成功,失败重试不发布后来编辑的草稿。WS 按来源绑定稳定老师 ID,首次复用唯一启用旧项,歧义需显式选择;保留默认、停用和历史,不自动合并旧身份,重新启用需要显式动作。 - 前台每五秒读取小型目录 revision,进入模块及回到前台补查,变化才重新读取完整配置;后台停止轮询。刷新独立于聊天、输入和正在回答,不触发模型。Main 每次接受新问题仍读取当前版本,运行中的问题固定原版本,同项目可见聊天保持连续。 五秒是检查间隔,实际可见时间还包含网络请求,不承诺离线或故障时延迟。 diff --git a/.project-docs/10-decisions/decision-index.md b/.project-docs/10-decisions/decision-index.md index 1f82244f..79959081 100644 --- a/.project-docs/10-decisions/decision-index.md +++ b/.project-docs/10-decisions/decision-index.md @@ -1,5 +1,7 @@ # Decision Index +- [老师可配置快捷提示](ADR-2026-09-22-coding-teacher.md):2026-09-29 已合并;Yuxi 有序展示文案/实际提示词,显式发布冻结,WS 版本化下发,客户端普通提问;空列表隐藏入口,历史缺字段保持旧入口。 + - 2026-09-29 修订[下发智能体咨询决定](ADR-2026-09-22-coding-teacher.md):Yuxi 一次发布保持稳定老师身份;客户端五秒前台 revision 检查、入场/焦点刷新独立于聊天状态,保留项目连续聊天和运行快照。 - 2026-09-26 已确认[老师 Agent 产品定位](../00-brief/project-positioning.md#老师-agent-的产品定位):某一领域杰出人物的能力转化而成的智能体,供平台学生使用;蒸馏属于实现方法,以真实案例验证领域能力;补充下方既有咨询技术决定。 diff --git a/.project-docs/20-architecture/system-overview.md b/.project-docs/20-architecture/system-overview.md index 37f12c27..b3ff295c 100644 --- a/.project-docs/20-architecture/system-overview.md +++ b/.project-docs/20-architecture/system-overview.md @@ -1,5 +1,7 @@ # System Overview +咨询输入区从当前老师发布定义的 `shortcuts` 按序渲染展示文案,并通过已有普通提问路径发送实际提示词;不附加旧 suggestions 意图。明确的空列表隐藏入口,缺字段/null 保留旧入口。多项长文案在限定高度内滚动,正在回答时不可点击;目录更新不替换项目聊天或草稿,同一未确认提问重试保留请求身份。详见[老师决定](../10-decisions/ADR-2026-09-22-coding-teacher.md)。 + 云端咨询的 Main 声明 `read_protocol=2`:目录按层分页(默认深度 4、最多 6,跳过生成缓存),文件与捕获会话返回连续文本及准确的下一页行/Unicode 字符列。文件增量解码,不受 UI 预览大小限制。每问题最多 12 批、累计成功结果 64 KiB、单页 8 KiB;剩余不足 512 字节时停止读取。Yuxi 消费最后一批结果后通过 `tool_choice: none` 请求最终答案,保留原身份、版本、时限与幂等续接;未声明新协议的旧客户端保持六批。工具活动以问题与逻辑 tool_call_id 合并跨 Run 重放,原始 interrupt 工具错误不单独判为失败。Main 区分读取额度、上下文失效与协议错误;失败问题不自动重试。须先更新 Yuxi API/worker,再更新客户端;生产供应商与安装版验收仍待完成。 智能体图标跟随发布定义:Yuxi 将原生 `icon` 固定到发布快照,Works Square 转为公开地址 `icon_url` 下发。Makelore 顶栏、邀请、面板标题、欢迎区和消息行统一读取该字段;缺失或加载失败时回退到既有 `avatar_id`。每个新问题取当前发布定义,已接受问题保持原版本;自定义图标使用正常图像渲染,内置像素头像保持像素样式。 diff --git a/.project-docs/30-worklog/current-state.md b/.project-docs/30-worklog/current-state.md index 6eecbd58..6f4d11ba 100644 --- a/.project-docs/30-worklog/current-state.md +++ b/.project-docs/30-worklog/current-state.md @@ -4,6 +4,8 @@ This file is the integrated default-branch snapshot. Feature tasks record progre ## Integrated Through +- 2026-09-29:按用户要求,将已独立审查的快捷提示源 `53d5b6b` 无冲突快进合入本地 `main`。Yuxi 配置多项展示文案和实际提示词,显式发布冻结后经 WS 下发,Makelore 按序显示并通过普通提问发送;空列表隐藏入口,历史缺字段保留旧入口。源验证 73 项 UI 单测、21 项浏览器布局场景、类型检查、lint 和生产构建通过;独立 Reviewer PASS。合并保留已审查产品与测试,新增修改仅为项目记忆;原有跨仓 7 份外来文档保持未提交。快捷提示不新增迁移;上线顺序为 WS API、Yuxi、Makelore,本次未推送、部署或打包。见[源记录](tasks/20260929-teacher-shortcuts-ml-8ce941d7.md)及[集成记录](tasks/20260929-integrate-shortcuts-ml-b75d3c29.md)。 + - 2026-09-29:用户确认“一次发布,自动更新 Makelore”并要求合并。源 `913ccad5774df9a8e1f8259394658a524f8255d4` 无冲突快进合入本地 `main`。Yuxi 管理员在可管理的原生智能体编辑页一次“保存并发布”即可更新 Makelore;普通保存只改草稿。Yuxi 固定不可变快照并携同一操作身份交给 WS,只有 WS 登记提交后才报成功,失败重试不发布后来编辑的草稿。WS 按来源绑定稳定老师 ID,首次复用唯一启用旧项,歧义需显式选择;保留默认、停用和历史,不自动合并旧身份,重新启用需要显式动作。 前台每五秒读取小型目录 revision,进入模块及回到前台补查,变化才重新读取完整配置;后台停止轮询。刷新独立于聊天、输入和正在回答,不触发模型。Main 每次接受新问题仍读取当前版本,运行中的问题固定原版本,同项目可见聊天保持连续。 独立 Reviewer 发现的历史字符串 ID `coding-teacher` 被 UUID 约束拒绝问题已修复并复核通过。WS 33 项(含真实 PostgreSQL 迁移/并发)、Yuxi 2260 后端单测/1 跳过及发布 HTTP/PG、worker/Redis、浏览器和前端构建,MakeLore 208 项及类型/lint/构建通过;具体分批证据见源记录。必须先部署 WS `20260929_0099`/API,再更新 Yuxi 和客户端;本次仅本地合并,未推送、部署或测量生产延迟。原有跨仓共 7 份外来文档保留未提交。此条更新旧运营必经和旧话题固定版本的发布说明,下方日期条目保留为历史。见[源记录](tasks/20260929-teacher-publish-ml-e6b32168.md)、[集成记录](tasks/20260929-integrate-teacher-ml-a19f72c4.md)。 - 2026-09-29:用户明确选择与其他官方插件相同的“客户端内置,默认安装”。已合入源 `97c3e45`,合并提交 `7a42de875bacb79fe6d660194b58f22c7d081830`。MakeLore 版本更新为 `2.0.2`,内置“对孩子说清楚”`1.0.1`,原 Skill 文件字节不变;登录/刷新时默认领取,无插件 ZIP 下载或单独签名。手动移除保持,项目启用后对操作 Agent 生效,无需另行分配 Skill。配套服务端 `f15cc46f` / 迁移 0098 创建新 bundled Release,保留旧 Artifact 和账号记录,并阻止不含 Skill 的旧客户端使用新版。113 项相关单测、类型检查、lint、构建和 1 项 Electron 场景通过;源产品与主目录一致,3 份外来文档原样保留。未推送、打包、发布或更新安装版,需两端发布。本条取代下方该插件从服务端下载并验签的历史指导;其他 Artifact 插件验签不变。见[源任务](tasks/20260928-default-child-replies-0108dd01.md)及[集成记录](tasks/20260928-merge-default-child-b4d62e81.md#bundled-delivery-resume)。 diff --git a/.project-docs/30-worklog/tasks/20260929-integrate-shortcuts-ml-b75d3c29.md b/.project-docs/30-worklog/tasks/20260929-integrate-shortcuts-ml-b75d3c29.md new file mode 100644 index 00000000..a49206cd --- /dev/null +++ b/.project-docs/30-worklog/tasks/20260929-integrate-shortcuts-ml-b75d3c29.md @@ -0,0 +1,57 @@ +# Task: Integrate published teacher shortcuts (ml) + +## Identity + +- Task ID: 20260929-integrate-shortcuts-ml-b75d3c29 +- Mode: Integration +- Branch: main +- Worktree: D:\Datas\OthersProjects\makelore +- Base commit: 4103754b80b57b67b787ab4a6bc24bbf8591be4d +- Owner: codex +- Status: Ready for Integration + +## Scope + +- Fast-forward reviewed teacher shortcuts source 53d5b6b from task 20260929-teacher-shortcuts-ml-8ce941d7 into local main; promote the accepted shortcut contract into canonical memory. +- Product source, tests, public mechanism docs and imported source task records remain byte-identical to reviewed source. + +## Intent And Constraints + +- User requested merge into main. Prior explicit permission to hand off these same three primary directories and preserve the same seven foreign documents applies; official release/start with adoption and exclusive integration ownership succeeded. +- Concurrent and Planning Gates passed. Read own task, entry, positioning, current-state, teacher decisions, architecture/domain, relevant evidence/reflection/commitments and source/review task scopes; reuse unchanged peer scope assessments from feature work. Historical placeholders/malformed peer records remain unknown and read-only; no concrete dependency or semantic conflict identified. +- Yuxi positioning/success templates contain placeholders; actual accepted teacher mechanisms and AGENTS define this task's boundary. This integration does not change positioning or fill unrelated templates. +- Preserve these adopted foreign documents unchanged and exclude them from commits: + - .project-docs/30-worklog/tasks/20260901-package-122-c5e8.md + - .project-docs/30-worklog/tasks/20260901-package-123-d7f3.md + - .project-docs/30-worklog/tasks/20260902-client-hang-diagnosis-a47c9e2b.md +- Merge authorization covers local integration; the user subsequently explicitly approved removing the three listed source worktrees. No push, deployment or production mutation. Existing fresh independent reviewer PASS covers the exact unchanged source. + +## Plan + +1. Fast-forward source after confirming main is its ancestor. +2. Integrate ordered label/prompt publication facts into relevant canonical documents. +3. Verify source equivalence, main ancestry, whitespace and task document boundaries; stop for any new product difference or changed adopted document. +4. Commit only canonical updates and this integration record, complete official task, and offer optional source-worktree cleanup. + +## Outcome + +- Successfully fast-forwarded 53d5b6b into local main; accepted shortcut contract promoted to canonical memory. Product files, tests and imported source task records remain identical to the independently reviewed source. +- User explicitly approved cleanup of the three named feature paths. Official retire failed with Directory not empty. Git removed worktree registration and .git before returning failure, but D:/Datas/OthersProjects/.codex-worktrees/makelore/20260929-teacher-shortcuts-ml-8ce941d7 retains partial files and its task ownership reservation remains. The path is no longer an eligible clean linked worktree. Do not manually delete/relabel registry state or bypass retire; cleanup is blocked pending supported recovery. Source branch codex/20260929-teacher-shortcuts-ml-8ce941d7-teacher-shortcuts and commit 53d5b6b are preserved and integrated. + +## Verification + +- Source commits and main bases verified; all three main branches are ancestors of their source commits. +- Source evidence: WS 36 SQLite/TestClient and 3 real PostgreSQL tests; Yuxi 2270 unit / 1 skipped, 3 real HTTP/PostgreSQL integration, 319 web tests, actual Vue editor browser proof, lint/build/docs/engineering checks; Makelore 73 UI tests, 21 browser cases, type/lint/production compile. Fresh independent reviewer PASS across all three. +- Integration verification passed: git diff --exit-code against source excluding .project-docs, unchanged imported source task, source ancestry in actual main, git diff --check and official check_doc_drift. The drift gate confirms all adopted foreign document states remain unchanged. Source tests/builds are reused because the product tree is identical; only canonical/task documentation was edited here. +- Confirmed all three source branch references still resolve to their source commits after cleanup attempts. Representative linked runtime dependencies remain available; no claim of a fresh full dependency audit. + +## Follow-ups + +- Release WS API first, then Yuxi and Makelore. No new migration from shortcuts; prerequisite direct-publication migration remains required. +- Cleanup result: blocked by partial Windows Git removal; residual path and stale task reservation preserved for supported recovery. User consent already covers this exact path; do not ask again merely because this same cleanup resumes. + +## Promotion Candidates + +- Accepted: Yuxi owns ordered teacher_shortcuts entries with label/prompt, explicit publication freezes values, WS persists/delivers shortcuts in version JSON, Makelore renders labels and sends actual prompts. +- Explicit [] hides shortcuts; missing historical field preserves legacy entry. Limits 8 / 40 / 6000, trimmed text. Existing stable chat/current version rules hold. +- Promoted to canonical decision index, teacher ADR where present, architecture, domain rules and current-state. Additive to accepted explicit publication, no contradictory source or new human product decision. diff --git a/.project-docs/40-domain/business-rules.md b/.project-docs/40-domain/business-rules.md index 15638740..1890ee3e 100644 --- a/.project-docs/40-domain/business-rules.md +++ b/.project-docs/40-domain/business-rules.md @@ -2,6 +2,8 @@ ## Project conversations and distributed agents +- 老师快捷提示由 Yuxi 的有序 `teacher_shortcuts` 配置拥有,每项分别保存展示文案 `label` 和实际提示词 `prompt`;最多 8 项,去除首尾空白后文案 1–40 字符、提示词 1–6000 字符。普通保存只改草稿,显式发布固定列表并以 `shortcuts` 下发;同一发布重试读取原快照。明确的空列表隐藏所有入口,历史快照缺字段或 null 保留客户端旧入口,未配置草稿提供可编辑的默认项。Makelore 按顺序渲染文案,点击通过普通提问发送实际提示词,聊天记录显示实际提问;目录刷新保留项目聊天和草稿。 + - 前台每五秒读取小型目录 revision,进入模块及回到前台补查,变化才重新读取完整配置;后台停止轮询。刷新独立于聊天、输入和正在回答,不触发模型。Main 每次接受新问题仍读取当前版本,运行中的问题固定原版本,同项目可见聊天保持连续。 - 每个新项目创建内部默认 Agent,普通界面无 Agent 创建步骤或分组列。defaultAgentId 选取已存默认、置顶或首个可用 Agent;历史 Agent 与会话绑定不重写,不重新启用停用/归档 Agent。 @@ -15,7 +17,7 @@ - 新咨询由 Main 统一声明 `{reply, quickReplies}`,正文和 0–3 条可选快捷回复按所选智能体云端配置生成,客户端只提供入口事实、上下文与输出格式。超额新卡片保留正文及原文诊断,不截断或展示;历史卡片数量不改写。旧组件状态和快照作为不透明档案保留,不恢复交互、主动导入或进入模型上下文,旧组件修改路由已移除。 - 完整正文可从保留原文中在本地恢复;无法确认完整时显示缺失提示,由用户明确点击重新回答,保持原问题、引用和项目/Pi 来源,保留现有草稿,采用当前发布版本。被动恢复不调用模型或改写已完成原始轮文件;不完整回答和未解析原文不进入后续模型上下文。 -- 进入咨询消费静态欢迎语并按账号/项目保存,真实未读消息不随打开自动已读;空输入框的“继续看看👀”仅在点击时调用模型。 +- 进入咨询消费静态欢迎语并按账号/项目保存,真实未读消息不随打开自动已读;空输入框显示已发布的快捷提示,只有点击才调用模型。历史缺字段的版本保留“继续看看👀”入口。 依据:[老师决定](../10-decisions/ADR-2026-09-22-coding-teacher.md)及 [ADR-008](../10-decisions/adr-008-interactive-ai-app-scaffold.md)。