docs: 记录快捷提示主分支集成与工作树清理
Some checks failed
Electron E2E / Electron E2E (macos-latest) (push) Has been cancelled
Electron E2E / Electron E2E (ubuntu-latest) (push) Has been cancelled
Electron E2E / Electron E2E (windows-latest) (push) Has been cancelled

This commit is contained in:
2026-09-29 17:23:55 +08:00
parent 53d5b6ba5b
commit f443f3bc66
6 changed files with 68 additions and 1 deletions

View File

@@ -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 每次接受新问题仍读取当前版本,运行中的问题固定原版本,同项目可见聊天保持连续。 五秒是检查间隔,实际可见时间还包含网络请求,不承诺离线或故障时延迟。

View File

@@ -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-的产品定位):某一领域杰出人物的能力转化而成的智能体,供平台学生使用;蒸馏属于实现方法,以真实案例验证领域能力;补充下方既有咨询技术决定。

View File

@@ -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`。每个新问题取当前发布定义,已接受问题保持原版本;自定义图标使用正常图像渲染,内置像素头像保持像素样式。

View File

@@ -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)。

View File

@@ -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.

View File

@@ -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)。