openspec-ui.dev에서 처음 게시됨.
에이전트가 운영자로부터 네 가지 결정을 요구하며 실행을 마쳤지만, 제품은 이를 답변할 방법이 없었습니다. 체인은 이 상태로 다음 단계로 진행되었을 것입니다. 소유자는 같은 날 다음과 같이 결정했습니다: 질문은 포착되고, 실행은 멈추고 대기하며, 답변 없이 아무것도 진행되지 않습니다. 답변은 변경 사항의 decisions.md와 감사 로그(audit log)에 보관되며, 제품 자체 에이전트가 순서대로 질문을 합니다.
마커, 이벤트 및 명령어
모든 에이전트 단계의 지침에는 에이전트가 필요한 결정을 위한 Question for the operator: <…> 라인이 포함됩니다. 제품은 이를 마커(marker)로 읽습니다. local-llm-acp는 답변을 받을 때까지 자신의 차례를 막는(blocks) ask_operator 도구(tool)를 얻게 됩니다.
프로토콜에 question 이벤트와 answerQuestion 명령어가 추가되었습니다. 실행 상태에는 question 대기 종류가 나타납니다. 질문을 한 실행은 완료되는 대신, 어떤 자율성 수준(autonomy level)에서든 체인으로 또는 단독으로 기다립니다. 답변이 제공되면, 해당 단계는 답변과 함께 다시 실행됩니다 — 제안 및 검토의 경우 update를 사용하고, 그 외의 경우에는 동일한 명령어를 사용합니다.
답변이 존재하는 곳
모든 질문과 답변은 openspec/changes/<change>/decisions.md에 보관됩니다. 감사 로그 역시 이를 기록합니다. 열린 질문이 있는 변경 사항(change)에서 실행되는 에이전트 실행은 거부됩니다.
질문은 카드, AI 패널, Human-Only Inbox 및 openspec-ui-cli answer를 통해 답변됩니다. 카드는 답변 필드와 함께 열린 질문을 보여주며, 패널도 동일합니다. 인박스(Inbox)는 평소의 검토 체크포인트 답변과 함께 질문들을 표시합니다. 터미널에서는 다음과 같이 사용합니다:
openspec-ui-cli answer <changeId> --question "Which branch strategy?" --answer "gitflow"
이것이 자율성에 미치는 변화
이전에는 full의 자율성 수준은 체인이 중단 없이 실행됨을 의미했습니다. 이제는 자율성 수준에 관계없이 질문 자체가 하드 스톱(hard stop) 역할을 합니다. 체인은 완전한 자율성 상태에서도 인간의 답변을 기다립니다. 이는 의도적인 설계입니다: 에이전트가 하는 질문은 체인 스스로 해결할 수 있는 체크포인트가 아니라, 판단을 요청하는 것입니다.
미해결 질문이 남아있는 경우 다음 실행을 거부한다는 점이 명시적입니다. 만약 누군가 아직 답변되지 않은 질문이 포함된 변경 사항에 대해 새로운 에이전트 실행을 시작하려고 하면, 제품은 이를 알리고 어떤 질문들이 열려 있는지 이름을 언급합니다. 이는 첫 번째 에이전트가 여전히 답변을 기다리는 동안 두 번째 에이전트가 실행되는 것을 방지합니다.
사용해보기
코드는 [github.com/VeryComplexAndLongName/OpenSpec-UI]에 있으며, 여기서 레포지토리와 패키지는 OpenSpec-UI라는 이름을 유지합니다.
oopenspec-ui-cli answer <changeId> --question <questionId> --answer <answer>