Kosello/dsh-skill-rag ↗★ 0

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.

패키지
dsh-skill-rag
호환성
미검증
Harness peer 범위
>=0.2.1-rc.2 <0.3.0
Cordis peer 범위
^4.0.5
버전
0.2.0
라이선스
MIT
최근 업데이트
2026. 10. 29.

설치

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Kosello/dsh-skill-rag

Configuration

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.