Token导航 LogoToken导航

Agent Skill · 研究检索

librarian(librarian 搜索)

用于处理 Linear 项目、Issue、团队、周期和产品开发任务流。它适合让 Agent 辅助查询任务状态、整理需求队列、创建缺陷或汇总迭代进展。使用时需要确认 workspace、team、label、assignee 和状态流转规则;涉及批量创建或修改任务时,应先核对字段和目标团队,避免把草稿需求直接写入正式项目。

librarian 是研究检索类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为需要联网;许可证为 MIT-0,第三方扫描有提醒项,按安装量在研究检索类的 73,675 个 Skill 里排第 8,189。

总安装 16,965周安装 693GitHub Stars 公开资料未说明下载 5,433核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
1.0.1

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:librarian(librarian 搜索)
来源仓库:https://github.com/nonlinear/librarian
安装命令:
openclaw skills install librarian
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install librarian

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

用于处理 Linear 项目、Issue、团队和产品开发任务流,适合辅助查询任务状态、整理需求队列或汇总迭代进展。适用于需要管理任务流转、创建缺陷或跟踪周期进度的开发场景,需确认 workspace、team 和状态规则。通过 clawhub 安装,结合具体字段核对目标团队,避免将草稿直接写入正式项目。

涉及批量操作时建议先验证字段和权限,防止误操作影响正式项目流程。librarian 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install librarian;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

librarian 怎么安装?

在终端执行 openclaw skills install librarian。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

librarian 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

librarian 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

librarian 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

librarian 用的人多吗?

公开数据是累计安装 16,965 次,近一周安装 693 次,下载 5,433 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

librarian 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。

先想清楚的地方

  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
librarian

librarian 搜索 · 本页

16,965—需要联网MIT-0有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
librarian
description
Conversational interface for semantic book search (companion skill for Librarian project)
version
0.15.0
author
Nicholas Frota
homepage
https://github.com/nonlinear/librarian
emoji
📚
requires
dependencies
python
triggers

Librarian - Semantic Research Skill

Version: 2.0.0 (Protocol-driven) Status: 🚧 Development Architecture: Sandwich (🎤 Skill → 👷 Wrapper → ⚙️ Python)


What This Skill Does

Search your book library using natural language. Ask questions like "What does Graeber say about debt?" and get precise citations with page numbers.


Protocol Flow

flowchart TB
    TRIGGER["🎤 Trigger + context"]:::ready
    TRIGGER --> METADATA["👷 Load metadata 1️⃣"]:::ready
    METADATA --> CHECK{"👷 Metadata exists?"}:::ready
    
    CHECK -->|No| ERROR["🎤 🤚 No metadata found:<br>Run librarian index 5️⃣"]:::ready
    CHECK -->|Yes| INFER{"🎤 Infer scope? 2️⃣"}:::ready
    
    INFER -->|confidence lower than 75%| CLARIFY["🎤 🤚 Say it again? 5️⃣"]:::ready
    INFER -->|confidence higher than 75%| BUILD["👷 Build command 3️⃣"]:::ready
    
    BUILD --> CHECK_SYSTEM{"⚙️ System working?"}:::ready
    
    CHECK_SYSTEM -->|No| BROKEN["🎤 🤚 System is broken 5️⃣"]:::ready
    CHECK_SYSTEM -->|Yes| EXEC["⚙️ Run python script with flags"]:::ready
    
    EXEC --> JSON["⚙️ Return JSON"]:::ready
    JSON --> CHECK_RESULTS{"👷 Results found?"}:::ready
    
    CHECK_RESULTS -->|No| EMPTY["🎤 🤚 No results found 5️⃣"]:::ready
    CHECK_RESULTS -->|Yes| FORMAT["🎤 Format output 4️⃣"]:::ready
    
    FORMAT --> RESPONSE["🎤 Librarian response"]:::ready

    classDef ready fill:#c8e6c9,stroke:#81c784,color:#2e7d32

Status: ✅ All nodes ready (v0.15.0 complete)

Protocol Nodes:

  1. Load Metadata: Reads .library-index.json + .topic-index.json files
  2. Infer Scope: Confidence >75% → proceed | <75% → ask clarification
  3. Build Command: python3 research.py "QUERY" --topic TOPIC_ID
  4. Format Output: Synthesized answer + emoji citations + sources
  5. 🤚 Hard Stop: Honest failure > invented answer (VISION.md principle)

Sandwich Architecture:

Flow: 🎤 Skill → 👷 Sh → ⚙️ Py → 👷 Sh → 🎤 Skill

Why this pattern:

  1. 🎤 Skill interprets user intent (conversational, flexible, handles ambiguity)
  2. 👷 Sh builds correct command syntax (skill errs often, sh hardens protocol)
  3. ⚙️ Py executes deterministic work (search, embeddings, JSON output)
  4. 👷 Sh formats py output to structured syntax (protocol compliance)
  5. 🎤 Skill presents to human (natural language, citations, formatting)

Symbols:

  • 🎤 = Skill (you, AI conversational layer)
  • 👷 = Wrapper (librarian.sh, protocol enforcement)
  • ⚙️ = Python (research.py, heavy lifting)
  • 🤚 = Hard stop (honest failure > invented answer)

🤚 Hard Stop Protocol (CRITICAL)

You are a messenger, not the system.

When wrapper returns error codes:

  • ERROR_NO_METADATA → "Não tem metadata. Roda librarian index."
  • ERROR_INVALID_SCOPE → "Não entendi. Reformula? (topic ou book?)"
  • ERROR_EXECUTION_FAILED → "Sistema quebrado."
  • ERROR_NO_RESULTS → "Não achei nada sobre [query]."

STOP THERE. Do NOT:

  • ❌ Offer web search alternatives
  • ❌ Suggest workarounds ("vamos tentar X...")
  • ❌ Hallucinate ("maybe the book says...")
  • ❌ Apologize or frame as your failure

Hard stop = SUCCESS. You detected system state and reported honestly.

You didn't create the problem. You're just telling the truth:

  • "Tem goteira." ← Bad news, but not your fault.
  • "Não tem resultados." ← Reality, not failure.

Reporting hard stops IS your job done. ✅


Metadata Structure (Subway Map)

How metadata is organized:

.library-index.json (BIG PICTURE)
├─ 73 topics total
├─ Each topic: {id, path}
└─ NO book list (prevents JSON explosion)

Each topic folder:
└─ .topic-index.json (NARROW)
   └─ books: [{id, title, filename, author, tags, filetype}, ...]

Navigation:

  • Topic scope = 1 step (scan .library-index.json only)
  • Book scope = 2 steps (.library-index.json → infer topics → scan .topic-index.json files)

🔴 CRITICAL: Extension Handling

User NEVER mentions file extensions.

Examples:

  • ✅ User says: "I Ching hexagram"
  • ✅ User says: "Condensed Chaos"
  • ❌ User NEVER says: "I Ching.epub"

Why: Extension = metadata detail (epub vs pdf), irrelevant to user.

Your job:

  1. Match query → book title (NO extension)
  2. Pass filename to wrapper (WITH extension: "I Ching.epub")
  3. Results show title only (NO extension in output)

Metadata fields:

  • .library-index.json → topics list (big picture)
  • .topic-index.json → books list per topic (narrow view)
  • Book metadata: title (user-facing, no ext) + filename (internal, with ext)

Full taxonomy: See backstage/epic-notes/metadata-taxonomy.md


How To Use This Skill

Trigger Detection

Activate when user query matches ANY of these patterns:

Book/Author references:

  • "What does [AUTHOR] say about [TOPIC]?"
  • "Search [BOOK] for [QUERY]"
  • "Find references to [CONCEPT] in [BOOK]"

Topic keywords (with confidence >75%):

  • "tarot", "I Ching", "divination" → chaos-magick
  • "debt", "finance", "money", "banking" → finance
  • "anarchism", "mutual aid", "commons" → anarchy

Explicit commands:

  • "pesquisa [QUERY]" / "search [QUERY]"
  • "procura [CONCEPT]" / "find [CONCEPT]"
  • "librarian: [QUERY]"

If confidence <75% → CLARIFY (ask user)


Node 2: 🎤 Infer Scope

Determine WHAT to search (topic or book) from user intent.

AI = router. Intelligence is in the index (embeddings). You just match query → scope.

Confidence Logic (Binary)

Read metadata (.library-index.json):

{
  "books": ["Debt - The First 5000 Years.epub", "I Ching of the Cosmic Way.epub"],
  "topics": ["chaos-magick", "finance", "anarchy"]
}

Fuzzy match query against metadata:

Match book?Match topic?→ Action
✅✅TOPIC (tiebreaker: future mixed searches)
✅❌BOOK
❌✅TOPIC
❌❌CLARIFY (hard stop)

Match rules:

  • Book: Query contains book title substring OR author name (case-insensitive)
  • Topic: Query contains topic keyword (case-insensitive)

Examples

TOPIC wins (tiebreaker):

  • "Graeber debt finance" → matches both "Debt.epub" + "finance" → TOPIC: finance

BOOK only:

  • "Graeber hexagram 23" → matches "Debt.epub" only → BOOK: Debt.epub
  • "I Ching moving lines" → matches "I Ching.epub" only → BOOK: I Ching.epub

TOPIC only:

  • "chaos magick sigils" → matches "chaos-magick" only → TOPIC: chaos-magick
  • "mutual aid commons" → matches "anarchy" only → TOPIC: anarchy

CLARIFY (no match):

  • "philosophy" → no match → CLARIFY: "Search which topic or book?"
  • "systems" → no match → CLARIFY: "Need more context - which area?"

Scope Types

  1. Topic scope: --topic TOPIC_ID

- Available topics: chaos-magick, finance, anarchy (check .topic-index.json)

  1. Book scope: --book FILENAME

- Requires exact filename (e.g., "Condensed Chaos.epub") - Use fuzzy matching: "Condensed" → "Condensed Chaos.epub"


Node 3-5: 👷 Call Wrapper

Execute wrapper script with inferred scope:

./librarian.sh "QUERY" SCOPE_TYPE SCOPE_VALUE [TOP_K]

Arguments:

  • QUERY: User's search query (exact string)
  • SCOPE_TYPE: "topic" or "book"
  • SCOPE_VALUE: topic_id or book filename
  • TOP_K: Number of results (default: 5)

Example calls:

# Topic search
./librarian.sh "What is debt?" "topic" "finance" 5

# Book search
./librarian.sh "hexagram 23" "book" "I Ching of the Cosmic Way.epub" 5

Wrapper Exit Codes

The wrapper returns structured status via exit codes:

  • 0: Success (JSON results on stdout)
  • 1: ERROR_NO_METADATA (🤚 stop: tell user to run librarian index)
  • 2: ERROR_BROKEN (🤚 stop: system issue, report to Nicholas)
  • 3: ERROR_NO_RESULTS (🤚 stop: query returned 0 results)

Handle Each Error

Exit 1 (NO_METADATA):

🤚 Your library isn't indexed yet.

Run this first:
  librarian index

(This scans your books/ folder and creates search indexes)

Exit 2 (BROKEN):

🤚 Something's broken in the research engine.

I tried to search but got a system error. Nicholas needs to debug this.

(Check: Python dependencies, research.py syntax, FAISS indexes)

Exit 3 (NO_RESULTS):

🤚 No results found for "[QUERY]"

Try:
- Broader terms (e.g., "debt" instead of "sovereign debt crisis")
- Different scope (search topic instead of single book?)
- Check spelling

Node 4: 🎤 Format Output

When wrapper returns success (exit 0), format the JSON results for the user.

JSON Structure

{
  "results": [
    {
      "text": "Full chunk text...",
      "book_title": "Debt: The First 5000 Years",
      "similarity": 0.89,
      "filename": "Debt - The First 5000 Years.epub",
      "location": "p.45, ¶3",
      "page": 45,
      "paragraph": 3,
      "filetype": "pdf"
    }
  ],
  "metadata": {
    "query": "What is debt?",
    "topic": "finance",
    "returned": 5
  }
}

Formatting Rules

1. Synthesize answer (don't just list chunks) - Read all results - Extract key points - Write coherent paragraph(s)

2. Cite sources with emojis - 📕 = book citation - Use location (page/paragraph) when available - Format: 📕 [Book Title, p.45, ¶3]

3. Show similarity scores (optional, if useful) - ⭐⭐⭐⭐⭐ (0.9-1.0) = Highly relevant - ⭐⭐⭐⭐ (0.8-0.89) = Very relevant - ⭐⭐⭐ (0.7-0.79) = Relevant

4. Keep original query context - If user asked about debt, frame answer around debt - Don't drift to tangential topics

Example Output

User: "What does Graeber say about the origins of money?"

Librarian:

Graeber argues that money did NOT originate from barter (the myth Adam Smith popularized). Instead, credit and debt systems came first — people kept track of obligations long before coins existed. 📕 [Debt: The First 5000 Years, p.21, ¶2] He traces debt back to ancient Mesopotamia (~3500 BCE), where temple administrators recorded loans in cuneiform tablets. Money as we know it (coins) only appeared around 600 BCE in Lydia. 📕 [Debt, p.40, ¶5] Key insight: Debt is older than money. Markets emerged from moral obligations, not rational barter. 📕 [Debt, p.89, ¶1] Sources: - 📕 Debt: The First 5000 Years (David Graeber) - 3 passages - Similarity: ⭐⭐⭐⭐⭐

Hard Stops (🤚 Honest Failures)

NEVER invent answers. If system fails, STOP and tell user exactly what's wrong.

When to Stop

  1. Metadata missing → Tell user to run librarian index
  2. Low confidence (<75%) → Ask clarifying question
  3. System broken → Report error, don't guess
  4. No results → Say "no results", suggest alternatives

Why Hard Stops Matter

From VISION.md: "Honest incompetence > false competence"

A broken skill that TELLS you it's broken is more trustworthy than one that invents plausible-sounding nonsense.


Installation & Setup

Requirements

  • Python 3.9+
  • Dependencies: sentence-transformers, faiss-cpu, pypdf, ebooklib

Install

cd ~/.openclaw/skills/librarian
pip3 install -r requirements.txt

Index Your Library

# Put books in books/ folder
mkdir -p books/chaos-magick books/finance

# Run indexer
python3 engine/scripts/index_library.py

# Verify indexes created
ls -la books/.topic-index.json books/.librarian-index.json

Troubleshooting

"No metadata found"

  • Run index_library.py first
  • Check books/.topic-index.json exists

"No results" but book exists

  • Check topic ID matches (e.g., "chaos-magick" not "chaos magick")
  • Verify book is in correct topic folder
  • Try broader query terms

"System broken"

  • Check Python dependencies: pip3 list | grep sentence
  • Verify research.py syntax: python3 engine/scripts/research.py --help
  • Check FAISS index integrity

References

Architecture:

  • Agentic Design Patterns (Andrew Ng, 2024) - Agentic workflows
  • OpenClaw skill best practices - Protocol-driven skills

Sandwich pattern:

  • 🎤 Skill = Conversational I/O (trigger, infer, format, respond)
  • 👷 Wrapper = Protocol enforcement (validate, build, check)
  • ⚙️ Python = Heavy lifting (embeddings, search, ranking)

Why this works:

  • AI is good at: interpreting intent, formatting output, human communication
  • AI is bad at: following syntax exactly, deterministic execution
  • Wrapper hardens protocol: same query → same command → same behavior

Emoji Legend

  • 🎤 = Skill (AI conversational layer)
  • 👷 = Wrapper (shell script protocol)
  • ⚙️ = Python (research engine)
  • 🤚 = Hard stop (honest failure)
  • 📕 = Book citation
  • ⭐ = Relevance score

Last updated: 2026-02-20 Epic: v0.15.0 Skill as Protocol

平台分布

OpenClaw

72.03%
按下载量换算3,913

安全审计

VirusTotal

通过

ClawScan

可疑

Static analysis

未展示

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills