Skip to content

feat(choro): M1——仓库地志面板(浏览)+ 三个只读工具 + 关键词检索 - #570

Merged
modusensus merged 3 commits into
mainfrom
feat/chorography-m1
Nov 5, 2026
Merged

modusensus merged 3 commits into
mainfrom
feat/chorography-m1

Conversation

@modusensus

@modusensus modusensus commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

概要

chorography(仓库地志)M1 档:消费面第一批——面板浏览、三个只读模型工具、关键词检索。叠在 M0(#567)之上,base 设为 feat/chorography-m0,M0 合并后 retarget 到 main。

内容

  • choro_edges 表补口(P8):spec §7 的 choro_module_map 要依赖边,M0 schema 漏了。replaceChoroGraph 顺手多删多插一段(跨模块聚合、同向 weight),幂等语义不变。
  • 读侧 src/wiki/queries.js:仓库列表 / repo 解析(id 或显示名,单仓自动收敛、多仓歧义带清单)/ 模块图 / 页面 / 分节检索。slug 只从 DB 白名单解析——路径拼装零用户输入,../etc/passwd 形态的 slug 走未知页 404;正文永远读仓库磁盘的 MD(真源纪律 P12),盘上缺页如实报 page-missing。
  • 路由四条:/choro/repos|modules|page|search,policy 全 open(宿主围栏统一鉴权),chorographyEnabled 关着统一 409 disabled([人格] default 卡无条件进所有没建卡的身份;面板「注入生效文本」是前端另拼的一份 #497「路由挂着、逻辑层挡」先例;queries 缺装配才 503)。SECURITY.md 双语开放读清单已同步——security-doc.test.js 双向比对,漏一条 CI 就红。
  • 工具三个:choro_search / choro_read_page / choro_module_map,hiddenTools 闸默认不在场(与 memory_organize 同款反向语义),零写工具(红线 3)。createTools 加 choro 参数,与 service 刻意分开传(所有权模型相反)。
  • 面板:第二个宿主座位 dsh-mneme-wiki(sidebar.panellist + main 同名对,挂在 feat(panel): 记忆库搬进宿主原生面板位(sidebar.panellist + main),老宿主保留回落 #562 的 inject 块内),左模块树 / 右正文 / 顶部检索,只读 MD 渲染(React 文本节点天然转义,零 innerHTML);样式全走既有语义色层,不新增渲染根。座位无条件注册(P11:inject 同名二次注册的 cordis 语义没验证过,不赌),开关关时内容层渲染空态,409/503 各有文案。
  • 开关:chorographyEnabled opt-in 默认关(工具描述常驻 = 新增上下文成本,旗标计数锁 111→112);刻意不进 LIGHT_MODE_OFF——零每轮注入物、零热路径挂载,轻量档关它省不出任何东西(config.js / CONFIGURATION.md 注释写明)。

验证

  • 新增 13 例:wiki-queries 4 / wiki-tools 4 / wiki-api 4 / client 座位锁 1;行为锁「panel seats」口径更新为两对座位(记忆 + 地志,各自 id/key 逐字同名、清理同扫帚)
  • 全量 npm test 2770 pass / 0 fail / 1 skipped;check-sync 91 文件一致

不在本批次

M2(T1 headless 生成轮 + 面板生成入口,前置 V1 实测:桌面版 headless 会不会卡)、M3(开局注入提纲 + /choro 指令 + 向量检索)。

Summary by CodeRabbit

  • 新功能
    • 新增“仓库地志”,可将代码仓库整理为可浏览的模块地图和 Markdown 页面,并支持关键词搜索。
    • 新增命令行入口,可预览生成结果,或将页面与索引写入仓库。
    • 面板浏览、只读工具和只读查询接口默认关闭,可通过设置启用。
    • 生成页面时保留人工编写的内容,并支持按计划文件调整扫描范围和页面配置。
  • 文档
    • 补充功能设计、实施计划、配置说明及安全模型相关文档。

消费面第一批(spec §7 / §10 M1,实现计划 P8–P12):
- store.js:choro_edges 表补口(module_map 要依赖边),replaceChoroGraph
  写边(跨模块聚合、幂等不变)。
- src/wiki/queries.js:读侧五函数(仓库列表 / repo 解析 / 模块图 / 页面 /
  分节检索),slug 只从 DB 白名单解析,正文永远读磁盘真源。
- src/api.js:/choro/repos|modules|page|search 四条路由,policy 全 open,
  chorographyEnabled 关着统一 409 disabled(#497 先例);SECURITY.md 双语
  开放读清单同步。
- src/tools.js:choro_search / choro_read_page / choro_module_map 三个只读
  工具,hiddenTools 闸默认不在场(chorographyEnabled 反向语义,同
  organizeEnabled);createTools 加 choro 参数,与 service 刻意分开。
- config/settings:chorographyEnabled opt-in 默认关,刻意不进
  LIGHT_MODE_OFF(零每轮注入物、零热路径),旗标计数锁 111→112,
  CONFIGURATION.md 补行。
- lib/client.js:第二个宿主座位 dsh-mneme-wiki(panellist+main 同名对),
  WikiMainPanel 左树右文 + 顶部检索,只读 MD 渲染(零 innerHTML),
  409/503 各有各的空态;座位清理并入 #562 的同一把扫帚。
- 测试:wiki-queries 4 / wiki-tools 4 / wiki-api 4 / client 座位锁 + 行为锁
  更新为两对座位;全量 2770 pass / 0 fail / 1 skipped。
@coderabbitai

coderabbitai Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Explain Change →

Caution

Review failed

The pull request is closed.

Walkthrough

此 PR 新增仓库地志 T0 生成流程、数据库存储和独立 CLI,并加入只读查询、API 路由、模型工具及面板。chorographyEnabled 默认关闭,用于控制工具注册和路由访问。

Changes: 仓库地志

Layer / File(s) Summary
计划配置与图数据存储
dsh-mneme/src/wiki/plan.js, dsh-mneme/src/store.js, dsh-mneme/lib/wiki/plan.js, dsh-mneme/lib/store.js, dsh-mneme/test/wiki-plan.test.js, dsh-mneme/test/wiki-store.test.js, dsh-mneme/package.json, docs/specs/*
新增 .chorography/plan.yaml 解析和校验、指纹计算,以及仓库、模块、页面、claims、向量元数据和依赖边的存储接口。整仓图数据在事务中替换。
扫描、划分与 T0 页面生成
dsh-mneme/src/wiki/scan.js, dsh-mneme/src/wiki/partition.js, dsh-mneme/src/wiki/render.js, dsh-mneme/src/wiki/t0.js, dsh-mneme/lib/wiki/*, dsh-mneme/bin/dsh-mneme-choro.mjs, dsh-mneme/test/wiki-*, dsh-mneme/CHANGELOG.md, docs/plans/*
T0 扫描仓库文件并解析导入图,划分模块后生成确定性 Markdown 骨架页和索引。dry-run 不写入;apply 将页面限制在 .chorography/,更新数据库和 state.json,并保留人工标记块。新增 CLI,默认执行 dry-run。
只读查询、API 与工具
dsh-mneme/src/wiki/queries.js, dsh-mneme/src/api.js, dsh-mneme/src/tools.js, dsh-mneme/src/index.js, dsh-mneme/lib/wiki/queries.js, dsh-mneme/lib/api.js, dsh-mneme/lib/tools.js, dsh-mneme/lib/index.js, dsh-mneme/test/wiki-api.test.js, dsh-mneme/test/wiki-queries.test.js, dsh-mneme/test/wiki-tools.test.js, SECURITY.md
新增仓库解析、模块图、页面读取和关键词搜索查询。四条 /choro/* 路由提供只读访问;三个只读工具仅在查询对象已装配且开关为 true 时注册。路由在开关关闭时返回 409。
面板与开关接入
dsh-mneme/lib/client.js, dsh-mneme/src/config.js, dsh-mneme/src/settings.js, dsh-mneme/lib/config.js, dsh-mneme/test/client.test.js, dsh-mneme/test/api.test.js, dsh-mneme/docs/CONFIGURATION.md, AGENTS.md
新增仓库地志面板座位、模块树、页面显示和搜索结果交互。新增默认关闭的 chorographyEnabled 配置,并补充面板座位及配置行为测试和文档。

Estimated code review effort: 4 (Complex) | ~60 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant WikiMainPanel
  participant ChoroAPI
  participant createChoroQueries
  participant ChoroStore
  participant RepoMarkdown
  WikiMainPanel->>ChoroAPI: 请求仓库页面
  ChoroAPI->>createChoroQueries: 按 repo 和 slug 查询页面
  createChoroQueries->>ChoroStore: 查找登记页面路径
  createChoroQueries->>RepoMarkdown: 读取登记路径的 Markdown
  RepoMarkdown-->>createChoroQueries: 返回页面正文
  createChoroQueries-->>ChoroAPI: 返回页面数据
  ChoroAPI-->>WikiMainPanel: 返回只读页面响应
Loading

Possibly related PRs

  • slow-stack/mneme#567:该 PR 提供 T0 页面、choro_* 表和 .chorography/ 数据契约,本 PR 的查询面使用这些数据。
  • slow-stack/mneme#562:该 PR 建立面板座位注册和清理机制,本 PR 新增的 wiki 面板复用该机制。
  • slow-stack/mneme#544:该 PR 更新开放读取路由的安全清单校验,本 PR 新增 /choro/* 路由并更新该清单。
Merge Risk: Moderate · up to ce8d7

Resolve filesystem containment, generation consistency, human-content preservation, and tool error handling before merging. The browsing feature defaults off, but explicit generation and enabled browsing still expose these failure paths.

- [ ] Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Warning

Some tools did not complete. Review the errors below.

ast-grep (0.51.1)

dsh-mneme/lib/client.js

ast-grep timed out on this file

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@modusensus
modusensus changed the base branch from feat/chorography-m0 to main November 5, 2026 00:40
@codecov

codecov Bot commented Nov 5, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 94.02655% with 27 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
dsh-mneme/src/tools.js 88.97% 14 Missing ⚠️
dsh-mneme/src/api.js 91.22% 10 Missing ⚠️
dsh-mneme/src/wiki/queries.js 98.57% 2 Missing ⚠️
dsh-mneme/src/wiki/t0.js 95.83% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant