SSD Nodes Learn Hosting plans →
가이드 Matt Connor작성자 Matt Connor · 업데이트됨 2026-08-23

DeepSeek Harness 필수 플러그인 5가지 추천

DeepSeek Harness 환경에서 VPS 운영 효율을 높이는 5가지 필수 플러그인을 소개합니다. 예산 제한, 도구 권한 제어, 인젝션 스캔, 영구 메모리, LAN 액세스 설정 방법을 확인하고 안정적인 에이전트 구성을 위한 버전 고정 전략을 알아보세요.

설치할 가치가 있는 DeepSeek Harness 플러그인

DeepSeek Harness 플러그인은 사용자가 비용을 지불하는 머신에서 에이전트의 권한으로 실행되는 서드파티 코드입니다. 커뮤니티 목록에는 20개가 넘는 카테고리와 1,000개가 넘는 항목이 있습니다. 임대형 가상 사설 서버(VPS)를 운영한다면 다음 5가지가 필요합니다: 지출 한도 설정을 위한 dsh-budget, 도구 게이팅을 위한 dsh-permission-rules, 인젝션 및 비밀 정보 스캔을 위한 dsh-defend, 세션이 종료되어도 유지되는 팩트 저장을 위한 dsh-memory, 그리고 인증 방식을 결정한 후에만 설치해야 하는 dsh-web-lan-access입니다.

이 하네스는 모든 것이 플러그인으로 구성되도록 설계된 DeepSeek의 오픈 소스 에이전트 하네스인 dsh입니다. 해당 프로젝트의 README는 이를 개발자 프리뷰라고 명시하며 THERE WILL BE COMPATIBILITY-BREAKING CHANGES에 대해 경고합니다. 이 사실 하나가 아래의 모든 선택 기준을 결정합니다. 설치하는 플러그인의 버전을 고정하고, 업데이트 시 문제가 발생할 수 있음을 인지하며, 전체 코드를 직접 읽을 수 있을 정도로 플러그인 수를 최소한으로 유지하십시오. 하네스가 아직 실행 중이 아니라면 VPS에 DeepSeek Harness 설치하기를 먼저 진행한 후 다시 돌아오십시오.

dsh가 플러그인을 설치하는 방법과 설정 파일의 위치

dsh은 Cordis 플러그인들을 조합하여 구성되므로, 실행 중인 인스턴스는 하나의 프로그램이 아니라 플러그인들의 트리 구조입니다. 프로필은 이러한 플러그인들을 명명하여 조합한 것입니다. 두 가지 템플릿은 webheadless입니다. $DSH_HOME은 기본적으로 ~/.dsh를 사용하며, 프로필은 $DSH_HOME/profiles/<name>/에 위치하여 자체적인 package.json, dsh.profile 매니페스트, 그리고 cordis.patch.yml을 포함합니다.

dsh plugin --profile web list
dsh plugin --profile web add dsh-budget
dsh plugin --profile web remove dsh-budget

네 가지 소스 형식을 사용할 수 있습니다. 일반 npm 패키지 이름, @towzai/dsh-memory과 같은 스코프 이름, github:PerryLink/dsh-budget#main과 같은 GitHub 참조, 그리고 link:./을 사용한 로컬 경로입니다. #main 부분을 커밋 해시로 대체하여 다음 달에도 동일한 코드를 가져올 수 있으므로 GitHub 형식을 사용하는 것을 권장합니다.

dsh plugin --profile web add "github:PerryLink/dsh-budget#461d478"

계층은 고정된 순서로 적용됩니다. 프로필에 나열된 순서대로 각 번들이 적용된 다음, 프로필의 cordis.patch.yml, 홈 디렉터리 수준의 cordis.patch.yml, 그리고 마지막으로 모든 --patch 오버레이가 적용됩니다. 나중에 적용된 계층이 이전 계층의 설정을 재구성하거나 삭제할 수 있으므로 순서가 중요합니다. 따라서 플러그인이 설치된 것처럼 보이지만 아무런 동작을 하지 않는다면, 프로필의 cordis.patch.yml를 열어 다음 두 가지를 확인하십시오. 삽입 블록이 존재하는지, 그리고 이후 계층에서 해당 설정을 비활성화하지 않는지 확인해야 합니다.

2026년 8월 17일 기준으로 npm 패키지 @deepseek-ai/dsh0.1.0-rc.7 버전에 있으며, 하위의 모든 플러그인은 0.1.0-rc.5에서 0.1.0-rc.6 사이의 호환성을 선언합니다. 이 생태계에서 이러한 격차는 일반적인 현상이며, 플러그인 로딩이 중단되는 주된 이유이기도 합니다. 하네스(harness)가 플러그인보다 빠르게 업데이트되기 때문입니다. 하네스를 의도적으로 업그레이드한 후, 플러그인을 하나씩 테스트하십시오.

플러그인을 신뢰하기 전에 코드를 확인하십시오

dsh 플러그인은 하네스(harness)로부터 샌드박스 처리되지 않습니다. 플러그인은 동일한 Cordis 트리, 동일한 프로세스, 동일한 운영체제 사용자 권한으로 로드되며, 동일한 모델 자격 증명과 작업 트리에 접근할 수 있습니다. 플러그인을 설치하는 것은 브라우저 확장 프로그램을 추가하는 것보다 sudo을 사용하여 타인의 스크립트를 실행하는 것에 더 가깝습니다. 이는 Claude Code 플러그인이 제기하는 문제와 동일한 신뢰의 문제이며, 답 또한 같습니다. 코드를 읽거나, 아니면 설치하지 마십시오.

다음 네 가지 사항을 순서대로 확인하십시오.

  • 어떤 확장 지점을 사용하는지 확인하십시오. tools/pre-execute은 모든 도구 호출을 확인하고 차단할 수 있음을 의미합니다. agent/pre-step는 사용자의 메시지를 볼 수 있음을 의미합니다. webServer.tapIndex은 브라우저에 제공되는 페이지를 재작성할 수 있음을 의미합니다. 이 중 아무것도 사용하지 않는 플러그인은 할 수 있는 작업이 거의 없지만, 이 모든 것을 사용하는 플러그인은 보안 경계 그 자체가 됩니다.
  • 네트워크 통신 여부를 확인하십시오. 소스 코드에서 fetch, http 및 하드코딩된 호스트 이름을 검색하십시오. 외부로 데이터를 전송하는 비용 측정 도구는 사용자의 사용 패턴을 어딘가로 전송하고 있는 것입니다.
  • 자격 증명 읽기 여부를 확인하십시오. credentials.*이나 공급자 키에 접근하는 모든 코드는 README에 명시된 이유가 있어야 합니다.
  • 라이선스와 마지막 커밋 날짜를 확인하십시오. 매주 변화하는 생태계에서 몇 달 동안 업데이트되지 않고 라이선스도 없는 플러그인은 위험 요소입니다.

설치 시에는 브랜치 대신 커밋 해시를 기준으로 설치하고, 설치 프로그램이 cordis.patch.yml에 삽입한 블록을 읽어보십시오. 해당 블록에는 플러그인 ID와 등록된 설정이 명시되어 있으며, 이는 방금 추가한 기능에 대한 가장 간결하고 정직한 설명입니다. 하네스에서 허용하는 경우, AI 에이전트로부터 비밀 정보를 보호하는 방법에 따라 공급자 키가 플러그인에 노출되지 않도록 하십시오.

dsh-budget: 에이전트가 밤새 비용을 소모하지 않게 하려면 어떻게 해야 합니까?

에이전트는 VPS에서 무인으로 실행됩니다. 이것이 에이전트를 VPS에 두는 이유이자 동시에 위험 요소입니다. dsh-budget은 모델별, 세션별, 일별 토큰 사용량과 예상 비용을 측정하며, 해당 총액에 대해 제한을 강제합니다.

dsh plugin --profile web add "github:PerryLink/dsh-budget#461d478"

기본값은 관대하게 설정되어 있습니다. 세션당 10 USD, 일일 50 USD, 월간 500 USD입니다. 이는 자금 지원을 받는 팀에게는 적합합니다. 개인 서버에서는 이 값이 너무 높아 무한 루프가 발생해도 제한에 도달하기 전에 비용이 모두 소진될 수 있으므로, 첫날부터 값을 낮추어야 합니다.

Chartdsh-budget default caps and a lower starting point for one small VPS (USD)
The data behind this chart
[
  {
    "label": "Per session",
    "plugin_default_usd": 10,
    "suggested_start_usd": 2
  },
  {
    "label": "Per day",
    "plugin_default_usd": 50,
    "suggested_start_usd": 5
  },
  {
    "label": "Per month",
    "plugin_default_usd": 500,
    "suggested_start_usd": 40
  }
]

제안된 수치는 한 명의 운영자가 한 대의 장비를 사용할 때의 시작점일 뿐, 확정된 수치가 아닙니다. 실제 한 달간의 사용량을 확인한 뒤에 높이십시오. 월간 제한을 40 USD로, 세션 제한을 2 USD로 설정하면 제한에 도달했을 때 확실하고 빠르게 알림이 발생합니다. 도구의 사용 패턴을 파악하는 동안에는 이러한 방식이 권장됩니다.

- id: budget
  config:
    budgets:
      session: 2
      daily: 5
      monthly: 40
    warnRatio: 0.8
    overLimit: block

기계의 동작 방식을 변경하는 설정은 overLimit입니다. 기본값은 alert이며, 이는 경고를 출력하고 비용 소모를 계속합니다. 즉, 기본 상태의 이 플러그인은 대시보드 역할만 합니다. 이를 block로 설정하면 제한에 도달했을 때 하네스가 더 이상의 모델 호출을 거부합니다. 따라서 밤새 실행되는 작업이 아침까지 비용을 청구하지 않고 중단됩니다. degrade는 세 번째 모드입니다. 이 모드는 작업을 반드시 완료해야 하지만 최고 성능의 모델이 필요하지는 않을 때, degradation 맵에 정의된 더 저렴한 모델로 교체합니다. warnRatio의 기본값은 0.8이므로, 제한의 80퍼센트에 도달했을 때 알림을 받게 됩니다.

두 가지 정직한 제한 사항이 있습니다. 비용은 사용자가 제공한 가격을 기준으로 계산됩니다. prices은 기본적으로 비어 있으며, defaultPrice은 입력 토큰 100만 개당 1.0 USD, 출력 토큰 100만 개당 3.0 USD를 기본값으로 사용합니다. 대시보드가 추측이 아닌 실제 측정값이 되도록 모델의 정확한 가격을 입력하십시오. 둘째, 이 플러그인은 세션 이벤트 스트림에서 실행 중인 프로세스의 데이터를 집계하므로, 하네스가 재시작되면 총액이 초기화됩니다. 크래시 루프가 발생하거나 dsh을 재시작하는 관리 프로세스가 있다면 일일 제한이 초기화됩니다. dsh-budget는 본인의 작업에 대한 안전장치로만 활용하고, 실제 비용 상한선은 공급자 계정 자체의 지출 제한을 통해 설정하십시오. 이에 대한 자세한 내용은 VPS에서 AI 에이전트 비용 제어하기를 참조하십시오.

일상적인 운영에서는 /budget으로 전체 개요를 확인하고, /budget models로 모델별 상세 내역을 파악하며, 작업을 계속하기로 결정했다면 /budget unblock <scope>를 사용하여 차단을 해제합니다.

dsh-permission-rules: which tool calls should never run?

dsh-permission-rules puts declarative rules on the tools/pre-execute waterfall, so a rule is evaluated before a tool runs. Three actions exist. allow passes the call through, deny blocks it and returns a reason the model can read, and ask routes it to the official approval seam.

dsh plugin --profile web add "github:PerryLink/dsh-permission-rules#b30b4fb"

Rules live in .dsh/rules.yaml relative to the session working directory, with a global fallbackPath and optional searchUp to walk up toward the filesystem root. Matching covers tool-name globs, parameter key and value globs, workspace-relative path globs, agent selectors such as main or subagent, and network targets.

rules:
  - match: { tools: [bash], params: { command: "rm -rf*" } }
    action: deny
    reason: "No recursive deletes"
  - match: { tools: [edit, write], paths: ["**/.env*", "**/secrets/**"] }
    action: ask
    reason: "Secret files need confirmation"
  - match: { tools: ["mcp__*"] }
    action: ask
    reason: "MCP tools need confirmation"

Evaluation is first match wins, so a broad allow near the top quietly cancels every narrower rule under it. Write the denials first and the permissive rules last. The tool-name glob covers mcp__*, which is how you gate tools that came from a model context protocol (MCP) server rather than from the harness itself, and that matters as soon as you are running MCP servers on a VPS.

One behaviour to plan for: ask needs an answerer. On a headless profile nobody may be watching, so an ask rule can hold a run up until someone appears. Use deny for anything you would never approve, keep ask for the profile you sit in front of, and if you want approvals to work unattended you need a real answering path, which is the subject of gating AI agent actions with approvals.

dsh-defend: 프롬프트 인젝션과 비밀 정보 유출은 어떻게 대응합니까?

dsh-defend은 세 지점에서 스캔을 수행합니다. agent/pre-step의 인바운드 메시지, 파괴적 삭제 방지 기능이 포함된 tools/pre-execute의 도구 인자, 그리고 tools/post-execute의 도구 결과입니다. 마지막 지점은 모델이 동작하기 전에 웹 페이지에서 가져온 콘텐츠를 검사하는 곳이므로 특히 중요합니다.

dsh plugin --profile web add "github:PerryLink/dsh-defend#7ba3427"

기본 설정은 엄격하기보다는 신중한 편입니다. detection.injectionAction, detection.jailbreakAction, detection.secretAction은 모두 ask로 설정되어 있으며, detection.secretBlockCriticaltrue로 설정되어 있어 다른 설정과 관계없이 중요한 비밀 정보는 차단됩니다. 관리자가 상주하지 않는 서버에서는 중요한 작업의 설정을 block으로 변경하십시오. 사용자가 직접 판단할 수 없는 상황에서 ask을 수행하는 것은 올바른 결정이 아니기 때문입니다.

감사 설계는 높게 평가할 만합니다. defend/detection 이벤트는 규칙 ID, 제품군, 범주, 심각도, 결정 사항 및 스캔 사실을 기록하며, 일치하는 텍스트 자체는 절대 기록하지 않습니다. 비밀 정보는 유형별로만 기록됩니다. 따라서 감사 로그를 활성화해도 보호하려는 자격 증명의 복사본이 생성되지 않습니다.

이 기능이 제공하는 이점을 명확히 이해해야 합니다. 탐지는 규칙 기반으로 이루어지며, README에도 명시되어 있듯이 새로운 문구의 공격이나 다단계 공격은 탐지를 우회할 수 있습니다. 이 기능은 명백한 공격의 발생률을 낮춰줄 뿐입니다. 에이전트를 신뢰할 수 없는 콘텐츠에 노출해도 안전하다는 의미는 아니므로, 하위 권한 규칙을 반드시 유지하십시오.

dsh-memory: 에이전트는 내일 무엇을 기억하는가?

dsh-memory라는 이름을 가진 플러그인이 두 가지 존재하므로, 설치 명령어를 입력하기 전에 이를 인지해야 합니다. 읽어본 문서의 플러그인을 정확히 설치하려면 소스를 명시하여 설치하십시오.

소규모 서버에 권장하는 것은 SQLite 빌드입니다. 이 플러그인은 memory로 등록되며, 프로필 간에 공유되는 파일 하나를 $DSH_HOME/memory/memory.db에 유지하고 memory_write, memory_search, memory_forget 명령을 노출합니다. 검색은 저장된 텍스트와 태그를 기반으로 한 키워드 방식입니다. 임베딩 서비스, API 키, 별도의 프로세스는 필요하지 않습니다.

dsh plugin --profile web add "github:ben7am1n/dsh-memory#def7c6a"

수정해야 할 설정은 간단합니다. 데이터베이스 파일 경로인 path, 고정되지 않은 메모리를 몇 개나 주입할지 결정하는 promptRecentCount(기본값 10), 그리고 렌더링 예산을 결정하는 promptMaxChars(기본값 2000)가 있습니다. 이 플러그인은 Node 22와 24에서도 여전히 실험적 기능으로 분류되는 node:sqlite에 의존하므로, Node 업그레이드는 무작정 진행하기보다 반드시 테스트를 거쳐야 합니다.

메모리 기능이 시스템에 미치는 실질적인 영향은 다음과 같습니다. 주입된 메모리는 매 대화마다 시스템 프롬프트에 포함됩니다. 2000자 예산은 모든 요청마다 수백 개의 입력 토큰이 영구적으로 추가됨을 의미합니다. 이는 실제 비용 청구서에 반영되는 항목이므로, dsh-memory을 설치하기 전에 dsh-budget를 먼저 서버에 배치해야 하는 이유이기도 합니다. promptMaxChars을 작게 유지하고, 파일이 무한정 커지지 않도록 memory_forget을 사용하여 주기적으로 정리하십시오.

대안으로 제공되는 빌드는 메모리를 YAML 파일에 저장하고 자동 프롬프트 주입을 통해 임베딩 검색을 수행하며, dsh plugin --profile web add github:towzai/dsh-memory로 설치합니다. 이 방식은 로컬 ollama 인스턴스와 임베딩 모델(기본값 qwen3-embedding:0.6b, DSH_MEMORY_EMBED_MODEL로 변경 가능)이 필요합니다. 키워드 기반 검색보다 의미론적 회상(semantic recall) 성능이 더 뛰어납니다. 하지만 이는 두 번째 서비스가 실행되어야 함을 의미하며, 서버에 모델 가중치가 상주해야 합니다. 소규모 서버 플랜에서는 서버의 본래 목적을 위해 할당된 메모리를 점유하게 됩니다. RAM 용량에 여유가 있을 때 이 방식을 선택하십시오. 회상 품질과 리소스 점유 비용 사이의 일반적인 절충안은 에이전트를 위한 로컬 메모리에서 다룹니다.

dsh-web-lan-access: 웹 UI가 루프백 외부에서 수신 대기해야 합니까?

npx @deepseek-ai/dsh web127.0.0.1:3080에서 인터페이스를 제공합니다. 브라우저는 보안 컨텍스트에서만 crypto.randomUUID()를 노출하므로, 다른 기기에서 일반 HTTP로 동일한 페이지를 로드하면 실패합니다. dsh-web-lan-accesswebServer.tapIndex을 활용하여 작은 폴리필을 주입함으로써 이 문제를 해결하며, 서버 바인딩을 0.0.0.0로 전환합니다.

설치하기 전에 자체 경고를 읽어 보십시오. 0.0.0.0에 바인딩하면 동일한 로컬 영역 네트워크(LAN)에 있는 누구나 인증 없이 에이전트에 접근할 수 있게 되며, 공인 IP 주소를 사용하는 서버의 경우 이는 곧 전 세계 인터넷에 노출됨을 의미합니다. 민감한 메서드(settings.*, credentials.*, llm.discoverModels) 목록은 루프백에 고정되어 원격지에서 요청 시 403을 반환하므로 피해가 제한됩니다. 그러나 도구 호출 인터페이스가 포트를 발견한 누구에게나 열려 있으므로 완전히 안전한 것은 아닙니다.

대부분의 경우 이 플러그인은 전혀 필요하지 않습니다. 대신 SSH를 통해 포트를 포워딩하십시오.

ssh -N -L 3080:127.0.0.1:3080 you@your-server

그런 다음 로컬 브라우저에서 http://127.0.0.1:3080를 엽니다. 하네스는 루프백에서만 수신 대기하므로 아무것도 노출되지 않으며, 브라우저는 127.0.0.1을 보안 오리진으로 취급하므로 crypto.randomUUID()를 사용할 수 있고 폴리필도 필요하지 않습니다. 명령어 하나로 플러그인 없이 새로운 공격 표면을 만들지 마십시오.

포워딩이 불가능한 경우, 예를 들어 동일 네트워크상의 휴대폰이 UI에 접근해야 하는 경우에만 플러그인을 설치하십시오. 설치 시에는 사설 네트워크 인터페이스 뒤에 바인딩하고, 해당 인터페이스만 허용하는 방화벽 규칙을 유지하며, web-runtime 항목의 trustedHosts 아래에 사용할 이름을 나열하십시오. 진정한 다중 사용자 접근을 위해서는 dsh-passwords을 사용하십시오. 이는 하위 사용자 권한, 하위 사용자별 시간당 토큰 및 일일 시간 할당량, Let's Encrypt를 통한 자동 TLS(전송 계층 보안) 인증서, 암호화된 감사 로그를 추가합니다. 이를 플러그인이 아닌 플랫폼으로 간주하십시오. 포트 80과 443을 요구하며 자체 설치 프로그램을 제공하고, 문서화된 빠른 설치 경로는 네트워크에서 셸 스크립트를 받아 즉시 bash로 파이프합니다. npm install -g dsh-passwords를 실행한 후 dsh-passwords install을 수행하는 방식을 선호하십시오. 그러면 코드가 디스크에 저장되어 실행 전에 내용을 확인할 수 있습니다.

플러그인을 깔끔하게 제거하는 방법

제거 과정은 두 단계로 나뉘며, 많은 사용자가 두 번째 단계를 생략합니다.

dsh plugin --profile web remove dsh-budget
dsh plugin --profile web list

list에서 해당 플러그인이 더 이상 표시되지 않아야 합니다. 그 후 $DSH_HOME/profiles/web/cordis.patch.yml를 열어 해당 플러그인을 지칭하는 삽입 블록(insert block)이 남아 있다면 삭제하십시오. 해당 항목이 트리 구조로 플러그인을 불러오는 역할을 하기 때문입니다. 하네스(harness)를 재시작하여 트리를 다시 빌드하십시오. 이미 로드된 플러그인은 재시작 전까지 계속 메모리에 남아 있습니다. 마지막으로, 데이터는 코드보다 오래 유지된다는 점을 기억하십시오. $DSH_HOME/memory/memory.db.dsh/rules.yaml는 제거 후에도 남아 있습니다. 데이터 삭제가 목적이라면 직접 삭제하십시오.

읽은 내용과 시점

이 문서의 모든 참조는 브랜치가 아닌 커밋을 가리킵니다. 독자가 이 글을 읽을 시점에는 main의 코드가 변경되어 있을 것이기 때문입니다. 본인은 2026년 8월 17일에 모든 내용을 검토했으며, 당시 npm에 게시된 하네스(harness) 버전은 0.1.0-rc.7이었습니다.

이 요약 목록의 기반이 된 정확한 커밋
  • 커뮤니티 플러그인 목록, 2026년 8월 17일 기준 f2918fb. 의도적으로 한 번만 링크했습니다. 이는 디렉터리일 뿐이며, 디렉터리 자체가 추천을 의미하지는 않습니다.
  • dsh-budget, 2026년 8월 17일 기준 461d478. Apache 2.0 라이선스. dsh 0.1.0-rc.6, Node 22.19 또는 24 이상을 요구합니다.
  • dsh-permission-rules, 2026년 8월 17일 기준 b30b4fb. Apache 2.0 라이선스. dsh 0.1.0-rc.5에서 0.1.0-rc.6까지를 지원합니다.
  • dsh-defend, 2026년 8월 17일 기준 7ba3427. Apache 2.0 라이선스. dsh 0.1.0-rc.6를 요구합니다.
  • dsh-memory, 2026년 8월 13일 기준 def7c6a. MIT 라이선스. SQLite 빌드 포함.
  • dsh-web-lan-access, 2026년 8월 16일 기준 e27e909. MIT 라이선스.

명령어를 복사하기 전에 해당 핀(pin) 정보를 다시 확인하십시오. 개발자 프리뷰 생태계에서는 날짜가 포함된 버전 번호만이 유일하게 의미를 갖습니다.

FAQ

VPS에서 가장 먼저 설치해야 할 DeepSeek Harness 플러그인은 무엇입니까?

다른 무엇보다 dsh-budgetdsh-permission-rules을 먼저 설치하십시오. overLimit: block가 포함된 예산 설정은 무인 실행 시 밤새 비용이 소진되는 것을 방지하며, .dsh/rules.yaml 파일은 승인하지 않았을 도구 호출을 차단합니다. 에이전트가 공개 웹에서 정보를 읽기 시작하면 dsh-defend을 추가하고, 모든 세션에 동일한 컨텍스트를 반복해서 붙여넣고 있다면 dsh-memory를 추가하십시오. 테마나 상태 칩은 건너뛰어도 좋습니다. 이는 기계의 동작을 바꾸지 않으면서 에이전트의 권한으로 실행되는 코드만 추가할 뿐입니다.

dsh 플러그인은 하네스(harness)로부터 샌드박스 처리됩니까?

아니요. 플러그인은 하네스와 동일한 Cordis 트리, 동일한 프로세스, 동일한 운영체제 사용자 권한으로 로드되며, 동일한 모델 자격 증명과 작업 트리를 공유합니다. tools/pre-execute을 가로채는 플러그인은 모든 도구 호출을 확인하고 차단할 수 있으며, agent/pre-step를 가로채는 플러그인은 사용자의 메시지를 볼 수 있습니다. 따라서 소스 코드를 읽고, 라이선스와 마지막 커밋 날짜를 확인하십시오. 코드가 임의로 변경되지 않도록 브랜치가 아닌 커밋 단위로 설치하는 것이 좋습니다.

dsh-budget은 실제로 에이전트를 중단시킵니까, 아니면 경고만 합니까?

이는 overLimit 설정에 따라 다릅니다. 기본값은 alert이며, 이는 warnRatio에서 경고를 보내고 계속해서 비용을 지출합니다. block은 한도에 도달하면 추가 모델 호출을 거부하며, /budget unblock <scope>는 사용자가 계속하기로 선택할 때 한도를 해제합니다. degradedegradation 맵에 정의된 더 저렴한 모델로 전환합니다. 한 가지 중요한 제한 사항이 있습니다. 총액은 세션 이벤트 스트림으로부터 실행 중인 프로세스 내에서 집계되므로, 하네스를 재시작하면 초기화됩니다. 따라서 재시작 루프가 발생하면 일일 한도가 무력화될 수 있습니다. 실제 상한선으로서 제공자 계정 자체에 지출 한도를 설정해 두십시오.

dsh 플러그인을 완전히 제거하려면 어떻게 해야 합니까?

dsh plugin --profile web remove <package-name>를 실행하고 dsh plugin --profile web list으로 확인한 다음, $DSH_HOME/profiles/web/cordis.patch.yml를 열어 해당 플러그인에 대한 삽입 블록을 삭제하십시오. 해당 항목이 플러그인을 로드하는 역할을 하기 때문입니다. 이후 하네스를 재시작하여 플러그인 트리를 다시 빌드하십시오. 플러그인이 디스크에 기록한 데이터는 그대로 남습니다. $DSH_HOME/memory/memory.db.dsh/rules.yaml은 사용자가 직접 삭제하기 전까지 제거 후에도 유지됩니다.

dsh 웹 UI를 네트워크에 노출해도 안전합니까?

단독으로는 안전하지 않습니다. dsh web127.0.0.1:3080에서 수신 대기하며, dsh-web-lan-access는 이 바인딩을 0.0.0.0으로 변경합니다. README에 명시된 바와 같이, 이 설정은 동일 네트워크상의 누구든 인증 없이 에이전트에 접근할 수 있게 만듭니다. 공인 IP 주소라면 인터넷 전체에 노출되는 것을 의미합니다. 몇몇 방식(settings.*, credentials.*, llm.discoverModels)은 루프백에 고정되어 원격지에서의 요청에 403을 반환하므로 피해를 줄일 수는 있지만 완전히 막지는 못합니다. SSH 포트 포워딩, ssh -N -L 3080:127.0.0.1:3080 you@your-server를 사용하거나, 포트를 사설 네트워크 인터페이스와 방화벽 규칙 뒤에 배치하고, 외부에서 접근 가능하게 만들기 전에 반드시 실제 인증을 추가하십시오.