CCTor Marketplace(cctor-dsh-marketplace):在 DSH 里浏览与安装社区插件

前言

DeepSeek Harness(DSH)把能力拆成可安装的插件包;开发者在日常里既要查目录、看详情,又要对照当前 Profile 里已装版本,再决定要不要装。纯手抄仓库地址、自己拼安装命令,步骤多且容易和目录信息不一致。

cctor-dsh-marketplace 是面向 DSH 的可安装 bundle:以 https://api.cctor.com 为动态目录源,在同一套 Host 服务上同时提供 Web 端市场界面和供模型调用的 Agent 工具。UI 与工具共用持久化缓存、已安装状态读取和安装协调逻辑。仓库由 oday0311 维护(GitHub:oday0311/open-dsh-market),在 SkillHub 等社区目录中归类为客户端插件;npm 包名为 cctor-dsh-marketplace,当前版本为 0.1.0(MIT)。

这是什么

一句话定位:在 DSH 进程内打开可搜索的插件市场,展示目录详情与当前 Profile 安装状态,并在用户明确确认后才执行安装。

v1 范围包含发现、详情、已安装状态展示和安装(每次安装都必须经过用户显式确认)。不包含:更新、禁用或移除其他插件,也不支持安装到其他 Profile。

核心功能

Web 工作区

  • 主从布局:左侧为可搜索结果列表,右侧为选中插件详情;窄屏下详情单独成页,带返回控件。
  • 搜索与筛选:搜索防抖 300 ms,并取消被新请求 supersede 的旧请求;非空且少于 3 个字符的查询不会发到 API(接口对此 intentionally 返回空页)。支持分类、排序、刷新、分页与缓存重置。
  • 已安装状态:当前 Profile 已安装的条目显示本地版本,不展示普通「安装」操作。
  • 双语界面:随 DSH 当前 locale 切换中文或英文;日期、数量、空状态、错误与安装进度文案本地化;插件名、描述、README、标签与仓库元数据按 API 原样展示。

Agent 工具(与 Host 共用归一化与缓存)

工具 作用 主要约束
cctor_search_plugins 搜索目录,返回摘要、分页与缓存新鲜度 默认 10 条,单次最多 20;返回不透明 next_cursor;不返回 README 或 install_command;不执行安装
cctor_get_plugin_details 按稳定 ID 或精确 slug 读取公开详情、校验状态与当前 Profile 安装状态 slug 须唯一;无匹配为 not_found,多匹配为 ambiguous_plugin
cctor_request_plugin_install 为当前 Profile 准备一次性安装确认 仅返回 awaiting_confirmation、确认 ID、过期时间、目标 Profile、路由与安全 spec;工具不能自行批准或执行

工具输出有字段上限与 64 KiB 总预算;缓存内部、堆栈、路径与请求头不会进入模型上下文。

架构要点

Agent tools ─┐
             ├─ CctorMarketplaceService ── CCTor API (list / meta / detail)
Web Client ──┘        │
(via same-origin API) ├─ Storage Domain (plugin-owned persistent cache)
                      └─ Plugin Manager (installs only into the current profile)

Web Client 仅负责展示,不直连 CCTor,也不能执行安装;通过同源路由 /api/cctor-marketplace/rpc(与 connection 注册)调用 Host。若运行时模块无法导入或 Host 组装失败,受保护的入口会记录一条有界的兼容性诊断并保持惰性,避免拖垮整棵插件树。

缓存与离线

列表与元数据 TTL 5 分钟,详情 30 分钟;过期标为 stale 仍可先展示并后台刷新。刷新失败时,最近一次成功记录最长约 7 天可作回退;超过则标 possiblyOutdated 且不作为「实时」呈现。工具栏「Reset cache」只清空本插件私有 Storage Domain,不影响其他域或已安装状态。

安装确认准备时会绕过缓存,重新从 detail 端点读取插件,使确认绑定当前网络身份与安全 spec。

安装确认与安全边界

每次安装都需要新的显式确认:一次性、5 分钟过期,绑定稳定插件 ID、归一化 install spec、目标 Profile、校验状态与来源内容摘要;执行前会复检来源,若 spec 或相关字段变化,确认失效(README 在此处截断,以仓库原文为准)。

安装与启用

环境要求(见 package.json 的 engines):Node.js >= 22;DSH >= 0.2.1-rc.5 且 < 0.3.0。

从 npm 安装

将 <name> 换成目标 Profile 名称,按提示重启 DSH:

dsh plugin --profile <name> add cctor-dsh-marketplace

验证

dsh plugin --profile <name> list cctor-dsh-marketplace --depth 0

输出应列出 cctor-dsh-marketplace 及其已装版本。

升级与卸载

dsh plugin --profile <name> update cctor-dsh-marketplace --latest
dsh plugin --profile <name> remove cctor-dsh-marketplace

升级或卸载后均需重启 DSH。上述命令管理的是市场 bundle 本身;市场内发现的插件仍受 UI v1 能力限制(例如 v1 不在此 UI 内做其他插件的更新/移除)。

配置

通过 DSH 插件配置传入,字段等价于:

{
  "apiBaseUrl": "https://api.cctor.com",
  "requestTimeoutMs": 15000
}
字段 默认值 含义
apiBaseUrl https://api.cctor.com 须为根 origin;生产环境要求 HTTPS;仅 localhost / 127.0.0.1 允许 HTTP。拒绝 URL 用户信息、路径、查询与 fragment。
requestTimeoutMs 15000 每次目录请求超时(毫秒,正整数)。

典型用法

  1. 安装并重启后,在 DSH Web 客户端打开市场工作区:搜索、按分类筛选,在详情页查看 README 与仓库信息;当前 Profile 已装的插件会显示本地版本。
  2. 若网络不稳定,界面可能展示 localized 的 stale / possibly outdated 横幅与 Retry;也可在工具栏使用「Reset cache」仅清本插件缓存后重试。
  3. 在 Agent 对话中,可由模型调用 cctor_search_plugins 与 cctor_get_plugin_details 检索与读详情;真正安装须经 cctor_request_plugin_install 拿到待确认项后,由用户在 UI 中完成确认(工具不能自行批准)。

适用场景与注意

适合:在本机 DSH 环境里日常浏览 CCTor 目录、核对当前 Profile 安装状态,并在确认后安装新插件的开发者。

注意:

  • 插件以当前 DSH 进程权限运行;安装任何 market 条目前,应自行查看目标插件源码、许可证与 install spec,勿仅依赖目录摘要。
  • 社区目录(如 SkillHub)与 DeepSeek / 幻方无官方从属关系,本文所述市场数据源为 api.cctor.com,不是「官方应用商店」叙事。
  • v1 deliberately 不做「静默安装」:模型工具只能发起确认流程,不能代替用户点选批准。

结尾

cctor-dsh-marketplace 把 CCTor 动态目录、缓存友好的离线体验和安装确认边界收进一个 DSH bundle,减少手工拼命令与目录信息脱节的问题。进一步说明见仓库 README(含 简体中文)。

  • SkillHub 目录页:https://www.skillhub.cn/plugins/oday0311/open-dsh-market
  • GitHub:https://github.com/oday0311/open-dsh-market
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜