RAGFlow Skill
Operate common RAGFlow v0.27.0 workflows through node {baseDir}/scripts/ragflow.js <command> [options]. Prefer --json when parsing or chaining results. Prioritize daily operations over exhaustive API coverage.
Requirements
- Set
RAGFLOW_URLandRAGFLOW_API_KEYin the environment or this skill's.env. - Use Node.js to run bundled scripts.
- Run
system-health --jsonafter first-time setup to verify service reachability and dependencies. Uselist-datasets --page-size 1 --jsonto verify API-key authentication.
Security Notes
- Use HTTPS in production. Production deployments should use
https://forRAGFLOW_URLto protect the API key in transit. Local development (http://localhost) is acceptable for testing. - Use a dedicated, rotatable API key for automation. RAGFlow v0.27.0 API keys are tenant-scoped rather than permission-scoped.
- Protect your API key. Never share
RAGFLOW_API_KEYin chat messages or commit it to version control. Use environment variables or the skill's.envfile.
Quick Command Reference
| Scenario | Commands |
|---|---|
| Knowledge base setup | create-dataset, list-datasets, get-dataset, update-dataset, delete-datasets |
| Document ingestion | upload-documents, ingest-documents, list-documents, get-document, update-document, delete-documents, download-document, preview-document, metadata-summary, update-metadata |
| Parsing & chunking | start-parsing, stop-parsing, wait-parsing, list-chunks, get-chunk, add-chunk, update-chunk, delete-chunks, get-document-graph, delete-document-graph |
| Direct retrieval | retrieve |
| Chat assistant | create-chat, list-chats, get-chat, update-chat, patch-chat, delete-chats |
| Chat sessions | create-session, list-sessions, get-session, update-session, delete-sessions, chat, chat-session |
| Agent | create-agent, list-agents, get-agent, update-agent, delete-agents |
| Agent Tags | list-agent-tags, update-agent-tags |
| Agent sessions | create-agent-session, list-agent-sessions, delete-agent-sessions, agent-chat |
| Connector | list-connectors, create-connector, get-connector, update-connector, delete-connector |
| RAPTOR | run-raptor, trace-raptor |
| GraphRAG | get-knowledge-graph, delete-knowledge-graph, run-graphrag, trace-graphrag |
| Embedded website access | list-system-tokens, create-system-token, delete-system-token, embed-code, embed-info, embed-chat, embed-agent-chat |
| Model discovery | list-models, list-added-models, list-default-models, set-default-model |
| Model providers | list-providers, get-provider, add-provider, delete-provider, list-provider-models, list-provider-instances, get-provider-instance, create-provider-instance, delete-provider-instances, verify-provider, list-instance-models, add-instance-model, set-model-status |
| System | system-version, system-health, get-log-levels, set-log-level |
Common Workflows
Full RAG pipeline (upload -> parse -> retrieve)
create-dataset --name "My KB" --chunk-method naiveupload-documents --dataset <id> --files ./doc1.pdf ./doc2.txtstart-parsing --dataset <id> --doc-ids <doc_id1> <doc_id2>wait-parsing --dataset <id> --doc-ids <doc_id1> <doc_id2>retrieve --question "What is X?" --datasets <id>
Chat assistant with sessions
create-chat --name "Q&A" --datasets <id> --llm-id qwen-turbo@Tongyi-Qianwencreate-session --chat <chat_id>chat-session --chat <chat_id> --session <session_id> --question "Hello"
Agent workflow
create-agent --title "Assistant" --dsl @agent_dsl.jsoncreate-agent-session --agent <agent_id>agent-chat --agent <agent_id> --session <session_id> --question "Hello"
agent-chat streams by default. Use --stream false for one final JSON response.
Agent tags workflow
list-agent-tags --agent <agent_id>update-agent-tags --agent <agent_id> --tags "Tag1,Tag2"
Connector workflow
create-connector --config @connector.jsonlist-connectorsget-connector --id <id>
Model provider workflow (v0.27.0)
list-providers --availableto see configurable providersadd-provider --name <provider>- Set
RAGFLOW_PROVIDER_API_KEY, then runcreate-provider-instance --name <provider> --instance <name>(credentials live on an instance; a provider can have several) add-instance-model --name <provider> --instance <name> --model-name <model> --model-type chatset-default-model --model-type chat --model-provider <provider> --model-instance <name> --model-name <model>
Use verify-provider --name <provider> with RAGFLOW_PROVIDER_API_KEY set, or pass --api-key-file <path>, to test a key without persisting an instance.
RAPTOR workflow
run-raptor --dataset <id>trace-raptor --dataset <id>
GraphRAG workflow
run-graphrag --dataset <id>trace-graphrag --dataset <id>get-knowledge-graph --dataset <id>
Embedded website access
embed-code --chat <chat_id> --type fullscreenorembed-code --agent <agent_id> --type widgetembed-info --chat <chat_id>orembed-info --agent <agent_id>embed-chat --chat <chat_id> --question "Hello"orembed-agent-chat --agent <agent_id> --question "Hello"
embed-chat automatically creates the embedded chatbot session when --session is omitted. RAGFlow's shared-site route only creates a session and returns the prologue on the first no-session request, so the CLI bootstraps session_id first and then sends the real question.
Workflow Decision Guide
The first step in any RAGFlow operation is resolving the target resource ID. After that, choose the right path:
- Authoring or debugging a custom agent DSL? -> Read references/AGENT_GUIDE.md - it is a self-contained guide to the current RAGFlow agent DSL schema and includes minimal examples.
- Need CLI syntax or option details? -> Read references/COMMANDS.md - it's organized by workflow scenario with full option tables.
- Editing client code or checking request/response shapes? -> Read references/API.md - it has examples for supported
RagflowClientworkflows. - A command failed? -> Read references/TROUBLESHOOTING.md - common errors with causes and fixes.
- Formatting output for the user? -> Read references/REFERENCE.md - consistent response templates and status labels.
Key Constraints
- Confirm destructive scope. Confirm the exact target before any
delete-*command or beforeupdate-metadatadeletes metadata or selects every document. Skip confirmation only when removing temporary resources created in the same requested workflow. - Choose the ingestion path first. For built-in chunking, upload documents, adjust their parser configuration when needed, then run
start-parsing. For ingestion-pipeline datasets, useingest-documentsinstead. - Preserve source filenames. When an attachment is stored under a temporary or task-generated path, upload it as
--files <original-name>=<path>so RAGFlow retains the user-facing name. - Resolve complete, stable inputs. Discover resource IDs with the corresponding
list-*orget-*command, and paginate beyond RAGFlow's 100-item list limit. Use<model>@<provider>identifiers fromlist-modelsfor--embedding-modeland--llm-id; treat numeric model row IDs as display data only. - Preserve session-history intent. Let
chat-sessionappend the latest user message by default. Use--pass-all-historyonly when replacing stored history, and use--legacyonly for a caller that requires cumulative legacy streaming. - Protect operational secrets. Keep
RAGFLOW_API_KEY, provider keys, system tokens, beta values, and embed URLs containingauth=out of user-facing output. Supply provider credentials throughRAGFLOW_PROVIDER_API_KEYor--api-key-file; reveal secret material only when the user explicitly requests copy-paste output. - Use the correct public embed origin. Pass
--originwhen the browser-facing RAGFlow URL differs fromRAGFLOW_URL. Let the CLI reuse or create a beta token and bootstrap the embedded chat session. - Start Agent DSL work from the guide. Read references/AGENT_GUIDE.md before authoring or debugging agents, and adapt its minimal examples instead of reconstructing the canvas schema from memory.
Output Format
Use raw --json internally, then summarize the operational result. Preserve the server's parsing labels (UNSTART, RUNNING, CANCEL, DONE, FAIL) and similarity scores. Redact API keys, system tokens, beta values, and auth= query values unless the user explicitly requests copy-paste secret material. Read references/REFERENCE.md only when a result needs a domain-specific response template.