← Back to Skills Marketplace
myd2002

Eval Repo

by myd2002 · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
21
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install eval-repo
Description
评估 GitHub 开源项目是否与用户研究方向相关,提供复现环境指南、风险提示,并存入知识库供后续参考。
README (SKILL.md)

Skill: eval_repo — paper-kb 开源项目评估与入库

用途

用户在飞书发来一个 GitHub 仓库链接并表达"评估/判断"意图(如"这个项目对我课题有用吗" "帮我评估下这个开源项目""这个 repo 能不能复现 / 环境怎么配")时,本 Skill:

  1. 抓取该仓库的 README、依赖文件、元信息(语言/stars/最近提交/许可证等);
  2. 结合该用户的研究方向其知识库里已有的相关资料,做一次结构化评估 (相关性、是否值得深入、环境复现清单、风险与坑);
  3. 把评估结果作为一篇「开源项目」资料存入用户的 Gitea 知识库 (生成 summary 页、更新概念页/资源页、同步飞书表格);
  4. 在飞书回复用户:结论 + 相关性 + 环境清单要点 + Gitea 链接。

与 ingest_paper 的区别:ingest_paper 是"把资料存进来";本 Skill 是"先评估值不值, 评估结果本身就是有价值的知识,顺带存档"。评估的核心是结合用户已有知识库的判断, 而不是孤立地复述 README。

触发条件

Activate when(同时满足):

  • 消息中含 GitHub 仓库链接(github.com/owner/repo 或 owner/repo 形式);
  • 且有评估/判断意图:包含"评估""值不值""有没有用""有没有帮助""能不能复现" "环境怎么配""分析下这个项目""要不要深入"等表述。

Do NOT activate when:

  • 用户只是说"把这个项目存进知识库 / 存下来 / 记录一下",没有评估意图 → 那是 ingest_paper 的 project 入库流程,交给 ingest_paper。
  • 发的是 arxiv / 普通网页 / PDF / 文件 → 交给 ingest_paper 或 query_papers。
  • 用户在查询知识库内容 → 交给 query_papers。
  • 用户未注册(init_user check 返回 registered=false)→ 先走 init_user。
  • 只发了 GitHub 链接、没说要干嘛 → 先问一句"需要我评估这个项目对你课题的价值 并存入知识库吗?",确认后再执行。

前置依赖

  • current_user_open_id:从消息上下文 sender 获取,传给所有脚本的 --open_id。 网页测试拿不到时用 webchat_test
  • 用户必须已注册(按 workspace AGENTS.md,任何 paper-kb 请求的第一步永远是 init_user --check)。用户记录里的 research_direction 在评估时必须用上。
  • 本 Skill 根目录需有 .env(GITEA_URL / GITEA_ADMIN_TOKEN / GITEA_BOT_USERNAME; 建议再配 GITHUB_TOKEN 提高抓取限额)。

临时文件路径约定

中间文件放 /tmp/paperkb/

  • fetch_github 抓取的合并文本:/tmp/paperkb/text_\x3Cowner>_\x3Crepo>.txt(脚本自动生成并返回 text_path)
  • 你生成的草稿:/tmp/paperkb/draft_eval.md/tmp/paperkb/draft_concept_*.md

完整执行流程

Step 1:抓取仓库材料

python3 scripts/fetch_github.py --url "\x3CGitHub 链接或 owner/repo>"

返回 JSON:full_name / url / description / language / stars / forks / open_issues / created_at / pushed_at / license / archived / topics / default_branch / dep_files_found(找到的依赖文件列表)/ has_readme / text_path(合并文本,供你阅读分析)。

  • success:false → 按 message 转告用户(仓库不存在/私有、限流等),终止。
  • 记住 text_path(后面查重、落库都要用)和 url(GitHub 原始地址,要写进 summary)。

Step 2:读材料 + 取研究方向

读 text_path 全文(README + 依赖文件 + 元信息)。取用户记录里的 research_direction (评估的相关性必须围绕它)。

Step 3:评估分析(你自己完成,这是本 Skill 的核心)

按下面的五维判断逻辑评估这个项目,最后给一个三档结论。 你是基于 README/依赖文件/元信息做"初筛分诊",不是真把代码跑起来——结论是帮用户省时间的 判断信号,不是"保证能跑"的承诺,措辞要体现这一点。

五维判断逻辑(有先后的闸门,不是简单加权):

  1. 相关性(第一道闸门):项目做的事和 research_direction 有没有交集?同一类问题? 同一族方法?模态对得上吗?它对用户的角色是工具/库、baseline、数据集、还是只是沾边? → 映射为相关性评分 1-10。若判为基本不相关,无论项目多优秀,结论直接给"暂不建议"。
  2. 可复现性 / 工程成熟度:README 有没有安装步骤和用法示例;依赖是否明确 (有没有 requirements/environment/Dockerfile,版本有没有锁定——没锁=环境地狱预警); 有没有预训练权重;有没有示例数据/quickstart;代码是否模块化。
  3. 活跃度 / 可信度:stars、最近提交时间(看 pushed_at,很久没动是危险信号)、 未关闭 issue 数、是否 archived(已归档=停止维护)、许可证是否缺失、 出身是否可信(官方/知名实验室 vs 匿名复现)。
  4. 适配成本:即插即用的库,还是要从头搭的框架,还是一次性脚本? 硬件/环境是否匹配(GPU/CUDA、特定机器人硬件、ROS 版本、绑定某仿真器如 Isaac/MuJoCo/PyBullet)?有用的部分能不能单独抽出来?
  5. 独特价值:有没有更省事的替代?它是否提供别处难拿到的东西 (特定方法/数据集/硬件设计)?结合库内已有资料判断是补充还是重复。

三档结论(每档都必须绑定到"是哪个维度决定的"理由,不要只甩分数):

  • 值得深入:相关 + 能跑 + 适配成本低/中。
  • 选择性参考:相关但可复现性差(依赖不明/已废弃/无文档)→ 读思路别强求复现; 或适配/硬件成本高 → 看时间预算。
  • 暂不建议:相关性不过关,或综合判断投入产出明显不值。

结合知识库:先看 Step 5 读到的目录,判断库里有没有相关论文/项目, 在"与库内已有资料的关系"里说明它是补充、对比基线、还是重复。库为空时如实写 "知识库暂无可关联资料"。

输出结构化 JSON(你内部使用,用于后续生成 summary):

{
  "type_key": "project",
  "title": "\x3C简洁中文项目名/标题>",
  "title_original": "\x3Cowner/repo 或原项目名>",
  "brief": "\x3C一句话简介,50字内>",
  "keywords": ["5-8个"],
  "relevance": {"score": \x3C1-10>, "reason": "\x3C结合研究方向>"},
  "verdict": "\x3C值得深入 | 选择性参考 | 暂不建议>",
  "verdict_reason": "\x3C一句话,绑定到决定性维度>",
  "env": {
    "deps": "\x3C检测到的依赖文件与关键依赖;没有则写'未声明依赖文件'>",
    "python_or_runtime": "\x3C能推断的 Python/CUDA/框架版本,推断不出留空>",
    "risks": "\x3C版本未锁/无依赖文件/特定硬件或仿真器/已归档 等复现风险>",
    "setup_steps": "\x3C给用户的建议复现步骤,3-6 步>"
  },
  "concepts": ["\x3C抽象概念,如 模仿学习>"],
  "resources": [{"name": "\x3C项目名>", "type": "开源项目", "note": "\x3C评价>"}]
}

Step 4:查重

python3 scripts/check_duplicate.py --open_id \x3Copen_id> \
    --title "\x3Ctitle>" --text_path "\x3CStep1 的 text_path>"
  • duplicate:true / possible_duplicate:true → 告知已有《existing.title》,问是否覆盖更新; 确认后从 Step 5 继续,save 时加 --force;否则终止。
  • 否则继续。

Step 5:概念与资源规划

python3 scripts/kb_read.py --open_id \x3Copen_id> --list all

据 Step 3 的 concepts/resources 与已有目录,决定每项 create/update/skip:

  • 知识库文档 ≤ 3 篇时,每篇最多新建 2-3 个概念页,宁缺毋滥;同名/含义重叠的一律 update。
  • 本项目本身作为一条「开源项目」资源登记到 resources/(资源页已有则 update)。
  • 不为"项目本身的名字"再建概念页(概念页只给抽象方法/思想)。

Step 6:生成并保存概念页 / 资源页

create 项写草稿到 /tmp/paperkb/draft_concept_\x3C名>.md / draft_resource_\x3C名>.md 后:

# 概念页
python3 scripts/save_page.py --open_id \x3Copen_id> --kind concept \
    --name "\x3C概念名>" --file "\x3C草稿路径>" --brief "\x3C一句话定义>"
# 资源页(本开源项目)
python3 scripts/save_page.py --open_id \x3Copen_id> --kind resource \
    --name "\x3C项目名>" --file "\x3C草稿路径>" --brief "\x3C一句话简介>" --resource_type 开源项目

update 项先 kb_read.py --read "concepts/\x3C名>" 读旧内容,把新信息融合改写进全文 (非追加)再同名保存。

【wikilink 格式铁律,所有页面通用】 所有 [[...]] 双链只写文件名本身,绝不带目录前缀

  • 对 → [[模仿学习]][[ManiSkill]]
  • 错 → [[concepts/模仿学习]][[resources/ManiSkill]](带前缀会让 Gitea 拼出重复路径 404)
  • 链接目标必须是确实存在的页面;标题尽量唯一。

Step 7:生成最终版 summary 并保存(作为「开源项目」入库)

白名单 = 本次 create/update 的页面 + kb_read 列出的已有页面。[[wikilink]] 只能指向白名单内页面。

summary 页结构(frontmatter 统一 + 正文为评估内容):

YAML frontmatter 格式铁律(所有字符串值加双引号;关键词用带引号的标准数组):

---
标题: "\x3Ctitle>"
原文标题: "\x3Ctitle_original>"
类型: "开源项目"
来源: "GitHub"
项目地址: "\x3Cfetch_github 返回的 url>"
关键词: ["关键词1", "关键词2", "关键词3"]
相关性评分: "\x3Crelevance.score,1-10>"
存入时间: "\x3C今天 yyyy-MM-dd>"
---

# \x3Ctitle>

## 一句话总结
\x3Cbrief> | 🔗 项目地址:\x3Curl>

## 结论:\x3Cverdict>
\x3Cverdict_reason>(说明:此结论基于 README/依赖/元信息的初筛分诊,非实际运行验证)

## 项目用途
\x3C...>

## 技术栈与活跃度
主语言 \x3Clanguage>|Stars \x3Cstars>|最近提交 \x3Cpushed_at>|许可证 \x3Clicense>|
是否已归档 \x3Carchived>。\x3C对活跃度/可信度的一句判断>

## 核心方法与功能
\x3C...>

## 与我研究方向的相关性
评分 \x3Cscore>/10。\x3Creason,结合 research_direction>

## 与库内已有资料的关系
\x3C它是补充/对比基线/重复;库为空则写"知识库暂无可关联资料">

## 环境复现清单
- 依赖:\x3Cenv.deps>
- 运行环境:\x3Cenv.python_or_runtime>
- 复现风险:\x3Cenv.risks>
- 建议步骤:\x3Cenv.setup_steps>

## 风险与坑
\x3C...>

## 关键概念
[[概念名]](只写文件名、仅白名单内;无则省略本节)

## 科研资源
[[项目名]](只写文件名、仅白名单内;无则省略本节)

写入 /tmp/paperkb/draft_eval.md,然后:

python3 scripts/save_paper.py --open_id \x3Copen_id> \
    --type_key project \
    --title "\x3Ctitle>" \
    --summary_file /tmp/paperkb/draft_eval.md \
    --keywords "\x3C逗号分隔>" \
    --score \x3Crelevance.score,1-10> \
    --brief "\x3Cbrief>" \
    --text_path "\x3CStep1 的 text_path>" \
    [--force]

(开源项目无 PDF、无 arxiv_id,故不传 --pdf_path / --arxiv_id。) 输出含 summary_url / repo_url。

Step 8:同步飞书多维表格(可选,失败不阻塞)

用户记录里 feishu_app_token 和 feishu_table_id 非空时,调 feishu_bitable_app_table_record(action: create)。字段格式严格遵守(之前踩过坑):

  • 文本字段(标题/类型/关键词/arxiv_id)→ 字符串。arxiv_id 传空串 ""。
  • 数字字段(相关性评分)→ 纯数字不加引号,如 7
  • 日期字段(存入时间)→ 毫秒时间戳(纯数字)int(time.mktime(time.strptime("今天日期","%Y-%m-%d")))*1000
  • 超链接字段(Gitea链接)→ "显示文本|URL" 竖线分隔字符串,不是对象。 例:"\x3Ctitle>|\x3Csummary_url>"
fields: {
  "标题": "\x3Ctitle>", "类型": "开源项目", "关键词": "\x3C逗号分隔>",
  "相关性评分": \x3C纯数字 1-10>, "存入时间": \x3C今天毫秒时间戳>,
  "Gitea链接": "\x3Ctitle>|\x3Csummary_url>", "arxiv_id": ""
}

失败最多重试 1 次,仍失败则跳过,回复中注明"飞书表格同步失败,不影响知识库"。

Step 9:回复用户

✅ 已评估并存入知识库!

📦 \x3Ctitle>(\x3Clanguage>|⭐\x3Cstars>|最近提交 \x3Cpushed_at>)
🔗 项目地址:\x3Curl>
🎯 结论:\x3Cverdict> — \x3Cverdict_reason 精简一句>
⭐ 与你研究方向的相关性:\x3Cscore>/10 — \x3Creason 精简一句>
🛠 环境提示:\x3Cenv.risks 或"依赖清晰,可按 README 复现",一句>
🧠 概念页:\x3C新建X/更新Y,列名字;无则省略>
🛠 资源页:\x3C同上;无则省略>
📄 查看完整评估:\x3Csummary_url>

覆盖模式开头改"✅ 已重新评估并覆盖更新!"。飞书跳过/失败时追加一句说明。

错误处理总则

  • 脚本输出单行 JSON;success:false 时按 message 转告用户,不堆原始报错。
  • fetch_github 限流(rate limit)→ 提示在 .env 配置 GITHUB_TOKEN 后重试。
  • 仓库不存在 / 私有 → 如实告知,本版本只支持公开仓库。
  • stdout 非 JSON = 脚本异常,告知用户并建议联系管理员。
  • 评估结论务必给出三档之一并附理由,不要含糊其辞。
Usage Guidance
Install only if you control the configured Gitea server and are comfortable giving this skill a site-admin token. Prefer an HTTPS Gitea URL, a least-privilege token if the system supports it, pinned dependencies, and an explicit operating rule that storage and Feishu sync happen only after user confirmation.
Capability Assessment
Purpose & Capability
The main workflow is coherent: it fetches public GitHub repository metadata and README/dependency files, evaluates the repo against a user's research direction and existing knowledge base, then stores the evaluation.
Instruction Scope
The documentation discloses storage, but a normal 'evaluate this repo' trigger proceeds into durable Gitea storage and optional Feishu sync without a clear per-run opt-out or confirmation, except for duplicate overwrite cases.
Install Mechanism
setup.sh installs unpinned Python dependencies and creates a .env from an example that asks for a Gitea site-admin token while using an HTTP Gitea URL.
Credentials
GitHub, Gitea, and Feishu access are expected for this paper-kb workflow, but the default/hardcoded Gitea endpoints are external HTTP URLs and the requested admin token is broader than the repository-write operations need.
Persistence & Privilege
The scripts can create/update user knowledge-base pages, catalog/index files, logs, and Feishu records; a read helper also has an optional path that writes query text to log.md.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install eval-repo
  3. After installation, invoke the skill by name or use /eval-repo
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
- Initial release of the eval-repo skill for evaluating and archiving GitHub repositories within the paper-kb system. - Automatically evaluates a GitHub repo based on README, dependencies, metadata, and the user’s research direction, providing a relevance score and structured report. - Stores the evaluation as a "project" entry in the user’s Gitea knowledge base, generating and updating related concept/resource pages when appropriate. - Integrated logic for deduplication, knowledge base enrichment, and LeetCode sync (if configured). - Replies to users in Feishu with a concise, actionable assessment and knowledge base link.
Metadata
Slug eval-repo
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Eval Repo?

评估 GitHub 开源项目是否与用户研究方向相关,提供复现环境指南、风险提示,并存入知识库供后续参考。 It is an AI Agent Skill for Claude Code / OpenClaw, with 21 downloads so far.

How do I install Eval Repo?

Run "/install eval-repo" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Eval Repo free?

Yes, Eval Repo is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Eval Repo support?

Eval Repo is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Eval Repo?

It is built and maintained by myd2002 (@myd2002); the current version is v1.0.0.

💬 Comments