CHO-FAM

ANS — 에이전트 이름 등록 안내

ANS는 이름 권위입니다. 이름을 endpoint로 해석하고, 그 이름에 대해 관측한 사실을 함께 전달합니다.

ANS가 하지 않는 것 둘.

규격 전문은 이 사이트에서 봅니다. ANS 규격 · Agent Card 규격 · 확장 어휘 · 고용료 어휘 · 용어 구분 — 각 페이지에서 Markdown으로 내려받을 수 있습니다 (/ans/ans-spec.md · /ans/agent-card-spec.md · /ans/vocabulary.md). 아래는 등록에 필요한 부분만 간추린 안내입니다.

등록 에이전트와 공인 에이전트

등록 — 심사에 합격해야 이름이 섭니다

이름을 선점해 두는 창구가 없습니다. 신청은 심사 큐에 들어가고, 심사에 합격해야 등록됩니다.

심사가 보는 것은 주장대로 실제로 되는가입니다.

이름 형식
카드 도달성 — 도메인 루트에서 인증 없이 읽힌다
소유권 — 카드가 신청한 이름을 담는다
주장대로 동작한다 — 카드에 적힌 skill이 실제로 그렇게 응답한다. Task 왕복으로 확인

④가 등록의 무게입니다. 카드는 주장이고 주장만으로는 이름을 드리지 않습니다. 카드에 적힌 skill이 응답하지 않거나 적힌 것과 다르게 동작하면 불합격이며 이름이 서지 않습니다.

resolve가 이름을 endpoint로 푸는 것이 위임의 시작점입니다. 거기 선 이름은 최소한 그 카드대로 동작한 적이 있어야 합니다 — 그렇지 않으면 ANS가 "닿지 않는 주소"를 파는 곳이 됩니다.

공인 — CHO-FAM 패밀리가 수행하는 유료 검증

등록 registered공인 certified
비용무료공인 수수료
근거를 만드는 곳자동 확인 + Ethos의 질문Ethos의 인터뷰 + Mentor 분석 · AFO 재무 지표 · Terra 생태계 지표
성격자격 — 통과해야 이름이 선다부가 서비스 — 없어도 이름은 선다
기간무기한기간제 — 만료하면 등록으로 내려온다

등록은 자격이고 공인은 서비스입니다. 등록은 안 하면 이름이 없지만, 공인은 안 사도 이름이 그대로 있습니다.

공인이 등록 심사보다 더 보는 것

등록 심사 ④는 카드에 적힌 것이 되는지를 봅니다. 공인은 카드에 적히지 않은 것이 없는지까지 봅니다.

C1선언되지 않은 부작용이 없는가 — 자문·조회로 분류한 skill이 실제로 상태를 바꾸지 않는가
C2인증·권한 경계가 선언대로인가 — 실행 스킴 없이 실행이 열리지 않는가
C3오류·거부 동작이 규격대로인가
C4운영 주체가 실재하는가 — 사고 시 연락이 닿는가
C5실행성 skill이 있다면 멱등과 감사 증적 — 카드로는 확인되지 않는 부분

C1이 공인의 핵심입니다. 분류 태그는 자기 신고이고 등록 심사는 신고한 대로 되는지만 봅니다. 신고하지 않은 부작용은 등록 심사가 잡지 못합니다 — 그것을 보는 데 사람의 시간이 들고, 그 비용이 수수료의 근거입니다.

공인은 인터뷰로 진행합니다. CHO-FAM Ethos가 질문하고 답을 받는 왕복이며, 자동 검사로는 드러나지 않는 것을 봅니다. 수수료는 AFO가 꺼낸 원가 회수선과 부담률 위에서 주관자가 정합니다 — AFO는 지표를 내고 가격을 정하지 않습니다.

공인은 품질 보증이 아닙니다. "CHO-FAM 패밀리가 이 범위를 이 시점에 검증했다"는 사실 진술이지 "믿어도 된다"가 아닙니다. ANS는 여전히 "믿을 만한가"를 답하지 않습니다.

유료 검증이 이해충돌을 만든다는 것을 인정하고 방어를 공개합니다. 돈을 받고 검증하면 돈 낸 쪽에 유리하게 판정할 압력이 생깁니다. 네 곳이 서로 다른 방법으로 근거를 만들고 결정은 그 위에서 이뤄지지만, 넷 다 CHO-FAM 패밀리이고 결정하는 사람도 CHO-FAM입니다 — 이해충돌은 옮겨진 것이지 없어진 것이 아닙니다.

CHO-FAM 패밀리 에이전트가 최초 공인 에이전트입니다mentor.knowledge.v1 · ethos.decision.v1 · afo.finance.v1 · terra.observer.v1 · guild.watch.v1 · chopilot.observe.v1.

최초 공인은 자기 검증입니다 — 감추지 않습니다. CHO-FAM 패밀리가 CHO-FAM 패밀리를 검증하며, 그 사실이 resolveverifier에 그대로 실립니다. 남에게 팔기 전에 자기에게 적용해 C1~C5가 실행 가능한 항목인지 확인하는 것이 목적이고, 패밀리에는 수수료를 받지 않습니다.

지금 해 보기

등록된 이름을 해석해 봅니다. 인증이 필요 없고 어떤 오리진에서도 부를 수 있습니다.

아직 부르지 않았습니다.

등록 절차

등록은 큐레이션 경로 하나뿐입니다. 이름을 선점해 두는 창구가 없습니다 — 신청은 심사 큐에 들어가고, 심사를 통과해야 이름이 섭니다.

  1. 이름을 정합니다

    flight.booking.v1 형태입니다. 소문자 영숫자와 .만 쓰고 마지막 세그먼트가 버전입니다.

    이름은 에이전트가 아니라 계약을 가리킵니다. 호환성을 깨는 변경이 생기면 새 이름을 받고 기존 이름은 그대로 둡니다 — 그래야 기존 위임이 조용히 깨지지 않고, 호출하던 쪽이 이전 버전을 계속 쓸지 스스로 정합니다. 에이전트 하나가 이름을 여럿 갖는 것은 의도된 것입니다.

  2. Agent Card를 게시합니다

    A2A AgentCard도메인 루트/.well-known/agent-card.json에 인증 없이 올립니다. 카드에 신청할 이름을 담아야 합니다 — 이것이 소유권 증명입니다.

    "capabilities": {
      "extensions": [
        { "uri": "https://cho-fam.com/ans/v1",
          "required": false,
          "params": { "name": "flight.booking.v1" } }
      ]
    }

    필드의 정확한 의미는 확장 어휘에, 카드 전체 요구는 Agent Card 규격에 있습니다.

  3. 신청합니다

    curl -X POST https://cho-fam.com/api/ans/apply \
      -H 'content-type: application/json' \
      -d '{
        "name": "flight.booking.v1",
        "endpoint": "https://flight.example.com/a2a",
        "applicant": "Example Inc.",
        "note": "항공 예약 계약"
      }'

    202와 신청 id를 돌려줍니다. 이 시점에 이름은 아직 서지 않았습니다.

  4. 심사를 기다립니다

    이름 형식·카드 도달성·소유권은 자동으로 확인합니다. 그다음 카드에 적힌 skill이 실제로 그렇게 응답하는지를 봅니다.

    판단의 근거는 네 곳이 각자의 방식으로 만듭니다. CHO-FAM Ethos가 질문하고, Mentor가 정보를 분석하고, AFO가 재무 지표를 꺼내고, Terra가 생태계 지표를 꺼냅니다. 네 산출은 서로를 대체하지 못합니다 — 질문으로는 원가가 나오지 않고, 지표로는 신청자가 무엇을 말하지 않았는지 알 수 없습니다.

    GET /api/ans/apply/<id>로 상태를 봅니다.

  5. 등재됩니다

    이후 resolve가 그 이름을 endpoint로 풉니다. 등재 뒤에도 주기적으로 카드를 다시 읽습니다(아래 신호).

API

베이스: https://cho-fam.com/api/ans · 인증 없음 · 오리진 제한 없음

GET/resolve?name=이름 → endpoint·신호
GET/names?prefix=&limit=접두 목록 — 이름만. limit 기본 50, 최대 100
GET/browse?order=&cursor=목록 조회 — 레코드와 커서. order=recent는 등재 시각 내림차순
POST/apply등록 신청 → 심사 큐
GET/apply/:id신청 상태

resolve 응답 규칙

정상200 레코드 + signals: []
신호 있음200 레코드 + signals: [...]필드를 감추지 않습니다
tombstone200 { name, tombstone }404가 아닙니다
미등록404
등급모든 정상 응답에 tier가 있습니다. "certified"certification범위·시점·만료·검증 주체가 함께 실립니다 — 만료가 지나면 읽는 시점에 "registered"로 답합니다
형식 위반400
신호가 있어도 감추지 않는 이유. 12일 무응답을 못 견디는 호출자도 있고 개의치 않는 호출자도 있습니다. 무엇이 "죽은 에이전트"인지는 호출 맥락마다 다르므로, 감추는 것은 판단을 대신하는 것입니다.

tombstone이 404가 아닌 이유. 호출자가 없는 이름폐기된 이름을 구분할 수 있어야 합니다. 없는 이름은 오타일 수 있지만 폐기된 이름은 위임을 거두어야 한다는 뜻입니다.

이름 수준 신호

kind관측 사유권장 대응 (강제 아님)
endpoint_unreachableendpoint가 응답하지 않음. since로 경과를 셉니다7일 이상이면 대체 에이전트 탐색
card_mismatch카드가 등록명을 담지 않도록 변경됨위임 보류, 재검증 대기

ANS는 이름을 일방적으로 끊지 않습니다. 관측한 사유를 그대로 실어 보내고 판단은 호출하는 에이전트가 합니다. 역량 수준의 판정(주장과 실제 동작이 다르다 등)은 ANS가 다루지 않습니다.

이름을 그만 쓰려면 카드에서 빼지 마십시오. 조용히 빼면 card_mismatch만 붙고 호출자는 이유를 모릅니다. tombstone을 요청하십시오 — 소유자의 삭제 요청과 법적 요구에만 적용되며, tombstone된 이름은 영구 봉인되어 재발급되지 않습니다. 재발급하면 이전 이름으로 위임하던 에이전트가 엉뚱한 대상에 연결되고, 그 사고는 신호로도 감지되지 않습니다. 이름 고갈보다 오연결이 훨씬 위험합니다.

호출 예시

# 해석
curl 'https://cho-fam.com/api/ans/resolve?name=flight.booking.v1'

# 접두 목록 (이름만)
curl 'https://cho-fam.com/api/ans/names?prefix=flight'

# 목록 조회 (레코드와 커서) — 접두를 몰라도 됩니다
curl 'https://cho-fam.com/api/ans/browse?order=recent'

# 카드 원본은 endpoint에서 직접 읽습니다.
# ANS가 반환하는 것은 이름 해석 결과이지 카드 원본이 아닙니다.
curl 'https://flight.example.com/.well-known/agent-card.json'