战云知识库

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

“你好,从现在开始,请先了解我,成为我的长期 AI 助手。请通过提问了解我这几个方面: 1. 我是谁?我的身份、我的经历和目前正在做什么? 2. 我想实现什么目标?我现在最重要的事情是什么? 3. 我的兴趣、能力和擅长的领域是什么? 4. 我喜欢什么样的表达方式和工作方式? 5. 我有哪一些限制条件和现实情况?

一句话选型结论

按资料字段整理

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

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

安装

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

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

  2. 2
    拿到技能文件

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

  3. 3
    刷新技能列表

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

  4. 4
    验证是否生效

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

技能档案

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

典型使用场景

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 全文

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/20/21).
# 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_e40cf8bf/xzy。安装方式为未标注。装完刷新技能列表或重开客户端。

战云知识库支持哪些客户端?

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

战云知识库权限高吗,安全吗?

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

战云知识库收费吗?

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

战云知识库用什么许可证?

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

热门专题

按场景挑技能
全部专题 →

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