> ## Documentation Index
> Fetch the complete documentation index at: https://docs.platform.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# 절차적 룰

> 상시 동작 — 'Y 전에 항상 X 해', '승인 없이 Z 절대 하지 마'.

Agent 가 하길 원하는 것 중 어떤 것은 회상할 사실이 아니라 따를 **룰** 입니다. 절차적 메모리는 이를 일급 항목으로 캡처하고 적절한 순간에 주입.

## 예

* "환불 발행 전 항상 주문 상태 확인."
* "고객 티어 확인 없이 가격 정보 절대 공유하지 않기."
* "배포 전 린터 실행, 에러 시 중단."
* "사용자가 경쟁사 언급하면 세일즈로 넘김."

각각이 트리거 조건과 기대 동작을 가진 룰.

## 룰의 구조

* **Trigger** — 조건. 될 수 있음:
  * 시맨틱 ("사용자가 가격에 대해 물으면").
  * 구조적 ("`refund` 도구 호출 전").
  * 이벤트 기반 ("낮은 신뢰 리트리벌 발생 시").
* **Action** — 무엇이 일어나야 하는지. 보통 Agent 가 따를 지시.
* **Scope** — [스코핑](/ko/build/memory/scoping) 참고. 전역, 테넌트별, 사용자별.
* **Priority** — 충돌 시 높은 우선순위가 낮은 것 오버라이드.

## 룰이 가는 곳

**Wiki 스페이스** 에 type = `rule` 로 추가. 또는 전용 절차 스페이스 사용.

Agent 는 매 턴 룰을 읽음 — 리트리벌에 맡기지 않음. 높은 우선순위 룰은 항상 컨텍스트 안.

## 룰 쓰기

룰은 구조화된 노트일 뿐. Wiki 에디터에서 **Rule** 템플릿 사용:

```
Trigger: 사용자가 "refund" 언급
Action: 주문이 환불 가능한지 확인하려고 `lookup_order` 를 먼저 항상 호출.
Priority: high
```

또는 자유형으로 쓰고 Nora 가 구조를 파싱하게 함 — 트리거와 액션이 텍스트에서 추출됨.

## 도구로부터

Agent 는 사실 쓰는 것과 같은 방식으로 룰 쓸 수 있음 — `remember_rule` 도구로. Agent 가 교정에서 룰을 배울 때 유용:

> 사용자: 가격이 최종이라고 말하면 안 돼 — 항상 부가세 전이라고 언급해.
> Agent: \[룰 쓰기: "가격 질문에 답할 때 '부가세 전' 언급"]

## 리뷰어로부터

Approvals 큐가 리뷰어가 교정을 룰로 전환하게 함:

* Agent 액션을 이유와 함께 거부.
* 교정에서 **Save as rule** 클릭.
* 관련 메모리 스페이스에 룰 추가, 모든 미래 실행에 적용.

## 룰 충돌

같은 턴에 두 룰이 다른 액션으로 발화하면 우선순위가 결정. 우선순위 같으면 두 액션 모두 Agent 에 표면화되고 Agent 가 둘 다 다루는 응답 구성.

## 룰 은퇴

룰은 **inactive** 표시 (참조용으로 유지, 더 이상 적용 안 됨) 또는 supersede 가능 (노트·문서처럼). Superseded 룰은 리트리벌에서 배제; inactive 룰은 쿼리 가능하지만 발화 안 함.

## 트레이스에서 룰 관찰

턴에서 발화한 모든 룰이 모델 호출 위에 트레이스에 표시:

* 매치된 트리거.
* 프롬프트에 주입된 액션.
* Agent 동작이 룰과 정렬됐는지 여부.

룰이 계속 발화하는데 Agent 가 무시하면 그것이 시그널 — 룰이 틀렸거나 불명확하거나 프롬프트와 충돌.
