已合并
feat: 统一知识库安装与使用入口 #32
feat: 统一知识库安装与使用入口 #32
已合并
汪超创建于 9月14日
汪超成员
9月14日

Pull Request 说明

变更说明

给知识库安装和使用提供一个统一的文档以及安装脚本

  • 关联 Issue:
  • 主要改动:
  • 补充说明:

变更类型

验证

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 汪超 的贡献)
汪汪超成员
9月14日 创建了 pull request,commit fbe1528c
汪汪超成员
9月14日 预合并成功(commit_id: 3bb142d2ebad5d75a8bb942a22d9995cf64e36db)
汪汪超成员
9月14日 推送  2 个提交:fbe1528c-1 commit from branch master,d00c515f-merge: resolve PR 32 conflicts with master
汪汪超成员
9月14日 预合并成功(commit_id: a40e40d21ec379e0b55b2f8631871fc8768d8bf8)
CANN-robotCANN-robot成员
9月14日 添加了label:stat/needs-squash
CANN-robotCANN-robot成员
9月14日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
9月14日 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.


PR Approval Progress

✅ Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
repo-cann/cannbot-knowledge ✅ zhanghz1, wangsj0012 (2/2) ✅ zhanghz1 (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

qq_41667743, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
汪超成员
9月15日 评论:

/compile

likedislike
汪汪超成员
9月15日 预合并成功(commit_id: 66ceca6c56cae20e6d840c80ef04e224181b76a4)
CANN-robot
CANN-robot成员
9月15日 评论:
🚀 CI 流水线已启动
📋 执行详情: 点击查看流水线
likedislike
CANN-robotCANN-robot成员
9月15日 添加了label:ci-pipeline-running
CANN-robotCANN-robot成员
9月15日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
9月15日 添加了label:ci-pipeline-passed
zhoujian
zhoujian成员
9月15日 评论:

/lgtm

likedislike
zhoujian
zhoujian成员
9月15日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
9月15日 添加了label:approved
zhanghz1
zhanghz1成员
9月15日 评论:

1. [P1] 首次 consumer 安装会误删用户自建的同名客户端链接

位置: install.sh:319,第 319–329 行。

remove_unselected_managed_skills 删除客户端 adapter 时,只检查它是否解析到项目中的 canonical 路径,却没有先确认这个 canonical Skill 属于本知识仓。canonical 自身是否指向 $KNOWLEDGE_ROOT/.agents/skills/<skill> 的检查直到 adapter 删除之后才执行。

复现: 项目原本有用户维护的真实目录 .agents/skills/knowledge-ingest/,以及指向它的 .claude/skills/knowledge-ingest 符号链接;此前没有安装 cannbot-knowledge。首次执行 bash install.sh codex <project> consumer --skip-resources,退出码为 0,但用户的 Claude 链接被删除。目录里的内容仍在,Claude 的原有 Skill 入口却被卸载了。基线 init.sh 在相同场景保留该链接。

必须调整: 先验证 canonical 链接确实归属于当前知识仓,再清理其 adapter;对用户真实目录、指向其他来源的 canonical 链接及其 adapter 全部保持不动。增加“从未安装过本仓、已有同名自定义 Skill”的回归,不能只测试本安装器创建的链接。

复现对比:PR 和基线均退出 0;PR 删除用户 adapter 链接,基线保留。基线代码见 init.sh。

2. [P2] 降级清理边删边检查,遇到后续路径冲突时留下损坏的原安装

位置: install.sh:315,第 315–330 行;调用位置 install.sh:837。

前置检查只遍历本次要安装的 skills。从 contributor 降为 consumer 时,待删除的贡献 Skill 和其他客户端的 adapter 没有被完整预检;remove_unselected_managed_skills 在删除过程中才调用 preflight_destination,因此后面的失败无法保护前面已删除的内容。

复现: 先正常安装 codex contributor,再令项目 .opencode 指向外部共享目录,其中 skills/knowledge-lint 链接到本项目已安装的 canonical knowledge-lint。降级 consumer 时,脚本先删除 canonical knowledge-ingest,随后因 OpenCode adapter 的父目录越出项目而退出 2。此时配置仍为 contributor,AGENTS.md 仍保留贡献流程,但 knowledge-ingest 已不存在。

必须调整: 在任何删除前收集完整清理清单,统一完成归属、父目录和路径检查;全部通过后才开始修改。新增失败路径回归,验证出错前后的 Skill 链接、配置和提示文件完全一致。

复现状态:退出码 2;knowledge-ingest 链接已删除,knowledge-lint 链接仍在,配置和提示文件仍为 contributor。

3. [P2] CRLF 提示文件不被识别,模式降级成功后仍保留旧贡献指令

位置: install.sh:747,第 747–750 行;影响第 818、853 行的跨客户端同步。

prompt_has_managed_marker 使用 grep -Fqx 精确匹配 marker,CRLF 行尾的 \r 会使匹配失败。后续 Python 的 manage_prompt 能处理 CRLF,但调用前已被这个判断跳过,导致有效的已有托管入口漏检、漏更新。

复现: 正常安装 claude contributor,只把生成的 CLAUDE.md 换成 CRLF 换行,再执行 codex consumer 安装。命令成功退出 0,配置已改为 consumer、Claude 的贡献 Skill 链接也已删除,但 CLAUDE.md 仍含“贡献者附加流程”及已不存在的 Skill 指令。Windows 编辑器或 Git 换行转换即可触发,无须损坏 marker 内容。

必须调整: marker 存在性检查与 manage_prompt 共用兼容 LF/CRLF 的行解析,确保其他客户端的有效托管块都进入预检和同步;增加跨客户端、CRLF 文件的模式切换回归。

复现状态:退出码 0;配置为 consumer,Claude 的 knowledge-ingest 链接已删除,CLAUDE.md 仍保留贡献流程。

likedislike
汪汪超成员
9月15日 预合并成功(commit_id: c1f5b57506dd77fbb43075b6f212a81ed54b5873)
汪汪超成员
9月15日 推送  1 个提交:681a1c43-docs: streamline installation and usage guidance
汪汪超成员
9月15日 预合并成功(commit_id: 7d18b01f2f44a043bab72ab687e7f45ad750276b)
CANN-robotCANN-robot成员
9月15日 删除了label:cann-cla/yes
CANN-robotCANN-robot成员
9月15日 删除了label:ci-pipeline-passed
CANN-robot
CANN-robot成员
9月15日 评论:

Notification

This pull request has been changed(code update) or closed, so removes the following label(s): ci-pipeline-passed.

likedislike
CANN-robotCANN-robot成员
9月15日 添加了label:cann-cla/yes
CANN-robotCANN-robot成员
9月15日 删除了label:approved
CANN-robot
CANN-robot成员
9月15日 评论:

Notice

New code changes of the pull request are detected and remove these labels approved. 😳

likedislike
汪汪超成员
9月15日 预合并成功(commit_id: 5091d1d9fdad4ab8228efd5c60320f31d9b267b6)
汪汪超成员
9月15日 推送  1 个提交:0c49377e-fix: protect managed skill cleanup
汪汪超成员
9月15日 预合并成功(commit_id: 7d9204b95597637d768ec8cb272a57d6826f8a1c)
CANN-robotCANN-robot成员
9月15日 删除了label:cann-cla/yes
CANN-robotCANN-robot成员
9月15日 添加了label:cann-cla/yes
汪超成员
9月15日 评论:

/compile

likedislike
汪汪超成员
9月15日 预合并成功(commit_id: a566614aab4a64364980fa1342bc2dbc4b10549e)
CANN-robot
CANN-robot成员
9月15日 评论:
🚀 CI 流水线已启动
📋 执行详情: 点击查看流水线
likedislike
CANN-robotCANN-robot成员
9月15日 添加了label:ci-pipeline-running
CANN-robotCANN-robot成员
9月15日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
9月15日 添加了label:ci-pipeline-passed
zhanghz1
zhanghz1成员
9月15日 评论:

/lgtm

likedislike
zhoujian
zhoujian成员
9月15日 评论:

/lgtm

likedislike
zhoujian
zhoujian成员
9月15日 评论:

/approve

likedislike
zhanghz1
zhanghz1成员
9月16日 评论:

/lgtm

likedislike
zhanghz1
zhanghz1成员
9月16日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
9月16日 添加了label:approved
wangshaojun
wangshaojun成员
29 天前 评论:

/lgtm

likedislike
CANN-robot
CANN-robot成员
29 天前 评论:

The following users do not have permission to comment /lgtm or /approve on any module in this PR:
/approve: qianbi1999
/lgtm: qianbi1999

likedislike
CANN-robotCANN-robot成员
29 天前 添加了label:lgtm
CANN-robotCANN-robot成员
29 天前 合入了pull request