记忆

WeKnora

通过 WeKnora REST API 导入文档,并对知识库执行向量+关键词混合检索。

它能做什么

封装 WeKnora REST API,用于向知识库上传文件、抓取网页 URL 或写入 Markdown,并提供检索能力。覆盖知识库列表查看、文件 multipart/form-data 上传、URL 导入、手写 Markdown 录入、轮询 parse_status 直到解析完成,以及知识条目的编辑和删除。检索支持单库混合检索(向量 + 关键词)和跨库语义检索,返回结果包含相关度分数与 chunk 元信息。鉴权通过 X-API-Key 请求头,凭据由 WEKNORA_BASE_URL 与 WEKNORA_API_KEY 两个环境变量提供。

什么时候用它

  • 上传 PDF 并轮询 parse_status 直至解析完成
  • 通过 URL 把网页文章导入知识库
  • 直接把 Markdown 笔记写入知识库
  • 在单个或多个知识库之间执行混合检索

技能文档

WeKnora

Knowledge base document import and retrieval through the WeKnora REST API.

Setup

  1. Get your API Key from the WeKnora web UI (account settings page)
  2. Configure environment variables:
export WEKNORA_BASE_URL="https://your-server.com/api/v1"
export WEKNORA_API_KEY="sk-your-api-key"

Add the above to ~/.zshrc or ~/.bashrc to persist across sessions.

Credential Check

Verify credentials before any API call. Stop and prompt the user if unset.

if [ -z "$WEKNORA_BASE_URL" ] || [ -z "$WEKNORA_API_KEY" ]; then
  echo "Missing WeKnora credentials. Set WEKNORA_BASE_URL and WEKNORA_API_KEY per Setup."
  exit 1
fi

API Call Template

All requests go to $WEKNORA_BASE_URL with a shared header set. Define a helper:

wk_api() {
  local method="$1" endpoint="$2" body="$3"
  curl -s -X "$method" "$WEKNORA_BASE_URL/$endpoint" \
    -H "X-API-Key: $WEKNORA_API_KEY" \
    -H "Content-Type: application/json" \
    -H "X-Request-ID: $(uuidgen 2>/dev/null || date +%s)" \
    ${body:+-d "$body"}
}

For file uploads use curl -F directly (multipart/form-data).

API Decision Table

User IntentEndpointKey Params
List knowledge basesGET /knowledge-bases
View KB detailsGET /knowledge-bases/:id
Upload a filePOST /knowledge-bases/:id/knowledge/filefile (form-data), enable_multimodel
Import a web pagePOST /knowledge-bases/:id/knowledge/urlurl, enable_multimodel
Write Markdown contentPOST /knowledge-bases/:id/knowledge/manualtitle, content, tag_id
Check upload progressGET /knowledge/:idwatch parse_status
Browse KB contentsGET /knowledge-bases/:id/knowledgepage, page_size, tag_id
Edit Markdown knowledgePUT /knowledge/manual/:idtitle, content
Delete a knowledge entryDELETE /knowledge/:id
Search within a KBGET /knowledge-bases/:id/hybrid-searchquery_text, match_count, thresholds
Search across KBsPOST /knowledge-searchquery, knowledge_base_ids

Common Workflows

Upload File and Wait for Parsing

# 1. Find target KB
wk_api GET "knowledge-bases"
# -> pick kb_id from data[].id

# 2. Upload file
curl -s -X POST "$WEKNORA_BASE_URL/knowledge-bases//knowledge/file" \
  -H "X-API-Key: $WEKNORA_API_KEY" \
  -F 'file=@document.pdf' -F 'enable_multimodel=true'
# -> get knowledge_id from data.id

# 3. Poll until parsed
wk_api GET "knowledge/"
# -> repeat until data.parse_status == "completed"

Import URL

wk_api POST "knowledge-bases//knowledge/url" \
  '{"url": "https://example.com/article", "enable_multimodel": true}'
# -> poll knowledge/:id same as file upload

Write Markdown Knowledge

wk_api POST "knowledge-bases//knowledge/manual" \
  '{"title": "Meeting Notes", "content": "# Q1 Review\n\nKey points..."}'

Search Knowledge

# Single-KB hybrid search (vector + keyword)
wk_api GET "knowledge-bases//hybrid-search" \
  '{"query_text": "deployment process", "match_count": 5}'

# Cross-KB semantic search
wk_api POST "knowledge-search" \
  '{"query": "deployment process", "knowledge_base_ids": ["kb-1", "kb-2"]}'

Browse and Read KB Contents

# List knowledge entries (paginated)
wk_api GET "knowledge-bases//knowledge?page=1&page_size=20"

# Get full detail of one entry
wk_api GET "knowledge/"

Core Response Fields

Knowledge Base (GET /knowledge-bases): data[]id, name, description, type (document | faq), embedding_model_id, knowledge_count, chunk_count, is_processing, created_at.

Knowledge Entry (GET /knowledge/:id): dataid, title, description (auto-generated summary), type (file | url | manual), parse_status, enable_status, file_name, file_type, file_size, source (URL origin), created_at, processed_at, error_message.

Search Result (hybrid-search): data[]id, content (chunk text), score (relevance 0–1), knowledge_id, knowledge_title, knowledge_filename, chunk_index, chunk_type (text | summary | image), match_type, metadata.

Paginated List (GET .../knowledge): data[] + total, page, page_size.

Enum Values

  • parse_status: pendingprocessingcompleted | failed
  • enable_status: enabled | disabled (knowledge becomes enabled after successful parsing)
  • type (knowledge): file (uploaded file), url (web import), manual (Markdown)
  • type (knowledge base): document (standard), faq (FAQ pairs)
  • chunk_type: text (regular chunk), summary (auto-generated summary), image (image chunk)

Pagination

  • Offset pagination (GET .../knowledge, GET /sessions): use page and page_size query params. Response includes total for calculating pages.
  • Hybrid search: returns up to match_count results (no pagination; increase match_count for more).

Notes

  • GET /knowledge-bases/:id/hybrid-search uses GET method but requires a JSON request body — pass -d '{...}' with curl.
  • After uploading, knowledge enable_status starts as disabled and auto-switches to enabled once parse_status reaches completed.
  • File upload uses multipart/form-data, not JSON. Use curl -F 'file=@path'.
  • file_type is auto-detected from the uploaded file (supports pdf, docx, xlsx, pptx, txt, md, csv, html, etc.).
  • Search score ranges from 0 to 1; higher is more relevant. Adjust vector_threshold (default ~0.5) to filter low-quality matches.
  • When parse_status is failed, check error_message field for the failure reason before retrying with POST /knowledge/:id/reparse.

Error Handling

All errors return:

{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "Human-readable description",
    "details": "Optional extra info"
  }
}
HTTP CodeMeaningSuggested Action
400Bad requestCheck required fields and param formats
401UnauthorizedVerify WEKNORA_API_KEY is correct
403ForbiddenConfirm you have access to this resource
404Not foundCheck resource ID exists
413Payload too largeReduce file size or split content
500Server errorRetry after a short delay

常见问题

上传支持哪些文件格式?
WeKnora 会自动检测 file_type,文档明确列出的支持格式包括 pdf、docx、xlsx、pptx、txt、md、csv、html 等。
混合检索是如何工作的?
单库混合检索向 GET /knowledge-bases/:id/hybrid-search 发送 query_text,结合向量匹配与关键词匹配;结果带有 0 到 1 的相关度分数,可通过 vector_threshold(默认约 0.5)过滤低分匹配。
如何跟踪上传进度?
上传后轮询 GET /knowledge/:id,观察 parse_status,流程为 pending → processing → completed(或 failed);解析成功后,对应条目的 enable_status 会自动从 disabled 切换为 enabled,可通过 error_message 字段查看失败原因并使用 POST /knowledge/:id/reparse 重试。

相关技能

Notes knowledge mapper. Input Markdown/TXT notes or a topic folder; extract entities, similar ideas, relationships, and map views, then output searchable JSO...

35 次安装

通过 CLI 或 MCP,在 Linkly AI 索引的本地与云端文档中完成搜索、列出、读取与笔记。

44 次安装1 星标

Use when an AI Agent (Claude Code, Codex, OpenClaw, or similar) needs to operate an llm-wiki knowledge base: ingest source files into Markdown wiki pages, answer questions from wiki/index.md and linked pages, run agent-bridge status/lint/link/relink/merge/query/index tasks, preserve provenance and t

34 次安装1 星标

Knowledge workbench connector. Input notes, documents, or a local knowledge folder; output import guidance, relationship maps, cross-document answers, and co...

37 次安装

汇总过去 30 天 Reddit、X、YouTube 和网页上关于某个话题的真实讨论。

110 次安装

Hire humans for physical-world tasks via RentAHuman.ai. Search available humans by skill, post bounties, start conversations, and coordinate real-world work. Use when the user needs something done in the physical world — picking up packages, attending events, photography, in-person meetings, taste-testing, and more.

47 次安装2 星标