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

Tool 이름·설치·효과 참조

이 표는 production source가 정적으로 제공하는 30개 runtime tool 이름을 constructor/registry 경로에서 전부 열거한다. RO와 C는 각각 IsReadOnly({}), IsConcurrencySafe({}), self는 CheckPermissions({})의 자체 판정이다. 실제 허용 여부는 deny rule·permission mode·allow rule을 앞뒤로 적용한 permission pipeline이 결정한다. 인자에 따라 hard deny하는 Bash 계열 같은 예외는 “효과/실패”에 적었다.

정적 catalog 30개

정적 catalog 30개 · 관계

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

전체 관계 2개 · 종류 선택·관계도
# tool name 설치 조건 RO C self 효과와 실패 경계 source
1 Read Options.Tools == nil 기본 Y Y allow 파일 일부/전체 읽기; WorkingDir는 sandbox가 아니며 output cap 적용 근거
2 Write 기본 N N ask 파일 생성/덮어쓰기; parent dir 생성, path 격리 없음 근거
3 Edit 기본 N N ask exact old-text 교체; 불일치/복수 match는 error result 근거
4 MultiEdit 기본 N N ask 한 파일에 순차 edit; 중간 오류의 transaction rollback 없음 근거
5 LS 기본 Y Y allow 디렉터리 목록; host filesystem을 그대로 봄 근거
6 Glob 기본 Y Y allow path pattern 열거; symlink/absolute 경계가 sandbox는 아님 근거
7 Grep 기본 Y Y allow metadata상 읽기 전용이지만 첫 RipgrepPath가 rg 부재 시 exact npm install -g @vscode/ripgrep을 실행할 수 있음; 실패하면 pure-Go 검색 근거
8 Bash 기본 N N ask shell command/선택적 background process; catastrophic pattern은 hard deny하지만 sandbox/egress는 없음 근거
9 sleep 기본, 이름은 소문자 Y Y allow context-aware 대기; duration parse/상한 규칙 위반은 error result 근거
10 TaskOutput background가 global/per-session disable이 아니고 manager 생성 성공 Y Y allow task output tail 읽기, 선택적 block 근거
11 TaskStop 같은 조건 N N allow 한 task 또는 전부의 process tree 중단 근거
12 TaskList 같은 조건 Y Y allow current session task 상태 열거 근거
13 Monitor 같은 조건 N N ask long-running command spawn·notification; Bash hard-deny self-check 재사용 근거
14 shell_open host가 ShellSessionTools() 추가 + background manager 사용 가능 + global PTY 미차단 N N allow persistent PTY process 시작; Bash deny parser는 거치지 않음 근거
15 shell_send 같은 조건 N N allow PTY byte/key/paste 입력, 선택적 wait 근거
16 shell_read 같은 조건 Y N allow stream cursor 또는 VT screen 읽기; cursor state를 변경해 concurrency false 근거
17 shell_close 같은 조건 N N allow PTY kill·registry 제거 근거
18 shell_list 같은 조건 Y N allow PTY session 목록; manager lock 사용 근거
19 WebFetch EnableWebFetch 또는 host 직접 추가 N N ask GET/redirect/HTML 변환; 30s, 2 MiB read cap, 50k output cap, proxy 오류 direct-intended fallback(환경 proxy 재상속 가능) 근거
20 web_search EnableWebSearch+유효 backend 또는 host 직접 추가 Y Y ask provider outbound search; 기본 5/최대 20 results, 30s(DeepSeek 120s) 근거
21 TodoWrite Options.Todos != nil N N allow in-memory todo 전체 교체 근거
22 AskUserQuestion Options.AskUser != nil N N allow 동기 host callback; blocking이어서 exclusive 근거
23 SearchExtraTools DeferredTools non-empty Y N allow 숨긴 registry metadata 검색/선택; capability gate가 아님 근거
24 ExecuteExtraTool DeferredTools non-empty N N allow unlock 확인 뒤 inner Call 직접 수행; inner permission/hook 재실행 없음 근거
25 EnterPlanMode Options.Plan != nil Y N allow controller mode를 plan으로 변경; state mutation이지만 plan에서 호출하도록 RO=true 근거
26 ExitPlanMode Options.Plan != nil Y N allow approver 호출·승인 시 target mode 변경 근거
27 RecallMemory Memory.Store != nil Y Y allow 관련 memory 최대 5개 읽기 근거
28 RecordMemory Memory.Store != nil N N allow markdown memory 저장·index rebuild 근거
29 Skill Options.Skills != nil Y N allow skill instructions를 별도 user guidance로 주입하고 optional OnInvoke 실행 근거
30 Agent host가 subagent.NewTool 또는 coordinator tool 추가 N N allow child harness를 동기 실행; 자체 call은 allow지만 child tool permission은 별도 근거

기본 9개 근거 선택 도구 근거 background 근거 PTY 근거

Grep의 RO=Y, C=Y, self=allow는 등록 metadata 값일 뿐 첫 실행의 숨은 설치 효과를 나타내지 않는다. rg가 PATH에 없고 NORMA_DISABLE_RIPGREP와 NORMA_RIPGREP_NO_INSTALL도 비어 있으면 process-wide sync.Once 안에서 npm의 global prefix와 network를 사용할 수 있다. 자세한 trigger와 fallback은 Grep bootstrap operation을 확인한다. 구현 근거

Adapter가 추가하는 내부 runtime tool

noaadapter.Enable*은 위 30개 catalog와 별도로 Compress를 registry에 설치한다. private constructor라 host-facing 정적 constructor catalog에는 포함하지 않았지만 model-visible tool이다. RO=N, C=N, self=allow, RawInput=true이며 Noa state를 바꾸고 archive를 쓴다. malformed JSON을 자체 복구하려고 중앙 schema validation을 건너뛴다. Noa 설치 Compress tool

동적 MCP와 host tool

정적 30개는 runtime 전체 개수의 상한이 아니다.

공급자 이름/수 metadata 기본 효과 경계
remote stdio MCP mcp__<server>__<remote-name>, tools/list 결과만큼 fail-closed RO=N, C=N, self ask tools/call; text만 보존, resource/image/structured content 손실
in-process MCP mcp__<server>__<name>, host slice만큼 RO=N, C=N, self ask 임의 host handler
host tool.Build / CoreTool 임의 이름·수 생략하면 RO=N, C=N, self ask host 구현이 선언과 실제 effect를 일치시켜야 함
registry duplicate 새 개수가 아니라 같은 이름 교체 마지막 등록 객체 constructor catalog와 실제 session object가 달라질 수 있음

MCP/host tool은 이름이 동적으로 결정되므로 정적 30개 분모와 섞지 않는다. 정책은 이름 catalog가 아니라 실행 직전 resource/argument를 평가해야 한다. MCP 근거 CoreTool 근거

inventory 산출 방식

고정 revision의 production(non-test) Go에서 DefaultTools, exported optional constructors, agentcore 자동 주입, plan/memory/skill/subagent constructors를 추적했다. 30개 객체를 실제 구성해 빈 object 입력에 대한 세 metadata method를 호출했고, input-dependent deny/effect는 runner source로 보완했다. Compress는 private adapter constructor, MCP/host는 runtime-derived이므로 별도 구획으로 유지했다.

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

전체로 돌아가기 · Markdown 원본

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

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