@sanqianx/project-knowledge 5.0.16-rc.1 → 5.0.16-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/README.md +5 -0
- package/_modules/knowledge-engine/README.md +2 -2
- package/_modules/knowledge-engine/package.json +1 -1
- package/_modules/knowledge-engine/src/retrieval.js +119 -24
- package/_modules/knowledge-engine/src/runtime/knowledge-promotion.js +80 -24
- package/_modules/knowledge-engine/src/runtime/knowledge-retrieval-service.js +8 -6
- package/_modules/knowledge-engine/src/runtime/markdown-knowledge-indexer.js +105 -64
- package/_site/_test/agent-capture-mcp-ui-test.js +67 -0
- package/_site/_test/agent-capture-ui-test.js +2 -1
- package/_site/_test/integration-adapters-test.js +7 -1
- package/_site/_test/integration-runtime-binding-a2-test.js +566 -0
- package/_site/_test/integration-runtime-binding-a3-test.js +227 -0
- package/_site/_test/integration-runtime-binding-test.js +473 -0
- package/_site/_test/native-context-integrations-test.js +1 -1
- package/_site/_test/release-version-sync-test.js +12 -1
- package/_site/lib/integration-installer.js +325 -8
- package/_site/lib/module-bridge.js +6 -2
- package/_site/scripts/sync-product-content.js +1 -1
- package/_site/scripts/sync-release-version.js +9 -5
- package/_site/scripts/verify-product-runtime.js +1 -1
- package/docs/leader-glm-workbench-playbook.md +87 -0
- package/docs/release-5.0.16-acceptance.md +53 -0
- package/module-runtime-manifest.json +29 -28
- package/package.json +5 -3
- package/plugins/project-knowledge/.claude-plugin/plugin.json +1 -1
- package/plugins/project-knowledge/.codex-plugin/plugin.json +1 -1
- package/plugins/project-knowledge/.mcp.json +7 -6
- package/plugins/project-knowledge/scripts/mcp-launcher.cjs +78 -0
- package/ui/product.js +3 -1
- package/vendor-manifest.json +8 -8
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# 5.0.16 修复与验收记录
|
|
2
|
+
|
|
3
|
+
## 当前结论
|
|
4
|
+
|
|
5
|
+
2026-10-14 开始执行本轮计划。状态:**实施中,未完成系统验收,不更新 latest**。
|
|
6
|
+
|
|
7
|
+
运行基线:知识库 `5.0.16-rc.1`、Workbench `0.13.2-rc.10`、vendored 引擎 `0.2.7-rc.5`。发布 stable 标签仍为 `5.0.14`。
|
|
8
|
+
|
|
9
|
+
基线源码:外壳 `669f9ea`,引擎 `41726f5`。用户已有 desktop、原型和其他未提交文件不属于本轮。
|
|
10
|
+
|
|
11
|
+
## 已有真实结果
|
|
12
|
+
|
|
13
|
+
- `8ce45df8` 的公开重试已晋升、索引成功;此次重新调用了分析模型,不能宣称复用原分析。引擎的向量片段确认仍待修复验收。
|
|
14
|
+
- Leader 直连已安装 MCP Node 入口,在约 555ms 完成 initialize,并列出六个工具、解析当前注册项目。此结果不等于 Codex 原生接入通过。
|
|
15
|
+
- A1 复现旧 npx 启动约 1380ms 后因缓存缺 `package.json` 而退出,没有 initialize 回应。用户缓存未被手工清理。
|
|
16
|
+
- Leader 重跑 Workbench:Node 22、24 各 299 项通过;vector-hub:两版本各 53 项通过。仅属于当前源码回归,不代表后续候选包通过。
|
|
17
|
+
- 向量片段修复 `4aa4d49` 的真实 embedding 固定留出集复测:Recall@5 为 1、MRR 为 0.9667、无答案准确率为 1,报告 `retrieval-quality/real-vector-1791946256519.json`。这是源码与合成标注语料结果,不能替代候选包及另一台电脑私有语料验收。
|
|
18
|
+
- 同一源码真实向量性能复测:8 项目、1000 文档,热查询 P95 为 1435ms(此前约 1074ms),低于 3000ms 门禁但约慢 34%;报告 `retrieval-quality/performance-1791955352489.json`。不将文本降级冒称向量性能。
|
|
19
|
+
- 外壳首次新回归为 62 通过、66 失败;主源码依赖目录在带 `node_modules` 联接的临时工作树清理后为空。首失败 `plan16-shell-a2-source22-1791955290273.json` 保留,按锁文件恢复依赖后必须重新串行回归,不能计为通过。实际全局安装版与用户 v5 知识未被该清理针对。
|
|
20
|
+
- 原锁文件 `npm ci` 恢复 309 个依赖,未改锁文件;复测 Node 22 为 127/128 通过,`release-version-sync-test` 仍断言旧 npx 参数(新本地启动契约尚未补覆盖)。另以合成标记证实 `PROBE_CRASH` 兜底直接回显异常文本,待脱敏回归,未用真实秘密参与测试。
|
|
21
|
+
- 外壳修复 `0f2310f` 已推送,当前安装版 rc.1 的真实 Hook 自动分析、晋升、索引完成:12,833 字节变化文档、39 条该文档的非空 1536 维向量,存于 D 盘 `.indexes`。Leader 已检索到变化文档及模块说明,引用匹配该 commit;证据 `glm-plan-5.0.16/root-0f2310f-real-maintenance.json`。这是当前运行版闭环,不是下一候选包或原生客户端二次开发验收。
|
|
22
|
+
- 事件桥首轮两版本各失败两个用例:Leader 把临时目录放入 Git 工作树,使普通目录继承父仓库身份。保留首失败,改用 D 盘仓库外测试目录;Node 24、22 串行复测各 30 个文件通过,未修改产品行为或测试断言。
|
|
23
|
+
- Leader 在旧安装版 Workbench `event-stream` 复现长会话重连失败:旧游标为 5、压缩后回放两条,再产生一条新消息,实际送达为 0 而应为 1。修复 `840b787` 保留事件高水位,增加不占序号的 resync 控制消息,并持久化旧历史转换边界;源码及独立 npm 模块验证已通过,当前运行实例尚未升级。
|
|
24
|
+
- Workbench `0.13.2-rc.11`(`ac450b0`)已发布 `next`。Leader 完整回归 Node 22、24 各 352/352;官方独立 prefix 下载的 96 个发布文件与源码逐字节一致,integrity、gitHead、包内 HTTP/UI 与恢复测试通过。引擎 `0.2.7-rc.6` 的 40 个发布文件同样通过两版本独立下载验证。
|
|
25
|
+
- 验收脚本修复 `88d5a44` 已提交并推送:Node 版本取实际子进程,源码和官方安装身份强制绑定,原型及无关桌面修改不计为运行时变化。引擎含验收脚本回归 Node 22、24 各 144/144;这项不改变已发布 rc.6 的运行文件。
|
|
26
|
+
- vector-hub 原 rc.4 发布内容正确,但 npm gitHead 指向旧提交。版本修正 `52d7123` 已推送并发布 `1.0.8-rc.5` 至 `next`,Leader 两版本各 53 项通过;独立下载验收进行中,不放宽提交身份检查。
|
|
27
|
+
- GLM 首批新增测试使用原生 `Write`,不符合派发的补丁工具约束。Leader 显式中止两轮,保留文件和会话,并提供本机已有补丁工具路径;原会话续跑均收到 accepted 回执。此中止属于流程纠正,不是 runtime-timeout,也没有重启知识库或修改默认模型。
|
|
28
|
+
- A1 测试因继承 `KB_DATA_DIR` 在用户 Workbench 数据目录误建一份 237 字节运行绑定。Leader 核对字段、创建时间、无链接及安装版不存在启动器后,只将该测试文件可恢复移动到 `glm-plan-5.0.16/A1/unintended-user-binding.json`,前后 SHA256 相同;知识、历史、凭据与客户端配置未改。A2 必须覆盖测试环境隔离与只读状态检查。
|
|
29
|
+
|
|
30
|
+
## 执行与待验收矩阵
|
|
31
|
+
|
|
32
|
+
| 项目 | 状态 |
|
|
33
|
+
|---|---|
|
|
34
|
+
| A1–A3:本地 MCP 入口、版本升级、独立启动/信任诊断 | A3 已交付探测脱敏、入口 realpath 校验、两终端分支知识根目录接线及发布同步契约;Leader Node 22、24 独立完整各 137/137(含桌面浏览器)通过。原生客户端仍待新包验收 |
|
|
35
|
+
| B1–B5:向量范围候选、位置和占位校验 | 向量修复 `4aa4d49`、占位修复 `0218d55` 已提交并推送,引擎 `0.2.7-rc.6`(`bbb5ddd`)已发布 npm `next`;Leader 源码两版本各 118 项通过,独立 registry 下载的 40 文件逐字节与 integrity 校验、两版本启动及原 532 staging 只读校验通过。首次下载未可见失败保留;真实 532 重试须等整产品升级 |
|
|
36
|
+
| `5c07a801` 重试与后续 FIFO | `5c07` 与 `7506` 已晋升、索引成功;`532d` 因合法 UI placeholder 术语误判失败。原产物已通过新引擎只读校验;整产品升级后只执行一次公开重试,再观察后续提交顺序恢复 |
|
|
37
|
+
| Claude/Codex/ZCode 原生知识与记忆送达 | 待新包实测;OpenCode 仅验证既有兼容能力 |
|
|
38
|
+
| 固定留出集质量、真实向量性能 | 待新修复版本复测 |
|
|
39
|
+
| Workbench 长历史压缩后的游标、增量与重连 | C5 已修复转换落盘后二次恢复遗失旧边界。Leader Node 22、24 完整各 352/352;rc.11 独立下载验证通过。保留 C3 临时文件锁首失败、C4 的 340 项部分回归及后续 343 项完整重跑;整产品浏览器实际刷新待验收 |
|
|
40
|
+
| Workbench 开发 Agent 的知识库数据根目录 | C2 已交付四客户端 spawn 环境映射,Leader 在 Node 22、24 独立各 8/8(`plan16-workbench-c2-leader*`);相关完整回归存在 EPERM 首失败,真实安装版仍待验收。外壳传根目录接线已纳入 A3;GLM 提及的 C2 独立证据目录未定位到,不以其口头路径作为通过证据 |
|
|
41
|
+
| 网页、并发、故障、重启与二次开发闭环 | 待当前版本证据 |
|
|
42
|
+
| 官方 npm 候选下载及现有 v5 保真升级 | 待新候选 |
|
|
43
|
+
| 升级与汇总脚本的版本门禁 | D3 强制官方 identity、源码提交/引擎 40 文件绑定,支持正式包先验收 next 再更新 latest。Leader Node 22、24 各 144/144;保留 D1/D2 误判首失败,实际升级和汇总待执行 |
|
|
44
|
+
| 正式包下载、latest、日常更新与远程 Git | 待全部核心门禁通过 |
|
|
45
|
+
| GLM 协作手册与恢复会话实测 | 文档初稿已建立,待后续操作校验 |
|
|
46
|
+
|
|
47
|
+
## 证据与限制
|
|
48
|
+
|
|
49
|
+
本机证据根为 `D:/SanQian.Xu/knowledge-engine/.agent-state/acceptance/`。本轮任务记录在 `glm-plan-5.0.16/`,独立测试收据在 `system-regression/plan16-*`;文件中不包含模型凭据。
|
|
50
|
+
|
|
51
|
+
发布判断必须绑定准确版本、模块身份、integrity 和源码提交;不能用旧版本成功报告代替新包。首次失败与后续复测分别保留,不改写为全绿。
|
|
52
|
+
|
|
53
|
+
另一台电脑与私有语料尚无本轮验收证据。只做网页与正常桌面视口,不包含 Electron、窄屏矩阵或 Windows 安装包。
|
|
@@ -2,26 +2,27 @@
|
|
|
2
2
|
"schema": "project-knowledge/module-content/v1",
|
|
3
3
|
"productFiles": {
|
|
4
4
|
"ui/index.html": "b9055cf2ff40a11286eb65f3a990284bbcc245685f60e210a33999a41fc2055e",
|
|
5
|
-
"ui/product.js": "
|
|
5
|
+
"ui/product.js": "70bf5518dd53bb042d894dfdb2bb74df5b9b44ccb4fa5d389faca5515e92687d",
|
|
6
6
|
"ui/product.css": "0c31d4937780b3a277689b4619208ad0e5dc59a84d7e27fc16b5f1815d59b47c",
|
|
7
7
|
"ui/favicon.svg": "c48be946b224112ebb0238b44263f7a61bda31e531afa895c2e9801c0ff24f32",
|
|
8
8
|
"plugins/project-knowledge/hooks/claude.json": "d61510327e3e1facbb4c645228e9f50cad05a88b33d80c4c22e5ba9f8b9f5359",
|
|
9
9
|
"plugins/project-knowledge/hooks/codex.json": "216e03c07295606ef6ebb2c4f669ad0d790b5e7c4f3f34600488033db75e4239",
|
|
10
10
|
"plugins/project-knowledge/scripts/context-hook.cjs": "da666153ad5723592cce42d25337ae649f7d93e43fab76b3c6d1263933de063f",
|
|
11
|
-
"plugins/project-knowledge
|
|
12
|
-
"plugins/project-knowledge/.
|
|
13
|
-
"plugins/project-knowledge/.
|
|
11
|
+
"plugins/project-knowledge/scripts/mcp-launcher.cjs": "7c68830b5c73eb53ef030756a4de33987f7eab6b1a6cc15602835aac3f954893",
|
|
12
|
+
"plugins/project-knowledge/.claude-plugin/plugin.json": "f0e23e5dca4605c13bc4628e150d56c348a4aa1d96be4a89d23c375cb02c242f",
|
|
13
|
+
"plugins/project-knowledge/.codex-plugin/plugin.json": "72c174115ac729301b8b2d8c82ef89092fcf41491cd01cbdf26cfb4bd767a4e7",
|
|
14
|
+
"plugins/project-knowledge/.mcp.json": "d815fedf2cf520e0cd0ee2d325f26438931f80de605d45c9945efa78531ab4ec"
|
|
14
15
|
},
|
|
15
16
|
"modules": {
|
|
16
17
|
"terminal": {
|
|
17
18
|
"name": "@sanqianx/claude-ai-workbench",
|
|
18
19
|
"installName": "claude-ai-workbench",
|
|
19
|
-
"version": "0.13.2-rc.
|
|
20
|
+
"version": "0.13.2-rc.11",
|
|
20
21
|
"files": {
|
|
21
22
|
"LICENSE": "c1b9df1275e769f3dbab000d1e457a2d4b0f28eb5da6c77e48dc37eeba202ed7",
|
|
22
23
|
"README.md": "7227e5dccce535f48d7e42c5f72c96f3d659d3a664476c0b304f461315a424c3",
|
|
23
24
|
"apps/agent-terminal/app.css": "ede36d9fdb1f7036e3453134c0d5a86197bfc30e3ac547a24b4fc1d17847277e",
|
|
24
|
-
"apps/agent-terminal/app.js": "
|
|
25
|
+
"apps/agent-terminal/app.js": "e666644cab48e2e355d3d31e33931bd5050939fd3acd1aef9860c006283c3741",
|
|
25
26
|
"apps/agent-terminal/index.html": "cdffd5c535c81f56aba70ec5dd3bc060f59ec2abcdc8676b79c8f327126be605",
|
|
26
27
|
"apps/ai-profile-settings-host/index.html": "bc158f68954506d2b8e43c690f28dbe931eff9a02b1524855ac17e74ea4df736",
|
|
27
28
|
"apps/ai-profile-settings-host/page.css": "8b75cbf7f1ea5aaa92f2889390720ece310a8fd4b9ca38c890fa447d4323a557",
|
|
@@ -33,20 +34,20 @@
|
|
|
33
34
|
"apps/minimal-test-host/README.md": "fa73136f4ee3865c2d91eb97b2e8c03679aa4688e44c1e1c8ec6e27d604b0de5",
|
|
34
35
|
"docs/sdk/FILE_LAYOUT.md": "17882f96505c8161bfb66876684b9d2d3f50021a111b8b844502d3cb4e97870a",
|
|
35
36
|
"docs/sdk/INTEGRATION.md": "d4c0c80d2d2fc610205102d703a429bfaa20f9f3a48f1718f5bab02ee90138df",
|
|
36
|
-
"docs/sdk/openapi.yaml": "
|
|
37
|
+
"docs/sdk/openapi.yaml": "a686aba65e07f314b87326e3d15b824dd4676ebbd0d1d733f593dab10d07a655",
|
|
37
38
|
"docs/sdk/README.md": "7ab591d39c36a3b84cfdf487ff567040ec453975f3ef0fba86dc822094667b61",
|
|
38
|
-
"package.json": "
|
|
39
|
+
"package.json": "e2ca3c4f2595c56eb42e9cb4311487c47d94eefb1187197797cf4128c41f420e",
|
|
39
40
|
"packages/client/index.d.ts": "fb66b7b21ac936cddcb7f74543cf4f3bb7e80c169534ec249ab8ef2356224162",
|
|
40
|
-
"packages/client/index.js": "
|
|
41
|
-
"packages/client/package.json": "
|
|
41
|
+
"packages/client/index.js": "a28fa3c38c13e8448cff4d3e0ec95ec2d541d5e57de4b5564fa2a65b2ae892c9",
|
|
42
|
+
"packages/client/package.json": "b2ddf3f1bf3c6f11ddddeacd82be16cbca576bf9427c40c9edb3861f7ef30aee",
|
|
42
43
|
"packages/client/README.md": "342dff9b1dcbc85fccc9b980ed3e4e455aa71133af1d0805b8431ea2ac564ef8",
|
|
43
|
-
"packages/contracts/index.d.ts": "
|
|
44
|
-
"packages/contracts/index.js": "
|
|
45
|
-
"packages/contracts/package.json": "
|
|
44
|
+
"packages/contracts/index.d.ts": "157f3cd80f4b27b53c63b2de41575d8332028be2e7491c4730e44b7302bd4dab",
|
|
45
|
+
"packages/contracts/index.js": "5eeb195d9c4cc54dab064510684ae1350d325fbaf47ff824dad4a04a5bb67d11",
|
|
46
|
+
"packages/contracts/package.json": "5a44115e2283e3a36a625a9ce6f3c38dfbc45d5b69b9c859dbefe735974ca407",
|
|
46
47
|
"packages/contracts/README.md": "44d83a3cc508cec6c5c20dfa1f2c08d5ea03e3afb2853639fdc0a9cc8eb5b9c8",
|
|
47
48
|
"packages/core/index.d.ts": "c95b24a13f8aeeb128497833cf298790563baca6036ea5d29a9d8daff53199d7",
|
|
48
|
-
"packages/core/index.js": "
|
|
49
|
-
"packages/core/package.json": "
|
|
49
|
+
"packages/core/index.js": "825640d0edc7dd130f22da1f580d2cda355566a40b0b36e42e5f38909605bbfa",
|
|
50
|
+
"packages/core/package.json": "ffb58104bc51633dd048ad63295b766af2eabc4932b4d4c0916d5d377267e9b8",
|
|
50
51
|
"packages/core/README.md": "e222c546104a168f1038d95c6c4efb8e5603edd6145ab2cab79cab977fb710e5",
|
|
51
52
|
"packages/server/bin/agent-terminal-server.js": "043dff4d76e3fd213b666a55e581ed1e72f9e5b8de6cb798fbf42bd39ed26861",
|
|
52
53
|
"packages/server/bin/claude-workbench-server.js": "b03c730b6d86faf6974afea26c74109d59b1bbc1ecc656c1d6270258708694ac",
|
|
@@ -56,21 +57,21 @@
|
|
|
56
57
|
"packages/server/lib/agent-discovery.js": "7fa15684329fd287cd0869183808311bf975263255425562f2896bc2c1a69e7c",
|
|
57
58
|
"packages/server/lib/agent-registry.js": "ef14c8ab8f5af56499a0cf1f7167a9495fc1745ef190e5d7b0298659a04a15ff",
|
|
58
59
|
"packages/server/lib/attachment-store.js": "5c92c45c7ec5a8b0ee9c14edb42eeda5fce93d8e654718dcd75c12e3f0bfa6e7",
|
|
59
|
-
"packages/server/lib/bridges/app-server-bridge.js": "
|
|
60
|
-
"packages/server/lib/bridges/opencode-server-bridge.js": "
|
|
60
|
+
"packages/server/lib/bridges/app-server-bridge.js": "c860c6b9e0f63ead9f4f289dad1fe05fc93314e89b29cdf7722fba0472c9af11",
|
|
61
|
+
"packages/server/lib/bridges/opencode-server-bridge.js": "23b6065599bece60cc8d3d4779be90d62a6936ec437424287cc87325d250e02b",
|
|
61
62
|
"packages/server/lib/capture-settings-store.js": "eb18885d7bedd3e353287dd7d1cf81e815e5d65d5d82170aa8fe5506a03de8bd",
|
|
62
63
|
"packages/server/lib/cli-session-recovery.js": "e66dc0ad83af18841bf3a598bb27932af42a20cf9395c16dcbaf9b022a5201b5",
|
|
63
64
|
"packages/server/lib/context-resolver.js": "d3060bfe35fb184e521847fc0900cf6114f8ebf3120ce13ed39dfc224af54660",
|
|
64
65
|
"packages/server/lib/conversation-capture.js": "9f3ee29003eaea4778dc1e4b7e23e868f2ba0268bd43db07317acba62f48a094",
|
|
65
66
|
"packages/server/lib/diagnostics.js": "b45687fcc07f8baeb33ffd08efdc875494d4e3205887514fdfd7e1ce6370753b",
|
|
66
|
-
"packages/server/lib/drivers/cli-json-runner.js": "
|
|
67
|
-
"packages/server/lib/drivers/codex-driver.js": "
|
|
68
|
-
"packages/server/lib/drivers/opencode-driver.js": "
|
|
69
|
-
"packages/server/lib/drivers/zcode-driver.js": "
|
|
67
|
+
"packages/server/lib/drivers/cli-json-runner.js": "23704b5ea76564f5200d4088f53afd67a7fd03f17e98f7ebaeebd40a1fc4f2ac",
|
|
68
|
+
"packages/server/lib/drivers/codex-driver.js": "74368620dd3357268228ea2cf9a5c1318e3fc3e24849869d4d91c9698d554652",
|
|
69
|
+
"packages/server/lib/drivers/opencode-driver.js": "7155d0fcd091ac5ff9ec9275b6694a34321e7d16a5305da4adf080c50d054c0d",
|
|
70
|
+
"packages/server/lib/drivers/zcode-driver.js": "bf8fb9d49346aa51207565fb7838ef29b667544119e9e24ec115f3de0e7820f2",
|
|
70
71
|
"packages/server/lib/drivers/zcode-profile-runtime.js": "77c5ac83551cc424375918863d4a31039984492c3a1c987a615a072ac7cb1f14",
|
|
71
|
-
"packages/server/lib/event-stream.js": "
|
|
72
|
+
"packages/server/lib/event-stream.js": "3e6cf39b4599a3b1c9897da31d73c28b288a3d57f7a177ed90618de91977d3c4",
|
|
72
73
|
"packages/server/lib/folder-picker.js": "70f55df999262b90433f2b4251aa69dd70a23b55a84756b5f1d24dbeacfbda31",
|
|
73
|
-
"packages/server/lib/http-handler.js": "
|
|
74
|
+
"packages/server/lib/http-handler.js": "d4ef89fce44b92fcb0583ddd587979d3788554683a036c1383a6cb7e52eccb92",
|
|
74
75
|
"packages/server/lib/json-file.js": "4252b57abcd0aafa45c584bac98fcbaf09174774addbb5a4798b381a7aeb35cc",
|
|
75
76
|
"packages/server/lib/knowledge-context.js": "c3d8a9545547c636e6cdf908be53bef4968e674d2aab235562e762e25c210c06",
|
|
76
77
|
"packages/server/lib/model-detection.js": "fa52213200c1f1a1f00e463ada57c415bf1bd4e2aedfebd04de50750509d06cf",
|
|
@@ -80,7 +81,7 @@
|
|
|
80
81
|
"packages/server/lib/system-doctor.js": "2b0e858d69d8fb268eaed950c9883473ee9850684b532bc2db8e14674a974919",
|
|
81
82
|
"packages/server/lib/ui-preferences-store.js": "e108cb22e7cc1f3438704913d5401e01de2c0e717eb2abd3bdc4727209393819",
|
|
82
83
|
"packages/server/lib/workbench-service.js": "19781d2a27fa849e5508a5e233b29008b3ff18e1f10344615c371e5947601437",
|
|
83
|
-
"packages/server/package.json": "
|
|
84
|
+
"packages/server/package.json": "dc01b9c56ec63a7113894bd12e7842aa49e86ca4e85527085f421412946ed3b0",
|
|
84
85
|
"packages/server/README.md": "a34cfaa4f4e859008b44e2be8e1aafb56e97fe83e6129c968a8562945fa843f3",
|
|
85
86
|
"packages/ui/ai-profile-settings.d.ts": "0551b6c6eda6d18ea89a976daddf01b2161195f4874fe2d67a57cd9ecc6ce643",
|
|
86
87
|
"packages/ui/ai-profile-settings.js": "e92bbac67a1199d473e4e44b32d1cc76c5b6c79306d4fef9d9067a1bb6ec42ca",
|
|
@@ -88,7 +89,7 @@
|
|
|
88
89
|
"packages/ui/claude-terminal.js": "96bd217a4a7e4792ae3fbaaf46249ecee13b0f4e01fc6d25a1b8b22d8f8fe00c",
|
|
89
90
|
"packages/ui/index.d.ts": "e547ab39640fe7519fb367b78442dc8a2c51b2efd17b66f8b0a003b154b36ead",
|
|
90
91
|
"packages/ui/index.js": "f4394aabd395938f5c3fe587e430471d4033e83945a9b9c7e0149ad4040982c9",
|
|
91
|
-
"packages/ui/package.json": "
|
|
92
|
+
"packages/ui/package.json": "6ea8f77640b11175ea0591c51bb9ee8354ae28ebe3d124ab1d8e3ffc21e23e86",
|
|
92
93
|
"packages/ui/README.md": "793c4a9c286fee23f39062a1976ca3afe9d2816dcdb55e156ba940e1ef514f89",
|
|
93
94
|
"packages/ui/theme.css": "8f03a081272a7db11b196f7a70d0fafb1f8d954778f329f1ba53d110d9d5fd98",
|
|
94
95
|
"src/assets/claude-prompts.json": "cb111f2e0a45afe8a31c251a504d1ab5375966ed61291660e61fd2efd77f6d9f",
|
|
@@ -101,7 +102,7 @@
|
|
|
101
102
|
"src/backend/lib/ai-vendor-presets.js": "02c6de9c2e89ad0286426e8eb4900c3c6a4960ef0e8f9d27ffb5836062abfbb2",
|
|
102
103
|
"src/backend/lib/ai-workspace.js": "969917f26cd0b0a272932714819d838a2bab2a5aac5c4e946647dfa3afa479bf",
|
|
103
104
|
"src/backend/lib/automation-config.js": "c23b868bbcfbcece4465c9c939faccaef582667e858f3f36fc7b6d19bcd545e6",
|
|
104
|
-
"src/backend/lib/claude-cli-runner.js": "
|
|
105
|
+
"src/backend/lib/claude-cli-runner.js": "8c9a439971b6574db79a41cc3251786f412f82f8621d7662ee690c19932ca985",
|
|
105
106
|
"src/backend/lib/data-dir.js": "a62d96d1ab538e37690ad31fe4f51e84120b55b6bc767661ed98ad9242f879db",
|
|
106
107
|
"src/backend/lib/llm-client.js": "76d1a73fbea445b5ac34c23d1a3b084e0884c5efed6f7d3b9ed76d406d2cd038",
|
|
107
108
|
"src/backend/lib/model-context-windows.js": "f64f7c995143407b7390105087e3ebcd56a5a3ba2fd3019478a86f9e3c6b7896",
|
|
@@ -118,7 +119,7 @@
|
|
|
118
119
|
"vectorHub": {
|
|
119
120
|
"name": "@sanqianx/vector-hub",
|
|
120
121
|
"installName": "@sanqianx/vector-hub",
|
|
121
|
-
"version": "1.0.8-rc.
|
|
122
|
+
"version": "1.0.8-rc.5",
|
|
122
123
|
"files": {
|
|
123
124
|
"README.md": "cb693c322cb67cdae42f68e3d57c52dddb8905287cee42d0ca70c28a409dfca2",
|
|
124
125
|
"dist/cjs/bin.d.ts": "43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012",
|
|
@@ -176,7 +177,7 @@
|
|
|
176
177
|
"dist/esm/server/server.d.ts": "13288ace9aa6ec016a2b06dc036868324ac6c23c7e73771e95d120be778f238a",
|
|
177
178
|
"dist/esm/server/server.js": "748336f1a06fd5e606dba1e9f9c52f61eab0fee0c088f834427df926819079d2",
|
|
178
179
|
"dist/esm/server/server.js.map": "013aab0a7e4669f5feeeb7ed08bc7d8d0d895b2c25ecffe1b69eb54718a325f0",
|
|
179
|
-
"package.json": "
|
|
180
|
+
"package.json": "a10be008fa2e18dd37f0f1d04bd4be417fd480912d401566a582fc5fbed7dbd6",
|
|
180
181
|
"ui/index.html": "9f6c7323661cfd692e0fbaf7d27f03f140a1b3fcfd12ea011f17e572a1255696",
|
|
181
182
|
"ui/vendor/marked.min.js": "c68075672d976e4777390560baa112194855bd4404b13647da4855aae1f9360c"
|
|
182
183
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sanqianx/project-knowledge",
|
|
3
|
-
"version": "5.0.16-rc.
|
|
3
|
+
"version": "5.0.16-rc.2",
|
|
4
4
|
"description": "Knowledge base manager with Git integration, AI-driven analysis, and bilingual (zh-CN/en-US) knowledge output",
|
|
5
5
|
"main": "_site/server.js",
|
|
6
6
|
"scripts": {
|
|
@@ -49,6 +49,8 @@
|
|
|
49
49
|
"docs/project-registry-schema.md",
|
|
50
50
|
"docs/team-knowledge-mode-a-plan.md",
|
|
51
51
|
"docs/testing-strategy.md",
|
|
52
|
+
"docs/leader-glm-workbench-playbook.md",
|
|
53
|
+
"docs/release-5.0.16-acceptance.md",
|
|
52
54
|
"docs/fresh-v5-start.md",
|
|
53
55
|
"README.md",
|
|
54
56
|
"NOTICE",
|
|
@@ -81,10 +83,10 @@
|
|
|
81
83
|
"@lancedb/lancedb": "0.31.0",
|
|
82
84
|
"@modelcontextprotocol/sdk": "1.29.0",
|
|
83
85
|
"@sanqianx/ai-coding-event-bridge-console": "0.7.2",
|
|
84
|
-
"@sanqianx/vector-hub": "1.0.8-rc.
|
|
86
|
+
"@sanqianx/vector-hub": "1.0.8-rc.5",
|
|
85
87
|
"buffer": "^6.0.3",
|
|
86
88
|
"cheerio": "^1.2.0",
|
|
87
|
-
"claude-ai-workbench": "npm:@sanqianx/claude-ai-workbench@0.13.2-rc.
|
|
89
|
+
"claude-ai-workbench": "npm:@sanqianx/claude-ai-workbench@0.13.2-rc.11",
|
|
88
90
|
"cross-spawn": "7.0.6",
|
|
89
91
|
"dotenv": "^17.4.2",
|
|
90
92
|
"gpt-tokenizer": "^3.4.0",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
3
|
"name": "project-knowledge",
|
|
4
4
|
"hooks": "./hooks/claude.json",
|
|
5
|
-
"version": "5.0.16-rc.
|
|
5
|
+
"version": "5.0.16-rc.2",
|
|
6
6
|
"description": "Read durable project decisions and implementation history from Project Knowledge.",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "SanQianX",
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
"mcpServers": {
|
|
3
3
|
"project-knowledge": {
|
|
4
4
|
"type": "stdio",
|
|
5
|
-
"command": "
|
|
5
|
+
"command": "node",
|
|
6
6
|
"args": [
|
|
7
|
-
"-
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
"-e",
|
|
8
|
+
"const fs=require('fs'),path=require('path'),os=require('os');const PKG='@sanqianx/project-knowledge',SC='project-knowledge/integration-runtime/v1';let f='';const root=process.env.CLAUDE_PLUGIN_ROOT||process.env.PLUGIN_ROOT;if(root){f=path.join(root,'scripts','mcp-launcher.cjs');if(!fs.existsSync(f))f=''}if(!f){const dd=process.env.KB_DATA_DIR||path.join(os.homedir(),'.project-knowledge-v5');try{const bp=path.join(dd,'integration-runtime.json');const st=fs.statSync(bp);if(st.isFile()&&st.size<=32768){const b=JSON.parse(fs.readFileSync(bp,'utf8'));if(b&&b.schema===SC&&b.packageName===PKG&&typeof b.packageRoot==='string'&&path.isAbsolute(b.packageRoot)){const c=path.join(b.packageRoot,'plugins','project-knowledge','scripts','mcp-launcher.cjs');const rr=fs.realpathSync(b.packageRoot),cr=fs.realpathSync(c);const rel=path.relative(rr,cr);if(rel&&rel!=='..'&&!rel.startsWith('..'+path.sep)&&!path.isAbsolute(rel)&&fs.statSync(cr).isFile())f=cr}}}catch(e){}}if(!f){console.error('[project-knowledge-mcp] 未能通过受信任插件根或已验证的安装绑定定位启动器,已停止;不访问网络,也不加载工作目录源码。');process.exit(127)}require(f);"
|
|
9
|
+
],
|
|
10
|
+
"env": {
|
|
11
|
+
"KB_PLUGIN_VERSION": "5.0.16-rc.2"
|
|
12
|
+
}
|
|
12
13
|
}
|
|
13
14
|
}
|
|
14
15
|
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// Local MCP launcher for @sanqianx/project-knowledge.
|
|
2
|
+
// Zero-dependency: resolves only through the durable integration-runtime
|
|
3
|
+
// binding, pins the product package constant, joins the plugin-declared
|
|
4
|
+
// version into the agreement, enforces realpath containment for the entry,
|
|
5
|
+
// and spawns the package bin entry with the current Node runtime. No
|
|
6
|
+
// network, no npx, no cwd guessing, no fallbacks, no untrusted echo.
|
|
7
|
+
'use strict';
|
|
8
|
+
const fs = require('node:fs');
|
|
9
|
+
const path = require('node:path');
|
|
10
|
+
const os = require('node:os');
|
|
11
|
+
const { spawn } = require('node:child_process');
|
|
12
|
+
|
|
13
|
+
const PKG_NAME = '@sanqianx/project-knowledge';
|
|
14
|
+
const RUNTIME_SCHEMA = 'project-knowledge/integration-runtime/v1';
|
|
15
|
+
const ERROR_SCHEMA = 'project-knowledge/mcp-launcher-error/v1';
|
|
16
|
+
const BINDING_MAX_BYTES = 32768;
|
|
17
|
+
const MESSAGES = {
|
|
18
|
+
BINDING_MISSING: '未找到本地 MCP 运行时绑定;请先在产品内完成知识接入。',
|
|
19
|
+
BINDING_CORRUPT: '本地运行时绑定不可读或超出大小限制,已拒绝加载。',
|
|
20
|
+
BINDING_SCHEMA_MISMATCH: '运行时绑定架构不匹配,已拒绝加载。',
|
|
21
|
+
BINDING_PACKAGE_MISMATCH: '运行时绑定不是本产品包,已拒绝加载。',
|
|
22
|
+
BINDING_VERSION_MISMATCH: '绑定、插件声明与安装包版本不一致,已拒绝加载。',
|
|
23
|
+
BINDING_INVALID_ROOT: '运行时绑定的包根不可用,已拒绝加载。',
|
|
24
|
+
BINDING_ENTRY_MISSING: '绑定的 MCP 入口文件不存在,已拒绝加载。',
|
|
25
|
+
BINDING_ENTRY_INVALID: '绑定的 MCP 入口越界或不是普通文件,已拒绝加载。',
|
|
26
|
+
LAUNCH_FAILED: '本地 MCP 服务进程启动失败。',
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
function fail(code) {
|
|
30
|
+
process.stderr.write(JSON.stringify({ schema: ERROR_SCHEMA, code, message: MESSAGES[code] || '本地 MCP 启动器拒绝启动。' }) + '\n');
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function bindingPath() {
|
|
35
|
+
return path.join(process.env.KB_DATA_DIR || path.join(os.homedir(), '.project-knowledge-v5'), 'integration-runtime.json');
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function loadBinding() {
|
|
39
|
+
const file = bindingPath();
|
|
40
|
+
let stat = null;
|
|
41
|
+
try { stat = fs.statSync(file); } catch (error) { fail('BINDING_MISSING'); }
|
|
42
|
+
if (!stat.isFile() || stat.size > BINDING_MAX_BYTES) fail('BINDING_CORRUPT');
|
|
43
|
+
let raw = '';
|
|
44
|
+
try { raw = fs.readFileSync(file); } catch (error) { fail('BINDING_CORRUPT'); }
|
|
45
|
+
let binding = null;
|
|
46
|
+
try { binding = JSON.parse(raw); } catch (error) { fail('BINDING_CORRUPT'); }
|
|
47
|
+
if (!binding || typeof binding !== 'object' || Array.isArray(binding)) fail('BINDING_CORRUPT');
|
|
48
|
+
return binding;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const binding = loadBinding();
|
|
52
|
+
if (binding.schema !== RUNTIME_SCHEMA) fail('BINDING_SCHEMA_MISMATCH');
|
|
53
|
+
if (binding.packageName !== PKG_NAME) fail('BINDING_PACKAGE_MISMATCH');
|
|
54
|
+
if (typeof binding.packageRoot !== 'string' || !path.isAbsolute(binding.packageRoot)) fail('BINDING_INVALID_ROOT');
|
|
55
|
+
if (typeof binding.version !== 'string' || !binding.version) fail('BINDING_VERSION_MISMATCH');
|
|
56
|
+
|
|
57
|
+
let manifest = null;
|
|
58
|
+
try { manifest = JSON.parse(fs.readFileSync(path.join(binding.packageRoot, 'package.json'), 'utf8')); } catch (error) { fail('BINDING_PACKAGE_MISMATCH'); }
|
|
59
|
+
if (!manifest || typeof manifest !== 'object' || manifest.name !== PKG_NAME) fail('BINDING_PACKAGE_MISMATCH');
|
|
60
|
+
if (manifest.version !== binding.version) fail('BINDING_VERSION_MISMATCH');
|
|
61
|
+
if (process.env.KB_PLUGIN_VERSION && process.env.KB_PLUGIN_VERSION !== binding.version) fail('BINDING_VERSION_MISMATCH');
|
|
62
|
+
|
|
63
|
+
const bin = manifest.bin && typeof manifest.bin === 'object' && !Array.isArray(manifest.bin) ? manifest.bin['project-knowledge-mcp'] : manifest.bin;
|
|
64
|
+
if (typeof bin !== 'string' || !bin) fail('BINDING_ENTRY_MISSING');
|
|
65
|
+
|
|
66
|
+
let rootReal = '';
|
|
67
|
+
let entryReal = '';
|
|
68
|
+
try {
|
|
69
|
+
rootReal = fs.realpathSync(binding.packageRoot);
|
|
70
|
+
entryReal = fs.realpathSync(path.resolve(binding.packageRoot, bin));
|
|
71
|
+
} catch (error) { fail('BINDING_ENTRY_MISSING'); }
|
|
72
|
+
const relative = path.relative(rootReal, entryReal);
|
|
73
|
+
if (!relative || relative === '..' || relative.startsWith('..' + path.sep) || path.isAbsolute(relative)) fail('BINDING_ENTRY_INVALID');
|
|
74
|
+
try { if (!fs.statSync(entryReal).isFile()) fail('BINDING_ENTRY_INVALID'); } catch (error) { fail('BINDING_ENTRY_MISSING'); }
|
|
75
|
+
|
|
76
|
+
const child = spawn(process.execPath, [entryReal], { stdio: 'inherit', env: process.env, windowsHide: true });
|
|
77
|
+
child.on('error', error => fail('LAUNCH_FAILED'));
|
|
78
|
+
child.on('close', code => process.exit(code == null ? 1 : code));
|
package/ui/product.js
CHANGED
|
@@ -262,7 +262,9 @@
|
|
|
262
262
|
const software = agent.available ? '检测到命令' : agent.configFound ? '检测到配置' : capture.state === 'checking' ? '正在检测客户端' : '未检测到';
|
|
263
263
|
const status = capture.state === 'checking' ? '检查中' : !capture.ok ? '检查或接线异常' : capture.installed ? '已配置采集' : '未接入';
|
|
264
264
|
const auto = agent.automaticContext;
|
|
265
|
-
|
|
265
|
+
const mcp = agent.mcpStartup;
|
|
266
|
+
const mcpLine = mcp ? `<small>MCP ${mcp.state === 'ready' ? '已通过' : '未通过'}${mcp.code ? `(${esc(mcp.code)})` : ''}${mcp.detail ? ` · ${esc(mcp.detail)}` : ''}</small>` : '';
|
|
267
|
+
return `<div class="agent-capture-row"><div><b>${esc(agent.label)}</b><small>${esc(software)} · ${esc(status)}</small><small>${esc(capture.detail)}</small>${auto ? `<small>开发前知识:${esc(auto.detail)}</small>` : ''}${mcpLine}</div><div class="actions">${auto?.supported ? `<button data-agent-knowledge="install" data-agent-client="${esc(agent.client)}" ${!found || captureBusy ? 'disabled' : ''}>${auto.configured ? '检查/修复知识接入' : '接入/修复知识读取'}</button>` : ''}<button data-agent-capture="install" data-agent-client="${esc(agent.client)}" ${!found || captureBusy ? 'disabled' : ''}>${capture.installed ? '修复采集' : '接入采集'}</button>${capture.installed ? `<button data-agent-capture="uninstall" data-agent-client="${esc(agent.client)}" ${captureBusy ? 'disabled' : ''}>移除采集</button>` : ''}</div></div>`;
|
|
266
268
|
}).join('');
|
|
267
269
|
if (['checking', 'refreshing'].includes(result.scan?.state)) captureScanTimer = setTimeout(() => {
|
|
268
270
|
if (epoch === captureEpoch && !$('systemDrawer').hidden) loadAgentCapture().catch(error => toast(error.message));
|
package/vendor-manifest.json
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
"modules": {
|
|
4
4
|
"knowledge-engine": {
|
|
5
5
|
"name": "@sanqianx/ai-coding-knowledge-engine",
|
|
6
|
-
"version": "0.2.7-rc.
|
|
6
|
+
"version": "0.2.7-rc.6",
|
|
7
7
|
"root": "_modules/knowledge-engine",
|
|
8
8
|
"files": {
|
|
9
|
-
"README.md": "
|
|
10
|
-
"package.json": "
|
|
9
|
+
"README.md": "43709a9a81e3d9455c19a283cab31622be515fe6be1e1196077b181e4f2791f2",
|
|
10
|
+
"package.json": "7aa8e1f3deab531fafbf405e86e906fad85f359c2f188df0c51eeba9529d80ef",
|
|
11
11
|
"src/analysis-contract.js": "913a63b63fb4a4a9df071f95bbeb8f8c40ef87e2f8445ab0742086ced70ffbf7",
|
|
12
12
|
"src/analysis-output.js": "95a3c19dcc9ab85d1dba7fee5b9aec80f9c000dfba89da3fd0be25a81e2fb680",
|
|
13
13
|
"src/analysis-worker.js": "a105cabe6e1573b2d986b1e7a5aaf615e2fb53524156fc8e4e2c0a71f2c97e55",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"src/memories.js": "bba8e19380e906a80fd3e5d2a7f809d940466924578c8187d1f376f906f10f2b",
|
|
23
23
|
"src/retrieval-policy.json": "3205fb4eb114a839a74f902e6fae6a61e1460958e5a9d7e29add32b60ba4e05a",
|
|
24
24
|
"src/retrieval-ranking.js": "422c068ea995d4f8c7e1ffb64b4b72921017862add74da8996b1827c6c64c23d",
|
|
25
|
-
"src/retrieval.js": "
|
|
25
|
+
"src/retrieval.js": "5ae52f8c86eff3c46006b4290402eedc75d25e7d4de67e66ac272b6ce6018ffd",
|
|
26
26
|
"src/runtime/README.md": "9be676eca76a7857b34d7357194e6f0ee733c22e61d962d53984715dbec7f673",
|
|
27
27
|
"src/runtime/atomic-file.js": "9846b4b69db5ded811acf19a1181ef93615d93efaa542b858e552a7f3124ad23",
|
|
28
28
|
"src/runtime/automation-config.js": "6498c5397be12b155829740595a1553d4dcd6eaa7db6ced3ef88fdc60218f00e",
|
|
@@ -36,10 +36,10 @@
|
|
|
36
36
|
"src/runtime/conversation-store.js": "644318f9c04376a3317ced240dd94afa99a79631f0ecc394c5aa298ae2bc0474",
|
|
37
37
|
"src/runtime/evidence-bundle.js": "33d4614849d5e1d69aba8b75c3a43c18b7b6f94e5c78654c82ef631331cc94cc",
|
|
38
38
|
"src/runtime/git-runner.js": "b74fe197bd4dcf3e70635ef7b1f2615edf965c1d9a3ffe5406aabd41b76d74a9",
|
|
39
|
-
"src/runtime/knowledge-promotion.js": "
|
|
40
|
-
"src/runtime/knowledge-retrieval-service.js": "
|
|
39
|
+
"src/runtime/knowledge-promotion.js": "e064f1e07d615adb755fbbcc89d67dcb783b355b47878f7d229b79ef93cfdba4",
|
|
40
|
+
"src/runtime/knowledge-retrieval-service.js": "fe5fad3b987dacfd0b50a2d9d6373d8cd9e7e775d7a0749bda415c23f447ad16",
|
|
41
41
|
"src/runtime/layout.js": "e47fe54c605218493ce46f6289798d9db2a3ecec95089d288ed03d3b75cf871a",
|
|
42
|
-
"src/runtime/markdown-knowledge-indexer.js": "
|
|
42
|
+
"src/runtime/markdown-knowledge-indexer.js": "f771afcc1a08bf0c6456d6756c8e04885fac15bc700a86ab0114853ac662727e",
|
|
43
43
|
"src/runtime/scanner.js": "d99fa8d74a6fbbaae75ca49f62127e14cf9e48b1404e4b4d597ef39df5441410",
|
|
44
44
|
"src/server.js": "3aa7b6b3aec141f3d1fde63fbbd4ee8b3c95a92c851726a56717c3537fe4954b",
|
|
45
45
|
"src/store.js": "cd147926dc7744d4a4691c2facb5e99b611e7e400beaed7377ae5a69e41bb39f",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"ui/app.js": "33a2ba38f0dafbbb2e30a1eb3fc93476bfcaf528e124e1a9b2edd2fb69221e9e",
|
|
48
48
|
"ui/index.html": "ce3565cfefd4838b11d37a91a906ef26ca5a1834844fe3f7c897b56851a3c418"
|
|
49
49
|
},
|
|
50
|
-
"sourceCommit": "
|
|
50
|
+
"sourceCommit": "bbb5ddd13a87fa0e00262d8feb3d3556057740b7"
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
}
|