dsh-skill-rag
Configurable, optional skill discovery for DeepSeek Harness: standard catalog, local keyword search, or hybrid retrieval with Jetson, Google, OpenRouter or OpenAI-compatible embedding providers.
설치
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Kosello/dsh-skill-ragConfiguration
Configuration lives on the skill-rag row in the profile's
cordis.patch.yml. The same contract is edited by the settings panel.
Standard catalog (recommended zero-setup default)
- id: skill-rag
config:
mode: catalog
This does not open an index, initialize an embedding provider, register
skill_search, or project a selected catalog. The stock full catalog is used.
Local keyword search
- id: skill-rag
config:
mode: keyword
coreNames: [] # user/project DSH skills are always retained
autoIndex: false
skill_search and the selected catalog are enabled. No embedding provider is
constructed and no embedding request is made.
Hybrid with a local Jetson manager
- id: skill-rag
config:
mode: hybrid
embedding:
provider: jetson
model: Qwen3-Embedding-0.6B-TensorRT
baseURL: http://127.0.0.1:8110
dimensions: 1024
timeoutMs: 15000
index:
content: excerpts
privacy:
allowRemoteEmbeddings: false
autoIndex: true
The Jetson adapter accepts only a loopback HTTP service root and uses its non-fallback embedding route.
Google Gemini
- id: skill-rag
config:
mode: hybrid
embedding:
provider: google
model: gemini-embedding-2
dimensions: 768
apiKeyEnv: GEMINI_API_KEY
index:
content: metadata
privacy:
allowRemoteEmbeddings: true
gemini-embedding-2 is the stable model documented by Google for text and
multimodal embeddings. Recommended output dimensions are 768, 1536 or 3072.
The adapter sends text only; no assets are uploaded.
OpenRouter
- id: skill-rag
config:
mode: hybrid
embedding:
provider: openrouter
model: openai/text-embedding-3-small
dimensions: 1536
apiKeyEnv: OPENROUTER_API_KEY
providerRouting:
allow_fallbacks: false
data_collection: deny
index:
content: metadata
privacy:
allowRemoteEmbeddings: true
OpenRouter model discovery uses its embeddings catalog, not the chat-model list. Model support for dimensions, input types and routing varies by model. An explicit model is required.
OpenAI-compatible endpoint
- id: skill-rag
config:
mode: hybrid
embedding:
provider: openai-compatible
model: your-embedding-model
baseURL: http://127.0.0.1:11434/v1
dimensions: 1024
apiKeyEnv: LOCAL_EMBEDDING_KEY # optional for a loopback server
index:
content: metadata
privacy:
allowRemoteEmbeddings: false
The adapter accepts an explicit endpoint and uses the OpenAI /embeddings
shape. Compatibility is not assumed from a product name; test the endpoint and
its dimensions before relying on it. A remote endpoint requires HTTPS and
explicit remote consent.
Credentials
Configuration contains only environment-variable names, never key values. Put keys in a private environment file and reference it from the service:
install -m 600 /dev/null ~/.dsh/skill-rag.env
printf 'GEMINI_API_KEY=%s\n' "$YOUR_KEY" >> ~/.dsh/skill-rag.env
mkdir -p ~/.config/systemd/user/deepseek-harness.service.d
printf '[Service]\nEnvironmentFile=%%h/.dsh/skill-rag.env\n' \
> ~/.config/systemd/user/deepseek-harness.service.d/skill-rag.conf
systemctl --user daemon-reload
Restart to apply. The settings panel reports only whether the referenced variable is present; it never displays the value and has no secret-write field. The TypeSafe/Jev key file is unrelated and should not be reused.