| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
第 52 批:实验运行器设置组 + dry-run 规划器(0.4.0) 先合入 harness_loop / run_identity / judge_gate 三个基础设施模块,再把「实验运行器」做成设置页的一组真实开关:启用、并行/顺序、k、最大 rollout、输出目录。每个开关都有消费者——关闭时其余控件不渲染、dry_run 直接报错;打开后「生成预览计划」会写 config.json 与 plan.json,并拒绝预算小于 4k 的配置。 这一版只做规划,不发模型请求、不碰数据库;真实 rollout 的开关等执行器接上再加,避免空开关。版本升到 0.4.0。 | 15 天前 | |
第 49 批:分句召回 + 换话题按段判(并修两条 GUI 偶发) 用户点名的两处缺口:一句话里几件事时「每件事各自去查记忆」,以及「话题判定的粒度 是一轮而不是一句」。 分句召回 - 整句只算一个向量时,它是几件事的**平均**:跟哪一件都不够像 → 分档(强/中/弱 → 全文/一行/索引)整体滑向中/弱,而事实那一节只收强档,于是它空掉;关键词那条路更 直白:整句是当**短语**查的(trigram 上的短语匹配就是子串匹配),长消息几乎必然查不到。 - 新增 rwork_core::segments:for_recall 按**分项边界**切段(编号、带圈数字、项目符号、 行首的并列/递进词、分号;**不把普通换行当边界**——贴一段日志时几十行里没有一行是 「一件新的事」,按行切只会白花几次嵌入还把噪声带进召回),上限 5 段、超出的并进最后 一段(不丢),切不出第二段就原样返回一段 ⇒ **普通消息的行为与从前逐字一致**。 - recall_for_turn 逐段嵌入、逐段查三层召回,merge_hits 合并:同一条被多段命中保留 **分数最高**那次(取平均会压掉「两段都沾一点」的那种,而它最该留下);合并后条数收在 单段那一档的预算内。任何一段失败 ⇒ 整条失败(跳过会让结果静默地不完整,而「召回少了」 与「召回失败」在提示词里长得一样)。 - 顺带把「像不像好几件事」的判据 looks_multi_issue 从 rwork-app/src/turn.rs 搬进同一个 模块:两套判据共用同一份分项词表,而它们问的问题不同(一个决定要不要花一次模型往返去 拆解、一个决定怎么切句),以前分居两处迟早会漂。 换话题按段判 - 以前整句一个向量:几段平均之后与重心「有点像」,混话题的消息**永远判不出换话题**, 于是事实那一节一直停在旧话题上。 - 现在每段各自与重心算余弦,off = 明显偏离(< 0.62)的段数:off >= 2 直接算换 (**一处是口误,两处就是换了话题**);off == 1 先记待定、下一轮再偏才算(单段消息 因此与从前逐条一致);显式说法落在哪一段就把重心置成**那一段**(不是整句均值——均值 会把新旧话题焊在一起,下一轮又判不准)。 验证 - cargo test --workspace:1048 条单元 + 48 条端到端全绿、0 失败、2 条按设计忽略; clippy --workspace --all-targets -D warnings 零告警;--test convention、--test docs 0 违规;cargo build --release -p rwork-app 通过。 - **反向验证两处**:把 for_recall 改成原样返回整句(分句召回失效)⇒ 那条接缝用例立刻红; 把漂移判据改回「只有连续两轮」⇒ 两条按段判的用例立刻红。 - 修两条**GUI 偶发**(同一类:等待方式,不是被测行为):pruning_orphans_from_the_behavior_page_removes_them 原先「渲染一帧就断言」,而它等的是阻塞池上的读库结果;clicking_new_chat_forgets_the_conversation_it_was_on 点击之后只 run_until_parked 一次就断言状态已清。两条都是**同一份代码单独跑绿、整包跑红**; 改成等条件成立(有上限)后连跑五遍全绿。 文档 - 新增 docs/04 §11「记忆召回与意图判定」——这条链(切分、合并、按段漂移、视图缓存、 失败路径)此前在详细设计里一个字都没有。 - docs/02 加 FR-9.9 / FR-9.10,FR-1.8 的判据指向新家;REQUIREMENTS.md §2.7 加两行; FEATURES.md 补用户看得见的两段;README.md 版本历史加 0.2.0。 - 行号引用:turn.rs 搬走 137 行 ⇒ 用「按原文重定位」的脚本改了 118 处,其中约 70 处是 **门禁完全看不见的短式引用**(同一个文件里只写 :行号);脚本这次把短式引用也支持了 (.verify/docs-drift/scan.py,一次性工具,不进版本库),方向记进 docs/09 的 F4。 - docs/05/06/07/08 的清单与结果按本次运行重跑(1048 / 48;清单 1128 行)。 - 版本:**0.2.0**(加能力:分句召回与按段判据是新的行为面)。 | 23 天前 | |
第 49 批:分句召回 + 换话题按段判(并修两条 GUI 偶发) 用户点名的两处缺口:一句话里几件事时「每件事各自去查记忆」,以及「话题判定的粒度 是一轮而不是一句」。 分句召回 - 整句只算一个向量时,它是几件事的**平均**:跟哪一件都不够像 → 分档(强/中/弱 → 全文/一行/索引)整体滑向中/弱,而事实那一节只收强档,于是它空掉;关键词那条路更 直白:整句是当**短语**查的(trigram 上的短语匹配就是子串匹配),长消息几乎必然查不到。 - 新增 rwork_core::segments:for_recall 按**分项边界**切段(编号、带圈数字、项目符号、 行首的并列/递进词、分号;**不把普通换行当边界**——贴一段日志时几十行里没有一行是 「一件新的事」,按行切只会白花几次嵌入还把噪声带进召回),上限 5 段、超出的并进最后 一段(不丢),切不出第二段就原样返回一段 ⇒ **普通消息的行为与从前逐字一致**。 - recall_for_turn 逐段嵌入、逐段查三层召回,merge_hits 合并:同一条被多段命中保留 **分数最高**那次(取平均会压掉「两段都沾一点」的那种,而它最该留下);合并后条数收在 单段那一档的预算内。任何一段失败 ⇒ 整条失败(跳过会让结果静默地不完整,而「召回少了」 与「召回失败」在提示词里长得一样)。 - 顺带把「像不像好几件事」的判据 looks_multi_issue 从 rwork-app/src/turn.rs 搬进同一个 模块:两套判据共用同一份分项词表,而它们问的问题不同(一个决定要不要花一次模型往返去 拆解、一个决定怎么切句),以前分居两处迟早会漂。 换话题按段判 - 以前整句一个向量:几段平均之后与重心「有点像」,混话题的消息**永远判不出换话题**, 于是事实那一节一直停在旧话题上。 - 现在每段各自与重心算余弦,off = 明显偏离(< 0.62)的段数:off >= 2 直接算换 (**一处是口误,两处就是换了话题**);off == 1 先记待定、下一轮再偏才算(单段消息 因此与从前逐条一致);显式说法落在哪一段就把重心置成**那一段**(不是整句均值——均值 会把新旧话题焊在一起,下一轮又判不准)。 验证 - cargo test --workspace:1048 条单元 + 48 条端到端全绿、0 失败、2 条按设计忽略; clippy --workspace --all-targets -D warnings 零告警;--test convention、--test docs 0 违规;cargo build --release -p rwork-app 通过。 - **反向验证两处**:把 for_recall 改成原样返回整句(分句召回失效)⇒ 那条接缝用例立刻红; 把漂移判据改回「只有连续两轮」⇒ 两条按段判的用例立刻红。 - 修两条**GUI 偶发**(同一类:等待方式,不是被测行为):pruning_orphans_from_the_behavior_page_removes_them 原先「渲染一帧就断言」,而它等的是阻塞池上的读库结果;clicking_new_chat_forgets_the_conversation_it_was_on 点击之后只 run_until_parked 一次就断言状态已清。两条都是**同一份代码单独跑绿、整包跑红**; 改成等条件成立(有上限)后连跑五遍全绿。 文档 - 新增 docs/04 §11「记忆召回与意图判定」——这条链(切分、合并、按段漂移、视图缓存、 失败路径)此前在详细设计里一个字都没有。 - docs/02 加 FR-9.9 / FR-9.10,FR-1.8 的判据指向新家;REQUIREMENTS.md §2.7 加两行; FEATURES.md 补用户看得见的两段;README.md 版本历史加 0.2.0。 - 行号引用:turn.rs 搬走 137 行 ⇒ 用「按原文重定位」的脚本改了 118 处,其中约 70 处是 **门禁完全看不见的短式引用**(同一个文件里只写 :行号);脚本这次把短式引用也支持了 (.verify/docs-drift/scan.py,一次性工具,不进版本库),方向记进 docs/09 的 F4。 - docs/05/06/07/08 的清单与结果按本次运行重跑(1048 / 48;清单 1128 行)。 - 版本:**0.2.0**(加能力:分句召回与按段判据是新的行为面)。 | 23 天前 | |
第 49 批:分句召回 + 换话题按段判(并修两条 GUI 偶发) 用户点名的两处缺口:一句话里几件事时「每件事各自去查记忆」,以及「话题判定的粒度 是一轮而不是一句」。 分句召回 - 整句只算一个向量时,它是几件事的**平均**:跟哪一件都不够像 → 分档(强/中/弱 → 全文/一行/索引)整体滑向中/弱,而事实那一节只收强档,于是它空掉;关键词那条路更 直白:整句是当**短语**查的(trigram 上的短语匹配就是子串匹配),长消息几乎必然查不到。 - 新增 rwork_core::segments:for_recall 按**分项边界**切段(编号、带圈数字、项目符号、 行首的并列/递进词、分号;**不把普通换行当边界**——贴一段日志时几十行里没有一行是 「一件新的事」,按行切只会白花几次嵌入还把噪声带进召回),上限 5 段、超出的并进最后 一段(不丢),切不出第二段就原样返回一段 ⇒ **普通消息的行为与从前逐字一致**。 - recall_for_turn 逐段嵌入、逐段查三层召回,merge_hits 合并:同一条被多段命中保留 **分数最高**那次(取平均会压掉「两段都沾一点」的那种,而它最该留下);合并后条数收在 单段那一档的预算内。任何一段失败 ⇒ 整条失败(跳过会让结果静默地不完整,而「召回少了」 与「召回失败」在提示词里长得一样)。 - 顺带把「像不像好几件事」的判据 looks_multi_issue 从 rwork-app/src/turn.rs 搬进同一个 模块:两套判据共用同一份分项词表,而它们问的问题不同(一个决定要不要花一次模型往返去 拆解、一个决定怎么切句),以前分居两处迟早会漂。 换话题按段判 - 以前整句一个向量:几段平均之后与重心「有点像」,混话题的消息**永远判不出换话题**, 于是事实那一节一直停在旧话题上。 - 现在每段各自与重心算余弦,off = 明显偏离(< 0.62)的段数:off >= 2 直接算换 (**一处是口误,两处就是换了话题**);off == 1 先记待定、下一轮再偏才算(单段消息 因此与从前逐条一致);显式说法落在哪一段就把重心置成**那一段**(不是整句均值——均值 会把新旧话题焊在一起,下一轮又判不准)。 验证 - cargo test --workspace:1048 条单元 + 48 条端到端全绿、0 失败、2 条按设计忽略; clippy --workspace --all-targets -D warnings 零告警;--test convention、--test docs 0 违规;cargo build --release -p rwork-app 通过。 - **反向验证两处**:把 for_recall 改成原样返回整句(分句召回失效)⇒ 那条接缝用例立刻红; 把漂移判据改回「只有连续两轮」⇒ 两条按段判的用例立刻红。 - 修两条**GUI 偶发**(同一类:等待方式,不是被测行为):pruning_orphans_from_the_behavior_page_removes_them 原先「渲染一帧就断言」,而它等的是阻塞池上的读库结果;clicking_new_chat_forgets_the_conversation_it_was_on 点击之后只 run_until_parked 一次就断言状态已清。两条都是**同一份代码单独跑绿、整包跑红**; 改成等条件成立(有上限)后连跑五遍全绿。 文档 - 新增 docs/04 §11「记忆召回与意图判定」——这条链(切分、合并、按段漂移、视图缓存、 失败路径)此前在详细设计里一个字都没有。 - docs/02 加 FR-9.9 / FR-9.10,FR-1.8 的判据指向新家;REQUIREMENTS.md §2.7 加两行; FEATURES.md 补用户看得见的两段;README.md 版本历史加 0.2.0。 - 行号引用:turn.rs 搬走 137 行 ⇒ 用「按原文重定位」的脚本改了 118 处,其中约 70 处是 **门禁完全看不见的短式引用**(同一个文件里只写 :行号);脚本这次把短式引用也支持了 (.verify/docs-drift/scan.py,一次性工具,不进版本库),方向记进 docs/09 的 F4。 - docs/05/06/07/08 的清单与结果按本次运行重跑(1048 / 48;清单 1128 行)。 - 版本:**0.2.0**(加能力:分句召回与按段判据是新的行为面)。 | 23 天前 | |
第 49 批:分句召回 + 换话题按段判(并修两条 GUI 偶发) 用户点名的两处缺口:一句话里几件事时「每件事各自去查记忆」,以及「话题判定的粒度 是一轮而不是一句」。 分句召回 - 整句只算一个向量时,它是几件事的**平均**:跟哪一件都不够像 → 分档(强/中/弱 → 全文/一行/索引)整体滑向中/弱,而事实那一节只收强档,于是它空掉;关键词那条路更 直白:整句是当**短语**查的(trigram 上的短语匹配就是子串匹配),长消息几乎必然查不到。 - 新增 rwork_core::segments:for_recall 按**分项边界**切段(编号、带圈数字、项目符号、 行首的并列/递进词、分号;**不把普通换行当边界**——贴一段日志时几十行里没有一行是 「一件新的事」,按行切只会白花几次嵌入还把噪声带进召回),上限 5 段、超出的并进最后 一段(不丢),切不出第二段就原样返回一段 ⇒ **普通消息的行为与从前逐字一致**。 - recall_for_turn 逐段嵌入、逐段查三层召回,merge_hits 合并:同一条被多段命中保留 **分数最高**那次(取平均会压掉「两段都沾一点」的那种,而它最该留下);合并后条数收在 单段那一档的预算内。任何一段失败 ⇒ 整条失败(跳过会让结果静默地不完整,而「召回少了」 与「召回失败」在提示词里长得一样)。 - 顺带把「像不像好几件事」的判据 looks_multi_issue 从 rwork-app/src/turn.rs 搬进同一个 模块:两套判据共用同一份分项词表,而它们问的问题不同(一个决定要不要花一次模型往返去 拆解、一个决定怎么切句),以前分居两处迟早会漂。 换话题按段判 - 以前整句一个向量:几段平均之后与重心「有点像」,混话题的消息**永远判不出换话题**, 于是事实那一节一直停在旧话题上。 - 现在每段各自与重心算余弦,off = 明显偏离(< 0.62)的段数:off >= 2 直接算换 (**一处是口误,两处就是换了话题**);off == 1 先记待定、下一轮再偏才算(单段消息 因此与从前逐条一致);显式说法落在哪一段就把重心置成**那一段**(不是整句均值——均值 会把新旧话题焊在一起,下一轮又判不准)。 验证 - cargo test --workspace:1048 条单元 + 48 条端到端全绿、0 失败、2 条按设计忽略; clippy --workspace --all-targets -D warnings 零告警;--test convention、--test docs 0 违规;cargo build --release -p rwork-app 通过。 - **反向验证两处**:把 for_recall 改成原样返回整句(分句召回失效)⇒ 那条接缝用例立刻红; 把漂移判据改回「只有连续两轮」⇒ 两条按段判的用例立刻红。 - 修两条**GUI 偶发**(同一类:等待方式,不是被测行为):pruning_orphans_from_the_behavior_page_removes_them 原先「渲染一帧就断言」,而它等的是阻塞池上的读库结果;clicking_new_chat_forgets_the_conversation_it_was_on 点击之后只 run_until_parked 一次就断言状态已清。两条都是**同一份代码单独跑绿、整包跑红**; 改成等条件成立(有上限)后连跑五遍全绿。 文档 - 新增 docs/04 §11「记忆召回与意图判定」——这条链(切分、合并、按段漂移、视图缓存、 失败路径)此前在详细设计里一个字都没有。 - docs/02 加 FR-9.9 / FR-9.10,FR-1.8 的判据指向新家;REQUIREMENTS.md §2.7 加两行; FEATURES.md 补用户看得见的两段;README.md 版本历史加 0.2.0。 - 行号引用:turn.rs 搬走 137 行 ⇒ 用「按原文重定位」的脚本改了 118 处,其中约 70 处是 **门禁完全看不见的短式引用**(同一个文件里只写 :行号);脚本这次把短式引用也支持了 (.verify/docs-drift/scan.py,一次性工具,不进版本库),方向记进 docs/09 的 F4。 - docs/05/06/07/08 的清单与结果按本次运行重跑(1048 / 48;清单 1128 行)。 - 版本:**0.2.0**(加能力:分句召回与按段判据是新的行为面)。 | 23 天前 | |
第 49 批:分句召回 + 换话题按段判(并修两条 GUI 偶发) 用户点名的两处缺口:一句话里几件事时「每件事各自去查记忆」,以及「话题判定的粒度 是一轮而不是一句」。 分句召回 - 整句只算一个向量时,它是几件事的**平均**:跟哪一件都不够像 → 分档(强/中/弱 → 全文/一行/索引)整体滑向中/弱,而事实那一节只收强档,于是它空掉;关键词那条路更 直白:整句是当**短语**查的(trigram 上的短语匹配就是子串匹配),长消息几乎必然查不到。 - 新增 rwork_core::segments:for_recall 按**分项边界**切段(编号、带圈数字、项目符号、 行首的并列/递进词、分号;**不把普通换行当边界**——贴一段日志时几十行里没有一行是 「一件新的事」,按行切只会白花几次嵌入还把噪声带进召回),上限 5 段、超出的并进最后 一段(不丢),切不出第二段就原样返回一段 ⇒ **普通消息的行为与从前逐字一致**。 - recall_for_turn 逐段嵌入、逐段查三层召回,merge_hits 合并:同一条被多段命中保留 **分数最高**那次(取平均会压掉「两段都沾一点」的那种,而它最该留下);合并后条数收在 单段那一档的预算内。任何一段失败 ⇒ 整条失败(跳过会让结果静默地不完整,而「召回少了」 与「召回失败」在提示词里长得一样)。 - 顺带把「像不像好几件事」的判据 looks_multi_issue 从 rwork-app/src/turn.rs 搬进同一个 模块:两套判据共用同一份分项词表,而它们问的问题不同(一个决定要不要花一次模型往返去 拆解、一个决定怎么切句),以前分居两处迟早会漂。 换话题按段判 - 以前整句一个向量:几段平均之后与重心「有点像」,混话题的消息**永远判不出换话题**, 于是事实那一节一直停在旧话题上。 - 现在每段各自与重心算余弦,off = 明显偏离(< 0.62)的段数:off >= 2 直接算换 (**一处是口误,两处就是换了话题**);off == 1 先记待定、下一轮再偏才算(单段消息 因此与从前逐条一致);显式说法落在哪一段就把重心置成**那一段**(不是整句均值——均值 会把新旧话题焊在一起,下一轮又判不准)。 验证 - cargo test --workspace:1048 条单元 + 48 条端到端全绿、0 失败、2 条按设计忽略; clippy --workspace --all-targets -D warnings 零告警;--test convention、--test docs 0 违规;cargo build --release -p rwork-app 通过。 - **反向验证两处**:把 for_recall 改成原样返回整句(分句召回失效)⇒ 那条接缝用例立刻红; 把漂移判据改回「只有连续两轮」⇒ 两条按段判的用例立刻红。 - 修两条**GUI 偶发**(同一类:等待方式,不是被测行为):pruning_orphans_from_the_behavior_page_removes_them 原先「渲染一帧就断言」,而它等的是阻塞池上的读库结果;clicking_new_chat_forgets_the_conversation_it_was_on 点击之后只 run_until_parked 一次就断言状态已清。两条都是**同一份代码单独跑绿、整包跑红**; 改成等条件成立(有上限)后连跑五遍全绿。 文档 - 新增 docs/04 §11「记忆召回与意图判定」——这条链(切分、合并、按段漂移、视图缓存、 失败路径)此前在详细设计里一个字都没有。 - docs/02 加 FR-9.9 / FR-9.10,FR-1.8 的判据指向新家;REQUIREMENTS.md §2.7 加两行; FEATURES.md 补用户看得见的两段;README.md 版本历史加 0.2.0。 - 行号引用:turn.rs 搬走 137 行 ⇒ 用「按原文重定位」的脚本改了 118 处,其中约 70 处是 **门禁完全看不见的短式引用**(同一个文件里只写 :行号);脚本这次把短式引用也支持了 (.verify/docs-drift/scan.py,一次性工具,不进版本库),方向记进 docs/09 的 F4。 - docs/05/06/07/08 的清单与结果按本次运行重跑(1048 / 48;清单 1128 行)。 - 版本:**0.2.0**(加能力:分句召回与按段判据是新的行为面)。 | 23 天前 | |
文档:交接补上第 49 批,两份结果报告的版本号改成 67c0e7f HANDOFF 的「最近一批」表加一行(含这一批的验证、反向验证与「没做到的」), docs/07 与 docs/08 的「被测版本」跟上这一版的提交号——附件已经按第 49 批重跑, 报告与附件必须是同一次运行的产物。 | 23 天前 | |
文档:交接补上第 49 批,两份结果报告的版本号改成 67c0e7f HANDOFF 的「最近一批」表加一行(含这一批的验证、反向验证与「没做到的」), docs/07 与 docs/08 的「被测版本」跟上这一版的提交号——附件已经按第 49 批重跑, 报告与附件必须是同一次运行的产物。 | 23 天前 | |
文档:实验运行器真实执行待办 + 换机器说明 + 原始报告入库 0.4.0 只做了 dry-run 规划;把真实执行器的 K1–K6 待办写进 docs/09,每个阶段都要求开关与消费者同时出现。工作要换地方,worktree 不能随仓库带走,所以在 experiments/README 写清 clone 后如何重建;原始 test-reports/effect-reports 复制到 experiments/reports/raw(约 3.2 MB),不再依赖旧机器上的 RWork-branches。顺带忽略 Python 缓存。 | 15 天前 | |
落盘件索引:写入移出界面线程,删会话时清理索引与上下文目录 索引原先在 FileSpill::spill() 里同步 INSERT,而 spill() 跑在界面线程上, 每次压缩都会多一次界面线程上的数据库往返。改为接收器只把 LocalRef 攒进 队列,build_request 返回后由调用方整批写库:对话走 Db::run,定时任务在 自己的后台线程上写;失败只记日志,不影响落盘与这一轮请求。 生命周期定案(docs/10 §10.2 问题三):删会话时连带删掉该会话的索引行与 .rwork/<会话>/context/ 目录;.rwork/pastes/ 是全局目录,文件保留,只删 该会话的 paste 索引行。purge 同样清索引行——local_ref 没有外键,不清就会 留下指向已删除会话的孤儿行。 新增用例覆盖:spill 只攒不写库、复用时索引去重、删会话只清自己的行与 目录、定时任务路径仍能写索引、purge 只带走旧会话的索引。 | 15 天前 | |
文档:本机裁决模型调研(许可 / CPU 实测 / 读数通路)与 H 组路线图 用户提出把 StartLux-Decision 这类「有类型的判定」模型内置进 RWork,随后限定 「非商业许可不适用,可以自己训一个或找一个常规的」。本批只做调研与实测, 产品代码一行未动。 - 许可先落地:StartLux-Decision 的权重是 CC BY-NC 4.0(非商业)→ 不能进分发物; 同类的 Intern-Decision(上海 AI Lab,0.8B/2B/4B)与 Mapika/decider 都是 Apache-2.0,底座 Qwen3.5 本身也是 Apache-2.0,「自训」的路是通的。 - CPU 实测(i9-13950HX / llama.cpp b11521 CPU 构建 / 16 线程):预填充 210–290 tok/s,0.8B 与 2B 只差约 15%(瓶颈在混合注意力的 CPU 核,不在权重体积); 成本≈状态 token÷300 → 300 token≈0.8 秒(够格每轮跑),3k≈13 秒(排除)。 多问题共享前缀才划算:同一份 3k 上下文上 3 题一趟 2.8 秒,3 次独立请求 3×12.8 秒。 - 读数通路跑通(这条是能不能做的关键):n_probs=64 的 top_logprobs → 按本题候选符号的 精确 token id 过滤 → 按该类型温度缩放;<decision> 在社区 GGUF 里仍是单 token(248077)。 判定过程不在权重里 → 读数与权重解耦,将来换权重或自训都不重做这一层。 - 质量只有三个中文单例(0.8B 给不出可用信号、2B 方向对),样本量 1 不能当结论 —— 所以 H1(50–100 条中文样本)是闸门,数据说不行就停在那里,不写代码。 落点:调研与实测进 docs/10-实验性质功能/(实验性质;附件是三个探针脚本与两份原始输出, 含一次口径修正前后的对照);路线图进 docs/09 的新 §6.5(H1–H6),汇总表、进度行与 附件 CSV 同步更新;新文档已挂进两处索引。 | 26 天前 |
RWork 软件工程文档集
按软件工程阶段分目录。每个阶段一个文件夹;每个文档的附件放在同级的
<文档名>-images/(图片、截图、示意图)与 <文档名>-files/(原始数据、脚本、清单)里。
| 阶段目录 | 文档 | 内容 |
|---|---|---|
01-架构设计/ |
架构设计文档 | 系统定位与约束、crate 划分、运行时视图、关键数据流、10 条架构决策记录(ADR)、质量属性、已知取舍 |
02-功能需求/ |
功能需求文档 | 范围与非目标、用户场景、13 组功能需求(带验收标准与验证方式)、非功能需求、需求追踪矩阵、未实现缺口 |
03-概要设计/ |
概要设计文档 | 模块划分与依赖、数据模型(表结构)、跨 crate 接口清单、四条关键流程、配置与迁移、错误处理 |
04-详细设计/ |
详细设计文档 | 逐模块的数据结构、关键函数签名与算法步骤、不变量与失败路径 |
05-单元测试设计/ |
单元测试设计文档 | 测试策略与取舍、分层结构、按 crate 的用例表、夹具、覆盖矩阵 |
06-端到端测试设计/ |
端到端测试设计文档 | 真实依赖边界、脚本化服务器设计、会话级界面测试、忽略策略、场景与判据清单 |
07-单元测试结果/ |
单元测试结果报告 | 环境、命令、逐 crate 结果(976 通过 / 0 失败 / 1 忽略)、一条已定位并修掉的偶发失败 |
08-端到端测试结果/ |
端到端测试结果报告 | 逐套件结果(42 通过)、界面渲染测试、三条真机测试的真实输出、界面截图、未覆盖项 |
09-后续任务清单/ |
后续任务清单 | 36 项待办(已完成 13 项),含仓库自己的 [未做]/[部分],带依据与验收标准;附件 CSV 可直接导入任务板 |
10-实验性质功能/ |
实验性质功能 | 尚未定案的设计(不是已承诺的需求)。当前三份:记忆系统与本地小模型、片段级组合泛化 Agent 完整设计、本机裁决模型调研与设计 |
10与其余九个不是同类:它们描述已经实现并验证过的行为,而10只描述提案。 引用10里的话时必须写明「实验性质」。两者的转换规则见10-实验性质功能/README.md。
阅读顺序建议
- 先看 02 功能需求 知道它做什么、不做什么;
- 再看 01 架构设计 知道为什么这样分层、有哪些硬约束与取舍;
- 要改代码,直接看 04 详细设计;
- 要动测试,看 05 / 06;
- 07 / 08 是当前质量状态的证据,全部数字都能在各自的附件里逐行核对。
关于证据
这套文档里的每条技术断言都指向真实的源码位置或真实的运行输出:
- 设计类断言给出
路径:行号; - 测试结果给出附件里的原始输出文件(
cargo test的完整 stdout); - 截图是真机截图,由
08-端到端测试结果/端到端测试结果报告-files/capture-window.ps1抓取, 且只抓 RWork 自己的窗口矩形(不抓整个桌面); - 拿不准的地方写「未验证」或「未覆盖」,不含推测性结论。