Skip to content

Commit b6336e0

Browse files
authored
Merge branch 'main' into kb/init-jiuwenswarm-feature-discovery-newinit-20261005-v2
2 parents 9a6a7ca + 4f84584 commit b6336e0

33 files changed

Lines changed: 4051 additions & 154 deletions

‎doc/architecture/SPEC/kb_service.md‎

Lines changed: 67 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# kb_service/ —— 规范
22

3-
<!-- verified-against: 2026-10-05 -->
3+
<!-- verified-against: 2026-10-06 -->
44

55
`知识服务核心:仓库配置、账本、outbox、CLI · refactor-status: new`
66

@@ -596,11 +596,15 @@ proof `basis` 缺省 supported,旧区块不改写。verified_absent 当前只
596596
判定时的编号源码正文须完整覆盖每个区块证明并匹配内容哈希,缺失区块还须绑定相同的
597597
重放证书;显式报告非 Codex 裁判身份则拒绝,未报告身份仍保留未知。
598598

599-
`--unlimited-subscription` 仅用于 knowledge-deepen/deepen,显式要求生成和裁判两角色
599+
`--unlimited-subscription` 用于 feature-discovery、modules、knowledge、knowledge-deepen
600+
及 widen/deepen 别名,显式要求生成和裁判两角色
600601
分别使用 Zcode GLM-5.3 与独立 Codex 的已认证订阅,拒绝其他模型协议、budget_usd 冲突
601602
及 configured fallback。预算上限 None 表示
602603
该模式,不使用无穷或零价格伪装;累计固定记账和原生调用用量仍记录,实际费用未报告
603604
保持未知。每次调用重新绑定已经检查的订阅传输,不启用 API 付费回退。
605+
modules/knowledge 的公共阶段预算仅在显式启用时改为 None;单独选择订阅生成器
606+
仍保留原记账上限。该模式绑定检查点身份,无此选项时的旧摘要保持不变;
607+
feature-discovery 与 knowledge-deepen 继续使用各自已有的检查点及身份实现。
604608

605609
### 2026-10-02 轻量认可、13 功能任务与轨迹留存
606610

@@ -628,6 +632,12 @@ Zcode 调度文件。默认启动间隔 15 秒、原生 429/account-1302 退避
628632
调度等待、开始、冷却与停止事件与原生输入输出一起脱敏保存于每个 worker 的
629633
`init/traces/attempts/`,最终关联唯一 model_call;未完成调用及未报告账单费用保持未知。
630634
监控读取错误记录诊断、沿用最后安全快照,不停止其它任务。
635+
发现目录合并后的并行深度批次使用 `--discovery-record` 显式传入原始完成记录。
636+
父任务复用正式阶段的前置门禁,检查真实 PR 已合并或原记录为 empty、done、repo/pin,
637+
以及基线中的目录与报告哈希;原 JSON 字节摘要进入批次身份,逐 worker 原样复制,
638+
不重写状态或外部原生档案路径。基线已有发现报告时,即使旧适配器未启用必需标记,
639+
也不能省略交接。worker 在模型初始化前再核对父任务绑定,记录变化或既有副本冲突
640+
拒绝恢复;没有发现报告的旧流程保持原行为。
631641
新增轻量区块的原生审计还须绑定实际 GLM-5.3 草稿的对应维度、正文和已展示引用,以及
632642
Zcode 身份和无 fallback 记录;附近的无关生成调用不能证明该区块的提取归属。
633643

@@ -817,12 +827,35 @@ infermatrix-copilot kb init REPO --stage feature-discovery --from-existing \
817827
```
818828

819829
`--dry-run` 保存目录和 PR 正文供审查;省略它时沿用 init 的发布权限与 PR 流程。
830+
已有知识库没有本地 skeleton 记录时,目录 PR 合并后可运行
831+
`kb init REPO --stage modules --from-existing --pin FULL_SHA`,从已合并的仓库
832+
入口、owner 路由及页面复核结构,再补充导航。随后使用
833+
`--stage knowledge --from-existing`;已有 modules 记录仍须完成并合并,
834+
已有 skeleton 记录的状态与合并门禁同样保留。该模式不生成历史阶段记录,
835+
不绕过发现目录的源码及哈希绑定;省略 `--from-existing` 时保留原阶段顺序。
836+
重复初始化若遇到已合并旧批次仍保留的发布分支,可在新批次启动前设置
837+
`KB_INIT_BRANCH_SUFFIX=<batch-slug>`,使用 `kb/init-REPO-STAGE-SUFFIX`;未设置时
838+
沿用旧分支名及检查点身份。后缀仅允许 1–40 位小写字母、数字和连字符,
839+
首尾不能为连字符;非法值在模型调用前拒绝。配置的后缀绑定输入身份及
840+
已准备发布的分支,恢复发布时不能更换;不会删除或覆盖旧批次分支。
820841
订阅模式明确使用 Zcode GLM‑5.3 提取、Codex 独立评审,不使用 Claude Code。
821842
默认并发上限为 13,两轮按顺序运行,轮内共享线程池;Zcode 请求沿用共享排期。
822843
`KB_DISCOVERY_GENERATOR`、`KB_DISCOVERY_JUDGE`、`KB_DISCOVERY_CONCURRENCY`
823844
覆盖发现阶段配置;提取与评审必须属于不同模型家族。`--budget-usd` 与
824845
`--unlimited-subscription` 互斥。未报告实际费用时保持未知,记账值不当作发票费用。
825846

847+
`KB_DISCOVERY_PACKET_CHARS` 设置每次提取组合的正文字符预算(整数 24000–192000,
848+
默认 24000);仅组合已有完整分片,不删除或截断输入。`KB_DISCOVERY_START_INTERVAL_S`
849+
设置 Zcode 初始启动间隔(有限数值 1–60 秒,默认 15 秒);原生 429/1302 仍触发共享
850+
冷却和自适应限速。较大的包可能仍有候选遗漏,不能据此声称所有功能已发现。
851+
`ZCODE_REASONING_LEVEL=low|high|max` 设置实际写入 Zcode 会话配置的推理强度,默认 max;
852+
Zcode 模型角色中的 `effort` 被 transport 忽略,不能代替该设置。网关追踪和原生 attempt
853+
均记录 `native_reasoning_level`;发现的输入身份、检查点及紧凑报告 `run_config` 同时绑定
854+
包大小、启动间隔和实际配置的推理强度。改变任何一项需新批次;旧检查点未记录这些
855+
配置时不能安全恢复,须保留旧档案并使用新的状态目录。
856+
返回恰好 24 个候选的分片记录 `candidate_limit_reached`,报告列出数量及任务 ID,
857+
作为候选可能遗漏的线索;本轮不自动拆分重采样,也不把饱和结果称为穷尽。
858+
826859
发现使用完整文件库存和分片,不把前 N 个文件、前 N 行当作全仓库。范围、排除规则、
827860
文档入口与功能分母按仓库配置;未知语言使用文本和入口线索,并保留未解析关系。
828861
没有文档不阻断源码轮,正式功能允许 `docs: []`。目录以外的疑似第一方代码列为
@@ -844,3 +877,35 @@ infermatrix-copilot kb init REPO --stage feature-discovery --from-existing \
844877
只能称“声明库存已处理”,不能证明所有功能均已发现。新目录的深度分母为 `N × 7`;
845878
历史目录的认可率独立保留,不能直接混用。功能发现、知识认可、生产文件结构覆盖、
846879
测试覆盖和真实 PR 评审效果是不同指标。
880+
881+
首次评审支持的生产源码新候选,进入目录前必须再经一次批量 Codex 目录边界审计。
882+
该审计展示完整的正式功能 ID、标题和 owner,不让正式功能与候选竞争 16000 字符预算;
883+
有剩余空间才展示相关候选。保留首次评审,另存真实原生审计回执、审计版本、种子哈希、
884+
候选/首次评审集合哈希及每项候选哈希。拒绝、通道失败、别名循环或未解决的重复标题/别名
885+
保持未知,不触发另一轮提取修正。跨候选别名只可归属最终已认可的正式或新增父功能。
886+
未发布的旧检查点缺少此审计时只补审,复用完整扫描和首次评审;prepared 产物缺少审计时
887+
阻止发布,保留原产物。已发布历史目录保持不可变。审计预算中断保存已完成批次,恢复时
888+
不重复已完成的审计。显式 `--retry-unfinished` 不重置已用完的三次内容修正,仅恢复通道故障。
889+
890+
## 2026-10-06 订阅模式基础知识并发
891+
892+
仅显式 `knowledge --unlimited-subscription` 启用基础知识工作池。
893+
`KB_KNOWLEDGE_CONCURRENCY` 默认为 13,允许 1–13,并纳入阶段输入身份;
894+
旧有有限预算模式保持顺序执行。每个 owner/feature 的 GLM 提取及原六个独立
895+
Codex 区块评审在同一 worker 中顺序运行,整个池同时最多 13 个模型调用。原生 Zcode 调用复用共享节流器,默认每 5 秒启动一次;
896+
`KB_KNOWLEDGE_START_INTERVAL_S` 可选有限正数且不超过 60 秒,同样冻结在输入身份中。
897+
worker 使用独立知识视图、阶段记录和订阅传输;唯一协调器保存检查点,
898+
按既定任务顺序追加精确获批区块,重新核对源码证据、正文摘要及原生评审记录,
899+
不会重新调用模型来组装。单项通道失败保留其真实状态和已认可成果,其余任务继续。
900+
恢复绑定原阶段输入身份与原生归档,不生成任何替代前置阶段记录。
901+
902+
新发现的正式功能优先使用已冻结发现报告中的完整源码行段,仍受提示词字节
903+
预算限制;不可完整展示的行段显式保留为缺口。引用必须落在实际展示的单个区间
904+
中,不以最大行号冒充中间未读取的内容。旧功能仍使用原来源选择及覆盖判定,
905+
已覆盖页不重新提取。预算预留/结算采用原子操作;订阅费用未报告仍为未知。
906+
907+
完成但尚未发布的订阅知识缓存及已准备发布的恢复也必须先做只读原生证明复核。
908+
复核绑定原输入身份、源码 pin、KB 基点、有效 owner、两个模型的完整归档及
909+
精确正文/证据。失败在任何记录或发布写入前拒绝,恢复原归档后可以继续同一
910+
已准备的发布;已发布的历史记录保持不变。已有订阅工作检查点的输入发生变化
911+
时须建立新批次,不能静默覆盖或重新抽取。

‎doc/architecture/SPEC/playbooks/PLAYBOOKS.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ success, steps[]`。
6363
pr-history → harvest-calibration),每阶段一个由人合并的 PR。只由 `kb init REPO --stage S` 运行,不经 `kb serve`,不写服务账本。
6464
`feature-discovery` 先提取文档功能基线,再遍历固定源码与测试库存;独立评审后的目录 PR
6565
合并后冻结,下游核对目录哈希与源码版本。新初始化模板启用发现;旧仓库保持兼容。
66+
`from_existing` 可用于发现、modules 与解释性知识:缺少本地 skeleton 记录时
67+
核验已合并入口与 owner 页面;已有阶段记录及发现目录仍保留完成和合并门禁。
6668
默认 GLM‑5.3 提取、Codex 独立评审,共享并发 13;支持 `from_existing`、
6769
`retry_unfinished`、`budget_usd` 或 `unlimited_subscription`。未知项不增加正式功能计数,
6870
原生追踪归档在 Git 外。详细契约见 [`../kb_service.md`](../kb_service.md)。

‎doc/architecture/SPEC/trace_store.md‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# trace_store.py —— 规范
22

3-
<!-- verified-against: 2026-10-04 -->
3+
<!-- verified-against: 2026-10-05 -->
44

55
`LOC ~500 · trace/1:Copilot 与 RB 共用的模型调用/工具调用/判定/结果记录 · refactor-status: stable`
66

@@ -18,6 +18,8 @@
1818
`native-events.jsonl`,保留原生会话、输出、错误与调度等待事件。结束时绑定唯一的
1919
`model_call` 回执及输出、用量、耗时与状态;journal 不是另一笔调用,不能重复计费。
2020
中断未完成的 journal 保留输入和已收到的事件,未报告用量及费用保持未知。
21+
对 Zcode,网关调用的 model 与 attempt.model 额外记录 `native_reasoning_level`,
22+
表示实际写入会话配置的 low/high/max;role.effort 不是该 transport 的有效推理设置。
2123

2224
- `bind_store(store)` / `current_store()`:把一个 store 绑定为当前进程/任务的采集汇(`tools.dispatch` 与
2325
`LLM.create` 两个 choke point 据此写 `tool_call` / `model_call`,失败调用记 `error` 且无 `outputs`);

‎eval/feature-discovery/README.md‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,20 @@ infermatrix-copilot kb init REPO --stage feature-discovery --from-existing \
2424
`KB_DISCOVERY_GENERATOR`、`KB_DISCOVERY_JUDGE`、`KB_DISCOVERY_CONCURRENCY` 可覆盖。
2525
`--budget-usd` 与不限订阅模式互斥。未报告实际费用时保持未知。
2626

27+
批量提取可设置 `KB_DISCOVERY_PACKET_CHARS`(24000–192000,默认 24000),完整索引
28+
分片和读取范围保持不变。`KB_DISCOVERY_START_INTERVAL_S`(1–60 秒,默认 15)只配置
29+
启动间隔,仍保留 429/1302 冷却。`ZCODE_REASONING_LEVEL=low|high|max` 控制实际原生
30+
推理配置;模型角色的 effort 后缀不会替代它。三项设置记录在检查点和报告的
31+
`run_config`;原生追踪另存 `native_reasoning_level`。配置变化或旧检查点缺少这些身份
32+
字段时使用新状态目录,保留旧轨迹。扩大包不会证明已发现所有功能,也不取消独立评审。
33+
恰好达到每包 24 个候选上限的任务另列数量和 ID,保留为潜在遗漏线索。
34+
35+
新增正式功能在首次认可后,还须经过一次目录边界审计。独立 Codex 同时看到所有既有
36+
功能的 ID、标题和 owner,并读取候选的真实源码引用;子能力、别名和实现补充归属父功能。
37+
首次评审及轨迹保留,边界审计另绑定版本、种子和候选集合哈希。重复标题/别名仍无法归属
38+
时保持未知,不增加分母。未发布旧批次可以复用扫描与首次评审补做这一步;内容修正已经
39+
达到三次上限的候选不会因显式重试再获得三次机会。
40+
2741
检查点绑定源码、范围、种子目录、索引版本、提示词与模型配置。成功分片、评审和待审修正稿可复用;预算中断不标为完成。竞争启动同一批次不会覆盖检查点。单项最多三次修正;通道故障保持未知,不重做已成功的提取。仅有文档的未知声明不通过重复改写变成实现证明。
2842

2943
紧凑摘要写入 `eval/feature-discovery/`。完整输入、原生输出、工具事件、配置、用量和修正过程留在 Git 外。恢复时核验每个完成分片的原生归档,包括返回空候选的分片。Zcode 保存原生流式事件;Codex 保存 CLI 结束后按原顺序转发的事件。

‎eval/knowledge-depth/README.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ JiuwenSwarm explicitly selects `semantic_depth.acceptance_mode: lightweight`; ot
7373

7474
The campaign runner defaults to 13 isolated workers and accepts `--workers 13`. Each worker owns its checkpoint, model gateway and trace archive. The parent builds one immutable source/test/document index bound to the source pin, policy and index version. Initial extraction packets offer up to 24 KB of source/test lines, 8 KB of relevant document lines and 4 KB of existing knowledge; subsequent corrections retrieve evidence for the specific gap. Format, references, hashes, receipts and counts are checked incrementally; comprehensive audits, retrieval acceptance and full CI run at delivery.
7575

76+
For a catalog produced by feature discovery, pass `--discovery-record /absolute/path/to/init/<repo>/feature-discovery.json` to `run_depth_campaign.py`. Use the original completed `published` record after its PR merges, or the original `empty` record when the catalog was already current. The native prerequisite gate checks the real PR state, source pin and exact catalog/report hashes at the campaign baseline. The campaign binds the record's byte hash and copies its exact bytes into every worker before dispatch; native trace paths stay unchanged outside Git. A baseline containing a discovery report requires this explicit handoff, including repositories whose older manifest did not require discovery. Changed records or mismatched worker prerequisites require a fresh campaign; statuses and prerequisite records are never synthesized. Legacy baselines without discovery retain their existing behavior.
77+
7678
Each missing facet receives an initial attempt and at most three corrections. The round is saved before dispatch, including review-only retries. Restarting or `--retry-unfinished` does not reset this lifetime limit. Passed facets are frozen; failure in another facet does not discard them. After exhausted repairs, the facet remains unknown with its reason. Creating the campaign's STOP file stops new dispatch and drains active calls; the supervisor records progress in `drain.json`.
7779

7880
Validation knowledge labels runtime assertions, source-text assertions, helper-unit assertions or existing documented manual checks. Manual entries include their documented action and expected observation and explicitly say this batch did not execute them. Missing tests never become verified absence, and knowledge about assertions does not mean tests passed.

0 commit comments

Comments
 (0)