Norma Agent Harness 현재 시스템 문서
전체 문서
이 페이지 목차

설정 필드 참조

이 색인은 public configuration struct의 exported field 전부를 production source에서 계수해 설명한다. llm.Config의 비공개 limiter는 16번째 내부 field지만 public 설정 분모 15개에서 제외한다. “default”는 zero value가 그대로 쓰이는지, constructor가 보정하는지를 구분한다. noa.Config를 직접 넘기면 DefaultConfig와 field별 merge하지 않는다.

agentcore.Options — 52 fields

agentcore.Options — 52 fields · 관계

이 대상을 사용하는 기능·모듈·계약 · 5개

전체 관계 5개 · 종류 선택·관계도
field type default override/consumer failure semantics
Provider llm.Provider 없음 그대로 harness에 전달 nil/오동작 provider는 첫 model call에서 실패
SystemPrompt []string 빈 목록 정적 system prefix host policy가 없으면 SDK가 보충하지 않음
AppendSystemPrompt []string 빈 목록 SystemPrompt 뒤에 결합 untrusted text를 넣으면 system 권한으로 전송
DynamicBoundary int 0: cache boundary 없음 provider cacheable prefix 경계 범위가 끝 이상이면 Anthropic은 전체를 cacheable로 처리
Tools []tool.CoreTool nil: DefaultTools 9개; 빈 slice: 0개 명시 slice가 기본값 대체 중복 name은 registry에서 마지막 항목이 대체
DeferredTools []string 빈 목록: 비활성 schema 노출에서 이름을 숨기고 access tool 2개 추가 registry 실행 차단이 아니며 잘못된 이름은 발견 불가
UnlockSet *tool.UnlockSet nil+deferred: 전부 unlocked로 seed host set이 호출 gate 대체 resume으로 자동 복원되지 않음
CanUseTool permission.CanUseTool nil ask 단계 host callback 승인이 필요하면 nil은 deny
AllowedTools []string 없음 permission name rule allow argument/resource scope는 평가하지 않음
DisallowedTools []string 없음 permission name rule deny; allow보다 우선 name-only match
PermissionMode permission.Mode 빈 값→default session mode; plan controller가 동적으로 대체 가능 unknown/empty semantics를 host가 명시하지 않으면 의도 혼동
Hooks harness.HookRunner nil: 비활성 lifecycle/tool/stop callback timeout·panic recovery 없음
Compaction *compaction.Config nil: 비활성 built-in compactor 생성 Compactor도 있으면 무시되고 OnWarn
Compactor harness.Compactor nil host context manager; Compaction보다 우선 ContextView 구현은 API message array 전체 책임
OnWarn func(string) nil: 경고 폐기 NewSession/adapter 비치명 진단 nil이면 misconfiguration 관측 불가
Plan *PlanOptions nil: 비활성 plan tools와 mode controller 설치 target/approver 오류는 실행 중 드러남
Memory *MemoryOptions nil 또는 Store nil: 비활성 memory tools·index·prompt injection file 오류/낮은 relevance는 tool 결과 또는 누락
Skills *skill.Registry nil: 비활성 Skill tool 설치 skill text는 user guidance로 주입
EnableWebFetch bool false true면 WebFetch 설치 URL scope는 SDK가 제한하지 않음
WebFetchProxy string 빈 값 + TLS zero: default transport proxy env; TLS override면 direct WebFetchConfig.Proxy로 전달 proxy 오류 fallback도 env를 다시 탈 수 있어 direct 보장 없음
WebFetchCACert string 빈 값: system roots InsecureTLS=false일 때 custom CA 추가 read/parse 실패를 조용히 무시해 system roots로 남을 수 있음
WebFetchInsecureTLS bool false true면 CA보다 우선해 verify skip TLS 진위 보장 상실
EnableWebSearch bool false true면 backend tool 구성 구성 오류 시 NewSession이 오류/경고 없이 tool을 생략
WebSearchBackend string 빈 값→ddgs backend 선택 알 수 없는 값은 tool 생략
BraveSearchAPIKey string 없음 brave-free일 때만 사용 필수 key 없음→tool 생략
TavilySearchAPIKey string 없음 tavily일 때만 사용 필수 key 없음→tool 생략
DeepSeekSearchBaseURL string 없음 deepseek Anthropic-format root 없음/형식 불일치→생략 또는 HTTP 실패
DeepSeekSearchAPIKey string 없음 deepseek x-api-key 없음→tool 생략
DeepSeekSearchModel string 없음 deepseek request model 없음→tool 생략
WebSearchProxy string 빈 값 + TLS zero: default transport proxy env; TLS override면 direct search HTTP client proxy scope/recording 강제점이 아님
WebSearchCACert string 빈 값: system roots search custom CA invalid file/PEM은 조용히 무시
WebSearchInsecureTLS bool false true면 verify skip TLS 진위 보장 상실
Todos *tool.TodoStore nil: 비활성 TodoWrite 설치·reminder source in-memory라 process 재시작 시 소실
AskUser tool.AskUserFunc nil: 비활성 AskUserQuestion 설치 callback은 동기 block; timeout 없음
SystemReminderFunc func() string nil: 날짜만 매 Prompt마다 날짜 뒤 extra 생성 callback 실패 계약 없음
MaxTurns int 0: 제한 없음 harness main turn cap 업무 완료가 아니라 max_turns terminal
MaxDuration time.Duration 0: 제한 없음 turn 경계 budget·tool context deadline model stream hard timeout이 아님
Settlement *harness.Settlement nil/빈 Prompt: 비활성 budget 종료 뒤 bounded wrap-up 원래 terminal reason은 유지
MaxTokens int 0: provider별 기본/생략 model output cap Anthropic은 8192; 다른 format 의미가 다름
Temperature *float64 nil: 생략 provider request gateway가 지원하지 않으면 request 실패
MaxConcurrency int <=0→10 concurrency-safe tool semaphore tool metadata가 틀리면 shared-state race
WorkingDir string 빈 값 그대로 file/process tool base sandbox가 아니며 absolute/.. 차단 없음
ToolOutputDir string 빈 값: spill 안 함 oversize result full-text spill evidence store/atomic ledger가 아님
MaxToolOutputChars int <=0→30000 model에 보낼 tool output head 초과분은 spill 없으면 손실
BashEnv []string 빈 값: inherited env Bash/background child env override secret와 proxy가 child로 전파
Transcript *transcript.Store nil: memory-only JSONL writer·Resume prerequisite append 오류는 Writer.Err에 남고 terminal로 자동 승격 안 됨
SessionID string 빈 값→random id transcript/task path identity host 제공 값의 path 안전성 검증 없음
TokenBudget int <=0: 비활성 약 90%까지 continuation nudge 비용 상한/업무 성공 보장이 아님
EscalateMaxTokens bool false max_tokens 때 64k 재시도 우선 provider cap/비용 증가 가능
DisableBackgroundTasks bool false true면 자동 task tools/manager 미설치 global env disable도 별도 우선
NonStreaming bool false: streaming true면 Provider.Complete event는 조립 뒤 한꺼번에 전달
Deps harness.QueryDeps zero: production defaults model/tool/time side-effect boundary 대체 부분 override는 withDefaults가 빈 항목 보충

소스 근거

agentcore.PlanOptions — 3 fields

field type default override/consumer failure semantics
Approver plan.Approver nil: 자동 승인 ExitPlanMode 승인 callback 동기 callback; 거부 feedback만 tool result
StartInPlanMode bool false true면 초기 mode=plan mutating tools가 deny
TargetMode permission.Mode 빈 값 → acceptEdits 승인 뒤 controller mode 빈 값도 파일 편집을 자동 허용하므로 더 좁은 target이 필요하면 명시해야 함

소스 근거

agentcore.MemoryOptions — 4 fields

field type default override/consumer failure semantics
Store *memory.Store nil: memory 기능 미설치 tool/index/injection 소유자 directory I/O 오류
AutoInject bool false Prompt마다 Relevant 결과 선행 user text로 주입 relevance는 단순 token match
MaxInject int <=0→3 auto-inject 개수 큰 값은 context 증가
IncludeIndexInPrompt bool false system segments에 MEMORY.md index 추가 index가 stale/누락일 수 있음

소스 근거

llm.Config — 15 exported fields

field type default override/consumer failure semantics
Format llm.Format 없음 anthropic/openai/openai-responses adapter 선택 알 수 없는 값은 NewProvider error
BaseURL string format env→공식 endpoint 명시 값이 env/default보다 우선 path suffix가 예상과 다르면 잘못된 endpoint
APIKey string format env 명시 값이 env보다 우선 빈 값도 construction 성공, HTTP auth 실패
Model string 없음 request model 빈/unsupported model은 HTTP 실패
APIVersion string Anthropic 2023-06-01 Anthropic header 다른 format은 무시
HTTPClient *http.Client nil→built-in client 설정 시 Proxy 포함 built-in transport 전체 대체 nil transport timeout은 host 책임
Proxy string 빈 값→HTTP_PROXY/HTTPS_PROXY/NO_PROXY 또는 lowercase alias HTTPClient가 nil일 때 built-in transport만 사용 CGI REQUEST_METHOD 환경의 HTTP proxy 거부; scheme 누락/unsupported는 NewProvider error
MaxRetries int 0→3; 음수→0 request establishment retry mid-stream drop은 retry 안 함
RetryInterval time.Duration 0→0.5/1/2s… max 8s 양수는 fixed interval context 취소로 중단
EmptyResponseRetries int 0→2; 음수→0 OpenAI Chat 정상 empty response 전체 재요청 prompt 비용 재발생; 다른 format 무관
EmptyResponseInterval time.Duration 0→exponential empty-response retry wait 다른 format 무관
RateLimit *llm.RateLimit nil: 비활성 provider instance 공유 request gate retry는 추가 count 안 됨; 분산/global limit 아님
ThinkingType string 빈 값: omitted request/per-request override가 우선 provider-specific invalid value는 HTTP 실패
ReasoningEffort string 빈 값: omitted Anthropic output_config/OpenAI reasoning field gateway 지원 여부에 따라 실패
MaxTokensField string 빈 값→max_tokens OpenAI Chat에서 completion variant opt-in Anthropic/Responses는 무시

소스 근거

coordinator.Config — 10 fields

field type default override/consumer failure semantics
Provider llm.Provider 없음 모든 worker nil은 model call 실패
WorkerTools *tool.Registry nil child parent registry nil이면 worker tools 0개
WorkerPrompt []string 빈 값→DefaultWorkerPrompt worker system host policy는 별도
PermissionMode permission.Mode 빈 값→acceptEdits worker mode shared working dir 부작용 가능
WorkingDir string 빈 값 RunParallel child directory sandbox 아님
MaxTurns int 0: 제한 없음 각 worker Definition 무제한 loop 가능
MaxDepth int <=0→subagent 3 child recursion depth 초과 tool error
MaxParallel int <=0→4 RunParallel semaphore shared tools/filesystem race
CanUseTool permission.CanUseTool nil worker approval ask action deny
Hooks harness.HookRunner nil worker hooks concurrent callback 안전성 host 책임

소스 근거

subagent.Config — 7 fields

field type default override/consumer failure semantics
Provider llm.Provider 없음 child model nil 실패
ParentTools *tool.Registry nil Definition.Tools로 filter nil→빈 registry
Agents map[string]Definition nil agent_type catalog unknown type tool error
MaxDepth int <=0→3 context depth guard 초과 tool error
CanUseTool permission.CanUseTool nil child permission ask action deny
Hooks harness.HookRunner nil SubagentStart와 child hooks callback isolation 없음
Transcript *transcript.Store nil sidechain writer parent session id 없으면 새 id; append 오류 별도

소스 근거

noa.Config — 10 top-level fields

field type default override/consumer failure semantics
ModelContextLimit int DefaultConfig 인자; adapter 최종 <=0→200000 pressure 비율 기준 실제 model window 불일치 시 잘못된 압축
Tiers noa.TierConfig DefaultConfig: enabled,max=3,triggers=5/10 multi-tier consolidation partial Config는 default merge 안 됨; validation은 warning
Nudge noa.NudgeConfig DefaultConfig: .75/.45/.95, growth 50k 등 nudge cadence/pressure 잘못된 비율은 warning 후 계속
Truncate noa.TruncateConfig threshold .95 mechanical last resort 범위 밖은 warning 후 계속
Compress noa.CompressConfig range 5000 chars, summary 50..20000 Compress input validation min>=max는 warning 후 계속
ProtectedTools []string 없음; Compress는 별도 always-protected pattern-based exclusion pattern 과포함/누락
IsToolProtected func(string) bool nil host protection predicate callback panic recovery 없음
PreserveRecentMessages int 5 tail soft zone partial Config zero면 보존 감소
PreserveRecentTokens int 5000 tail soft token zone estimator 오차
MaxCompressAttempts int 3 nudge suppression threshold <1 warning 후 계속

소스 근거

noaadapter.Options — 7 fields

field type default override/consumer failure semantics
ArchiveBaseDir string 필수 session archive/state root 빈 값→ErrNoArchiveDir
SessionID string 빈 값 허용 base dir 아래 subdir 빈/unsafe id collision/path risk
Config *noa.Config nil→DefaultConfig(ModelContextLimit) non-nil은 전체 대체, merge 아님 partial config zero values 유지
ModelContextLimit int Config nil일 때 사용; 최종 <=0→200000 default config sizing 실제 model과 불일치
ParentSessionIDs []string 없음 자기 block 없을 때 최근 ancestor state 상속 최대 깊이/누락 시 fresh
OnWarn func(string) nil: warning 폐기 config/state/inheritance 진단 corrupt state fallback을 놓침
Now func() time.Time nil→time.Now archive/state timestamps test/host clock 품질

소스 근거

tool.WebFetchConfig — 3 fields

field type default override/consumer failure semantics
Proxy string 빈 값 + TLS zero: default transport proxy env; TLS override면 direct explicit http(s) proxy invalid URL은 조용히 proxy 없이 동작 가능
CACert string 빈 값: system roots InsecureTLS=false일 때 pool 추가 read/PEM 실패 조용히 무시
InsecureTLS bool false true면 verify skip, CACert 무시 TLS 진위 상실

소스 근거

tool.WebSearchConfig — 9 fields

field type default override/consumer failure semantics
Backend string 빈 값→ddgs provider selector unknown→constructor error
BraveAPIKey string 없음 brave-free auth 없음→error
TavilyAPIKey string 없음 tavily body auth 없음→error
DeepSeekBaseURL string 없음 Anthropic-format /v1/messages root 없음→error; wrong profile HTTP 실패
DeepSeekAPIKey string 없음 x-api-key 없음→error
DeepSeekModel string 없음 model id 없음→error
Proxy string 빈 값 + TLS zero: default transport proxy env; TLS override면 direct backend explicit HTTP transport recording/scope gate 아님
CACert string 빈 값: system roots custom trust invalid 값 조용히 무시
InsecureTLS bool false verify skip TLS 진위 상실

소스 근거

자주 틀리는 우선순위

  1. Compactor가 있으면 Compaction은 무시되고 OnWarn으로만 알린다.
  2. custom HTTPClient는 llm.Config.Proxy보다 우선한다. built-in LLM client에서 빈 Proxy만 HTTP_PROXY·HTTPS_PROXY·NO_PROXY와 lowercase alias를 사용하며, REQUEST_METHOD가 있는 CGI 환경의 HTTP proxy에는 표준 라이브러리 거부 규칙이 적용된다.
  3. WebFetch/WebSearch는 Proxy·CA·insecure가 모두 zero일 때 nil Transport를 통해 default transport와 proxy environment를 상속한다. CA 또는 insecure만 설정하면 새 transport의 Proxy가 nil이어서 환경 proxy를 우회한다.
  4. Tools == nil만 기본 9개를 넣는다. 의도적으로 빈 slice를 주면 기본 tool도 없다.
  5. noaadapter.Options.Config != nil이면 전체 struct가 채택된다. 부분 override라는 의미가 아니다.
  6. EnableWebSearch의 config 오류는 NewSession 반환값이 없어 호출자에게 전파되지 않고 tool이 조용히 빠진다. 직접 검증하려면 tool.NewWebSearch 또는 WebSearchProbe 결과를 확인한다.

LLM transport 근거 Web tool transport 근거

상위 영역: 라이브러리·이벤트·파일·설정 계약

전체로 돌아가기 · Markdown 원본

검색을 열면 색인을 읽습니다.

등록한 문서 본문에서 검색합니다.