项目知识图谱

SKILL效率
效率 未标注权限 许可证不明确
安装这个技能

将项目、文件、任务之间的关系结构化,建立知识图谱。v2.0 新增 FTS5 记忆集成、自动关联分析、语义搜索

一句话选型结论

按资料字段整理

项目知识图谱是效率类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

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

安装

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

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

  2. 2
    拿到技能文件

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

  3. 3
    刷新技能列表

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

  4. 4
    验证是否生效

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

技能档案

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

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
整理待办与日程

把零散任务收进清单,排出优先级。

批量处理重复任务

把固定动作做成模板,重复执行。

把流程写成清单

把口头流程整理成可复用的步骤。

选择建议

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

值得选的地方

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

先想清楚的地方

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

更适合

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

不太适合

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

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
项目知识图谱当前 未标注权限 未标注 未标注 未标注 有
Nano PDF 文档 联网访问 ClawHub 市场 424.9 万 OpenClaw 有
自动更新程序 浏览器控制 ClawHub 市场 296.4 万 OpenClaw 有
Gemini 助手 联网访问 ClawHub 市场 254.7 万 OpenClaw 有
word DOCX 文档 联网访问 ClawHub 市场 239.6 万 OpenClaw 有
Excel XLSX 前端 联网访问 ClawHub 市场 227.0 万 OpenClaw 有

SKILL.md 全文

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

Knowledge Base (知识库)

API base path: openapi/wiki/v1 — 完整数据结构和接口参数详见 references/api.md。

接口决策表

用户意图 调用接口 关键参数
上传文件到知识库 check_repeated_names → create_media → COS Upload → add_knowledge media_type(按扩展名),knowledge_base_id,file_name,file_size
上传文件到知识库的某个文件夹 先定位文件夹 → 同上(folder_id 传入目标文件夹 ID) 见「文件夹操作」章节
添加网页/微信文章到知识库 import_urls urls(1-10 个),knowledge_base_id,可选 folder_id(省略则根目录)
添加笔记到知识库 add_knowledge media_type=11,note_info.content_id=<note_id>,knowledge_base_id
添加 URL(文件型)到知识库 check_repeated_names → 下载文件 → 走"上传文件"流程 URL 指向 PDF/Word/PPT 等文件时,按文件方式处理
检查文件名是否重复 check_repeated_names params[].name,params[].media_type,knowledge_base_id,folder_id
获取知识库信息 get_knowledge_base ids(1-20 个,不重复)
浏览知识库内容列表 / 浏览文件夹 get_knowledge_list knowledge_base_id,cursor,limit(1~50),可选 folder_id
在知识库中搜索(含文件和文件夹) search_knowledge query,knowledge_base_id,cursor
按关键词查找知识库(用户知道名字但不知道 ID) search_knowledge_base query,cursor,limit(1~20)
查看/了解自己有哪些知识库 search_knowledge_base(query 传空字符串) query: "",cursor,limit(1~20)
添加内容但未指定目标知识库 get_addable_knowledge_base_list → 展示列表让用户选择 cursor,limit(1~50)
查看原文、分析原文、导出原文 get_media_info media_id;导出/下载时在 URL 后追加 response-content-type + response-content-disposition 参数

search_knowledge_base vs get_addable_knowledge_base_list

场景 使用接口 原因
用户说了知识库名称(如"添加到产品文档库") search_knowledge_base 按名称搜索,找到 ID 后继续操作
用户想浏览/了解某个知识库 search_knowledge_base → get_knowledge_base 先搜到 ID,再获取详情
用户想查看自己有哪些知识库(无具体关键词) search_knowledge_base(query: "") 空 query 返回用户的所有知识库列表
用户要添加内容但没说添加到哪个知识库 get_addable_knowledge_base_list 列出有权限添加的知识库,让用户选择
用户说"添加到知识库"但上下文中无法确定哪个知识库 get_addable_knowledge_base_list 同上,不要猜测,让用户选择

绝不要在用户已明确指定知识库名称时调用 get_addable_knowledge_base_list。


写入类工作流

⛔ 文件上传安全门(仅适用于文件上传 → add_knowledge 流程)

以下 4 条规则仅在上传文件到知识库时适用。搜索、浏览、获取信息等读取操作不受影响。

GATE 1 [TYPE CHECK]
  Run preflight-check.cjs FIRST. pass=false → reject immediately.
  NEVER ask "do you still want to try?" for unsupported types.
  Video files, Bilibili/YouTube URLs, file:// URLs → tell user to use IMA desktop client.

GATE 2 [NAMING]
  add_knowledge title MUST equal file_name (with extension).
  NEVER rename, shorten, translate, or modify the original filename.
  Example: file is "音频.mp3" → title="音频.mp3", file_name="音频.mp3"

GATE 3 [DUPLICATES]
  Call check_repeated_names BEFORE create_media for ALL file uploads.
  is_repeated=true → ask user: keep both (append timestamp) or cancel.
  "Replace" is NOT supported.
  Timestamp format: {name}_YYYYMMDDHHmmss.{ext}

GATE 4 [UPLOAD EXIT]
  cos-upload.cjs non-zero exit → STOP immediately.
  Do NOT call add_knowledge. Report error to user.

上传文件到知识库

完整流程:前置检查 → 重名检查 → 创建媒体 → COS 上传 → COS 验证 → 添加知识。

# ── Step 1: preflight-check.cjs ← ⛔ GATE 1 ──
# 有扩展名时自动推断;无扩展名时需传 --content-type
PREFLIGHT=$(node .claude/skills/ima-skill/knowledge-base/scripts/preflight-check.cjs \
  --file "/path/to/report.pdf")
echo "$PREFLIGHT"
# pass=false → 终止,将 reason 展示给用户。NEVER ask "want to try?"

# ── Step 2: Extract fields ──
FILE_NAME=$(echo "$PREFLIGHT" | node -e "const d=JSON.parse(require('fs').readFileSync(0,'utf8'));process.stdout.write(d.file_name)")
FILE_EXT=$(echo "$PREFLIGHT" | node -e "const d=JSON.parse(require('fs').readFileSync(0,'utf8'));process.stdout.write(d.file_ext)")
FILE_SIZE=$(echo "$PREFLIGHT" | node -e "const d=JSON.parse(require('fs').readFileSync(0,'utf8'));process.stdout.write(String(d.file_size))")
MEDIA_TYPE=$(echo "$PREFLIGHT" | node -e "const d=JSON.parse(require('fs').readFileSync(0,'utf8'));process.stdout.write(String(d.media_type))")
CONTENT_TYPE=$(echo "$PREFLIGHT" | node -e "const d=JSON.parse(require('fs').readFileSync(0,'utf8'));process.stdout.write(d.content_type)")

# ── Step 3: check_repeated_names ← ⛔ GATE 3 ──
# MANDATORY for ALL file uploads (media_type 1/3/4/5/7/9/13/14/15).
# is_repeated=true → ask user: keep both (append _YYYYMMDDHHmmss) or cancel.
ima_api "openapi/wiki/v1/check_repeated_names" "{
  \"params\": [{\"name\": \"$FILE_NAME\", \"media_type\": $MEDIA_TYPE}],
  \"knowledge_base_id\": \"<kb_id>\"
}"
# folder_id is optional — omit for root, include for subfolder

# ── Step 4: create_media ──
CREATE_MEDIA_RESP=$(ima_api "openapi/wiki/v1/create_media" "{
  \"file_name\": \"$FILE_NAME\",
  \"file_size\": $FILE_SIZE,
  \"content_type\": \"$CONTENT_TYPE\",
  \"knowledge_base_id\": \"<kb_id>\",
  \"file_ext\": \"$FILE_EXT\"
}")
# Extract media_id, url, and cos_credential fields. code≠0 → terminate.
# COS_URL is the file's accessible URL — used for verification in Step 6.

# ── Step 5: cos-upload.cjs ← ⛔ GATE 5 (non-zero = STOP) ──
# ⚠️ Large files may exceed default 120s timeout — set --timeout explicitly.
node .claude/skills/ima-skill/knowledge-base/scripts/cos-upload.cjs \
  --file "/path/to/report.pdf" \
  --secret-id "<cos_credential.secret_id>" \
  --secret-key "<cos_credential.secret_key>" \
  --token "<cos_credential.token>" \
  --bucket "<cos_credential.bucket_name>" \
  --region "<cos_credential.region>" \
  --cos-key "<cos_credential.cos_key>" \
  --content-type "$CONTENT_TYPE" \
  --start-time "<cos_credential.start_time>" \
  --expired-time "<cos_credential.expired_time>" \
  --timeout 300000
# ⛔ Non-zero exit → STOP HERE. Do NOT proceed to step 7.

# ── Step 6: add_knowledge ← ⛔ GATE 2 (title = file_name) ──
# ONLY execute if Step 5 succeeded (exit code 0).
# add_knowledge will verify the file was uploaded — no separate verify step needed.
ima_api "openapi/wiki/v1/add_knowledge" "{
  \"media_type\": $MEDIA_TYPE,
  \"media_id\": \"<media_id>\",
  \"title\": \"$FILE_NAME\",
  \"knowledge_base_id\": \"<kb_id>\",
  \"file_info\": {
    \"cos_key\": \"<cos_credential.cos_key>\",
    \"file_size\": $FILE_SIZE,
    \"file_name\": \"$FILE_NAME\"
  }
}"

批量上传时的重复处理

可一次性检查所有文件名(最多 2000 个):

# ⛔ GATE 3 — batch check
ima_api "openapi/wiki/v1/check_repeated_names" '{
  "params": [
    {"name": "report.pdf", "media_type": 1},
    {"name": "slides.pptx", "media_type": 4},
    {"name": "data.xlsx", "media_type": 5}
  ],
  "knowledge_base_id": "<kb_id>",
  "folder_id": "<folder_id>"
}'
# 根目录时省略 folder_id。
# is_repeated=true → "以下文件已存在同名:report.pdf。是否保留两者?(不支持替换)"
# 保留两者 → append _YYYYMMDDHHmmss;取消 → remove from upload list

添加网页/微信文章到知识库

# 无需 GATE 3-5(非文件上传)
# 添加到根目录(不传 folder_id)
ima_api "openapi/wiki/v1/import_urls" '{
  "knowledge_base_id": "<kb_id>",
  "urls": [
    "https://example.com/article",
    "https://mp.weixin.qq.com/s/xxxxx"
  ]
}'

# 添加到指定文件夹
ima_api "openapi/wiki/v1/import_urls" '{
  "knowledge_base_id": "<kb_id>",
  "folder_id": "<folder_id>",
  "urls": ["https://example.com/article"]
}'
# 返回 results 映射:{ "<url>": { url, ret_code, media_id } }

添加笔记到知识库

ima_api "openapi/wiki/v1/add_knowledge" '{
  "media_type": 11,
  "note_info": { "content_id": "<note_id>" },
  "title": "笔记标题",
  "knowledge_base_id": "<kb_id>"
}'

添加 URL 到知识库(自动检测文件型 URL)

URL 可能指向网页或可下载文件。检测逻辑 → see references/api.md §URL Type Detection。

文件型 URL 处理流程:

# 1. 探测 URL 类型
CONTENT_TYPE=$(curl -sI -L "<url>" | grep -i "^content-type:" | tail -1 | awk '{print $2}' | tr -d '\r')

# 2. 下载到临时目录
TEMP_DIR=$(mktemp -d)
curl -sL -o "$TEMP_DIR/paper.pdf" "<url>"

# 3. preflight-check.cjs ← ⛔ GATE 1
PREFLIGHT=$(node .claude/skills/ima-skill/knowledge-base/scripts/preflight-check.cjs \
  --file "$TEMP_DIR/paper.pdf" --content-type "$CONTENT_TYPE")
# pass=false → terminate

# 4. Follow "上传文件到知识库" workflow (Steps 3-7 with all gates)

# 5. Clean up
rm -rf "$TEMP_DIR"

文件名推断(优先级):Content-Disposition header → URL path → last URL segment + Content-Type extension



文件夹操作

知识库内容以文件夹层级组织。folder_id 始终以 folder_ 前缀开头。

核心规则:

  • 操作根目录时 省略 folder_id 字段,不要传该参数
  • 不要将 knowledge_base_id 作为 folder_id 传入
  • get_knowledge_list 返回的 current_path(FolderInfo[])= 面包屑

定位文件夹(用户只给了名称)

# 方法 1:搜索(推荐)
ima_api "openapi/wiki/v1/search_knowledge" '{
  "query": "文件夹名称",
  "knowledge_base_id": "<kb_id>",
  "cursor": ""
}'
# 从 info_list 找匹配文件夹,取 media_id 作为 folder_id

# 方法 2:逐级浏览
ima_api "openapi/wiki/v1/get_knowledge_list" '{
  "knowledge_base_id": "<kb_id>",
  "cursor": "",
  "limit": 50
}'

查询类工作流(无安全门限制)

获取知识库信息

ima_api "openapi/wiki/v1/get_knowledge_base" '{"ids": ["<kb_id>"]}'

浏览知识库内容

# 根目录
ima_api "openapi/wiki/v1/get_knowledge_list" '{"knowledge_base_id": "<kb_id>", "cursor": "", "limit": 20}'

# 指定文件夹
ima_api "openapi/wiki/v1/get_knowledge_list" '{"knowledge_base_id": "<kb_id>", "folder_id": "<folder_id>", "cursor": "", "limit": 20}'
# 翻页:用 next_cursor,is_end=true 时停止

搜索知识库内容 / 搜索知识库列表

ima_api "openapi/wiki/v1/search_knowledge" '{"query": "关键词", "knowledge_base_id": "<kb_id>", "cursor": ""}'

# 搜索知识库列表(按名称)
ima_api "openapi/wiki/v1/search_knowledge_base" '{"query": "关键词", "cursor": "", "limit": 20}'

# 查看所有知识库
ima_api "openapi/wiki/v1/search_knowledge_base" '{"query": "", "cursor": "", "limit": 20}'

获取可添加的知识库列表

仅当用户未指定目标知识库时使用。

ima_api "openapi/wiki/v1/get_addable_knowledge_base_list" '{"cursor": "", "limit": 20}'

获取媒体原文内容

RESPONSE=$(ima_api "openapi/wiki/v1/get_media_info" '{"media_id": "<media_id>"}')

处理分支:

条件 处理
media_type=11 且 notebook_ext_info.notebook_id 存在 将 notebook_id 作为 note_id 调用 notes 模块 get_doc_content
url_info.url 非空 用 url + headers(如有)请求原文
url_info 为空,或请求失败,或 code≠0 提示用户「请使用ima客户端查看原文」

强制下载并指定文件名:当需要将 url_info.url 返回的链接作为下载链接(而非在线预览)时,可在 URL 后追加以下查询参数:

response-content-type=application/octet-stream&response-content-disposition=attachment;filename="<desired_filename>"

示例:用户要求"导出"或"下载"某个知识库文件时,将 get_media_info 返回的 url 拼接上述参数,即可让浏览器/客户端以指定文件名下载,而非在线打开。


分页

所有列表/搜索接口使用游标分页:首次 cursor: "",检查 is_end,用 next_cursor 翻页,is_end=true 停止。

响应处理

统一结构 { "code": 0, "msg": "...", "data": { ... } }。code=0 成功;code≠0 直接展示 msg 给用户。

用户体验

  • 隐藏内部 ID:面向用户展示中永远不要暴露 knowledge_base_id、media_id、folder_id。使用知识库名称、文件标题、文件夹名称。
  • 精简进度:不要逐步暴露内部操作("正在创建媒体…正在上传 COS…")。只报告:
  • 上传文件:"正在上传 report.pdf…" → "已添加到知识库「产品文档库」✓"
  • 添加网页:"正在添加…" → "已添加到「产品文档库」✓"
  • 失败时展示 msg
  • 批量操作:汇总结果,如 "3 个文件已添加到「产品文档库」,1 个失败(data.xlsx: 文件大小超限)"
  • 格式化展示:

知识库列表(search_knowledge_base / get_addable_knowledge_base_list):

> 搜索知识库后,用返回的 ID 列表调用 get_knowledge_base 获取描述信息,一并展示。

📚 搜索结果(共 3 个知识库): 1. **产品文档库** — 存放产品相关的所有文档资料 2. **技术方案库** — 各项目技术方案汇总 3. **竞品分析库**

知识库内容列表(get_knowledge_list):

📂 知识库「产品文档库」内容: 📁 设计文档/ (3 个文件, 1 个子文件夹) 📁 会议纪要/ (12 个文件) 📄 产品需求文档.pdf 📄 技术方案.docx 📄 数据分析.xlsx --- 第 1 页,还有更多内容 ---

搜索结果(search_knowledge):

```
🔍 在知识库「产品文档库」中搜索「排期」的结果:

  1. 📄 Q1排期表.xlsx (文件夹: 项目管理/)
    > ...包含排期计划的详细信息...
  2. 📄 开发排期讨论.pdf (文件夹: 会议纪要/)
  3. 📁 排期模板/ (文件夹: 根目录)
    ```

知识库详情(get_knowledge_base):

📚 产品文档库 📝 描述:存放产品相关的所有文档资料 💡 推荐问题: - 最新的产品需求是什么? - 技术方案有哪些?

注意事项

  • get_knowledge_base 接受 1-20 个 ID;单个 ID 也需包装为数组
  • 文件夹是知识条目的一种:返回结果中同时包含文件和文件夹
  • 文件扩展名必须正确提取,用于 media_type 检测和 file_ext 字段(无点号,如 pdf)
  • COS 上传时 --content-type 应传入文件的实际 MIME 类型,非 application/octet-stream
  • 当用户提供 URL 添加到知识库时,必须先检测是否文件型 URL → see references/api.md §URL Type Detection
  • MediaType 枚举和文件大小限制 → see references/api.md §MediaType and §文件大小限制

常见问题

5 问
答案由本站依据条目字段整理
项目知识图谱怎么安装?

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

项目知识图谱支持哪些客户端?

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

项目知识图谱权限高吗,安全吗?

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

项目知识图谱收费吗?

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

项目知识图谱用什么许可证?

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

热门专题

按场景挑技能
全部专题 →

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