1. Workspace
The folder that is the agent's world. It reads and writes inside it; outside access is limited by the sandbox mode. Usually one project equals one workspace.
This is the main guide: setting up a workspace, connecting a model, writing instructions that actually work, configuring permissions safely, and using skills, plugins, MCP, subagents and workflows for large jobs.
Before typing your first instruction, learn these five terms. Understanding them removes most early confusion.
The folder that is the agent's world. It reads and writes inside it; outside access is limited by the sandbox mode. Usually one project equals one workspace.
The brain that interprets your instructions. DeepSeek Harness can use DeepSeek models, other providers (Anthropic, OpenAI, Kimi, GLM), your own gateway, or a local model.
Concrete abilities the model can call: reading files, running commands, searching the web, creating documents. You never call tools manually — the model chooses them.
Two safety dials: how wide the file access is, and whether risky actions need your approval. These keep the agent under control.
Each conversation is a session with a context history. Long sessions can be slimmed by delegating to subagents so focus stays sharp.
For example D:\work\quarterly-report. Put in it only files the agent may change.
git init plus one initial commit is enough. Every change then becomes comparable or revertible.
With the CLI, run the command from inside that folder. With the web interface or desktop app, pick it via Choose workspace.
Never place the workspace inside a directory holding credentials, SSH keys or customer data. If the work touches sensitive data, rehearse with sample data first.
Create a key at platform.deepseek.com. Keep it in a password manager, not in a project note.
Paste the key into the DeepSeek Harness interface. It is stored in a local credentials file (inside $DSH_HOME, by default ~/.dsh) and no restart is required.
Faster models suit routine work; stronger models suit analysis and large refactors. Reasoning effort can be set from off, low, high up to max.
| Option | When to use | Notes |
|---|---|---|
| DeepSeek (default) | General use with the most efficient cost. | Includes fast models for light tasks and stronger models for heavy work. |
| Third-party providers | When your organisation already has another subscription (Anthropic, OpenAI, Kimi, GLM). | Added via “Add model provider”. |
| Your own gateway | When you need full control, logging or an internal proxy. | Supports three protocols: openai-completions, openai-responses, anthropic-messages. |
| Local models (Ollama) | When data must not leave your machine or network. | Run through the Ollama integration; local model quality is usually below cloud models. |
For easily verified work (formatting, renaming, extracting data), use a fast model. For decisions that are expensive to get wrong (data migration, large refactors), use the strongest model at a high reasoning level and ask for a plan first.
Output quality is driven by how you ask. These four patterns almost always improve results: state the goal, the constraints, the output shape, and the verification.
| Less effective | More effective |
|---|---|
| “Fix my site.” | “In src/, find every internal link pointing to a 404, fix them to correct relative links, then list the changes.” |
| “Write a report.” | “From data/sales.xlsx, produce a two-page Word report: summary, table by region, three recommendations. Include the totals.” |
| “Research competitors.” | “Find the five leading competitors in Indonesia, compare pricing and features in a table, and include source links I can verify.” |
Tujuan: rapikan struktur folder dokumen/ agar konsisten.
Batasan: jangan ubah isi berkas, jangan hapus apa pun, hanya pindahkan dan ganti nama.
Keluaran: tabel berisi 'lama -> baru' plus skrip yang bisa saya jalankan sendiri.
Verifikasi: setelah selesai, daftar berkas yang tersisa di dokumen/ dan pastikan jumlahnya sama.This four-line pattern works for almost any task.
Raise permissions only when the work truly needs it. A safe progression: start at read-only, move to workspace-write for daily work, and use danger-full-access only for tasks that genuinely require access outside the workspace.
| Setting | Meaning | Risk |
|---|---|---|
read-only + ask | Read only; out-of-bounds actions request approval. | Lowest. Ideal for exploration. |
workspace-write + ask | Free writes inside the workspace; sensitive actions still ask. | Moderate. The best choice for most work. |
danger-full-access + never | Full filesystem access with no prompts. | High. Use only when you understand the consequences. |
Requests that cannot be approved are rejected (fail-closed) rather than silently executed. If a task fails without a clear reason, first check whether the sandbox mode or approval policy blocked it.
A skill is a markdown file holding your procedure. Written once, the agent follows it every time that task appears — no re-explaining. Skills can live inside a project (project-scoped) or in your user folder (all projects).
---
name: format-laporan
description: Standar penulisan laporan internal perusahaan.
---
# Aturan
- Judul maksimal 60 karakter, tanpa singkatan.
- Wajib ada ringkasan eksekutif maksimal 150 kata.
- Semua angka menyertakan satuan dan periode.
- Simpan hasil ke laporan/ dengan nama YYYY-MM-judul.docx.Skill names use lowercase and hyphens (kebab-case).
The .dsh/skills or .agents/skills folder inside the project, the user skills folder in $DSH_HOME, and skills bundled with the app.
The agent loads a skill when relevant, and you can invoke it as a command when the skill is marked user-invocable.
There are two ways to extend DeepSeek Harness: plugins (for developers writing TypeScript) and MCP (for users configuring an existing server). Configuration is layered: bundled packages, then your profile, then additional patches.
# ~/.dsh/profiles/web/cordis.patch.yml
- insert:
- id: mcp-crm
name: "@deepseek-ai/dsh-mcp-client"
config:
serverName: crm
transport: stdio
command: "npx"
args: ["-y", "@perusahaan/mcp-crm"]
env:
CRM_TOKEN: "${CRM_TOKEN}"
# Tool akan muncul sebagai mcp__crm__cari_pelangganReplace the server name and command with your own. Tools appear as mcp__<server>__<tool>.
If your goal is simply “connect the agent to an internal system”, MCP is almost always faster. Write a plugin only when you need a truly custom tool or your own UI panel.
When work grows large — dozens of files, many sources, several viewpoints — do not pile it all into one conversation. Split it across agents. The simplest route is asking for a subagent; the most powerful is writing a workflow script.
// workflow: audit semua berkas panduan secara paralel
const files = args.files; // daftar berkas dari argumen
phase("Audit berkas");
const results = await pipeline(
files,
(file) => agent(`Periksa ${file}: cari tautan mati dan klaim usang.`, { label: file }),
(finding, file) => agent(`Verifikasi temuan pada ${file}: ${finding}`, { label: "verifikasi " + file })
);
return results.filter(Boolean);A workflow script takes a list of items, runs each through stages, and returns structured results.
| Situation | Choice |
|---|---|
| Need one summary from a different angle, quickly. | Satu subagent. |
| The same job repeated across 20–200 items. | Workflow dengan pipeline. |
| Need a final result combining every finding. | Workflow dengan tahap penggabungan. |
| A long command (build, download, migration). | Background job. |
Open a fresh session, ask for a summary of changes since yesterday, then set three priorities for the day. A new session keeps context clean.
Read the command requesting approval, especially anything changing files outside the project or deleting something.
End large tasks by asking for self-verification: running tests, reopening documents or cross-checking numbers.
Every time you repeat the same explanation, turn it into a skill. Within a month your team has a procedure library the agent can use.
DeepSeek Harness is developer preview software. Changes between versions can break older configuration. Record the version you use, test upgrades in a scratch folder, and never depend on one workflow without a fallback.
| Symptom | Likely cause | What to do |
|---|---|---|
| The agent refuses to write a file. | Sandbox mode is still read-only. | Raise it to workspace-write if writing is genuinely needed. |
| The agent only discusses, never acts. | The request was too vague or too broad. | Name the folder, files and desired output shape. |
| Answers drift in a long session. | Context is saturated. | Start a fresh session or split the work into subagents. |
| Model calls fail. | Wrong API key, exhausted quota or network trouble. | Check the key in Settings → Models and the provider's status page. |
| MCP tools do not appear. | The configuration was not loaded in the active profile. | Confirm the plugin row sits in the correct profile, then reload. |
Free consultation with Andi to choose the right setup, prepare a workflow, or review safety before your team adopts it.