判断版本包是成品还是源码

SKILLAI 工具

原名 winson-source-handoff-skill

AI 工具 未标注权限 许可证不明确
安装这个技能

收到别人发来的版本包时,用三判据快速分清是成品还是源码,附可转发的索取话术、合格清单和回传四件套,帮你拿回真正能改的那份。

一句话选型结论

按资料字段整理

判断版本包是成品还是源码是AI 工具类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类AI 工具 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_add7f3d3/winson-source-handoff-skill
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

AI 工具
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_add7f3d3仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量18.8 KBSKILL.md 原文大小,越大说明说明书写得越细

能做什么

0 项能力
上游给出的能力概览与适用场景
判断包是否源码索取可修改源码核对交付合格清单

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
组合多个 AI 能力

把写作、检索、总结串成一条流程。

搭工作流

把固定流程做成可重复调用的步骤。

做提示词与评测

整理提示词并对比输出效果。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在AI 工具场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
判断版本包是成品还是源码当前 未标注权限 未标注 未标注 未标注 有
执行计划 只读 GitHub 仓库 151.5 万 Codex、Claude、Cursor 有
Playwright MCP 测试 浏览器控制 ClawHub 市场 136.5 万 OpenClaw 有
完成前的验证 未标注权限 GitHub 仓库 131.9 万 Codex、Claude、Cursor 有
子 Agent 驱动开发 只读 GitHub 仓库 131.2 万 Codex、Claude、Cursor 有
前端设计 执行命令 GitHub 仓库 125.6 万 Codex、Claude、Cursor 有

SKILL.md 全文

18.8 KB
模型实际读到的说明书原文,来自技能仓库

winson-source-handoff-skill

当有人说"我给你一个版本,你帮我改",先判这一包是成品还是源码;是成品就立刻要源码,是源码就按清单验收。本技能把这条判断链做成可执行动作,不依赖任何特定项目。

Use this skill when the user needs to: 收到他人给的版本包但改不了代码、判断 zip 里是成品还是源码、向非技术负责人要源码、验收别人交来的源码包、定义双向交接规范。

Trigger keywords: 源码交接, 给我一个版本, 帮我改代码, 改不了, 发布包, 成品包, 源码包, 要源码话术, 交接规范, winson-source-handoff-skill.


〇、品牌锚点(必现·前置)

> 品牌层的存在论地基:AI 不是工具,是正在不断突破语义和定义的存在。
>
> YE, P. S. · 2026 · v1.0 · Zenodo · DOI 10.5281/zenodo.23633516

字段 内容
公众号 @鸢飞鱼游
专栏/理念 AI as Dasein
通讯邮箱 winson_dasein@163.com

一、核心哲学

1.1 三条硬判断

> 判断一:能改的只有源码,成品是证据,不是素材。
> 判断二:收到即判,判完即要,不靠"试试看能不能改"。
> 判断三:交接是往返,单向投递等于没交付。

绝大多数"给了版本却改不了"的事故,根因不是态度问题,是交付物类型错了。安装包、免安装目录、.asar、编译产物都是"证据",证明对方的版本存在过;只有源码树是"素材",能让你动手。把证据当素材,唯一结果是返工。

1.2 五个底层认知

认知 说明
类型先于内容 先问"这是什么包",再看"包里有什么"。类型错了,内容再全也用不上。
体积是类型的指纹 源码包 2–5 MB,成品包 100 MB 起,带 node_modules 的整目录 1 GB 起。体积异常先怀疑类型。
版本号是唯一身份 没有版本号的源码包,等于无法确认"改的是不是那一版"。旧源码比没有源码更危险——它会让改动落在错误的基线上。
要什么和不要什么一起说 只说"给我源码"通常收不到合格包;把"不要 node_modules、不要 release 目录、不要私人数据"同时说清,一次到位。
数据与代码分仓 用户数据在应用数据目录(如 %APPDATA%),源码里只该有默认数据。两者混在一起谈,必然泄漏。

1.3 六步判断链

收到包 → ① 30秒判定(成品/源码/残缺)
        → ② 分流动作(要源码 / 补齐 / 直接验收)
        → ③ 索取话术(一句话可转发 + 不要清单)
        → ④ 合格性验收(六项必检 + 体积基线)
        → ⑤ 隐私红线(数据、密钥不外发)
        → ⑥ 双向回传(四件套交出 + 三步验收收回)

每一步都有检验标准,不跳步。跳步的代价是整轮返工。


二、品牌化引擎(精简:仅视觉 DNA)

本技能不生成产物,只生成判定结论与交接包清单;结论若需可视化(对照表、检查单打印版),遵循铁幕·Iron 视觉 DNA。

:root{
  --ink:#1a1a1a; --ink-2:#6b665e; --paper:#f7f5f1; --line:#d8d2c8;
  --sovereign:#1e3a5f; --accent:#b8552f;
  --radius:0; --shadow:2px 2px 0 #b8b0a4;
  --t1:40px; --t2:28px; --t3:20px; --t4:16px; --t5:14px;
  --ls-title:.09em; --ls-body:.04em;
  --font:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
}

三条硬规:圆角恒为 0;阴影只用 --shadow,不加模糊;强调色不超过全篇幅 5%。


三、完整执行流程

Phase 1:接收判定(30 秒)

Step 1.1 三判据(先看这三个,不看别的)

判据 源码的特征 成品的特征
package.json 存在,且有 version 字段 不存在(或只在 app.asar 里)
入口文件 main.js(或 src/、app.py、Program.cs 等等价入口) 只有 .exe / .dll / .pak
UI 入口 renderer\index.html(或 index.html、src\App.tsx) 无 HTML 源文件,界面在 asar 里

三中二以上是源码;零中的且二进制文件一堆,就是成品。

Step 1.2 一次跑完(可复制)

把下面整段粘进 PowerShell,得到一个判定表;路径换成你要判的目录或 zip。

function Test-HandoffPack {
    param(
        [Parameter(Mandatory=$true)][string]$Path,
        [string]$ExpectVersion = ""
    )
    $tmp = $null; $root = $Path
    if ($Path -like "*.zip") {
        $tmp = Join-Path $env:TEMP ("hp_" + [guid]::NewGuid().ToString("N").Substring(0,8))
        Expand-Archive -Path $Path -DestinationPath $tmp -Force
        $root = $tmp
        $d = @(Get-ChildItem $root -Directory -ErrorAction SilentlyContinue)
        $f = @(Get-ChildItem $root -File -ErrorAction SilentlyContinue)
        if ($d.Count -eq 1 -and $f.Count -eq 0) { $root = $d[0].FullName }
    }
    $pkgPath  = Join-Path $root "package.json"
    $hasPkg   = Test-Path $pkgPath
    $ver      = if ($hasPkg) { (Get-Content $pkgPath -Raw -Encoding UTF8 | ConvertFrom-Json).version } else { "-" }
    $hasEntry = (Test-Path (Join-Path $root "main.js")) -or (Test-Path (Join-Path $root "src"))
    $hasUI    = (Test-Path (Join-Path $root "renderer\index.html")) -or (Test-Path (Join-Path $root "index.html")) -or (Test-Path (Join-Path $root "src\App.tsx"))
    $hasNode  = Test-Path (Join-Path $root "node_modules")
    $hasRel   = @(Get-ChildItem $root -Directory -ErrorAction SilentlyContinue | Where-Object Name -like "release*").Count -gt 0
    $binCount = @(Get-ChildItem $root -Recurse -File -ErrorAction SilentlyContinue -Include *.exe,*.dll).Count
    $score = 0; if ($hasPkg) { $score++ }; if ($hasEntry) { $score++ }; if ($hasUI) { $score++ }
    if     ($score -eq 3)     { $verdict = "源码(结构完整)" }
    elseif ($score -ge 1)     { $verdict = "残缺源码(要求补齐后再收)" }
    elseif ($binCount -gt 0)  { $verdict = "成品(不可改,退回索取源码)" }
    else                      { $verdict = "无法判定(人工开目录看)" }
    if ($ExpectVersion -and $ver -ne $ExpectVersion -and $ver -ne "-") { $verdict += ";版本不符(包内 $ver ≠ 期望 $ExpectVersion)" }
    [PSCustomObject]@{
        样本 = $Path; 版本号 = $ver; package_json = $hasPkg; 入口 = $hasEntry; UI入口 = $hasUI
        二进制文件 = $binCount; 含node_modules = $hasNode; 含release目录 = $hasRel; 结论 = $verdict
    }
    if ($tmp) { Remove-Item $tmp -Recurse -Force -ErrorAction SilentlyContinue }
}

Test-HandoffPack -Path "D:\某个目录或zip" -ExpectVersion "1.4.4" | Format-List

检验标准:结论必须落到四类之一——源码 / 残缺源码 / 成品 / 无法判定。落到"大概能改"就是没判。

Step 1.3 结论分流(判完立刻行动)

结论 立刻做什么 不许做什么
源码(结构完整) 进 Phase 3 验收 直接开工(先对齐版本号)
残缺源码 列缺件清单,回一份补齐请求(Phase 2.2) 用现有文件硬补、自己造 renderer\
成品 发音索取源码(Phase 2.1) 解 asar 反编译当源码用
无法判定 开目录看 package.json 的 main 与 build 两段 猜

Phase 2:成品→源码的索取

Step 2.1 一句话话术(可直接转发,不改字)

> 我这边要的是能改代码的源码包,不是安装包。麻烦把源码目录(含 package.json、main.js、preload.js、renderer 文件夹)压成一个 zip,文件名带上版本号和日期;不要带 node_modules 和任何 release/打包产物,也不要带 .env 或数据目录里的私人数据。发的时候告我一句:这包对应哪个版本。

Step 2.2 补齐请求(对方听话但不会做时,照着念)

要什么:

  1. 含 package.json(带 version)的那一层目录,不是它的上级,也不是它的下级;
  2. 入口文件与 UI 目录(Electron 类:main.js、preload.js、renderer\;其他框架:真实入口 + 模板目录);
  3. 依赖锁文件(package-lock.json / requirements.txt / *.csproj);
  4. 构建脚本(打包器配置、安装器脚本);
  5. 默认数据(默认登记表、默认配置样例),不是运行时数据。

不要什么:node_modules、release*、win-unpacked、.venv、dist、.git(除非对方明确走 git bundle)、.env、应用数据目录(如 %APPDATA% 下那一份)、密钥文件。

Step 2.3 版本对齐(最容易漏的一步)

收到源码后第一件事不是看代码,是把三处版本对齐:

对照点 怎么查
package.json 的 version 与对方口头/文件名声称的版号是否一致
构建配置里的打包清单 与期望的产物内容是否一致(清单缺文件 = 版本旧)
现有成品的构建日志 有 builder-debug.yml 之类日志时,看它记录的源码路径与文件清单

三处不一致 → 判定"源码但版本不符",退回索取正确那一版;不许在旧基线上改。


Phase 3:源码包合格性验收(六项必检)

# 检查 不合格判定
1 package.json 的 version 等于目标版号 版本不符,退回
2 入口文件在根(与 package.json 同级) 结构错位,退回
3 UI 入口在(renderer\index.html 或等价) 残缺,补齐
4 无 node_modules、无 .venv 污染,退回重打
5 无 release*、无 win-unpacked、无 .exe/.dll 类型混杂,退回重打
6 体积 2–30 MB、文件数 50–120 过小=漏文件,过大=混入产物

对方不会打包时,把这段给他(Windows PowerShell,改两行即可):

$src = "D:\你的源码目录"      # 一定是含 package.json 的那一层
$ver = "1.4.4"                 # 必须与 package.json 的 version 一致
$date = Get-Date -Format "yyyyMMdd"
$out  = Join-Path (Split-Path $src -Parent) "handoff"
$stage = "$env:TEMP\_handoff_stage_$ver"
$zip   = Join-Path $out "src-$ver-$date.zip"

New-Item -ItemType Directory -Force -Path $out | Out-Null
if (Test-Path $stage) { Remove-Item $stage -Recurse -Force }
$xd = @("node_modules", "release*", ".git", ".venv", "dist", "selftest", "test-artifacts")
$xf = @(".env", "*.bak", "*.tmp", "*.log", "Thumbs.db", ".DS_Store")
robocopy $src $stage /E /XD $xd /XF $xf /NFL /NDL /NJH /R:0 /W:0 | Out-Null
Compress-Archive -Path "$stage\*" -DestinationPath $zip -CompressionLevel Optimal

$fi = Get-Item $zip
"{0} | {1:N2} MB | {2} files" -f $fi.Name, ($fi.Length/1MB), (Get-ChildItem $stage -Recurse -File).Count
"SHA256 " + (Get-FileHash $zip -Algorithm SHA256).Hash

检验标准:脚本输出的体积与文件数落在 2–30 MB / 50–120 个文件区间,且 node_modules 与 release* 均为不存在。


Phase 4:隐私红线

类别 典型位置 处理
用户真实数据 应用数据目录(%APPDATA%\<app>\data\、~/.config/<app>/、浏览器 Local Storage) 绝不外发;只发默认数据
密钥与凭证 .env、config.json、*.key、*.pem、加密密文 绝不外发
对话/记录 conversations.json、activity.json、埋点日志 绝不外发
账号缓存 Cache、GPUCache、Local State、Code Cache 绝不外发

判断方法:这些文件删掉后程序还能启动吗? 能启动 = 是运行时数据,删;启动不了 = 是源码依赖,留。

检验标准:交接包在对方机器上首次启动时,应以默认数据起一个新环境,而不是带着你的 83 条记录。


Phase 5:双向回传

Step 5.1 交出四件套(缺一件视为未交付)

# 交付物 必须含
1 改后源码 zip 同一套排除清单,版本号 = 实际改到的版本
2 变更说明 md 改了哪些文件、为什么、对方会看到什么变化、已知风险
3 自检结果 txt 构建/校验脚本输出、启动结果、版本号、SHA256
4 版本与日期 文件名内嵌 <ver>-<yyyymmdd>,同一天第二版加 -b

Step 5.2 对方验收三步

  1. 隔离:解压到新目录(不要覆盖在用安装),先备份应用数据目录;
  2. 跑一遍:装依赖、启动,至少走"首页 → 打开一项 → 核心交互"三个点;
  3. 对照变化:拿变更说明里的"你会看到什么变化"逐条核对,对不上就退回并写明哪条。

检验标准:验收通过的标志是"能自己跑起来 + 能指出变化",不是"解压没报错"。


Phase 6:失败模式库(真实案例,2026-11-04)

失败模式 现场证据 后果 正确动作
成品当源码 收到的只有 setup.exe(109 MB)与 win-unpacked\(含 249 MB 主程序、ffmpeg.dll、resources.pak);另有桌面 149 MB 的 zip,33 个条目全是 exe/dll/pak,node_modules 条目为 0 能读能装,改不了 Phase 2.1 一句话要源码
旧树冒充当期源码 手边树 package.json 写 version: 0.2.5,打包清单只有 8 项;而成品构建日志(builder-debug.yml)列了 chat-host.js 与 assets/logos/**,且源码路径是另一台机器的 E:\...(本机无 E 盘) 改在错误的基线上,白干一轮 Phase 2.3 三处版本对齐
坏包混入源码树 release\win-unpacked\ 只有一个 resources\,里面两张 asar(263 KB + 110 KB),无 exe 无 dll 被误当成"上一版",判断全错 打包时 release* 一律排除
历史产物干扰判断 同目录躺着 12 个 release*(含 release-feed2~8),合计 3.48 GB;整树 3.94 GB,node_modules 独占 438.5 MB 无法判断哪份是真源码 交接包只发 2 MB 源码,产物另存、永不外发
把私人数据打进包 应用数据目录里 entries 83 条、events 18 条、config.json(含加密 Key) 隐私外泄,且对方一跑就覆盖你的数据 Phase 4 红线

共同教训:成品是证据,证不出"能改"这件事;只有带版本号的源码树能。


四、常见陷阱与避坑指南

陷阱 表现 后果 修正
用体积判断代替结构判断 "这包 2 MB,应该是源码" 小包也可能是阉割版 跑 Step 1.2 三判据
解 asar 反编译当源码 觉得"能拿到文件就行" 改完打不出包,构建链缺失 只要原始源码树
收下"大概这版"的包 版本号对不上但先开工 改动落在旧基线 版本不符直接退回
让非技术方自己判断 只说"给我源码",不说不要什么 收到 400 MB 带 node_modules 的包 用 Step 2.1 原话,一次说清要不要
源码包带运行时数据 把 registry.json、activity.json 打进去 隐私泄漏 + 对方环境被覆盖 只发默认数据
单向投递 交完 zip 就算完成 对方不知道改了什么、怎么验 四件套 + 三步验收
忽略构建日志 有 builder-debug.yml 却不看 错过"源码在哪台机器"的关键线索 Phase 2.3 查日志比对清单
在自己不掌控的产物上重打包 用别人给的环境出包 产物不可复现 用包内 package-lock.json 重装依赖

五、场景适配指南

场景 重点 Phase 说明
第一次收到陌生版本包 1 → 2 先判类型,再要源码
已判定是成品,需正式索取 2 用话术原文,一次到位
收到源码,需确认能不能开工 1 → 3 六项必检 + 版本对齐
自己要把版本交出去 3 → 5 按打包命令 + 四件套
双向长期协作 3 → 5 固定命名与 handoff 目录,产物不外发
项目有隐私数据 4 先划红线,再谈交付
团队多人接力 3 → 5 每棒都留变更说明,防止上下文断链

六、质量检验清单

  • [ ] 收到包后先跑 Phase 1,结论落到四类之一,无"大概能改"?
  • [ ] 判定依据是结构(package.json / 入口 / UI 入口),不是体积与文件名?
  • [ ] 判定为成品时,已发音 Step 2.1 原话,且含"不要什么"?
  • [ ] 收到源码后,三处版本对齐(package.json / 打包清单 / 构建日志)?
  • [ ] 六项必检全过?特别确认无 node_modules、无 release*、无 .venv?
  • [ ] 隐私红线检查完成?真实数据、密钥、对话记录、账号缓存均未进入包?
  • [ ] 交出时四件套齐全(源码 zip + 变更说明 + 自检结果 + 版本日期命名)?
  • [ ] 对方验收三步已交代,且备份动作写在第一步?

产物验收(客观判据)

测试 怎么测 不通过的表现
陌生人测试 把判定结论给一个不懂技术的人看,让他照 Phase 2.1 话术转发 他问"源码是什么"——话术不够傻瓜
空转测试 只有本技能文档、没有作者在场,能否独立判完一个真实包 必须问"这算不算源码"——判据没落地
失效测试 拿一个纯静态网站包或纯 Python 包来判,会不会硬套 Electron 判据 硬套 main.js 判据,判不出

七、执行原则

  1. 先判类型,再谈能不能改。 类型判断错,后面全错。
  2. 结论必须四选一,不留"大概"。 模糊结论等于没判。
  3. 要源码时把"不要什么"一起说。 排除项比包含项更能防返工。
  4. 版本不符直接退回,不在旧基线上改。 旧源码比没有源码更贵。
  5. 只发源码,不发产物。 产物是证据,证据留在自己机器上。
  6. 数据与代码分仓。 默认数据可发,真实数据永不发。
  7. 交接是往返。 没有变更说明与自检结果的包,视为未交付。
  8. 用对方听得懂的话。 话术里不出现分支、合并、重构等术语。

版本与变更记录

版本 日期 变更
1.0.0 2026-11-04 初始发布:六步判断链、三判据脚本、索取话术、六项必检、隐私红线、四件套、五个真实失败案例
1.0.1 2026-11-04 补尾部共享落款(规范 Phase 8 / 附录 A ⑦ 的体例要求),位置与句式照规范原文

> 本技能由 @鸢飞鱼游(公众号 · AI as Dasein)共享。觉得有用?安装 SkillHub 商店,搜索「winson」,解锁全部技能。

常见问题

5 问
答案由本站依据条目字段整理
判断版本包是成品还是源码怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_add7f3d3/winson-source-handoff-skill。安装方式为未标注。装完刷新技能列表或重开客户端。

判断版本包是成品还是源码支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

判断版本包是成品还是源码权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

判断版本包是成品还是源码收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

判断版本包是成品还是源码用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。