System Prompt

OpenClaw는 모든 agent 실행에 대해 사용자 지정 시스템 프롬프트를 빌드합니다. 프롬프트는 OpenClaw 소유이며 p-coding-agent 기본 프롬프트를 사용하지 않습니다.

프롬프트는 OpenClaw에서 조립되어 각 agent 실행에 주입됩니다.

구조

프롬프트는 의도적으로 간결하며 고정된 섹션을 사용합니다:

  • Tooling: 현재 tool 목록 + 짧은 설명.
  • Skills (사용 가능한 경우): 필요 시 skill 지침을 로드하는 방법을 model에 알려줍니다.
  • OpenClaw Self-Update: config.applyupdate.run 실행 방법.
  • Workspace: 작업 디렉토리 (agents.defaults.workspace).
  • Documentation: OpenClaw 문서에 대한 로컬 경로(repo 또는 npm 패키지) 및 읽기 시점.
  • Workspace Files (주입됨): bootstrap 파일이 아래에 포함되어 있음을 나타냅니다.
  • Sandbox (활성화된 경우): sandbox된 런타임, sandbox 경로 및 elevated exec 가용성을 나타냅니다.
  • Current Date & Time: 사용자 로컬 시간, timezone 및 시간 형식.
  • Reply Tags: 지원되는 provider에 대한 선택적 reply tag 구문.
  • Heartbeats: heartbeat 프롬프트 및 ack 동작.
  • Runtime: 호스트, OS, node, model, repo root(감지된 경우), thinking 레벨(한 줄).
  • Reasoning: 현재 가시성 레벨 + /reasoning 토글 힌트.

프롬프트 모드

OpenClaw는 sub-agent에 대해 더 작은 시스템 프롬프트를 렌더링할 수 있습니다. 런타임은 각 실행에 대해 promptMode를 설정합니다(사용자 대면 config가 아님):

  • full (기본값): 위의 모든 섹션을 포함합니다.
  • minimal: sub-agent에 사용됨; Skills, Memory Recall, OpenClaw Self-Update, Model Aliases, User Identity, Reply Tags, Messaging, Silent RepliesHeartbeats를 생략합니다. Tooling, Workspace, Sandbox, Current Date & Time(알려진 경우), Runtime 및 주입된 컨텍스트는 사용 가능합니다.
  • none: 기본 identity 라인만 반환합니다.

promptMode=minimal인 경우 추가 주입된 프롬프트는 Group Chat Context 대신 Subagent Context로 레이블이 지정됩니다.

Workspace bootstrap 주입

Bootstrap 파일은 Project Context 아래에 트리밍되어 추가되므로 model이 명시적인 읽기 없이 identity 및 프로필 컨텍스트를 볼 수 있습니다:

  • AGENTS.md
  • SOUL.md
  • TOOLS.md
  • IDENTITY.md
  • USER.md
  • HEARTBEAT.md
  • BOOTSTRAP.md (완전히 새로운 workspace에만)

큰 파일은 마커와 함께 잘립니다. 파일당 최대 크기는 agents.defaults.bootstrapMaxChars(기본값: 20000)로 제어됩니다. 누락된 파일은 짧은 누락 파일 마커를 주입합니다.

내부 hook은 agent:bootstrap를 통해 이 단계를 가로채서 주입된 bootstrap 파일을 변경하거나 교체할 수 있습니다(예: SOUL.md를 대체 페르소나로 교체).

각 주입된 파일이 얼마나 기여하는지 검사하려면(원시 vs 주입, 잘림 + tool 스키마 오버헤드) /context list 또는 /context detail을 사용하세요. Context를 참조하세요.

시간 처리

시스템 프롬프트에는 사용자 timezone이 알려진 경우 전용 Current Date & Time 섹션이 포함됩니다. 프롬프트 캐시를 안정적으로 유지하기 위해 이제 time zone만 포함합니다(동적 시계나 시간 형식 없음).

Agent가 현재 시간이 필요한 경우 session_status를 사용하세요. 상태 카드에는 타임스탬프 라인이 포함됩니다.

다음으로 구성:

  • agents.defaults.userTimezone
  • agents.defaults.timeFormat (auto | 12 | 24)

전체 동작 세부 정보는 Date & Time을 참조하세요.

Skills

적격 skill이 존재하는 경우 OpenClaw는 각 skill에 대한 파일 경로를 포함하는 간결한 사용 가능한 skill 목록(formatSkillsForPrompt)을 주입합니다. 프롬프트는 model에게 read를 사용하여 나열된 위치(workspace, managed 또는 번들)에서 SKILL.md를 로드하도록 지시합니다. 적격 skill이 없으면 Skills 섹션이 생략됩니다.

<available_skills>
  <skill>
    <name>...</name>
    <description>...</description>
    <location>...</location>
  </skill>
</available_skills>

이렇게 하면 타겟팅된 skill 사용을 활성화하면서도 기본 프롬프트를 작게 유지합니다.

Documentation

사용 가능한 경우 시스템 프롬프트에는 로컬 OpenClaw 문서 디렉토리(repo workspace의 docs/ 또는 번들된 npm 패키지 문서)를 가리키고 공개 미러, 소스 repo, 커뮤니티 Discord 및 skill discovery를 위한 ClawdHub (https://clawdhub.com)도 언급하는 Documentation 섹션이 포함됩니다. 프롬프트는 model에게 OpenClaw 동작, 명령, 구성 또는 아키텍처에 대해 먼저 로컬 문서를 참조하고 가능하면 openclaw status를 직접 실행하도록 지시합니다(액세스가 없는 경우에만 사용자에게 요청).