DeepSeek Harness 上手实录:从启动 Web UI 到组装自己的 Agent
DeepSeek Harness 䏿å®å½ï¼ä»å¯å¨ Web UI å°ç»è£ èªå·±ç Agent
çº¯ç±æé¨äºº 2026-08-14 0 é 读6åéDeepSeek Harness ç README å¾çï¼ç´æ¥è¿è¡åªéè¦ä¸æ¡å½ä»¤ï¼
npx @deepseek-ai/dsh web
ä½å¦æåªæ¯å¯å¨é¡µé¢ãå¡«ä¸ API Keyï¼ç¶åæå®å½æå¦ä¸ä¸ªèå¤©å·¥å ·ï¼ä¼éè¿è¿ä¸ªé¡¹ç®ææä»·å¼çé¨åã
è¿ç¯ä¸éå¤ææ¡£ç®å½ï¼èæ¯èµ°ä¸éçæ£ç使ç¨è·¯å¾ï¼å¯å¨ãé 置模åã鿩工ä½åºãçè§£ä¼è¯ï¼åå建èªå·±ç Profileã
å æé¡¹ç®è·èµ·æ¥
ç´æ¥ä½éªå¯ä»¥ä½¿ç¨ npxï¼
npx @deepseek-ai/dsh web
éè¦ç ç©¶æºç æå¼åæä»¶æ¶ï¼å»ºè®®ä½¿ç¨æºç æ¹å¼ï¼
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
corepack enable
pnpm install
pnpm run build
pnpm dsh web
å½åæºç è¦æ± Node.js ^22.19.0 || >=24.0.0ã
æå¡é»è®¤çå¬ï¼
http://127.0.0.1:3080
ææ¬å°æå»ºæ¶ï¼å®è£
è¿ç¨ä¼æç¤º Linux åçå
䏿¯æ macOSï¼è¿å±äºå¹³å°éæ©è¦åãåªè¦ pnpm run build å pnpm dsh --help æ£å¸¸éè¿ï¼å°±ä¸ä»£è¡¨å®è£
失败ã
页颿å¼åï¼ä¸ºä»ä¹è¾å ¥æ¡ä¸è½ç¨
Harness 伿å¯å¨å½ä»¤æå¨ç®å½ä½ä¸ºé»è®¤æä»¶ç³»ç»ä½ç½®ï¼ä½ Web UI ä¸ä¼ç´æ¥éä¸å®ã
éè¦ç¹å»â鿩工ä½åºâï¼æ·»å å¹¶éä¸é¡¹ç®ç®å½ã没æéä¸å·¥ä½åºæ¶ï¼è¾å ¥æ¡ä¼ä¿æç¦ç¨ã
è¿ä¸ªè®¾è®¡çèµ·æ¥å¤äºä¸æ¥ï¼å®é æ¯å¨æç¡® Agent çæä»¶ç³»ç»ä½ç¨èå´ãå®ä¸ä¼å 为æå¡ä»æä¸ªç®å½å¯å¨ï¼å°±é»è®¤å 许æ°ä¼è¯ç´æ¥æä½è¯¥ç®å½ã
é好工ä½åºåï¼å¯ä»¥å æ§è¡ä¸ä¸ªåªè¯»ä»»å¡ï¼
Summarize this repository and identify its main packages.
确认读åãå½ä»¤æ§è¡å审æ¹é¾è·¯é½æ£å¸¸åï¼åè¿è¡åæä»¶ä»»å¡ã
API Key ä¿åå¨åªé
å¨â设置 â æ¨¡åâ䏿·»å DeepSeek API Key åï¼æ¨¡åé ç½®ä¼ç«å³çæï¼ä¸éè¦é坿å¡ã
Harness æåæ®åæ®éé ç½®åå¼ä¿åï¼
$DSH_HOME/.credentials.yaml
$DSH_HOME/settings.yaml
åè ä¿ååæ®ï¼åè ä¿å Providerãæ¨¡åååæ®å¼ç¨ã
Web 页é¢ä¿åæåååªä¼æ¿å°è±ææè¿°ï¼ä¸ä¼éæ°è·åææå¯é¥ãè¿æ¯æ API Key æ··å¨æ®é JSON é ç½®éæ´éåé¿æè¿è¡ã
å¦æä½¿ç¨ç¯å¢åéï¼ä¹å¯ä»¥å¨å¯å¨ Headless Agent æ¶æä¾ï¼
DEEPSEEK_API_KEY=your_key \
pnpm dsh --profile headless "summarize this workspace"
çå®é¡¹ç®éä¸è¦æ Key åè¿ Patchãä»åºé ç½®æ Shell èæ¬ã
é ç½®èªå®ä¹æ¨¡åæ¶æä¸¤ä¸ªå
Harness æ¯æç®å½ Providerï¼ä¹æ¯æ OpenAI å ¼å®¹ç½å ³åèªå»ºæå¡ã
èªå®ä¹ Provider é常éè¦ï¼
llm-pi-ai:
providers:
my-gateway:
apiKeyEnv: GATEWAY_API_KEY
api: openai-completions
baseURL: https://gateway.example/v1
models:
- id: my-model
第ä¸ä¸ªåæ¯ Provider IDã
Provider ID ä¼åè¿ä¼è¯æ¥å¿ãé»è®¤æ¨¡åååæ®å¼ç¨ã䏿¦æå ¥ä½¿ç¨ï¼å°±ä¸éååå°éå½åãæ£ç¡®åæ³æ¯æ°å¢ä¸ä¸ª Providerï¼åè¿ç§»å¹¶å 餿§é ç½®ã
第äºä¸ªåæ¯å¤æ¨¡æè½åã
æå¨æ·»å çæ¨¡åé»è®¤æçº¯ææ¬æ¨¡åå¤çãå¦ææ¨¡åæ¯æå¾çï¼éè¦æ¾å¼å£°æï¼
models:
- id: vision-model
input: [text, image]
è¿åªæ¯å¯¹ç«¯ç¹è½åç声æï¼ä¸ä¼éªè¯æå¡ç«¯æ¯å¦ççæ¯æå¾çã声æé误åï¼æç»ä»ä¼è¢« Provider æç»ã
èä¸å¾çå·²ç»è¿å ¥ä¼è¯æ¥å¿æ¶ï¼ä» ä¿®æ¹é ç½®æªå¿ è½è§£å³é®é¢ãåç»è¯·æ±å¯è½ç»§ç»ä»æ¥å¿æ´¾çåºåä¸éä»¶ï¼æ¤æ¶åºå¼å¯ä¸ä¸ªä¸å å«è¯¥å¾ççæ°ä¼è¯ã
Web å Headless 䏿¯ä¸¤å¥äº§å
Web 模å¼éå交äºå¼ä½¿ç¨ï¼
pnpm dsh web
Headless 模å¼éåèªå¨åä»»å¡ï¼
pnpm dsh --profile headless "inspect the repository"
两è å ±äº«åä¸å¥åºå±è½åï¼åªæ¯å è½½ç Bundle ä¸åã
Web Profile å¢å äºæå¡å¨ãå端å交äºè½åï¼Headless Profile å¢å 䏿¬¡æ§ä»»å¡è¿è¡å¨ï¼ä¸éè¦æµè§å¨åæå¡å¨ã
è¿ä¹æ¯ Profile çæ ¸å¿ç¨éï¼åä¸å¥è½åå¯ä»¥è¢«ç»åæä¸å产åå½¢æã
ä¸è¦ç´æ¥æ¹æºç ï¼å å¦ä¼ Patch
å设æä»¬æä¸ä¸ªæ¬å°æä»¶ï¼
import type { Context } from '@deepseek-ai/cordis'
export const name = 'hello-plugin'
export function apply() {
console.log('hello plugin loaded')
}
å¯ä»¥å建ä¸ä¸ª cordis.ymlï¼
- insert:
- id: hello
name: '/absolute/path/to/my-plugin.ts'
ç¶åå å å° Web Profileï¼
pnpm dsh web --patch ./scratch-plugin/cordis.yml
è¿æ¯ç´æ¥ä¿®æ¹å ç½® Bundle æ´éåå®éªï¼å 为 Patch åªå¨æ¬æ¬¡å¯å¨ä¸çæã
æ¥çæç»ç»æï¼
pnpm dsh --profile web --dump-config
--dump-config å¾éè¦ãProfileãHome é
ç½®åå¤ä¸ª Patch åæ¶å卿¶ï¼ä¸è¦é è忍坼æç»é
ç½®ï¼ç´æ¥æ¥çç»è£
ç»æã
å建ä¸å¥èªå·±ç Profile
妿æç»æä»¶éè¦é¿æä½¿ç¨ï¼å¯ä»¥å建ç¬ç« Profileï¼
dsh plugin --profile review add your-review-bundle
dsh --profile review --dump-config
dsh --profile review
Profile ä¼ä¿åå¨ï¼
$DSH_HOME/profiles/review/
âââ package.json
âââ cordis.patch.yml
package.json è®°å½ä¾èµå Bundle 顺åºï¼cordis.patch.yml ä¿åå½å Profile çæ¬å°è¦çã
å 餿件æ¶ä½¿ç¨ï¼
dsh plugin --profile review remove your-review-bundle
è¿æ ·å¯ä»¥ç»´æ¤å¤å¥ç¨éä¸åç Agentï¼
web æ¥å¸¸äº¤äº
headless èªå¨åä»»å¡
review åªè¯»ä»£ç 审æ¥
writer ææ¡£ä¸å
容å¤ç
sandbox åéå½ä»¤æ§è¡
çæ£çæéé离ä»ç¶è¦ä¾é æä»¶ç³»ç»ãè¿ç¨å Sandbox Providerï¼ä¸è½åªé Profile åç§°ã
ä¼è¯ä¸æ¯ä¸ç»èå¤©æ¶æ¯
Harness 伿 TurnãStepãæ¨¡åè¾åºå Tool è°ç¨åæä¼è¯äºä»¶ã
è¿ä¼å½±åå 个æ¥å¸¸æä½ï¼
- ä¿®æ¹é»è®¤æ¨¡å主è¦å½±åæ°ä¼è¯
- å·²åéè¿è¯·æ±çä¼è¯ä¿çèªå·±ç模åè®°å½
- Tool Call åç»æå¯ä»¥åæ¾
- ä¼è¯å¯ä»¥æ¢å¤æ Fork
- UI 忍¡åä¸ä¸ææ¥èªå䏿¥å¿
æä»¥éå°å¥æªçåå²è¡ä¸ºæ¶ï¼ä¸è¦åªçå½å Settingsï¼è¿è¦èèä¼è¯æ¥å¿ä¸å·²ç»è®°å½äºä»ä¹ã
æéæ§å¶åçå¨åªé
模åçæ Tool Call åï¼ä¸ä¼ç´æ¥ç¢°æä»¶ç³»ç»æè¿ç¨ï¼
模åè¾åº Tool Call
â tools/pre-execute
â æéä¸å®¡æ¹
â Tool execute
â æä»¶ç³»ç»æè¿ç¨ Provider
â tools/post-execute
â åå
¥ä¼è¯æ¥å¿
è¿æ¡é¾è·¯æ¯âå¨ç³»ç»æç¤ºè¯éåè¯æ¨¡åä¸è¦ä¹±å æä»¶âå¯é å¾å¤ã
ææ´å»ºè®®æç¨éæ Profileï¼
- é è¯»ä»£ç æ¶åªæä¾è¯»åè½å
- ä¿®æ¹ä»£ç æ¶å弿¾åå ¥
- Shell åç½ç»å嫿æ
- ä¸å¯ä¿¡ä»åºä½¿ç¨ Sandbox Provider
- ç¬¬ä¸æ¹æä»¶éå®çæ¬æ Commit SHA
模åçèªå¾ä¸æ¯å®å ¨è¾¹çï¼Provider åçç¥ææ¯ã
常ç¨å½ä»¤éæ¥
# å¯å¨ Web UI
pnpm dsh web
# æ¥çåæ°
pnpm dsh web --help
# æ¥çæç»æä»¶æ
pnpm dsh --profile web --dump-config
# 临æ¶å è½½ Patch
pnpm dsh web --patch ./extra.cordis.yml
# è¿è¡ä¸æ¬¡ Headless ä»»å¡
pnpm dsh --profile headless "inspect this repository"
# å®è£
Bundle
dsh plugin --profile demo add <package>
# å é¤ Bundle
dsh plugin --profile demo remove <package>
䏿 DeepSeek Harness çå ³é®ï¼ä¸æ¯è®°ä½å¤å°å½ä»¤ï¼èæ¯å»ºç«ä¸ä¸ªè®¤è¯ï¼
ä½ å¯å¨ç䏿¯åºå® Agentï¼èæ¯ä¸å¥ç± ProfileãBundleãPlugin å Patch ç»ååºæ¥çè¿è¡æ¶ã
çè§£è¿ä¸ç¹åï¼åé¢çæä»¶å¼å就顺äºã
Aitishiku.com