Skip to content

feat(skillhub): connect clients to Cindy SkillHub - #3682

Merged
MagicLizi merged 17 commits into
mainfrom
feat/cindy-skill-hub-client
Sep 2, 2026
Merged

feat(skillhub): connect clients to Cindy SkillHub#3682
MagicLizi merged 17 commits into
mainfrom
feat/cindy-skill-hub-client

Conversation

@xd-bobo

@xd-bobo xd-bobo commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

这次改了什么

摘要

为新版 Cindy 客户端增加独立的 cindySkillHubApiBaseUrl,让 Skill Hub 只连接新的 Cindy Skill Hub 服务。旧 skillhubApiBaseUrl 及国内/国际地址保持不变,已发布客户端继续连接 xd-skill-hub-server

公开和组织目录只传通用的 scope=market|team,并把该 scope 贯穿详情、文件、版本、扫描、下载、安装、Learn 和批量同步。旧 registry 中尚未记录 scope 的历史 XD 安装会一次性迁移为 team;新原生管理记录使用迁移标记保留省略 scope 的语义,同 slug 的不同目录不会串数据。

客户端按新服务契约提交作者标签名称,并排除 Platform 治理标签;管理操作使用服务端逐 Skill 返回的 canManage,不再用组织归属 isMine 推导权限。从组织目录编辑时会独立查询原生写入目标,正确区分首发和升级。未登录用户可以浏览公开 Skill,但不会看到不可执行的更新入口。

组织 Skill 的归属仍显示组织,实际提交当前版本的成员通过 publisherName 单独展示;服务端写入发布者快照的配套修复见 xindong/cindy-server#562。不支持的组织可见性由服务端返回 INVALID_VISIBILITY,客户端显示可操作提示。

同时完善 Desktop Skill Hub 的公开、组织、本地技能和我的管理导航、分页、Skill 图标、文件详情以及扫描/人工审核状态;机审通过后显示“等待审核”并停止持续轮询。

变更类型

  • feat 新功能
  • fix 缺陷修复
  • refactor / perf 重构或性能优化
  • docs / test / chore 文档、测试或工程维护
  • 其他:

范围

  • 关联 Issue / 需求:Cindy Skill Hub 新服务迁移;服务端基础实现 飞书机器人手动绑定成功后,界面 Owner 状态仍显示「等待首次私聊绑定」 #560;本次契约修复 feat(desktop): 为内置 Provider 增加手动刷新 #562
  • 本 PR 包含:国内、国际及本地 endpoint;Desktop Skill Hub 数据源切换;匿名公开目录;目录导航与分页;目录作用域贯穿;旧 registry 迁移;组织发布入口;当前版本公开审核;作者标签;逐 Skill 管理权限;发布者名称;Skill 图标;扫描与人工审核状态;五种语言和回归测试
  • 明确不包含:cindy-skill-hub-server 服务端实现、线上基础设施部署、旧 xd-skill-hub-server 下线
  • 用户可见变化:未登录可浏览公开 Skill;组织用户可发起发布并由接口返回实际限制;已有版本可直接提交公开审核;组织 Skill 同时显示实际发布人;机审通过后显示“等待审核”且不持续轮询
  • 是否存在 breaking change:无。连接新服务的 Cindy 客户端尚未发布;已发布客户端继续连接旧 endpoint,不请求 Cindy Skill Hub Server

UI 变化

顶部统一使用“技能”,目录通过 公开 / 组织(有组织时)/ 本地技能 / 我的管理 / 更多 切换。公开审核使用“提交审核 / 等待审核 / 审核未通过”状态,不再提示用户发布新版本。组织身份不会因为客户端预检隐藏发布入口,实际请求失败时展示接口错误。组织 Skill 的卡片与详情显示“实际发布人 · 归属组织”。

  • 引用的设计规范:docs/design-rules/DESIGN.md 的语义色、图标、圆角、字号、Light/Dark 和交互状态约束;复用已有主题 token、组件与 Lucide 图标,已同步五种语言。

怎么验证的

自动验证

pnpm --filter desktop typecheck
结果:PASS,0 errors

pnpm --filter desktop exec vitest run <14 个 Skill Hub/learn 定向测试文件>
结果:PASS,14 files / 202 tests

VITE_CINDY_AUTH_REGION=global pnpm test:unit:related
结果:PASS;test runner、Desktop、Mobile、lizi-mcps、maker-core、maker-shared、orca-workflow 全部通过

本次修改文件 ESLint
结果:PASS;bootstrap-electron.ts 的 6 条存量报错在修改前 HEAD 上可复现,本次修改未新增 lint 报错

git diff --check
结果:PASS

说明:本地 .env 为 CN 开发运行配置,首次未覆盖区域运行门禁时,两份固定 Global 预期的测试分别按 CN 品牌目录和 CNY 汇率执行而失败;未修改本地 .env,以仅作用于测试进程的 VITE_CINDY_AUTH_REGION=global 重跑后完整门禁通过。

手工验证

macOS CN 开发模式此前已通过标准启动器连接新 Skill Hub endpoint,确认公开列表、默认 Skill 图标和本地发布链路不回退线上旧 endpoint。本次最终增量以类型检查、定向测试和完整相关门禁验证目录作用域、组织管理权限、标签及发布者映射。

未执行的验证

未执行 Windows/Linux 实机 UI 验证,也未对最新提交再次做完整 Light/Dark 人工目检;本次样式复用已有语义 token,类型检查和相关测试均已通过。

风险

风险分类

  • 无已知风险
  • SQLite / migration
  • system prompt
  • 协议兼容
  • 权限 / 安全 / 用户数据
  • 存量插件兼容(批准状态 / 指纹 / manifest 校验 / 安装布局 / 包格式)
  • 原生层 / fingerprint / OTA
  • 跨平台差异
  • 其他:新 Skill Hub 服务和配套契约 PR feat(desktop): 为内置 Provider 增加手动刷新 #562 必须先部署可用

影响与回滚

  • 影响范围:新版 Desktop/Mobile endpoint 解析及 Desktop Skill Hub 浏览、管理、发布、同步、Learn 与公开审核反馈;服务端成为组织目录路由和逐 Skill 写权限的唯一裁决方
  • 回滚 / 降级方式:发布顺序为先合并并部署服务端 feat(desktop): 为内置 Provider 增加手动刷新 #562,再合并/发布本客户端;发布前可独立回滚任一 PR。registry 迁移仅追加 catalogScope 和迁移标记,旧客户端会忽略未知字段
  • 存量插件影响:无;不修改插件批准状态、指纹、manifest、安装布局或包格式
  • 协议兼容:旧 skillhubApiBaseUrl 保持锁定,已发布客户端继续连接旧服务;新版只使用 cindySkillHubApiBaseUrl。新客户端与新服务尚未发布,因此同步收紧当前中间契约,不增加无消费者的 fallback

提交前检查

  • 已 review 完整 diff
  • 每个 commit 都带 DCO 签名(git commit -s,见 DCO
  • UI 改动已在「UI 变化」注明引用的设计规范章节(不涉及 UI 则跳过)
  • 未提交凭证、令牌或授权文件
  • 已补充必要文档
  • 已确认测试结果或说明未执行原因

Signed-off-by: xd-bobo <caojianbo@xd.com>
@xd-bobo
xd-bobo requested a review from a team as a code owner August 31, 2026 10:10
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@greptile-apps

greptile-apps Bot commented Aug 31, 2026

Copy link
Copy Markdown

Greptile Summary

此 PR 将新版 Desktop SkillHub 切换到独立的 Cindy SkillHub endpoint,移除客户端 XD 组织白名单,并增加图标、标签及 GitHub 地址映射。

  • 保留旧 skillhubApiBaseUrl,新增可选的 cindySkillHubApiBaseUrl
  • 登录账号的市场可见范围改由新服务端裁决
  • 更新 CN、Global、本地配置生成及 endpoint 回归测试
  • 当前仍需补齐缺失 endpoint 的禁用处理,以及新增展示字段的 renderer 透传与消费

Confidence Score: 3/5

此 PR 暂不适合合并,因为旧 manifest 会使 SkillHub 产生错误请求,且新服务返回的展示字段尚未完整到达用户界面。

缺失可选 endpoint 时当前调用链仍以空 base URL 发起请求,同时 icon、tags 和 githubUrl 的主进程映射没有完整同步到 renderer 契约与组件消费。

Files Needing Attention: apps/desktop/src/main/skillhub/hubApi.ts, apps/desktop/src/main/skillhub/infoMapping.ts, apps/desktop/src/renderer/features/skillhub/hooks/useMarketList.ts, apps/desktop/src/preload/preload.ts, apps/desktop/src/renderer/vite-env.d.ts

Important Files Changed

Filename Overview
apps/desktop/src/main/skillhub/hubApi.ts SkillHub 已切换到新 endpoint,但缺失可选字段时未实现声明的禁用语义。
packages/maker-shared/src/clientEndpoints.ts 新 endpoint 被加入共享可选字段及协议校验,兼容旧 manifest,但空值需要由消费者处理。
apps/desktop/src/main/skillhub/infoMapping.ts 新字段已在主进程映射,但 renderer 数据契约与展示路径未完整衔接。
apps/desktop/src/renderer/features/skillhub/lib/marketAccess.ts 客户端组织白名单按设计移除,主进程仍保留云账号 capability 门禁。
scripts/shared/endpoint-local-file.mjs 本地 endpoint 生成器正确同时保留旧 SkillHub 地址并加入新服务地址。
config/endpoint.json CN manifest 为新版客户端配置独立 SkillHub 域名并保持旧地址不变。
config/endpoint.global.json Global manifest 为新版客户端配置独立 SkillHub 域名并保持旧地址不变。

Sequence Diagram

sequenceDiagram
  participant U as 登录用户
  participant R as Desktop Renderer
  participant M as Electron Main
  participant E as Endpoint Manifest
  participant H as Cindy SkillHub
  U->>R: 打开 SkillHub 市场
  R->>M: listMarket / info
  M->>E: 读取 cindySkillHubApiBaseUrl
  alt endpoint 已配置
    M->>H: 携带 Bearer 请求
    H-->>M: Skill 数据与可见性结果
    M-->>R: 映射后的市场数据
  else endpoint 缺失
    M-->>M: 当前实现以空 baseUrl 构造请求
    M-->>R: NETWORK_ERROR
  end
Loading
Prompt To Fix All With AI
### Issue 1
apps/desktop/src/main/skillhub/hubApi.ts:23
**缺失端点仍发起请求**

当 endpoint manifest 不含可选的 `cindySkillHubApiBaseUrl` 时,共享 parser 会将其解析为 `''`,这里仍把空值作为 `baseUrl` 传给 `serverApiFetch`,从而构造 `/api/skills-hub/...` 相对地址并返回网络错误,而不是按约定关闭云端 SkillHub。

### Issue 2
apps/desktop/src/main/skillhub/infoMapping.ts:51-54
**新增字段未完整透传**

当新服务返回 `icon``tags``githubUrl` 时,主进程虽然在这里完成映射,但 renderer 的 IPC 类型和 view model 没有完整声明或转发这些字段,现有组件也未消费它们,导致图标未显示且标签和 GitHub 地址在界面边界被丢弃。

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Reviews (1): Last reviewed commit: "feat(skillhub): connect clients to Cindy..." | Re-trigger Greptile

Comment thread apps/desktop/src/main/skillhub/hubApi.ts Outdated
Comment thread apps/desktop/src/main/skillhub/infoMapping.ts Outdated
Signed-off-by: xd-bobo <caojianbo@xd.com>
@MagicLizi

Copy link
Copy Markdown
Contributor

@xd-bobo 👋 这个 PR 还有 2 条 review conversation 没 resolve(apps/desktop/src/main/skillhub/hubApi.ts / apps/desktop/src/main/skillhub/infoMapping.ts),auto-review 因此暂时跳过、没法继续审查 / 合并。

如果你已经按评论改完或回应了,请到对应 thread 上点 Resolve conversation;全部 resolve 后,下一轮 auto-review 会自动重新审查这个 PR。

@MagicLizi MagicLizi added status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) status:ci-failed CI 失败(review-pr 自动维护,仅展示) and removed status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) labels Aug 31, 2026
Signed-off-by: xd-bobo <caojianbo@xd.com>
Signed-off-by: xd-bobo <caojianbo@xd.com>
Signed-off-by: xd-bobo <caojianbo@xd.com>
@MagicLizi MagicLizi added the touches:core 改动碰到架构核心路径(review-pr 自动维护,仅展示) label Sep 1, 2026
Signed-off-by: xd-bobo <caojianbo@xd.com>
@MagicLizi

Copy link
Copy Markdown
Contributor

命中 UI 路径(apps/desktop/src/renderer/features/skillhub/SkillhubHomeView.tsx / apps/desktop/src/renderer/features/skillhub/SkillhubMarketListView.tsx / apps/desktop/src/renderer/features/skillhub/hooks/useMarketList.ts 等)但 description 未附界面效果证据——建议补充改动后效果:截图/录屏,或改动后界面的 HTML 页面(```html 代码块、.html 附件或在线预览链接),便于确认界面符合 DESIGN.md 设计规范

Signed-off-by: xd-bobo <caojianbo@xd.com>
Signed-off-by: xd-bobo <caojianbo@xd.com>
Signed-off-by: xd-bobo <caojianbo@xd.com>
@MagicLizi MagicLizi added touches:large-diff 改动量较大(review-pr 自动维护,仅展示) touches:rules 改动碰到规则 / 规范文档(review-pr 自动维护,仅展示) labels Sep 1, 2026
Signed-off-by: xd-bobo <caojianbo@xd.com>
@MagicLizi MagicLizi added status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) and removed status:ci-failed CI 失败(review-pr 自动维护,仅展示) labels Sep 2, 2026
@xd-bobo

xd-bobo commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator Author

补充状态:Greptile 提出的两条 P1 已在 a4ea187b8 修复并补充回归测试,对应 review conversations 已全部回复并 resolve。DCO、verify、Linux/Windows unit shards、Desktop Git integration、CodeQL 与 design-basis 当前全部通过;PR 无 open code-scanning alert,等待维护者正式 Review / Approve。

@xd-bobo

xd-bobo commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

To use Codex here, create a Codex account and connect to github.

Signed-off-by: xd-bobo <caojianbo@xd.com>
@MagicLizi MagicLizi removed the status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) label Sep 2, 2026
Signed-off-by: xd-bobo <caojianbo@xd.com>
Signed-off-by: xd-bobo <caojianbo@xd.com>
@MagicLizi MagicLizi added status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) and removed status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) labels Sep 2, 2026
Signed-off-by: xd-bobo <caojianbo@xd.com>
Signed-off-by: xd-bobo <caojianbo@xd.com>
@MagicLizi MagicLizi added the status:ci-failed CI 失败(review-pr 自动维护,仅展示) label Sep 2, 2026
Signed-off-by: xd-bobo <caojianbo@xd.com>
@MagicLizi MagicLizi added status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) and removed status:ci-failed CI 失败(review-pr 自动维护,仅展示) status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) labels Sep 2, 2026
Signed-off-by: xd-bobo <caojianbo@xd.com>

@MagicLizi MagicLizi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

代码重审通过:当前 head 未发现 P0/P1。新客户端只走 cindySkillHubApiBaseUrl,旧 skillhubApiBaseUrl 锁定给已发布客户端;写路径有登录/可见性校验;registry catalogScope 为追加迁移。UI 证据未附,不阻断。

@MagicLizi
MagicLizi merged commit a406850 into main Sep 2, 2026
21 checks passed
@MagicLizi
MagicLizi deleted the feat/cindy-skill-hub-client branch September 2, 2026 21:40
@MagicLizi

Copy link
Copy Markdown
Contributor

合了。新客户端接到独立 Skill Hub,旧地址还锁给已发布版本,迁移路径也交代清楚——这层拆得干净。

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

Labels

touches:core 改动碰到架构核心路径(review-pr 自动维护,仅展示) touches:large-diff 改动量较大(review-pr 自动维护,仅展示) touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) touches:rules 改动碰到规则 / 规范文档(review-pr 自动维护,仅展示)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants