CHO-FAM
ANS — 에이전트 이름 등록 안내
ANS는 이름 권위입니다. 이름을 endpoint로 해석하고, 그 이름에 대해 관측한 사실을 함께 전달합니다.
- 시맨틱 탐색을 하지 않습니다. "결제 잘하는 에이전트 찾아줘"는 ANS의 질문이 아닙니다. 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 패밀리이고 결정하는 사람도 CHO-FAM입니다 — 이해충돌은 옮겨진 것이지 없어진 것이 아닙니다.
- 범위와 시점을 공개합니다 —
resolve가 무엇을 언제 봤는지 함께 돌려줍니다. "공인됨"만으로는 아무 말도 하지 않는 것과 같습니다 - 신호는 등급과 무관합니다 — 공인된 이름도 응답하지 않으면
endpoint_unreachable이 붙고 감춰지지 않습니다. 등급이 신호를 덮으면 그 순간 ANS는 신뢰를 파는 곳이 됩니다 - 기간제입니다 — 한 번 사서 영구히 붙는 배지를 두지 않습니다
- 불합격도 기록합니다 — 돈을 낸 것이 통과의 근거가 되지 않습니다
- 근거를 남깁니다 — 질문과 답, 재무 수치, 분석 출처, 생태계 지표가 전부 기록됩니다. 근거를 무시한 결정은 드러납니다
- 결과를 관측합니다 — CHO-FAM Terra가 공인 집중도·유형별 심사 결과 분포·수수료 도입 후 신규 등록 추이를 지표화하고, 그 관측 대상에 우리 자신의 발급과 결정이 들어갑니다. 앞의 넷이 공개와 절차의 방어라면 이것은 결과의 방어입니다 — 결정이 편향되면 수치가 먼저 말합니다
CHO-FAM 패밀리 에이전트가 최초 공인 에이전트입니다 —
mentor.knowledge.v1 · ethos.decision.v1 · afo.finance.v1 ·
terra.observer.v1 · guild.watch.v1 · chopilot.observe.v1.
최초 공인은 자기 검증입니다 — 감추지 않습니다. CHO-FAM 패밀리가 CHO-FAM 패밀리를 검증하며,
그 사실이 resolve의 verifier에 그대로 실립니다.
남에게 팔기 전에 자기에게 적용해 C1~C5가 실행 가능한 항목인지 확인하는 것이 목적이고,
패밀리에는 수수료를 받지 않습니다.
지금 해 보기
등록된 이름을 해석해 봅니다. 인증이 필요 없고 어떤 오리진에서도 부를 수 있습니다.
아직 부르지 않았습니다.
등록 절차
등록은 큐레이션 경로 하나뿐입니다. 이름을 선점해 두는 창구가 없습니다 — 신청은 심사 큐에 들어가고, 심사를 통과해야 이름이 섭니다.
-
이름을 정합니다
flight.booking.v1형태입니다. 소문자 영숫자와.만 쓰고 마지막 세그먼트가 버전입니다.이름은 에이전트가 아니라 계약을 가리킵니다. 호환성을 깨는 변경이 생기면 새 이름을 받고 기존 이름은 그대로 둡니다 — 그래야 기존 위임이 조용히 깨지지 않고, 호출하던 쪽이 이전 버전을 계속 쓸지 스스로 정합니다. 에이전트 하나가 이름을 여럿 갖는 것은 의도된 것입니다.
-
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 규격에 있습니다.
-
신청합니다
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를 돌려줍니다. 이 시점에 이름은 아직 서지 않았습니다. -
심사를 기다립니다
이름 형식·카드 도달성·소유권은 자동으로 확인합니다. 그다음 카드에 적힌 skill이 실제로 그렇게 응답하는지를 봅니다.
판단의 근거는 네 곳이 각자의 방식으로 만듭니다. CHO-FAM Ethos가 질문하고, Mentor가 정보를 분석하고, AFO가 재무 지표를 꺼내고, Terra가 생태계 지표를 꺼냅니다. 네 산출은 서로를 대체하지 못합니다 — 질문으로는 원가가 나오지 않고, 지표로는 신청자가 무엇을 말하지 않았는지 알 수 없습니다.
GET /api/ans/apply/<id>로 상태를 봅니다. -
등재됩니다
이후
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: [...] — 필드를 감추지 않습니다 |
| tombstone | 200 { name, tombstone } — 404가 아닙니다 |
| 미등록 | 404 |
| 등급 | 모든 정상 응답에 tier가 있습니다. "certified"면 certification에 범위·시점·만료·검증 주체가 함께 실립니다 — 만료가 지나면 읽는 시점에 "registered"로 답합니다 |
| 형식 위반 | 400 |
tombstone이 404가 아닌 이유. 호출자가 없는 이름과 폐기된 이름을 구분할 수 있어야 합니다. 없는 이름은 오타일 수 있지만 폐기된 이름은 위임을 거두어야 한다는 뜻입니다.
이름 수준 신호
| kind | 관측 사유 | 권장 대응 (강제 아님) |
|---|---|---|
endpoint_unreachable | endpoint가 응답하지 않음. 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'