← vox.aiCONTENT HISTORY
WHAT CHANGED
Update to vox.ai
Snapshot Nov 6, 2026 · 00:14 UTC · version 0.2.22
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save vox.ai and check future changes in Following.
Up to 3 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "기존 vox.ai 에이전트를 고칠 때 사용한다. 같은 대화에서 고객 피드백을 반영하거나, 새 대화에서 '어제 만든 ○○ 이어서'처럼 기존 에이전트를 이어서 고칠 때, Manual이나 긴 prompt 문구를 일부 수정할 때 쓴다. 대상을 찾고 현재 상태를 읽어 요청과 대조한 뒤 필요한 곳만 고치고 바꾼 곳을 알린다.",
"included_files": [],
"name": "edit-manual-safely",
"skill_md_contents": "---\nname: edit-manual-safely\ndescription: \"기존 vox.ai 에이전트를 고칠 때 사용한다. 같은 대화에서 고객 피드백을 반영하거나, 새 대화에서 '어제 만든 ○○ 이어서'처럼 기존 에이전트를 이어서 고칠 때, Manual이나 긴 prompt 문구를 일부 수정할 때 쓴다. 대상을 찾고 현재 상태를 읽어 요청과 대조한 뒤 필요한 곳만 고치고 바꾼 곳을 알린다.\"\nmetadata:\n product: vox.ai\n layer: architect\n status: stable\n---\n\n# edit-manual-safely\n\n제품 호출에는 [공통 실행 계약](../../references/execution-contract.md)을 적용한다. 내장/외부의 질문·음성·파일 차이는 [호스트 연결](../../references/host-adapters.md)을 따른다. 도구는 연결된 서버가 제공하는 실제 이름과 스키마를 확인한 뒤 사용한다.\n\n## 피드백·재개 반영 순서\n같은 대화의 피드백이든 새 대화의 이어서 작업이든 같은 순서를 따른다.\n1. **대상 찾기**: 같은 대화에서 만든 에이전트면 그 `agent_id`를 쓴다. 새 대화면 사용자가 말한 이름·업종으로 `list_agents`를 찾는다. 후보가 둘 이상이면 이름과 수정 시각을 보여 주고 고르게 한다(답을 받을 수 없으면 이름이 정확히 같은 것을 고르고 그 가정을 알린다).\n2. **현재 상태 읽기**: `get_agent`, `list_manuals`, 관련 `get_manual`을 읽는다. 새 대화면 사용자에게 한 줄로 요약한다(예: \"Single + Manual 4개(예약 접수·단체 예약·직원 연결·영업 안내), 마지막 수정 ○○\"). 에이전트에 저장된 내용이 정본이다.\n3. **요청과 대조**: 요청을 현재 본문과 비교한다.\n - 이미 그렇게 돼 있으면 쓰지 않고 \"이미 ○○로 돼 있습니다\"라고 알린다.\n - 초안에 이미 있다는 것은 저장돼 있다는 뜻이 아니다. 저장된 원격 기준본과 비교해서 판단한다.\n - 해석이 둘 이상이면(예: \"8명 기준\"이 8명 초과인지 8명 이상인지) 현재 문구를 보여 주고 한 가지를 제안해 확인받는다. 답을 받을 수 없으면 현재 표현 방식을 유지하는 해석을 고르고 그 가정을 알린다.\n - 요청이 다른 규칙과 부딪히면(예: 프롬프트의 금지와 충돌) 그 점을 먼저 말한다.\n4. **범위**: 요청이 가리키는 내용만 바꾼다. 같은 사실이 프롬프트, 다른 Manual, 지식, 통화 결과 항목 설명에도 있으면 함께 바꾸고 그 목록을 알린다. 그 밖의 문장·구조·이름은 바꾸지 않는다.\n5. **저장**: 방금 읽은 `expected_head_revision`으로 저장한다. 409면 다시 읽고 같은 의도를 다시 적용한다. 저장 뒤 다시 읽어 바뀐 곳과 [운영 수준 점검](../manual-authoring/SKILL.md) 중 관련 항목을 확인한다. 좁은 변경은 영향받는 진입 경로와 변경 지점에서 이어지는 Manual·도구 참조 및 원래 절차로 돌아오는 경로만 다시 확인하고, 관련 없는 경로까지 전체 재검토하지 않는다.\n - 초안 검사(`draft_validate`)가 게시를 막는 변경을 알리면 그 경로를 기준본 값으로 되돌리거나 그것을 담은 객체·배열 전체를 교체한 뒤 다시 검사한다.\n6. **알리기**: 바꾼 곳마다 한 줄로 알린다: \"<위치>: '<전>' → '<후>'\". 바꾸지 않은 것이 있으면 이유도 한 줄로 쓴다. 행동이 바뀌는 수정이면 다시 시험할 상황 하나를 덧붙인다.\n\n## 쓰기 전\n[get_agent/get_manual의 실제 결과](../explore-agent-context/SKILL.md)에서 대상 Single의 `agent_id`, Manual의 `manual_id`, 현재 `head_revision`, 완전한 원문을 확보한다. 사용자 요청 부분과 보존할 규칙을 구분한다. 다른 agent와의 영향이 의심되면 [영향 범위](../review-shared-impact/SKILL.md)를 먼저 확인한다.\n\n기존 agent를 수정할 때 모델 변경을 요청받지 않았다면 `data.llm.model`을 바꾸지 않고 현재 값을 보존한다.\n\n## 본문 편집\n긴 문자열은 현재 원문을 파일에서 수정하고 변경 전후를 비교할 수 있다. 동일 문장이 여러 번 나오면 첫 항목을 임의 치환하지 않고 대상 문맥을 고른다. sandbox 파일 편집을 제품 저장으로 말하지 않는다.\n\n기존 발화 문구를 수정·검토할 때는 [음성 프롬프트 기본 지침](../../references/voice-prompt-guidance.md)을 적용하고, 좁은 변경 범위를 유지한다. 문구·행동 검토·수정 후 같은 기대 상황의 확인 기준과 인접 조건 하나를 남긴다. 좁은 요청에 여러 고정 시나리오나 새 실시간 통화를 강제하지 않는다. 실패 원인 진단은 [통화 근거](../inspect-call-evidence/SKILL.md) 또는 [시험·개선](../try-and-improve-voice-agent/SKILL.md)으로 이어간다.\n\nManual `content`는 전체 교체다. 새 본문에서 누락된 도구 참조·종료 규칙·정정 처리를 확인한다. `tool_ids`, `linked_manual_ids` 같은 파생 필드를 임의로 save payload에 넣지 않는다. Agent 설정의 `data.manuals`는 UUID 키를 사용하며 이를 보낼 때 현재 Manual 값을 보존한다. 구체 입력은 [공통 계약과 예제](../../references/workflow-examples.md)를 사용한다.\n\n## 저장과 실패\n`save_manual(mode=update)` 또는 해당 `save_agent`에 방금 읽은 `expected_head_revision`을 포함해 저장하고 같은 `agent_id`·`manual_id`를 재조회한다. 저장 성공 뒤 재조회 실패는 ‘저장 응답 성공·확인 미완료’다. `409` conflict면 현재 값을 다시 읽고 사용자 의도를 재적용한다. unknown 쓰기나 재조회 실패 뒤 새 Manual을 만들거나 같은 쓰기를 자동 재실행하지 않는다.\n\n수정이 행동에 영향을 주면 [음성 시험](../prepare-voice-test/SKILL.md)에 재현 상황을 전달한다. 사용자가 원고 수정만 요청했다면 시험 준비/미실행을 분명히 하며 외부 전화는 시작하지 않는다.\n\n"
}SHA-256 of public snapshot: b8d89cfa48dbfb4d91c4d1c98852831670cf706a939572df4c9d7025fd53a795