Merge Yuxi teacher support with classroom discussions
This commit is contained in:
@@ -1,20 +1,23 @@
|
||||
# ADR: 官方编程老师与项目会话导航
|
||||
|
||||
- Status: Accepted / implemented
|
||||
- Status: Accepted / implemented, amended 2026-09-23
|
||||
- Date: 2026-09-22
|
||||
- Approval: 用户确认详细设计、实施及合入主分支。
|
||||
- Approval: 用户确认项目默认 Agent、项目下会话、多老师列表与移除试聊;随后确认使用 Yuxi 原生智能体、客户端提供三个只读工具、沿用学生账号付费,并要求实施及合并。
|
||||
|
||||
## Decision
|
||||
|
||||
- 新项目直接创建一个内部默认编程 Agent 并保存 defaultAgentId;移除创建 Agent 的产品流程。会话直接列在项目下,项目打开不自动创建会话,首次发送或显式新建才创建。旧 Agent ID、配置和 Pi 会话绑定保留;归档、改名、未读与运行状态延续原合同。
|
||||
- Works Square 运营端配置一个官方编程老师,包括提示词、顺序启用的纯文本 Skills、模型及原生思考选项、展示信息和上下文/输出预算。草稿、不可变发布版本、启停和操作记录分离;版本写入使用 expected_revision。初始化停用,发布与启用必须显式操作。
|
||||
- MakeLore Main 使用当前登录账号的受管模型网关运行独立答疑,不启动 Pi、不提供工具、不执行 Skill 脚本。老师只读取当前来源会话活动分支中已完成的用户/助手文本、用户显式引用和本话题历史;不自动读取其他会话、文件、thinking 或工具参数。
|
||||
- 本机老师话题按账号、项目和来源会话隔离并固定发布版本;每次新问题检查在线启停,云端不保存学生老师聊天。先持久化请求身份再执行;重试读取原请求,取消和重启中断可见,来源会话删除时清理相关话题。
|
||||
- “问老师”位于编程右侧面板;带回建议只追加主输入草稿,不自动提交。运营桌面试聊要求 admin 和精确已保存 draft_revision,使用示例上下文。
|
||||
- 个人云智能体、Code/Pi 执行、现有网关付款规则和项目 Plugin 生命周期保持独立。本次不增加多老师管理、跨设备老师历史或长期记忆框架。
|
||||
- 新项目创建内部默认编程 Agent 并保存 defaultAgentId,会话直接列在项目下。打开项目不自动创建空会话,首次发送或显式新建才创建;历史 Agent ID、配置和 Pi 会话绑定保留。
|
||||
- Yuxi 拥有老师提示词、模型和所选 Skills、知识库、MCP、子智能体。Works Square 运营菜单首先展示下发列表,添加时从 Yuxi 选择并发布当前配置,支持多位、默认选择与启停,不维护第二份提示词编辑器或试聊界面。
|
||||
- 运营显式同步 Yuxi 配置产生不可变下发版本。新话题可选择已下发老师,默认使用运营指定老师;已有话题固定原版本。配置与资源绑定固定,Skill 按问题建立运行快照,知识内容和远端工具仍由各自服务拥有;资源撤销可能阻止执行,版本不表示复制全部外部资源。
|
||||
- Yuxi 原生 Request/Run、PostgreSQL checkpoint 和 Redis 事件拥有云执行。Main 冻结本次账号、项目、来源 Pi 已完成分支的公开消息及老师话题,通过三个只读工具提供目录、UTF-8 文件行段和会话原文。文件按读取时内容提供,会话按本轮快照读取,不上传完整工程、Pi 原始日志或思考。
|
||||
- 本地工具只交给老师主线程:云端持久中断完整批次,Main 主动回传配对结果,关联 Run 续接同一问题。最多六批读取,保留原付款人、版本、上下文和截止时间;读取限当前项目,允许 .makelore/project.json,排除其余内部记录与 Git 数据,不提供本地写入或命令。
|
||||
- Works Square 验证学生编程资格,使用专用短期老师凭据;聊天模型费用记入学生 ai_programming / coding_teacher 账本。老师资源仍归 Yuxi 创建者,个人 Agents 模块继续创建者付费,老师问题不占创建者个人智能体金额上限。
|
||||
- 云端保存老师消息、执行和收到的片段;Main 按账号、项目和来源会话保存话题索引与展示历史。旧本地老师话题保留原路径。停用阻止后续调用,历史仍可查看;断线按游标和持久状态恢复,重启后中断旧问题,下次提问先停止旧问题再绑定新上下文。
|
||||
- “问老师”仍是右侧独立答疑,用户发起,不主动巡查项目。正文、保存历史和带回草稿仅接收云端主线程文本;子线程事件仍推进续传游标。带回回答只追加草稿,不自动发送。Code/Pi 执行和项目 Plugin 生命周期保持各自边界。
|
||||
|
||||
## Evidence And Release Boundary
|
||||
|
||||
- Server source: 93ece7c6aa5c61f1f20b5fe3fe98bb86bb57b6f7
|
||||
- Client source: 9242a40d874984159d71494ac6510f3a248e89c0
|
||||
- 合并不代表部署。目标 PostgreSQL 需升级至 20260922_0095;运营需配置、试聊、发布并启用;真实模型与点数计费仍需发布验收。
|
||||
- 配套源:Works Square 79b1da574364d6f412e4395c179b5d27cc7bbd7d;Yuxi c2792dc4938a68db8ce1e34056e84af4b06c739b;MakeLore d20c818fe79bc5833cef15d99974b699dde71c6d。
|
||||
- 源验证包括 WS 66 passed / 1 skipped、Operations 125 项及构建/浏览器验证;Yuxi 2243 passed / 1 skipped、真实 HTTP/PostgreSQL/Redis/worker/SDK 续接验证;MakeLore 51 项相关测试、typecheck、lint、构建及已有 Electron 流程验证。模型使用明确替身,真实供应商扣款与完整生产拓扑未验收。
|
||||
- 合并不代表部署;需配套发布三个端及 Yuxi worker。本次无新增数据库迁移,WS 唯一 head 仍为 20260922_0096。老师模型必须在学生网关开放,既有云接入配置与被选资源依赖须就绪。
|
||||
- 本修订取代旧 Main 独立模型循环、云端不存老师消息、纯文本 Skill、客户端不能选老师等边界。历史实施与验证保留在源任务记录;当前机制见 [产品说明](../../README.md)。
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Decision Index
|
||||
|
||||
- [官方编程老师与项目会话导航](ADR-2026-09-22-coding-teacher.md):2026-09-22 accepted / implemented;项目默认 Agent、项目下会话、运营版本化教师定义和 Main 独立无工具答疑。
|
||||
- [官方编程老师与项目会话导航](ADR-2026-09-22-coding-teacher.md):2026-09-23 amended / implemented;运营下发多位 Yuxi 老师并指定默认,Main 提供三个项目/会话只读工具、云端续接及主线程正文路由,学生账号付费。
|
||||
|
||||
## Active Decisions
|
||||
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
|
||||
目录式创建 → Main 保存项目与 defaultAgentId → 项目直接列出会话 → 首次发送或显式新建创建 Conversation → 原 Pi 执行链。历史会话继续使用原 Agent 绑定;切换项目丢弃旧读取。
|
||||
|
||||
问老师/显式引用 → Main 读取 WS 已发布定义与当前来源分支的已完成文本 → 固定话题版本并持久化 requestId → 当前账号模型网关 → Host SSE/本机话题存储 → 右侧面板。取消、重启中断和结果恢复以持久请求为准;关闭面板不取消模型。带回回答只追加主草稿,运营精确草稿版本试聊只用示例上下文。见[老师决定](../10-decisions/ADR-2026-09-22-coding-teacher.md)。
|
||||
问老师/选择已下发老师 → Main 获取 WS 专用老师凭据,固定话题版本并保存问题身份与账号/项目/Pi 公开消息快照 → Yuxi 原生 Request/Run。持久读取中断 → Main 校验绑定与取消状态 → 列目录/读取文件/读取会话原文 → 主动 POST 完整配对结果 → checkpoint 关联 Run 续接。最多六批读取,保留原问题时限与学生付款人;文件使用读取时内容,会话使用本轮快照。云端保存消息和收到的片段,完整工程与 Pi 原始日志保留本机。
|
||||
|
||||
云端事件 → Main 先推进游标,再仅转发云端主线程文本 → Host SSE/本机历史 → 右侧面板。子智能体文本不混入正文或带回草稿;断线按游标与持久状态恢复。关闭面板不取消已接受问题,停止/退出请求取消原问题;重启后下次提问先停止旧问题。带回回答只追加草稿,不自动发送,旧本地老师话题保留原执行路径。见[老师决定](../10-decisions/ADR-2026-09-22-coding-teacher.md)。
|
||||
|
||||
## Permanent wallet and recharge
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
| Path | Responsibility | Owner Notes |
|
||||
|---|---|---|
|
||||
| `electron/coding-teacher/**`, `electron/api/routes/coding-teacher.ts`, `shared/coding-teacher.ts`, and `src/pages/Chat/Teacher*.tsx` | Main-owned 云配置、来源上下文、本机话题、模型调用、Host API/SSE、独立右侧答疑与运营试聊 | 无 Pi worker 或工具;固定发布版本,账号/项目/来源会话隔离。见 [teacher ADR](../10-decisions/ADR-2026-09-22-coding-teacher.md)。 |
|
||||
| `electron/coding-teacher/**`, `electron/api/routes/coding-teacher.ts`, `shared/coding-teacher.ts`, and `src/pages/Chat/Teacher*.tsx` | Main-owned 老师选择、云凭据、项目/Pi 快照、三个只读工具、Yuxi 中断续接与本机话题 | `cloud-runner.ts` 跟随关联 Run 并按云端主线程路由正文;`read-tools.ts` 复用项目文件边界。账号/项目/来源会话隔离,无本机写入/命令,旧话题保留原路径。见 [teacher ADR](../10-decisions/ADR-2026-09-22-coding-teacher.md)。 |
|
||||
| `electron/coding-projects/project-config.ts`, `src/pages/Chat/CodingProjectConversations.tsx`, and `src/components/layout/Sidebar.tsx` | 内部默认 Agent 与项目下会话导航 | 旧绑定保留;首次发送或显式新建创建会话,打开项目不创建。 |
|
||||
| `electron/coding-plugins/manifest.ts`, `release-descriptor.ts`, `signature-verifier.ts`, and `trusted-keys.ts` | Closed Plugin package/descriptor parsing, fixed code-owned resource roots, compatibility checks, canonical archive validation, and Ed25519 trust | Data Service plus exact Game Resource, Game Audio and Project Scaffold roots are code-owned. Other schema-2 packages still pass descriptor/signature/archive validation; downloadable P0 Skill assets remain text/image-only. Hosted Web Search is not a current Plugin root. |
|
||||
| `electron/coding-plugins/account-plugin-cache.ts`, `marketplace-client.ts`, and `package-store.ts` | Main-owned Account Library cache, authenticated server client, and atomic immutable device installation store | Account acquisition and device installation are separate. Package bytes switch atomically only after descriptor, signature, archive, client-range, and provenance checks; failed updates preserve the prior current release. |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# System Overview
|
||||
|
||||
官方编程老师由 Works Square 运营维护一个版本化定义,MakeLore Main 按账号/项目/来源会话运行独立无工具答疑并持久化本机话题;Code 项目自动建立内部默认 Agent、会话直接列于项目下。该能力与个人云智能体及 Pi 执行独立。详见[已接受决定](../10-decisions/ADR-2026-09-22-coding-teacher.md)。
|
||||
官方编程老师由 Yuxi 原生智能体执行,Works Square 运营选择下发、同步版本并指定默认老师。Main 按账号/项目/来源会话管理本机话题,绑定当前项目和已完成 Pi 公开消息,执行云端请求的三个只读工具后主动回传结果;Yuxi 保存云端消息和收到的片段。学生支付老师模型费用,个人 Agents 保持创建者付费。正文只接收云端主线程文本,子线程事件仍推进续传游标。Code 项目默认 Agent、项目下会话和 Pi 执行保持原边界。详见[已接受决定](../10-decisions/ADR-2026-09-22-coding-teacher.md)。
|
||||
|
||||
## Current Architecture
|
||||
|
||||
|
||||
@@ -4,6 +4,22 @@ This file is the integrated default-branch snapshot. Feature tasks record progre
|
||||
|
||||
## Integrated Through
|
||||
|
||||
- 2026-09-23:任务 `20260923-merge-yuxi-teachers-ml-9d623c5f` 经用户确认交接主目录,将 `d20c818fe79bc5833cef15d99974b699dde71c6d` 从 `1f2ad3fb3a71b8b35fabb5b319cd3b54b4c2ebbe` 无冲突快进合入本地 `main`。配套三端已统一为 Yuxi 原生老师、WS 运营选择下发/同步/默认/启停、Main 三个项目/Pi 只读工具及学生账号付费;个人 Agents 保持创建者付费。MakeLore `d20c818` 已关闭 Yuxi 源记录中的子线程正文路由待办。
|
||||
源验证:51 项相关测试、typecheck、lint 和生产构建通过;原 Electron 老师选择/带回草稿流程通过。子线程正文混入先复现失败再修复,回归覆盖两种事件格式及断线游标。 产品文件与源一致,未重写实现;完整生产拓扑及真实供应商计费仍待发布验收。原有 3 份外来文档保持未提交原样,未推送或部署,无本次新增迁移。
|
||||
本条取代早期 Main 独立运行/不保存云端老师消息/运营重复编辑配置的现状说明,旧条目保留为历史。见[本次集成](tasks/20260923-merge-yuxi-teachers-ml-9d623c5f.md)和[源任务](tasks/20260923-yuxi-teachers-client-53ba33e2.md)。
|
||||
|
||||
- 2026-09-22:原老师集成任务后续将修复源 `44e754a43ec6d286fee6b6492da0d1f9347770e6` 从 `7f5131e` 无冲突快进合入本地 `main`。
|
||||
老师能按需只读当前项目目录、UTF-8 代码/配置和本轮捕获的主会话/老师话题原文;长来源及上一轮老师回答保留最近问答节选,避免上下文被全部丢弃或连续追问失败。
|
||||
Main 原生工具结果续接最多六批后要求最终回答,检查账号与取消状态,计算完整输入预算并累计模型用量;不启动 Pi、不写文件或执行命令。
|
||||
原 no-tools/no-files 决策按用户明确要求更新;固定发布版本和既有话题保持,无云端协议或数据库修改。
|
||||
产品树与已测源完全一致,沿用源 56 项相关测试、1 项 Electron 流程、Renderer typecheck、scoped lint 和构建证据;Main 全量严格类型检查仍有既有 66 条诊断。
|
||||
三份外部任务文档原样保留;未推送、打包、安装或真实模型计费验收。见[集成记录](tasks/20260922-merge-coding-teacher-client-b80c376f.md)、[源记录](tasks/20260922-teacher-context-c40f7b51.md)与[老师决定](../10-decisions/ADR-2026-09-22-coding-teacher.md)。
|
||||
|
||||
- 2026-09-22:原老师集成任务后续将修复源 `28e0decbc34c10cd69c9261d554aed448bb8e145` 从 `e5d271b` 快进合入本地 `main`。
|
||||
修复发布定义中默认思考强度 `effort=null` 被当作具体强度而误报不可用的问题,旧话题可继续使用其固定版本;显式强度与真实不支持选项的校验保持。
|
||||
源复现测试先失败,修复后 25 项相关测试、类型检查、scoped lint 与 Vite 全目标构建通过;合并产品树与已测源完全一致。
|
||||
用户确认发布关闭思考后新建话题可用;当前修复尚未推送、打包或安装,不代表现有安装版已更新。见[集成记录](tasks/20260922-merge-coding-teacher-client-b80c376f.md)和[修复源记录](tasks/20260922-teacher-unavailable-6d8fa721.md)。
|
||||
|
||||
- 2026-09-22:集成任务 `20260922-merge-coding-teacher-client-b80c376f` 以 `00ad84c` 合入教师源 `9242a40d874984159d71494ac6510f3a248e89c0`,保留当前永久点数钱包。
|
||||
项目自动创建默认 Agent,会话直接位于项目下;右侧老师按云端发布配置独立答疑,回答可追加主草稿。
|
||||
唯一 Sidebar 引用冲突保留项目切换引用及主线钱包行为;合并代码 112 项相关单测、Renderer typecheck、Vite 全目标构建与 3 项 Electron 流程通过。
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
## Scope
|
||||
|
||||
- Continue this same teacher integration for approved context/file repair source `44e754a43ec6d286fee6b6492da0d1f9347770e6`, with bounded canonical capability and evidence reconciliation.
|
||||
- Integrate approved coding teacher source 9242a40d874984159d71494ac6510f3a248e89c0 into the local primary branch and reconcile canonical memory; preserve unrelated dirty documents.
|
||||
|
||||
## Intent And Constraints
|
||||
@@ -28,6 +29,9 @@
|
||||
|
||||
## Outcome
|
||||
|
||||
- Context/file cleanup follow-up: user explicitly approved removing source worktree `20260922-teacher-context-c40f7b51`. Rechecked resolved target, managed/ready ownership, committed Ready for Integration record, clean source HEAD `44e754a` and its inclusion in main. Official `retire` (with process-local `core.longpaths=true`) failed with Directory not empty after removing the Git marker. A bounded native recursive residual deletion was rejected before execution by automatic approval with `blocked by policy` and no more specific reason. No alternative deletion attempt followed. Preserved residual contents in same-parent `D:/Datas/OthersProjects/.codex-worktrees/makelore/20260922-teacher-context-c40f7b51-recovery-backup`; official `release-missing --force` then cleared the exact failed-retirement registration within the approved cleanup scope. Original path is absent, backup exists, and the source branch still points to `44e754a`. Cleanup is partial: worktree registration released, residual files retained.
|
||||
- Context/file follow-up: fast-forwarded local main from `7f5131e` to tested source `44e754a43ec6d286fee6b6492da0d1f9347770e6` without conflicts. Current-project read-only tools, captured conversation originals, recent Q&A excerpts, continuous follow-ups and native model continuations are now integrated. Source task record imported unchanged. Canonical teacher capability, data flow, domain, decision/index, evidence and provenance updated under existing user authorization; client wording now describes the Operations-selected current teacher rather than asserting singleton management.
|
||||
- Follow-up: fast-forwarded main from e5d271b to 28e0decbc34c10cd69c9261d554aed448bb8e145, including prior source diagnosis commit 2c20314 and the unchanged source task record. Teacher wire DTO now represents nullable effort; model preparation canonicalizes null/missing default strength before validation. Topic definitions remain pinned, no data or Operations migration. User confirmed the new-topic workaround works.
|
||||
- Merged source 9242a40d874984159d71494ac6510f3a248e89c0 into main in 00ad84c, preserving main permanent wallet source a1cce42. Only conflict was Sidebar refs: retain projectEntryIntentRef, do not reintroduce removed tokenPointRequestIdRef/resetCardRequestIdRef. README auto-merge retains both features.
|
||||
- Promoted accepted project/default-Agent/teacher contracts; amended ADR-008 old first-Agent entry using the already-approved product decision. Source task record imported unchanged.
|
||||
- User authorized old wallet recovery: renamed the invalid residual directory to D:/Datas/OthersProjects/.codex-worktrees/makelore/20260922-permanent-points-client-7f4c9a2e-recovery-backup, preserving all contents and its node_modules junction. Official release-missing cleared the exact stale reservation; integration claim then succeeded.
|
||||
@@ -36,6 +40,8 @@
|
||||
|
||||
## Verification
|
||||
|
||||
- Context/file follow-up: official same-task start/status passed on primary main, preserving the original task base, lock and three adopted foreign documents. Read 105 peer records (17 placeholder scopes remain unknown/read-only) and source outcome/promotions. Source HEAD is clean and committed Ready for Integration. Source is a descendant of main; after fast-forward `git diff 44e754a -- README.md electron shared src tests package.json pnpm-lock.yaml` is empty. Reuse exact-source 56 unit tests, 1 Electron scenario, Renderer typecheck, scoped ESLint and full Vite build from the immediately preceding repair turn; no product changes or conflict require duplicate runs. Main's existing 66 diagnostics remain disclosed. Task-aware drift validates canonical edits and unchanged foreign/source documents.
|
||||
- Follow-up: latest source ancestry and clean/committed Ready for Integration status confirmed. After fast-forward, git diff 28e0dec -- electron shared src tests returned empty. Reuse exact-source 25 teacher/model regression tests, Renderer typecheck, scoped ESLint and Vite full build from the preceding turn; no new product code or merge conflict justified repeating them. Review the actual merged code and task-aware documentation drift to catch import or ownership mistakes.
|
||||
- Primary pnpm typecheck initially failed because tsc was absent from the existing primary dependency directory; no product diagnostic ran there.
|
||||
- Copied the resolved merged Git index to C:/Users/7brot/AppData/Local/Temp/teacher-merge-client-20260922-b80c376f, linked source-verified dependencies, then completed all checks before source cleanup: 112 relevant unit tests (teacher service/UI, workspace/project entry/schema/conversation store, wallet/sidebar/billing client/routes), pnpm run typecheck and pnpm run build:vite passed.
|
||||
- Three real Electron scenarios passed on that merged build: teacher answer appends the main draft without submission; first PI Conversation editable under 500 ms and submits before Snapshot; wallet reopens unpaid frozen order and refreshes only after confirmed credit. Controlled local responses, no real payment/model charge.
|
||||
@@ -46,6 +52,9 @@
|
||||
|
||||
## Follow-ups
|
||||
|
||||
- Context/file repair is merged locally only; push, rebuilt installer and real teacher/provider billing acceptance are not included. Source cleanup was approved and completed only for the Git worktree/ownership registration. Residual files remain in `D:/Datas/OthersProjects/.codex-worktrees/makelore/20260922-teacher-context-c40f7b51-recovery-backup` because automatic approval blocked their deletion. Preserve the backup; do not claim its bytes were removed or retry deletion by another mechanism. Branch `codex/20260922-teacher-context-c40f7b51-teacher-context` and all commits remain. No earlier backup cleanup was performed.
|
||||
- Reasoning-fix source checkout 20260922-teacher-unavailable-6d8fa721 at D:/Datas/OthersProjects/.codex-worktrees/makelore/20260922-teacher-unavailable-6d8fa721, branch codex/20260922-teacher-unavailable-6d8fa721-teacher-unavailable: user explicitly approved cleanup. Official retire failed with Directory not empty even with process-local Git core.longpaths=true; the Git marker and worktree registration were gone, while 2,996 dependency Junctions and file residuals remained. A bounded native residual-delete attempt was rejected before execution by automatic approval (blocked by policy, no more detail). No deletion retry or policy workaround was attempted. Preserved all residual bytes in the same-parent 20260922-teacher-unavailable-6d8fa721-recovery-backup directory, then official release-missing succeeded. Source branch still resolves to 28e0dec. Cleanup is partial: registry released, backup retained. No cleanup requested for the separate server read-only contract task or old backups.
|
||||
- The running installed app still needs a release containing 28e0dec; this follow-up performs local main integration only, without push/package/install or paid model verification.
|
||||
- No remote push, installer or deployment. Pair with server 93ece7c6; migrate 0095 then configure/test/publish/enable teacher and verify real gateway billing.
|
||||
- Keep both client recovery-backup directories. The teacher checkout cleanup is partial: its registered worktree is released, residual backup retained. Removing backup bytes is not claimed as completed.
|
||||
- Existing primary dependency directory is incomplete; validation used isolated dependencies. Reinstalling the primary development environment is separate work.
|
||||
@@ -53,3 +62,20 @@
|
||||
## Promotion Candidates
|
||||
|
||||
- Applied the user-approved source candidates in integration mode; no unresolved teacher product decision remains.
|
||||
|
||||
## Teacher reasoning fix integration follow-up
|
||||
|
||||
- User confirms new teacher topic works and explicitly requests fixing the old-topic error; continue this same teacher integration task for source 28e0dec, without changing topic-version policy.
|
||||
- Project Context Loaded: official same-task integration resume/status Passed on main at e5d271b; identity, original base 0cf67be, absolute primary worktree and exclusive integration lock match. Read own/source records and entry; reuse unchanged teacher ADR and required memory, architecture/domain/evidence/reflection/commitment context loaded during this conversation. Read 123 peer task records, 17 unknown placeholder scopes; no concrete semantic conflict. Source task is clean and Ready for Integration.
|
||||
- Planning Gate Passed. Main is the exact source base, so integrate with fast-forward; source product verification remains applicable. Preserve the three adopted foreign docs unchanged and exclude them from commits. No subagents, remote push, deployment, installed-file changes or paid calls.
|
||||
- Plan: import the exact tested fix, record integrated provenance and default-effort semantics, check task-document boundaries, commit/complete and offer source checkout cleanup separately.
|
||||
|
||||
- Follow-up Task Documentation Gate: inspected source-to-main product equality, provenance and clean imported source record; task-aware drift passed with the original three foreign documents unchanged. Only current-state and this integration record are committed for the follow-up.
|
||||
|
||||
## Teacher context and project-file integration follow-up
|
||||
|
||||
- User explicitly requests merging the completed `44e754a` repair. This continues the same cloud coding teacher integration, not an unrelated task inheriting main ownership.
|
||||
- Project Context Loaded: official same-task integration resume/status Passed, branch main at `7f5131e`, primary worktree and original base `0cf67be` match; exclusive integration lock retained. Read entry/memory-index/own record, positioning, current-state, decision-index/teacher ADR, architecture/domain, evidence/reflection/commitment/stale indexes and source record. Read 105 peer scopes; 17 existing placeholder scopes are unknown, with no concrete conflict affecting this exact source.
|
||||
- Project goal remains Electron Main ownership of runtime/auth/storage; active scope is current-project/current-conversation read-only teacher access. User's explicit reading request supersedes no-tools/no-files; user already selected Operations-owned current teacher behavior. No additional approval is needed for these decisions. Positioning template gaps are supplied by README/AGENTS and verified source. Real provider acceptance remains unverified.
|
||||
- Planning Gate and Integration Gate Passed. Applied fast-forward, canonical capability/evidence reconciliation and exact product-tree check; no source product changes, subagents, push, installation, deployment or paid requests. Source and foreign task records remain unchanged. Task Documentation Gate checked the actual committed/working range from the original task base and preserved ownership boundaries.
|
||||
- Cleanup gates: official same-task resume/status on main `9b5324f` Passed. Re-read own/source records and all 105 peer scopes; peer scope text is unchanged from the preceding merge gate, including 17 existing placeholders. Reused unchanged canonical memory and loaded post-merge cleanup contract. Resolved exact source/recovery paths before filesystem operations. Planning Gate Passed for user-approved cleanup only; no product edits or repeated product tests were necessary. Recorded the actual failed deletion, safe retention and official registration recovery in this integration-owned record; source record remains unchanged on main.
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
# Task: Restore teacher conversation context and project file reading
|
||||
|
||||
## Identity
|
||||
|
||||
- Task ID: 20260922-teacher-context-c40f7b51
|
||||
- Mode: Feature
|
||||
- Branch: codex/20260922-teacher-context-c40f7b51-teacher-context
|
||||
- Worktree: D:\Datas\OthersProjects\.codex-worktrees\makelore\20260922-teacher-context-c40f7b51
|
||||
- Base commit: 7f5131e92fb06f3357ca45f18aaead0e2eaa87e0
|
||||
- Owner: codex
|
||||
- Status: Ready for Integration
|
||||
|
||||
## Scope
|
||||
|
||||
- 复现并修复云端老师无法获得当前来源会话上下文的问题,并支持按需只读当前项目文件。
|
||||
- 以实际 Main service/model 路径建立失败测试;根据证据修复上下文准备、文件读取及必要 UI 提示,完成相关测试、类型检查和构建。
|
||||
|
||||
## Intent And Constraints
|
||||
|
||||
- 使用 maintain-project-docs 与 diagnosing-bugs;Concurrent Task Gate / Planning Gate Passed,官方 start/status 已确认本任务独占 feature worktree。106 个 owner 任务记录已读取;既有未知范围保持只读,无已确认阻塞冲突。
|
||||
- 用户明确批准官方 release-missing 清除 17 条工作目录缺失的已完成任务登记;均已完成,只删除登记,保留分支和提交。此前 start 因此被阻断,未绕过门禁写代码。
|
||||
- 用户本次要求老师读取会话和项目文件,授权修正旧“无文件访问”边界;只读当前项目,不增加文件修改、命令执行、跨项目/账号读取或 Pi 编程执行能力。不创建子智能体。
|
||||
- 先通过真实路径的确定性测试捕获缺失上下文,再定位和修复。已复现长来源消息导致上下文全部被删除、无文件工具导致原生工具请求失败;冷会话历史恢复测试通过。未读取用户真实会话或调用真实付费模型,不将测试复现等同于用户当时运行日志。
|
||||
- 定位文档中模板空白以 README、AGENTS 与可执行代码补充;canonical 项目记忆仅提出 promotion,不在 feature 中修改。
|
||||
|
||||
## Outcome
|
||||
|
||||
- Main 老师服务现将当前项目路径、当前 active-branch 完整文本和当前老师话题的已完成历史交给本地只读工具。支持浏览目录、按行读取 UTF-8 文件和按消息 ID 读取本轮会话原文;允许 `.makelore/project.json` 配置,拒绝其他 `.makelore` 会话数据、Git 内部数据和越界路径。复用已有文件读取服务的项目边界、文本校验和 256 KiB 预览限制。
|
||||
- 原预算算法会逐条移除全部来源消息,长中文项目分析可只留下当前含糊追问。现在保留最近问题/回答的首尾节选;同时节选过长的上一轮老师回复,避免预留读取预算后连续追问失败。节选包含消息 ID,并可通过工具恢复中间原文;当前问题、明确引用和系统指令仍保留,超预算明确报错。
|
||||
- 原生 SSE 支持分片工具调用参数、只读结果回传和继续生成;每轮最多六批读取后要求最终文本,计算工具定义/结果/原生思考的输入预算,成组省略较早工具轮次并累计模型用量。思考内容仅用于 Main 内原生后续请求,不发给 Renderer、不持久化。每次读取和后续模型调用检查账号与取消状态。
|
||||
- UI 标明结合当前会话和项目文件答疑,显示上下文节选提示;既有话题无需迁移或重新创建,运营试聊仍不获得真实项目工具。README 已同步当前行为。
|
||||
- 本次只修改客户端,未修改云端协议、运营配置或数据库;不合并、不推送、不部署,不清理任务工作目录。
|
||||
|
||||
## Verification
|
||||
|
||||
- Red-capable loop:实际 CodingTeacherService 长来源测试首先失败,模型请求只含系统指令与当前追问;prepareTeacherModel 原生读取测试首先失败 `teacher_tools_unavailable`;长老师历史追问测试首先失败 `teacher_context_too_long`。修复后均通过。
|
||||
- `pnpm exec vitest run tests/unit/coding-teacher.test.ts tests/unit/coding-teacher-model.test.ts tests/unit/coding-teacher-read-tools.test.ts tests/unit/coding-teacher-ui.test.tsx`:44 passed。覆盖真实 service → source → model → 本地文件 → model continuation,冷历史 active branch、节选、老师原文恢复、路径边界、取消/账号变化、分片参数、原生思考、累计用量、读取轮数和输入预算、旧 UI 行为。
|
||||
- `pnpm exec vitest run tests/unit/coding-project-files.test.ts tests/unit/pi-session-projector.test.ts`:12 passed。
|
||||
- `pnpm exec playwright test tests/e2e/pi-coding-first-chat.spec.ts --grep 'project teacher side chat'`:1 passed;使用现有隔离 Electron fixture 验证新提示及带回主会话草稿,云端/模型边界为测试替身。
|
||||
- `pnpm run typecheck`、修改生产文件的定向 ESLint、`pnpm run build:vite`、`git diff --check`:通过。依赖使用仓库锁定的 pnpm 10.33.4 / frozen lockfile,锁文件未变化。
|
||||
- `pnpm exec tsc --project tsconfig.node.json --noEmit --composite false`:报告 66 条错误,与已记录 Main 基线数量一致;老师模块和 project-files 无诊断。未宣称全量 Main 类型检查通过,未扩大修复其他模块。
|
||||
|
||||
## Follow-ups
|
||||
|
||||
- 集成时将本任务提交合入客户端 main,并按发布流程更新客户端后进行真实老师模型验收;本地测试未消费真实模型点数。
|
||||
- Main 全量类型检查的既有 66 条错误不在本次范围。
|
||||
|
||||
## Promotion Candidates
|
||||
|
||||
- Target:`.project-docs/10-decisions/ADR-2026-09-22-coding-teacher.md`、对应 decision index、`20-architecture/` 老师数据流与 current-state。Proposal:将原“纯文字、无工具、无项目文件”边界更新为“Main 直接请求计费网关,有限的当前项目/当前会话只读工具,仍无 Pi 执行、写文件或命令”。Evidence:用户本次明确要求恢复会话和文件读取,新增 service/model/读取回归与 Electron UI 测试通过。Future impact:后续老师配置、客户端与联调应依此能力边界;云端发布载荷不变。Semantic conflict:旧 ADR 的 no-tools/no-files 明确冲突,不能把旧约束当成当前需求。Human confirmation:用户本次问题已授权该只读边界修正,集成时无需再次询问同一项授权。
|
||||
- Target:current-state / evidence index。Proposal:记录 UTF-8 字节预算逐条删消息可丢光长主会话;应保留最近问答节选,并提供本轮只读原文恢复。Evidence:原实现确定性失败测试与修复后通过的长来源、长老师回复和读取原文测试。Future impact:后续预算调整必须覆盖连续追问和工具结果开销。Semantic conflict:无;无需额外人类确认。
|
||||
@@ -0,0 +1,57 @@
|
||||
# Task: Diagnose coding teacher unavailable message
|
||||
|
||||
## Identity
|
||||
|
||||
- Task ID: 20260922-teacher-unavailable-6d8fa721
|
||||
- Mode: Feature
|
||||
- Branch: codex/20260922-teacher-unavailable-6d8fa721-teacher-unavailable
|
||||
- Worktree: D:\Datas\OthersProjects\.codex-worktrees\makelore\20260922-teacher-unavailable-6d8fa721
|
||||
- Base commit: e5d271bc457b4e91e6bda52a28db4a1ecf91d406
|
||||
- Owner: codex
|
||||
- Status: Ready for Integration
|
||||
|
||||
## Scope
|
||||
|
||||
- Explain the screenshot message 老师暂未开放 by tracing its exact UI condition and cloud configuration path. Follow-up now covers the reported reasoning error and a bounded client fix; live Operations state remains read-only.
|
||||
|
||||
## Intent And Constraints
|
||||
|
||||
- Project Context Loaded: official check/start/status passed with Identity above, feature mode, isolated managed worktree and base e5d271bc457b4e91e6bda52a28db4a1ecf91d406. 123 owner records read; 17 peer placeholder scopes remain unknown, no concrete conflicting dependency. Packaging 1.6.2 is independent and product-read-only.
|
||||
- Read entry/planning-gate, own record, teacher ADR and integrated state; reuse unchanged memory-index, template positioning, decisions, system/module/data-flow/domain, success criteria and evidence/reflection/commitment/stale context already loaded during preceding integration. Project goal remains Electron/Main-owned coding with independently configured official teacher.
|
||||
- Active constraints: no subagents, no live configuration/production writes, no paid calls, no access to credentials or unrelated peer work. Accepted teacher ADR separates publication from enablement; deployment and live billing are not established by merge.
|
||||
- Planning Gate Passed. Relevant modules: TeacherChatPanel, teacher config client/service and CodingChatPanel mount lifecycle. Current live server enabled status is unknown; screenshot establishes only the last loaded client state.
|
||||
- diagnosing-bugs applied as bounded symptom-condition inspection. This is a behavior question, not an established defect or requested fix; skip reproduction, hypothesis ranking and regression mutation because the exact single UI condition resolves what the message means. Do not claim a live backend root cause without its response.
|
||||
|
||||
## Outcome
|
||||
|
||||
- Confirmed reasoning error root cause: the selected installed-app topic is pinned to published v1 with mode=enabled and effort=null. Server Pydantic intentionally persists nullable effort; client request validation previously formed effort:null and rejected it as an unavailable native strength. User-reported current Operations disabled selection does not change that existing topic.
|
||||
- Corrected TeacherDefinition's wire type to represent nullable effort, and normalized null/missing enabled effort to the canonical default-strength choice before existing capability validation. Explicit strengths and unsupported-choice rejection remain unchanged; no fallback model, topic migration or capability override.
|
||||
- Immediate installed-version path: save and publish the intended disabled setting as a new version, then create a new teacher topic using +. Reopening the same topic retains its frozen v1. Did not mutate the user's topic or live Operations settings.
|
||||
|
||||
- TeacherChatPanel.tsx:65-68 reads config.enabled; :336-337 renders this exact message only when enabled is false (initial value is true). :383 disables sending under the same condition.
|
||||
- Main definition() forwards /api/coding-teacher/config availability and reads the published definition independently of enabled; restored local topic history may also supply name/avatar. Seeing 编程老师1 does not establish current enablement.
|
||||
- Production createTopic rejects disabled or unpublished status; each send rechecks live availability. Permission/config request failures produce different errors.
|
||||
- Panel config load runs on mount/base/draftRevision only, without a focus/poll refresh. CodingChatPanel conditionally mounts the panel; closing and reopening reloads enabled state. Thus enabling in Operations while the panel stays open can leave the displayed status stale.
|
||||
- Explain Operations must have a published version and enabled switch. If already enabled, close/reopen teacher panel. Did not inspect the user's current live backend response, so unenabled vs stale loaded status remains unverified.
|
||||
|
||||
## Verification
|
||||
|
||||
- Reasoning fix: pnpm exec vitest run tests/unit/coding-teacher-model.test.ts --maxWorkers=1 reproduced the exact user error in prepareTeacherModel for the local topic shape enabled/effort=null: 1 failed, 6 passed before the fix. The real server schema separately emitted JSON null for unspecified effort.
|
||||
- After fix: teacher model/teacher service/managed model capability suites => 25 passed; pnpm run typecheck, scoped ESLint and pnpm run build:vite passed. Cases cover null/missing default strength, disabled, model default, explicit native strength, and rejection of unsupported strength/disabling. Tests run the real model preparation and native request construction with synthetic transport; no external model charge.
|
||||
|
||||
- Read-only exact-path searches and source reads at e5d271b establish setter, message predicate, send disabling, status forwarding and remount behavior. No runtime test executed or production state changed.
|
||||
- Inspected own diff; only this task record is changed. Task-aware documentation drift is checked before completion.
|
||||
|
||||
## Follow-ups
|
||||
|
||||
- Fix is committed on this feature branch; merge and rebuild/install are still required to update the running app. Live upstream capabilities and an actual model response have not been verified. Existing teacher topics remain pinned to their creation version by design.
|
||||
|
||||
## Promotion Candidates
|
||||
|
||||
- None. This correction brings the client wire boundary into agreement with the existing server schema and accepted default-strength semantics; it does not change canonical teacher behavior.
|
||||
|
||||
## Reasoning error follow-up
|
||||
|
||||
- Same-task official resume/status Passed at unchanged e5d271b base; re-read all 123 peer records, 17 undefined peer scopes remain unknown, no semantic conflict. Required context and teacher ADR unchanged; Planning Gate Passed.
|
||||
- User reports deepseek-flash / disabled in current Operations (not independently fetched live). Read only selected project registration and filtered teacher/provider metadata, without outputting credentials or conversation text: actual local topic v1 persists enabled with effort=null, created 2026-09-22T06:14:37.190Z, zero requests. Local saved model capability supports disabling and deepseek controls; not a fresh server capability response.
|
||||
- Server contract task verifies ReasoningChoice.model_dump(mode="json") includes effort=null. Plan: reproduce prepareTeacherModel with that real wire shape, normalize the teacher wire DTO at model-request preparation, retain capability validation, and verify enabled/default/disabled/native/unsupported cases. No topic-version migration or live configuration mutation.
|
||||
@@ -0,0 +1,44 @@
|
||||
# Task: Integrate Yuxi coding teachers into main branch
|
||||
|
||||
## Identity
|
||||
|
||||
- Task ID: 20260923-merge-yuxi-teachers-ml-9d623c5f
|
||||
- Mode: Integration
|
||||
- Branch: main
|
||||
- Worktree: D:\Datas\OthersProjects\makelore
|
||||
- Base commit: 1f2ad3fb3a71b8b35fabb5b319cd3b54b4c2ebbe
|
||||
- Owner: codex
|
||||
- Status: Ready for Integration
|
||||
|
||||
## Scope
|
||||
|
||||
- Integrate the approved three-part Yuxi coding-teacher release; this task owns the ml local primary branch and canonical memory. Exact source: d20c818fe79bc5833cef15d99974b699dde71c6d; source task: 20260923-yuxi-teachers-client-53ba33e2.
|
||||
|
||||
## Intent And Constraints
|
||||
|
||||
- Project Context Loaded: official check/start/status passed in integration mode with the task ID, branch, absolute primary worktree and base in Identity, exclusive integration lock and reservation. The user explicitly approved releasing the three completed prior owners and adopting seven existing foreign documents unchanged; they are excluded from commits.
|
||||
- Read entry/memory-index, own and source records, positioning, current-state, decision-index/teacher decisions, system-overview, module-map/data-flow, business-rules/success-criteria, evidence/reflection/commitment/stale indexes. Yuxi root engineering guidance and architecture also loaded. Project goal: MakeLore Main owns desktop credentials, project/Pi reads and local teacher UI/history.
|
||||
- Read 105 peer records from registered paths; all readable. Other peer scopes match the previously loaded implementation assessment, apart from the completed source task. Historical placeholder scopes remain unknown/read-only, with no concrete conflict for this exact integration. Yuxi/MakeLore positioning templates are supplemented by AGENTS, architecture, README and verified source.
|
||||
- Current integrated teacher behavior is local Main execution; the user's accepted Yuxi-native teacher design and explicit student payer decision supersede that boundary. Existing personal-agent creator billing, Pi execution and local project write boundaries remain. Source tests/reviewer evidence applies to unchanged product bytes; real provider/production topology validation is still pending. The paired client source includes d20c818, resolving the routing follow-up recorded in the Yuxi source.
|
||||
- Planning and Integration Gates Passed. Plan: fast-forward the exact verified source; promote the already-approved runtime/distribution/read-tool/billing facts into owning canonical documents; prove source ancestry and product equality, validate documentation/contracts, commit/complete and ask separately about source worktree cleanup. No new subagents, push, deployment or paid model calls.
|
||||
|
||||
## Outcome
|
||||
|
||||
- Fast-forwarded local main from 1f2ad3fb3a71b8b35fabb5b319cd3b54b4c2ebbe to d20c818fe79bc5833cef15d99974b699dde71c6d without conflicts. All three paired sources are integrated, including MakeLore d20c818, which resolves the child-thread routing follow-up in the unchanged Yuxi source record.
|
||||
- Promoted the user-approved Yuxi runtime, Operations distribution, Main read-tool/history, main-thread text routing and student payer boundaries into canonical decisions/architecture/domain/current-state/evidence. Source task records are imported unchanged. Product and test files exactly match the verified source.
|
||||
- The three pre-existing foreign documents retain their original adopted state and remain outside commits. No push, deployment, installer update, production migration or paid provider call.
|
||||
|
||||
## Verification
|
||||
|
||||
- Main contains the exact source HEAD; git merge --ff-only and source ancestry/equality checks passed. Product/test/build evidence is inherited from the exact fast-forwarded source; no conflict or product rewrite required another product test run.
|
||||
- New relative document links passed (8 targets in this repository); whitespace checks passed. Official task-aware drift passed with unchanged source provenance and adopted foreign documents. Reviewed the committed/working range from the recorded base; only this integration's canonical documents and task record are committed beyond the source.
|
||||
|
||||
## Follow-ups
|
||||
|
||||
- Source worktree D:/Datas/OthersProjects/.codex-worktrees/makelore/20260923-yuxi-teachers-client-53ba33e2 (task 20260923-yuxi-teachers-client-53ba33e2) remains pending the separate post-merge cleanup question. Preserve its branch and commits.
|
||||
- Initial blocked start created an unclaimed integration checkout at D:/Datas/OthersProjects/.codex-worktrees/makelore/20260923-merge-yuxi-teachers-ml-9d623c5f, branch codex/20260923-merge-yuxi-teachers-ml-9d623c5f-merge-yuxi-teachers. Ownership was rolled back before a task record was created; it is not a ready managed task and is retained for separate cleanup review. The active task owns the primary worktree in Identity, not this unused checkout.
|
||||
- Release/real provider billing and full deployed three-service acceptance remain separate; keep existing recovery-backup directories unchanged.
|
||||
|
||||
## Promotion Candidates
|
||||
|
||||
- Applied the accepted source promotion candidates in integration mode. User confirmation already covers native Yuxi teachers, local read tools and student billing; no unresolved product decision remains.
|
||||
@@ -0,0 +1,46 @@
|
||||
# Task: Connect coding teachers to Yuxi with local project tools
|
||||
|
||||
## Identity
|
||||
|
||||
- Task ID: 20260923-yuxi-teachers-client-53ba33e2
|
||||
- Mode: Feature
|
||||
- Branch: codex/20260923-yuxi-teachers-client-53ba33e2-yuxi-teachers-client
|
||||
- Worktree: D:\Datas\OthersProjects\.codex-worktrees\makelore\20260923-yuxi-teachers-client-53ba33e2
|
||||
- Base commit: 1f2ad3fb3a71b8b35fabb5b319cd3b54b4c2ebbe
|
||||
- Owner: codex
|
||||
- Status: Ready for Integration
|
||||
|
||||
## Scope
|
||||
|
||||
- Implement the accepted Yuxi coding-teacher design across Yuxi runtime, Works Square distribution and MakeLore Main/local context. This record owns the ml repository changes only. User explicitly confirmed student-account billing on 2026-09-23.
|
||||
- User-authorized follow-up on 2026-09-23 fixes the confirmed client SSE routing omission: child-agent text must not become the main teacher answer. This follow-up changes only MakeLore Main, its regression test and documentation.
|
||||
|
||||
## Intent And Constraints
|
||||
|
||||
- Official check/start/status passed in this isolated managed feature worktree, with matching identity/base/branch. Planning Gate passed after required entry/task/memory/architecture/decision and peer scope reads. Primary checkouts, foreign documents and canonical project memory remain untouched.
|
||||
- Peer task-record scope reads: WS 268, Yuxi 43, MakeLore 105, all readable. Incomplete historical scopes remain unknown; no concrete conflicting dependency found. Yuxi template positioning is supplemented by ARCHITECTURE and current code. WS teacher no-tools text is stale relative to the merged Main read tools.
|
||||
- No subagents without user consent. No production deployment, source push, or real paid model requests. Ordinary personal agents keep creator billing. Teacher guidance remains read-only, user-initiated and bound to the selected local project/Pi conversation; no proactive monitoring or local command execution.
|
||||
- Implementation sequence: establish native cloud client-tool wait/results/continuation with focused unit plus real HTTP/PG/worker evidence; connect published Yuxi teachers to Operations distribution and student entitlement/billing; connect Main context/read dispatch and teacher UI; finish three-end regression, builds, documentation and review. Existing local teacher histories retain a supported read path.
|
||||
|
||||
## Outcome
|
||||
|
||||
- Implemented teacher selection for new topics, Main-owned scoped Yuxi sessions/SSE, local project/Pi snapshot binding, complete structured read results and native cloud continuation. Reconnect follows persisted continuation and cursor; original question ID supports cancellation even if submission acknowledgment is lost.
|
||||
- Main enforces existing project read boundaries; frozen public Pi messages and current teacher topic texts can be read by ID. Legacy teacher histories retain their original path. Disabled teacher topics remain readable without borrowing another teacher's availability. Cloud topic headers reflect the selected teacher, including implicit topic creation on first send.
|
||||
- Updated README with runtime, configuration/version, local read, cancellation and billing behavior. Implementation and local evidence complete. The user-authorized fresh read-only reviewer independently reviewed all three repositories and returned PASS with no reproducible defects. Prepared for integration; no merge, push, deployment, installer release or paid-model calls.
|
||||
- Resolved the follow-up review finding on 2026-09-23: cloud-runner now routes message text using the authoritative cloud main thread_id from the Run view, which differs from the local topic ID. Child-thread events no longer enter the teacher response, saved history or brought-back draft, or reset main-answer accumulation. Every observed event still advances the reconnect cursor. This bounded client fix received direct diff review; the earlier independent reviewer PASS applies to the initial implementation only.
|
||||
|
||||
## Verification
|
||||
|
||||
- Typecheck passed. All 51 relevant tests across coding-teacher, model, read-tools, UI and cloud runner passed after the routing fix (50 at initial implementation). Cloud runner tests use real temporary project files and captured public messages, asserting all result IDs/content, stale-context rejection, saved continuation, lost acknowledgment cancellation and SSE replay/partial final-answer repair. Service integration also validates native Yuxi topics with no local prompt use cloud credentials, local reads and saved cloud request/response rather than the local model loop.
|
||||
- Electron E2E project teacher side chat passed against actual built window with explicit Host API fixtures, including choosing a non-default teacher and bringing its response back to the main draft without submitting. Production Renderer/Main/Preload build passed. Focused ESLint and git diff whitespace checks passed.
|
||||
- Yuxi real HTTP/PG/worker integration separately verifies cloud interruption/continuation; WS verifies student wallet. No real paid provider or deployed three-service topology call.
|
||||
- Added a tracked regression with interleaved main/child text, both payload.items and payload.chunk, cloud/local thread-ID distinction and disconnection after a child event. It failed before the fix with child text plus a duplicated final answer, then passed with teacher-only text and after_seq=2-0 on reconnect. Cursor assertions run outside the transport callback so transport retry handling cannot swallow assertion failures. All six cloud tests passed again after that assertion refinement.
|
||||
- The original task-local probe under ignored node_modules/.cache/teacher-review now passes: pnpm exec vitest run --config node_modules/.cache/teacher-review/vitest.config.mjs -t 'keeps child-agent text' (1 passed / 5 not selected; previously 1 failed). Focused ESLint, typecheck and production Renderer/Main/Preload build passed for this follow-up. Existing Electron E2E was not rerun: its Host API topic fixture bypasses the changed cloud transport; the tracked transport regression exercises the actual routing defect.
|
||||
|
||||
## Follow-ups
|
||||
|
||||
- Integrate the three paired task branches together when requested. Deployment, real provider billing, remote MCP and production three-service/one-api topology validation remain a separate release step. Retain task worktrees and branches for that handoff.
|
||||
|
||||
## Promotion Candidates
|
||||
|
||||
- Target: accepted teacher/cloud-agent architecture and domain documents. Proposal: Yuxi teacher definition/runtime, WS selection/authorization, Main project/Pi read tools; teacher payer is the student while other personal agents keep creator payer. Evidence: user accepted design/implementation and explicitly selected student billing. Future impact: removes duplicate teacher configuration ownership and changes teacher cloud history boundary. Conflicts: old teacher Main-only/no-cloud-history decision is intentionally superseded by accepted scope; feature task records facts, Integration Gate promotes after delivery. No additional product confirmation needed for the accepted scope.
|
||||
@@ -8,7 +8,7 @@
|
||||
- Worktree: /Users/chillishark/Makelore 麦洛/.codex-worktrees/makelore-teacher-merge
|
||||
- Base commit: e5d271bc457b4e91e6bda52a28db4a1ecf91d406
|
||||
- Owner: codex
|
||||
- Status: Ready for Integration
|
||||
- Status: Planning
|
||||
|
||||
## Scope
|
||||
|
||||
@@ -54,3 +54,15 @@
|
||||
1. Merge completed discussion and guidance source branches; presence/classroom ancestors are included.
|
||||
2. Verify typecheck, affected unit tests, lint, production build and isolated interaction checks.
|
||||
3. Preserve known main work, land verified commits on main and verify ancestry and work preservation.
|
||||
|
||||
## Authorized Push And Trial Restart
|
||||
|
||||
- User explicitly requests remote push and trial restart. Same task/worktree resumed via start; matching feature ownership verified, prior project context/peer scope remains applicable. Gate passed. Guidance worktree was retired as approved; other peer scopes unchanged.
|
||||
- Scope: reconcile concurrent origin/main updates if needed, push local main, rebuild final main and restart only the known Makelore Teacher Trial with its existing isolated profile and port. No real teacher test messages or cloud publication.
|
||||
- Initial push was rejected because remote main advanced; fetch and integrate its commits before retry.
|
||||
|
||||
- Reconciled origin/main 158d3ee with the classroom source. Nine textual conflicts were resolved by preserving catalog/Yuxi execution, nullable reasoning and scoped project reads alongside project-role history, proactive check-ins, teaching baseline and persistent discussions. Imported canonical documents and upstream task records (13 files) are byte-identical to origin/main; no new canonical decisions were authored.
|
||||
- Cloud requests now carry the complete ordered compiled context through the existing query string contract, including behavior and discussion instructions; the current request binds its actual operation source. Friend retains its persona and has no local read tools. Disabled teacher history cannot borrow another catalog teacher's enabled state or bypass the UI guard with Enter.
|
||||
- Independent review found structured output contaminated by pre-tool commentary on both execution paths. Cloud suggestions/discussion now deliver only the completed final output; local model execution uses finalOnly to deliver the successful final tool-free response. Red-capable regressions cover preambles/intermediate JSON, reads, final JSON, cancellation and persisted component state. Reviewer confirmed the finding closed.
|
||||
- Final verification: 25 relevant unit suites / 507 tests passed; standard typecheck passed; targeted ESLint passed; 13 headless layout and 3 isolated Electron classroom/proactive/recovery checks passed; final Renderer/Main/Preload/utility build passed. Independent Main diagnostics remain 66 with none in teacher/project-files paths; this is not a clean all-Main typecheck. No paid model or live teacher message was sent.
|
||||
- Push and exact-profile restart follow this verified merge; source and backup branches remain preserved.
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
|
||||
- 每个新项目创建内部默认 Agent,普通界面无 Agent 创建步骤或分组列。defaultAgentId 选取已存默认、置顶或首个可用 Agent;历史 Agent 与会话绑定不重写,不重新启用停用/归档 Agent。
|
||||
- 项目直接显示会话并保留归档、改名、未读、运行状态;打开项目不创建空会话。首次发送或显式新建才创建。项目设置编辑默认配置,历史会话仍能定位原绑定配置。
|
||||
- 老师为独立无工具文字答疑,Skills 不执行代码;读取仅限当前来源活动分支已完成用户/助手文本、显式引用及本话题历史。话题本机隔离、固定发布版本,每次新问题检查在线启停。
|
||||
- 老师使用 Yuxi 原生配置和云资源,新话题可选择运营下发的老师,旧话题固定版本。Main 只提供当前项目和本轮捕获的 Pi 公开消息/老师话题的三个只读工具,允许 `.makelore/project.json`,无本机写入或命令,不进入其他账号/来源记录;每次读取与续接检查绑定及取消状态。Yuxi 保存老师消息与收到的片段,完整本地工程不全量上传。
|
||||
- 同 requestId 相同输入读取已有请求结果,不同输入冲突;重启中的请求标记中断,账号退出中止,来源删除清理相关话题。带回回答追加草稿且不自动发送;已归档来源必须先恢复。
|
||||
- 运营试聊要求 admin 与精确已保存草稿版本,只使用示例上下文。个人云智能体和现有付款边界独立。
|
||||
- 运营只管理下发、同步、默认与启停,无重复提示词编辑器或试聊。老师聊天模型由学生账号付费,个人 Agents 保持创建者付费。正文、历史及带回草稿只接收云端主线程文本;忽略子线程文本仍推进游标。
|
||||
|
||||
依据:[老师决定](../10-decisions/ADR-2026-09-22-coding-teacher.md)及 [ADR-008](../10-decisions/adr-008-interactive-ai-app-scaffold.md)。
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@ Use this index for searchable, traceable evidence records.
|
||||
|
||||
| Date | Topic | Status | Source | Detail |
|
||||
|---|---|---|---|---|
|
||||
| 2026-09-23 | Yuxi 编程老师与客户端只读工具 | Integrated locally; production acceptance pending | `d20c818fe79bc5833cef15d99974b699dde71c6d`, [source task](../30-worklog/tasks/20260923-yuxi-teachers-client-53ba33e2.md) | 源验证:51 项相关测试、typecheck、lint 和生产构建通过;原 Electron 老师选择/带回草稿流程通过。子线程正文混入先复现失败再修复,回归覆盖两种事件格式及断线游标。 本次精确快进,产品字节相同;真实收费模型和完整部署拓扑未验收。 |
|
||||
| 2026-09-22 | 编程老师长上下文与项目文件只读能力 | Integrated on local `main`; real cloud-model acceptance pending | Source `44e754a43ec6d286fee6b6492da0d1f9347770e6`, [source task](../30-worklog/tasks/20260922-teacher-context-c40f7b51.md), [integration task](../30-worklog/tasks/20260922-merge-coding-teacher-client-b80c376f.md) | 原实现会逐条删光超预算来源消息,并拒绝模型工具请求;长来源、长老师回复和原生文件读取均先复现失败再修复。现在保留最近问答节选,可按消息 ID 恢复原文并只读当前项目文件。56 项相关测试、1 项 Electron 流程、Renderer typecheck、scoped lint 和构建通过;Main 全量严格类型检查仍有既有 66 条诊断。快进后产品树与已测源完全一致,未推送、安装或调用真实计费模型。 |
|
||||
| 2026-09-06 | Game Resource generation automatically delivers every output to the frozen project | Integrated on local `main`; live paid Provider and rebuilt installed-client smoke not run | Source `6113a2453299141eab8420a56e93675712dd607b`, product `4df4bc96245c01cd95e35ddf1b2b03d0e0d231c5`, source task `20260906-game-resource-auto-delivery-7a4e2c91`, integration task `20260906-game-resource-auto-delivery-integration-8c4e1a72`, ADR-008 | One confirmed generate call submits once; Main internally polls, downloads all terminal outputs, and writes them to the original frozen project. A durable receipt resumes local delivery without another Provider call or Token Point charge, and the shared write lease is held only during materialization. Agent-visible status/save tools and the second save confirmation are gone. Source evidence: 99 focused tests, 1,901 full unit tests/2 skips plus pressure, typecheck, lint, all Vite targets, 8 Electron tests, unified Plugins E2E 3/3, and Windows x64 runtime staging. No live paid generation, deploy, publication, push, installation, or packaged end-to-end smoke is claimed. |
|
||||
| 2026-09-05 | Code-owned official project Plugins activate per project without partner assignment | Integrated on local `main`; rebuilt installed-client smoke pending | Initial Scaffold source/product `300ac89a81409440aac84ff45b1d9ca2fa186629` / `6710527e8f7150a6c4997d566a380454e33f455e`; broadened source/product `718783f6837e29f56c9add633596249c03e5701f` / `e0de7aa28c1d6e97454f0e4073ae9153e746bb4b`; tasks `20260905-official-plugin-project-scope-6e4a9c21` / `20260905-official-plugin-project-scope-integration-8b3d6f42`; ADR-008 | `makelore.data-service`, `makelore.game-resource`, and `makelore.project-scaffold` now enter every parent Agent after their existing delivery/acquisition and project-enable requirements, without partner assignment; child Agents remain empty and other package lifecycles are unchanged. TDD reproduced Main `skill_unassigned` and Renderer assignment-command failures. The broadened source passed 30 focused, 70 adjacent, and 37 resolver/composition tests, typecheck, lint, all Vite targets, and Electron E2E 1/1. The ordinary full unit run had one unrelated two-second real-process timing miss among 1,889 passes/2 skips; that file passed 6/6 alone. No rebuilt installed-client smoke is claimed. |
|
||||
| 2026-09-03 | Device Package packaged prepare 与全部已启用资源加载 | Integrated on local `main`; rebuilt installed-client activation pending | Prepare source `5a2f0eb6785b59d8b455ed5cb1d9773351ff895a`, activation source `17664c5fffcfe695653b4146503e645f54767c4b`, tasks `20260902-local-skill-install-fix-6b3e91a4` / `20260903-load-installed-resources-8f3c1a72`, verified candidate `bd377c9`, main promotion task `20260903-promote-installed-resources-main-5c8e1a72` | Packaged package inspection now uses the distributed physical Pi runtime instead of importing an incomplete `app.asar` graph; closed Device Package failures remain closed across the bridge. The parent Agent Server keeps its generated Makelore extension first, passes every further Main-selected installed/enabled extension through Pi `0.84.2` `additionalExtensionPaths`, retains every selected Skill path, and keeps ambient discovery off. Packaged prepare without commit passed for loose `SKILL.md`, npm, and Git/Ponytail; a real Agent Server loaded two external extensions and exposed both commands. Across the two source tasks, focused tests, 222 files / 1,815 full unit tests / 2 conditional skips, pressure, typecheck, scoped lint, production build, Windows packaging, and artifact/Pi verification passed. The currently installed 1.2.6 client was not replaced, so no live installed-client success is claimed. |
|
||||
|
||||
Reference in New Issue
Block a user