From 3b017d3cb67cea802ffdbb63c52be2c3a8454ed6 Mon Sep 17 00:00:00 2001 From: farmyobutu5233 Date: Sun, 5 Jul 2026 10:44:13 +0000 Subject: [PATCH] =?UTF-8?q?chore:=20=E7=A7=BB=E9=99=A4=E8=AF=AF=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E7=9A=84=20=5F=5Fpycache=5F=5F=EF=BC=9Bdocs(research)?= =?UTF-8?q?:=20=E8=A1=A5=E5=85=85=E6=9E=B6=E6=9E=84=E5=9B=BE=E4=B8=8E?= =?UTF-8?q?=E7=A7=91=E7=A0=94=E5=9C=BA=E6=99=AF=E5=BA=94=E7=94=A8=E6=8A=A5?= =?UTF-8?q?=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- .gitignore | 1 + examples/research/repro-audit/README.md | 12 ++++++ .../repro-audit/docs/application-report.md | 37 ++++++++++++++++++ .../__pycache__/repro_audit.cpython-312.pyc | Bin 14704 -> 0 bytes 4 files changed, 50 insertions(+) create mode 100644 examples/research/repro-audit/docs/application-report.md delete mode 100644 examples/research/repro-audit/scripts/__pycache__/repro_audit.cpython-312.pyc diff --git a/.gitignore b/.gitignore index bd0ccf8..c80facc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ gitlink-cli.exe /gitlink-cli +__pycache__/ diff --git a/examples/research/repro-audit/README.md b/examples/research/repro-audit/README.md index 48e3c16..5d002cc 100644 --- a/examples/research/repro-audit/README.md +++ b/examples/research/repro-audit/README.md @@ -10,6 +10,18 @@ - **学术规范检查**:许可证、引用信息(CITATION.cff/BibTeX)、数据可得性一次性核验 - **可进 CI**:退出码 `2` 表示存在明显复现缺口,可作为科研仓库的发布门禁 +## 架构图 + +```mermaid +flowchart LR + A["repo +tree
仓库顶层结构"] --> D["八维确定性评估
文档/许可证/引用/依赖
入口/数据说明/测试/版本固化"] + B["file +view --raw
README 内容"] --> D + C["release +list
版本发布信息"] --> D + D --> E["0-100 评分卡
A/B/C/D 等级 + 逐项证据与建议"] + E -->|"dry-run(默认)"| F["报告落盘
退出码 0/2 → 发布门禁"] + E -->|"--apply"| G["issue +create
回写改进 tracking issue"] +``` + ## 交付物 - `scripts/repro_audit.py`:完整审计闭环(纯标准库,Python ≥3.9,零第三方依赖) diff --git a/examples/research/repro-audit/docs/application-report.md b/examples/research/repro-audit/docs/application-report.md new file mode 100644 index 0000000..5defad3 --- /dev/null +++ b/examples/research/repro-audit/docs/application-report.md @@ -0,0 +1,37 @@ +# 科研场景应用报告:基于 gitlink-cli 的科研复现性审计 + +## 1. 科研问题背景 + +「复现危机」是学术界公认的系统性问题:大量论文附带的代码仓库缺少依赖清单、运行说明、数据来源与版本固化,导致同行无法复现结果。科研工作者需要一个**低成本、可自动化、判据透明**的工具,在论文投稿与代码开源前完成复现性体检。 + +## 2. 技术实现 + +- **数据获取层**:全部通过 `gitlink-cli` 完成——`repo +tree`(仓库结构)、`file +view --raw`(README 内容)、`release +list`(版本发布),无任何直接 HTTP 调用。 +- **评估层**:八维确定性检查(README 运行说明 / 许可证 / 引用信息 / 依赖固化 / 运行入口 / 数据可得性 / 测试 / 版本发布),每项有明确判据、分值与证据输出;同输入必同输出,可进 CI。 +- **输出层**:0-100 评分卡 + A/B/C/D 等级 + 逐项修复建议;`--apply` 时用 `issue +create` 把报告回写为改进 tracking issue,形成可追踪的整改闭环。 +- **工程质量**:纯 Python 标准库(≥3.9)零第三方依赖;7 个确定性单测护栏;默认 dry-run,写操作显式开启。 + +## 3. 科研赋能价值 + +| 使用者 | 场景 | 价值 | +|--------|------|------| +| 课题组 | 论文投稿/开源发布前自查 | 逐项补齐复现要件,提升论文可信度 | +| 实验室管理者 | 批量审计组内科研仓库 | 统一学术规范(许可证/引用/数据说明) | +| 期刊/会议 artifact 评审 | 快速初筛 | 评分卡作为客观初审依据 | +| CI 门禁 | 科研仓库发布流程 | 退出码 2 阻断复现缺口明显的发布 | + +## 4. 落地效果(生产环境实测) + +在 gitlink.org.cn 生产环境对真实科研类仓库验证: + +| 仓库 | 类型 | 得分 | 等级 | 主要缺口 | +|------|------|------|------|----------| +| GengzhaoWang/UAV-Paper | 论文笔记仓库 | 8/100 | D | 全维度缺失(符合预期) | +| momomym/paper-summarizer | 科研工具代码仓库 | 58/100 | C | 引用信息、数据说明、release | + +区分度显著且每项证据可在仓库页面人工复核;`--apply` 回写 tracking issue 已在自有 fork 实测成功。完整证据见 [`verification.md`](verification.md),演示输出见 [`../examples/demo-outputs/`](../examples/demo-outputs/)。 + +## 5. 与 Skills 生态的关系 + +- 判据与命令链沉淀为 [`gitlink-repro-audit` Skill](../../../../skills/gitlink-repro-audit/SKILL.md),兼容 Claude Code / Cursor 等主流 AI Agent(标准 SKILL.md 规范)。 +- 与 `gitlink-doc-sync`(文档一致性)、`gitlink-license-compliance`(许可证合规)互补,共同覆盖科研仓库的学术规范维度。 diff --git a/examples/research/repro-audit/scripts/__pycache__/repro_audit.cpython-312.pyc b/examples/research/repro-audit/scripts/__pycache__/repro_audit.cpython-312.pyc deleted file mode 100644 index 2380313f6eaf4c89ee605a093e526e974b275af7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14704 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%0AwvnFe;cn07&&FlwxJsSe4&{gY8W zMdqT3Ujn~LbXUZ6K$r;XfDO|+!`G+>A#Iw)MSLaTO^`G|{+9|2$dhJB2mw~z+QPev z;_i~T^WZFW?nM10s`p!Zvi#*f`mE|LRZrGWPNb=0v$E+avyWSgIQzHg`24|Md>&TT zL3hZy?} z>PKlIDJAFJr(M1m{d0qg{?x15GpXm?l2ZG!A)7v}%BJ0BfSzxb?B%HYA(o#QPqh>2 zVmHzu95;xjuQn4QFJ-BL|8De5AMty@=_8&lH#)Kk3P!y*BLPd_BfeAPpTCI;zVvY7 zIxG=fj0GaCg)9TP)7`{lbXQbt+F4#vDf#!%CLjdKBgPV*Jszz_aQv;o+ND^OVS%Dw zRA3McBGHf;2ytc~)}MhQ+3Oco1VCv?qGbL&K)sES_n`O@@?`WN>wtK}CQDdv0ePiQ z38$1?bVCu=mv}3`)fNPo2N(6H_LufA98lj%A1dE-+ZcLkZ)k6ANd4T1T05f6^l`qu zp*c%}yMvqhA19&<@){l=QCl7uR0gHDax#T7W_HpeYD2faOYh_TbKhNfZlOOrkRI4^ zd2i3&z?R^S;ER22SK5LN1M-3LFSdTRbzsdc=j~;GSozh;p>5BH_C6olx<9nv8p=Fy zM{Ro`hyK20G(!g4AY=1Zj_6F?tGZVCc87Jd{kucDc_C(=L4Ofws!1Yi#BWwB# zdP`wbr$HetPP=0A4&1lsVI~(a+ZkjD)XpGBpmqis0<|;9kKVN8WXB4sTi(ss<#m)@ zwjcZ>gh@gUfWWZnnDR)Nr2Mq(l!<{Hln!i>{n>ATdrbL8iQl;5a_IlVsvx7~A?u3L z4_Si>(zQ@_{4Kbg8Ea8`faEUpMM?cCAOfKlG;xe-U8rqIZU6KA)5iKGE7Eo7U6>jh z>m4P^v@0grI}C!M0bKyoE(pXjy&16p0EX1q%$autw2N8LG6StaOV&k&2c1Gj!Pqc& z+7R$6=-BMuoWv-u`7szFNnc6Svblm015>WN7~D+%G3cG0=n-ayQfk`8?{O`TRk3r} zM?eRhaStHeJmbpPN7=^&J*>}sQO?eVRm@}O*MUpQzBkUg_#7o0$vvcqZVkRO@yY{{>76K9;fHIW;q$SObvu zXUFVuk*VhzTRnQnF(iq`g=l=Mq-Q7QfI(XC&$^^kV=3KG4q)g~gs>Z?!azQI8z%j= z9QNpww1h&DF7(KYnpls*?K)Jr64wh!?=9#`Czgm-(v>2g{`USC7r}0Um?p$)&{HKU z$R7nfs_6d;5D6~$69DI42(8a04YEHL{+X_SbrMG-YEZCZ4`fRoY+>8^MTlXfO|oM! zazyf-O#Oobs4M&_ghU#ez``<1R6{xrEZE73#&W*SjoBgF@s$_#5J9v;E2$H;1PI@q zd^vWq28)F9g49S7-AH~DaZeDHghz#0)Jn)Fz7IvyVcZYx5gxrJQVMu056S+ZMYTJ5 zWFVq~&<07wvzSCB8Jp+l;TX%Ycma!l!~$J9{I8%8X)7<_%Qh^CE(LkrsN@p`itIn} zu&jl4Cq|YMt`+hmxmOtU&hpox`7*+-2Q*>McjniIyg@@=Xj%2J;Tg#EX0%^3S%XZL zUlXhdFzAEd zak|vE3<4Ln;PUqyPVVrp@Kz4$m)*^sJFHuJZqeyH-(260z>eU8_iIm<`xkjD26apC zWzG%cT`uS;2(o>SD~^GTFS0+&zP0=|`-l3k>W4G;9UmBPltPdMkcsJe4n5n-N;f!rZtGpXKEAJcAe5GgCon99<&IkV$ zqdQS`w920s%i*q`xf&PO@@x`C2V=DI=MI&Z}YqdxJ> z(Pw-c1AD#C3^RrI7)|HG<5h4A>CJ(RfHI_A)NAi+xYBTkS@o?-cfxbbb5Cs=(Wm?N z1vJ6ZzSUP&W7g%r=6snmqR$NFth=QcIC85F;>IKT4BsJtLvY~(6_cucfbJU1!26Si z(d2-)OJfWf7k@ne(}Ir*?x@SYP0949{iCjP8R)2iR49I$ET#;P|MZP+DG7-DewJZt zw(|FR43aek}tf{zV3f&T0iVaS4bH%vUs2q~}LOmDLKFX;v%Wi@DP)y3<^#Q(4rYPy0 z$ut?AKdCj)rb)Aw&X~+q(rdp@V+=B{=6fw=S}*hJ#MCOUam0|-xwE^rt2UIqE^K(p zs~s`rbn@MvE>9@e9yYOF{YXl#PlgH8q1heblz;FVzE>`z)4#8$Da|&SSMj~lNYDR% p-aLB#gRL~h=sP__@|+O{Qn62LKDxQ9=CwU{m<%vhm|U{v{{l24&lmsz