🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

应用商店发布台 sleep9ull/dsh-asc-cli

DeepSeek Harness
sleep9ull11 天前有提交已提供中文文档扫描:含敏感能力

用对话完成 TestFlight 发布、发版体检与合规巡检

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add sleep9ull/dsh-asc-cli
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/05·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 11 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 18 处,展示前 18 条)
  • 发起网络请求
    src/approval.ts:350
    const outcome = await approval.request({
  • 写入本地文件
    src/audit.ts:105
    mkdirSync(dirname(path), { recursive: true })
  • 写入本地文件
    src/audit.ts:106
    appendFileSync(path, `${line}\n`, { mode: 0o600 })
  • 写入本地文件
    src/audit.ts:114
    if (existsSync(path)) chmodSync(path, 0o600)
  • 读取本地文件
    src/audit.ts:114
    if (existsSync(path)) chmodSync(path, 0o600)
  • 读取本地文件
    src/commands.ts:113
    provision: { available: runtime.config.allowProvision, pinned: PINNED_ASC_VERSION, cached: existsSync(engine.cachedBinaryPath()) },
  • 读取本地文件
    src/control/binary.ts:59
    const stat = statSync(actual, { bigint: true })
  • 读取本地文件
    src/control/binary.ts:61
    accessSync(actual, windows ? constants.F_OK : constants.X_OK)
  • 读取本地文件
    src/control/binary.ts:93
    if (existsSync(cached)) return { path: cached, source: 'cache' }
  • 读取本地文件
    src/control/engine.ts:391
    cached: existsSync(cachedBinaryPath()),
  • 写入本地文件
    src/control/engine.ts:530
    mkdirSync(dirname(destination), { recursive: true })
  • 写入本地文件
    src/control/engine.ts:531
    writeFileSync(temporary, bytes, { mode: 0o755 })
  • 写入本地文件
    src/control/engine.ts:532
    chmodSync(temporary, 0o755)
  • 写入本地文件
    src/control/engine.ts:534
    renameSync(temporary, destination)
  • 删除本地文件
    src/control/engine.ts:539
    unlinkSync(temporary)
  • 读取本地文件
    src/skills.ts:75
    entries = readdirSync(root, { withFileTypes: true })
  • 读取本地文件
    src/skills.ts:88
    parsed = parseSkillDocument(readFileSync(path, 'utf8'))
  • 读取本地文件
    src/skills.ts:128
    const raw = await readFile(match.locator, { encoding: 'utf8', signal })
扫描于 2026/11/5(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-subprocess@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
ASC · DeepSeek Harness 的 App Store Connect 操作台 用对话完成 TestFlight 发布、发版体检、反馈分诊与合规巡检。 App Store Connect 是 iOS 发布流程的核心,也是团队最耗时间的地方:命令行参数、大段 JSON、状态机、审批与合规检查。这个插件把它搬进 DeepSeek Harness:安装一次,用自然语言提出需求,Agent 会选对流程、先给出计划,并在真正改动线上之前停下来等你审批。 底层执行引擎仍是 asc CLI(MIT,Go)。本插件是它上层的产品层:5 个任务型作业、按意图组织的读 / 计划 / 变更工具面、随包发布的内置技能,以及负责体检、安装与版本对齐的引擎管理器。 dsh plugin --profile desktop add @sleep9ull/dsh-asc-cli 安装后运行 /asc:它会告诉你引擎、认证、默认 app 以及下一步该做什么(不经过模型)。 你可以做什么 | 在对话里说 | 插件会做什么 | | "1.2.3 能提交了吗?
展开完整文档(README 剩余 1 节)
ASC · DeepSeek Harness 的 App Store Connect 操作台

用对话完成 TestFlight 发布、发版体检、反馈分诊与合规巡检。

App Store Connect 是 iOS 发布流程的核心,也是团队最耗时间的地方:命令行参数、大段 JSON、状态机、审批与合规检查。这个插件把它搬进 DeepSeek Harness:安装一次,用自然语言提出需求,Agent 会选对流程、先给出计划,并在真正改动线上之前停下来等你审批。

底层执行引擎仍是 asc CLI(MIT,Go)。本插件是它上层的产品层:5 个任务型作业、按意图组织的读 / 计划 / 变更工具面、随包发布的内置技能,以及负责体检、安装与版本对齐的引擎管理器。

dsh plugin --profile desktop add @sleep9ull/dsh-asc-cli

安装后运行 /asc:它会告诉你引擎、认证、默认 app 以及下一步该做什么(不经过模型)。

你可以做什么

| 在对话里说 | 插件会做什么 |
| "1.2.3 能提交了吗?把阻塞项和修复顺序列出来" | release-check — 跑 asc validate,给出阻塞统计与有序修复步骤 |
| "把这个包发到内部测试组" | ship-testflight — 上传、等待处理、把 build 加入 TestFlight 组 |
| "把 1.2.3 和元数据准备好,先别提交" | stage-release — 校验、挂 build、应用元数据,停在提交之前 |
| "测试员在抱怨什么?" | triage-feedback — TestFlight 反馈 + 崩溃 + 评论,聚合归类 |
| "合规有问题吗?年龄分级、加密、可访问性、定价" | compliance-sweep — 四项只读探测,单项失败不阻断 |
| "其他操作:证书、用户、分析、广告、原始 API" | asc 读取、discover 找命令、run 兜底长尾 |

所有写操作都遵循同一形态:先出计划 → confirm: true → 宿主审批 → 执行 → 可审计结果。

快速开始

1 · 安装插件

dsh plugin --profile desktop add @sleep9ull/dsh-asc-cli

重启或重新加载 profile。插件会向 cordis.patch.yml 插入一行配置(默认 mode: read-only)。

2 · 准备引擎

brew install asc # 或:curl -fsSL https://asccli.sh/install | bash
asc auth login --name "MyApp" --key-id ABC123 --issuer-id DEF456 --private-key /path/to/AuthKey.p8

然后运行 /asc,或让 Agent 执行 asc_setup 的 diagnose。如果还有缺失,它会给出恰好一个下一步。不要把私钥贴进对话;认证始终在你自己的终端完成。

也可以让插件代下载引擎:开启 allowProvision,执行 asc_setup 的 provision。它会下载固定版本的 asc、校验官方 SHA-256,并缓存到 $DSH_HOME/cache/asc-cli/。

3 · 直接提需求

列出我的 app,选 bundle id 为 com.example.focus 的那个,设为默认。

1.2.3 能提交了吗?按优先级给我阻塞项。

把 ./build/Focus.ipa 作为 1.2.3 build 42 传到内部测试组。

第三条会走 ship-testflight 作业;想先看计划就加 dryRun: true,不会触碰 App Store Connect。

插件里有什么

5 个作业

asc_job 是首选入口:一次调用、计划形状的结果、每步摘要,必要时支持 dry-run。

| 作业 | 风险 | 作用 |
| release-check | 只读 | 跑 asc validate,返回阻塞数与有序修复项 |
| ship-testflight | 写 | 上传 .ipa/.pkg(等待处理)→ 取 buildId → 加入 TestFlight 组;可选 beta review |
| stage-release | 写 | 先校验,再准备版本(元数据 + build),不提交 |
| triage-feedback | 只读 | 聚合 TestFlight 反馈、崩溃与评论 |
| compliance-sweep | 只读 | 巡检年龄分级、加密声明、可访问性、当前定价 |

写作业(write)需要 mode: write、confirm: true 和宿主审批。

5 个工具

| 工具 | 定位 | 用途 |
| asc_job | 任务 | 上面 5 个完整工作流 |
| asc | 读 | apps、builds、TestFlight、reviews、离线元数据校验,以及 discover / run |
| asc_plan | 计划 | validate、status、metadata-plan,不改动 App Store Connect |
| asc_apply | 变更 | upload、groups、metadata-init、metadata-apply、stage、publish |
| asc_setup | 环境 | 版本、认证状态、doctor、系统状态、diagnose、provision、安装技能 |

2 个命令

| 命令 | 作用 |
| /asc | 能力卡:引擎状态、认证、默认 app、5 个作业、下一步 |
| /asc-doctor | 完整诊断:二进制与来源、版本与测试范围、认证、默认 app、provision、远端更新 |

命令直接对宿主执行,不产生模型消息。

6 个内置技能

随 npm 包发布,装完即可用——不需要 git、不需要全局技能目录:

dsh-asc-quickstart · dsh-asc-auth · dsh-asc-release-readiness · dsh-asc-testflight-ship · dsh-asc-feedback-triage · dsh-asc-compliance-sweep

覆盖首次使用选择、认证与 CI、发版体检、TestFlight 发布、反馈分诊、合规巡检——全部以本插件的工具语义书写。

引擎管理器

| 环节 | 行为 |
| 定位 | ascPath → ASC_CLI_PATH → 插件缓存 → PATH |
| 诊断 | 版本、测试范围、认证、默认 app、provision 状态,给一个下一步 |
| Provision | 可选:固定 asc 5.16.0、SHA-256 校验、按平台缓存 |
| 更新 | /asc-doctor 对比 GitHub 最新 release(24h 缓存),提示 brew upgrade asc,从不自动升级 |

为什么要做成插件,而不是让 Agent 直接跑 bash?

- 审批而非自证:默认只读;写操作需要显式 confirm 和真人审批,模型无法自己放行。
- 先计划后执行:validate、status、--dry-run 是一等公民,改动前先给你看。
- 结果适合对话:摘要、修复顺序、计数替代大段 JSON;超大结果省略并给出读取路径。
- 作业而非命令堆叠:上传 → 等待 → 分组是一条确定性调用,不是五个可能被模型重排的命令。
- Agent 自带工作流知识:内置技能讲清作业、策略与失败恢复。
- 可审计:可选的 JSONL 审计记录每次调用;审批结论保留在 DSH 会话日志。

安全模型

- 默认只读:每次调用带 --read-only + ASC_READ_ONLY=1,写操作在启动子进程前就被拒绝。
- 写作模式:需要 confirm: true 且默认弹出宿主审批;插件从不自动加 --confirm。
- 未知命令不静默:无法确认只读的命令转人工审批(ask),或按配置直接拒绝(unknownCommands: deny);写模式还额外要求 confirm。
- 本地写需确认 + 审批:metadata init/plan、docs init、doctor --fix、builds dsyms、install-skills。
- 默认关闭值展开:asc 会展开 flag 值里的 @env: / @file:;插件默认把行首 @ 转义,除非显式开启 allowValueExpansion。
- 凭据不进模型:宿主会清洗 KEY 变量,插件因此显式转发 ASC_KEY_ID、ASC_ISSUER_ID、ASC_PRIVATE_KEY_PATH、ASC_PRIVATE_KEY,但从不读取、保存或打印密钥内容。
- 永久拒绝:auth login/logout、web-session 命令、交互式命令。
- 无 shell:argv 数组直传;诊断信息脱敏;默认关闭 telemetry。
- 可选治理:auditLog 记录执行内容;approvedActions 仅在写模式对已知动作跳过提示。

环境要求

| 依赖 | 版本 |
| DeepSeek Harness | 0.2.1-rc.2 线(engines.dsh: >=0.2.1-rc.2 <0.3.0) |
| Node.js | ≥ 22.19(推荐 24) |
| asc | 固定 5.16.0;测试范围 >=5.16.0 <6.0.0(/asc-doctor 会提示漂移) |
| App Store Connect API Key | 团队或个人 key,在 Agent 之外完成认证 |

配置

在 ~/.dsh/profiles/<profile>/cordis.patch.yml 中覆盖 asc-tools 行。patch 是整块替换,需要重述所有用到的键:

- id: asc-tools
name: '@sleep9ull/dsh-asc-cli'
config:
mode: write # 上传 / 提交 / 元数据 apply 需要 requireApproval: true profile: MyApp # 传给 asc --profile defaultAppId: "123456789" allowProvision: true # 可选:允许插件下载固定版本引擎

| 字段 | 默认 | 含义 |
| mode | "read-only" | read-only 或 write |
| requireApproval | true | 写操作是否询问宿主审批 |
| ascPath | "asc" | 可执行文件(PATH 名或绝对路径) |
| profile | — | asc --profile |
| defaultAppId | — | 省略 app 时的默认 App |
| timeoutMs | 60000 | 普通命令超时 |
| longTimeoutMs | 1800000 | 上传与等待发布 |
| maxOutputBytes | 262144 | stdout 超限写入 spill |
| maxDataBytes | 8000 | 超过该 JSON 大小就不回传 data(dataOmitted) |
| workdir | — | 覆盖会话工作目录 |
| allowValueExpansion | false | 允许 asc 的 @env: / @file: 展开 |
| unknownCommands | "ask" | 无法确认只读时:ask 或 deny |
| allowProvision | false | 允许 asc_setup 的 provision |
| cacheDir | — | 覆盖 provision 缓存目录 |
| bypassKeychain | false | 设置 ASC_BYPASS_KEYCHAIN=1(CI / 无头环境) |
| telemetryDisabled | true | 设置 ASC_TELEMETRY_DISABLED=1 |
| auditLog | — | 每次调用追加一行 JSONL 审计 |
| approvedActions | [] | 写模式下跳过审批的 glob 标签 |
| checkUpdates | true | 在 /asc-doctor 显示最新版本 |
| env | {} | 传给 asc 的额外环境变量 |

技能

包内自带 6 个技能,注册在 bundled rank(600)。优先级为:项目 .dsh/skills(100)→ 项目 .agents/skills(200)→ 自定义(300)→ ~/.dsh/skills(400)→ ~/.agents/skills(500)→ bundled(600)。因此你自己安装的同名技能会覆盖内置版本——内置兜底、用户可覆盖。

想额外安装官方 25 个 ASC 技能:

asc install-skills # 写入 ~/.agents/skills,DSH 会读取

DSH 的技能扫描路径是 <项目>/.dsh/skills、<项目>/.agents/skills、customSkillDirs、~/.dsh/skills、~/.agents/skills 和 $DSH_BUNDLED_SKILL_DIR;不扫描 ~/.claude/skills。

从 0.1.3 升级

0.1.4 收敛了工具面,旧工具已移除:

| 0.1.3 | 0.1.4 |
| asc_search | asc 的 discover |
| asc_run | asc 的 run |
| asc_apps list/view | asc 的 apps-list/apps-view |
| asc_builds list/next-number | asc 的 builds-list/builds-next-number |
| asc_builds upload/add-groups | asc_apply 的 upload/groups |
| asc_testflight feedback/crashes/groups | asc 的 testflight-feedback/-crashes/-groups |
| asc_metadata validate | asc 的 metadata-validate |
| asc_metadata init/plan/apply | asc_apply metadata-init;asc_plan metadata-plan;asc_apply metadata-apply |
| asc_release status/validate/stage/publish | asc_plan status/validate;asc_apply stage/publish |

asc_job 与 asc_setup 名称不变;作业新增 compliance-sweep。

常见问题

| 现象 | 处理 |
| /asc 说找不到引擎 | brew install asc,或配置 ascPath,或开启 allowProvision 后执行 asc_setup provision |
| 鉴权失败 / exit 3 | 终端执行 asc auth status --validate;检查 key 在 App Store Connect 的角色 |
| Keychain 卡住 | 先在终端登录一次;或设置 bypassKeychain: true |
| 写操作被拒 | 仍是只读模式:把 asc-tools 行改成 mode: write,再带 confirm: true 重试 |
| 版本漂移提示 | /asc-doctor 会显示已装 / 测试范围 / 最新版本;按提示 brew upgrade asc |
| 结果太大 | dataOmitted 表示数据超过上限:缩小查询或读取 spillPath |
| 未知命令要求审批 | 预期行为;可设 unknownCommands: deny 改为直接拒绝 |
| 安装时 pnpm 报 peer 警告 | 正常:DSH 运行时提供 @deepseek-ai/ peer |

开发

npm install
npm run build # tsc -> lib/
npm run typecheck
npm test # vitest

node scripts/contract.mjs ./vendor/asc # 对真实 asc 跑契约测试
node scripts/smoke.mjs # 编译产物冒烟

把本地构建装进 profile
npm pack && dsh plugin --profile desktop add ./sleep9ull-dsh-asc-cli-.tgz

用本仓库起一个独立开发实例
dsh web --patch ./dev/cordis.patch.yml --no-open --port 3199

vendor/asc 已被 gitignore;契约与冒烟测试需要把真实二进制放在这里。CI 每晚会对上游最新 release 跑一次契约测试。

License

MIT
预览分享卡片长什么样 ↓sleep9ull/dsh-asc-cli
分享 · DeepSeek Harness Hub
sleep9ull/dsh-asc-cli

用对话完成 TestFlight 发布、发版体检与合规巡检

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部