Skip to content

Releases

AGS 5.1.2

Choose a tag to compare

@jaeseongs95 jaeseongs95 released this 15 Nov 05:56
1457e5e

AGS 5.1.2 Release Notes

AGS 5.1.2 is a hotfix release. It lets the user approve the release of another session's convergence root on the local admin page, for hosts whose client does not show MCP forms (for example Codex), and it corrects the description of userApprovalRefs in release_convergence_root. Skills, other tool input and output contracts and storage file formats are unchanged.

Before upgrading

  • There are no breaking changes, and the 5.1.1 data is used as it is. The storage file formats (table definitions) are unchanged; the stored records gain new values: approval rows with the source admin-passkey in the workflow store, and signed admin log records of the change rootRelease.approve.
  • Restart after installing. A running MCP server keeps the code it started with: restart the process that serves the admin page (it is one of the AGS MCP servers; any host session that is restarted may take it over) and restart the host sessions that are blocked by a root they cannot release (for example the Codex sessions), so that their MCP servers run 5.1.2. Until then the 5.1.1 behavior applies.
  • Restart every AGS MCP process, not only the ones named above. A 5.1.1 process that has not been restarted keeps trying to serve the admin page and takes it over when the current holder exits. If an approval has already been signed by then, that 5.1.1 process cannot read the record of the change rootRelease.approve, and the admin page may show the same verification failure band as described under "Rolling back". The fix is to restart all AGS MCP processes so that none runs 5.1.1.
  • The admin page has a new menu, "root 해제 승인" (root release approval). Approving there needs a registered passkey, as every other change on the page does.

Rolling back

Going back to 5.1.1 is possible, but this was derived from the code and has not been run: a 5.1.1 server does not know the change rootRelease.approve, so a signed approval record that already exists may be reported as a failed record (a verification failure band on the admin page) and may not be removable with "버리기" (discard). If you roll back after approving, expect that band; the other signed settings keep their last valid state. To avoid it, roll back before anyone signs a root release approval, or keep 5.1.2 until the approvals have been used (an unused approval lapses 30 minutes after it was signed, but its record stays in the log).

Changes

  • Another session's root can be released on hosts that cannot show a form. release_convergence_root used to take the user's approval of another session's root only from an MCP form. A client that answers a form with decline without showing it (the Codex client) could therefore never release such a root. Now, on a host not known to show forms, a release without userApprovalRefs changes nothing, shows no form, and stores a request that the user finds in the admin page menu "root 해제 승인": the root, its owner sessions and their presence, the reason the agent gave and the effect of the release. The user approves with a passkey, and the agent calls release_convergence_root again with the returned approval ID in userApprovalRefs.
  • The approval is narrow. It is valid for one root at one revision, for the reason the user saw (a call with a different reason is refused), and for the session that asked, for 30 minutes after it was signed, and one release uses it up. A root that changed in the meantime, another session's use, an expired or already used approval and an approval nobody signed are refused. The existing checks are unchanged: a root whose owner session is online is still refused, and the release still records who released it, when, on which presence reading and with which approval.
  • Hosts that show forms keep the form. Claude Code is asked with the form as before; a form host whose client does not advertise forms is asked on the admin page instead of being refused. Every host accepts the approval ID from the admin page.
  • The tool description is accurate. userApprovalRefs of release_convergence_root previously gave "the user's message" as an example, which the server never accepted. The tool description, the field description and the ROOT_CONFLICT guidance now say which references are accepted: the approval ID signed on the admin page, or the ID of a form approval. The user's message in the conversation is not an approval.

Limits

  • Replacing a root (open_convergence_root with parentRootId) still asks with an MCP form only. A host that cannot show forms cannot give that approval yet.
  • Which hosts show forms is a list in the server (FORM_APPROVAL_HOSTS): only Claude Code is on it. Other hosts, including ones not checked yet, use the admin page.
  • An approval given on the admin page can be used only by the session that asked, because it is bound to that session's identity. A session that continues under a different session ID, for example after it is restarted as a new session, asks again and the user approves again.
  • On Claude Code the form is the only way: if the user declines or cancels the form, or no one answers it, the request does not move on to the admin page. Ask again after the user is available to answer the form.
  • Asking again with a different reason or after the root's revision changed stores a separate pending request. Pending requests do not expire and are not replaced by the new one; reject the old ones on the admin page.
  • On the admin page, the status text of the menus "세션 결속" and "root 해제 승인" shares one slot, so the result of a reject or approve in one of them may show in the other.

Verification

Candidate: commit 3edbce83 of hotfix/5.1.2, the candidate just before this note was edited. This note change alters documentation only, so after it only pnpm lint and pnpm release:check are run again.

  • Environment: Windows 11, PowerShell, the Windows built-in tar (the GNU tar of Git Bash was removed from PATH, because GNU tar reads C: as a remote host and the archive extraction tests then fail), and --maxWorkers=1.
  • Generated files are reproducible: after node scripts/i18n.mjs --write, --accept ko, pnpm build and pnpm claude:build, git status --porcelain is empty, so the committed generated files equal the output of the repository scripts.
  • pnpm lint, pnpm claude:check, pnpm bundle:check, pnpm release:check, pnpm source:check, pnpm validate:all and git diff --check all exited with code 0.
  • pnpm test -- --maxWorkers=1: 347 test files passed and 2 were skipped (349). Of 5,088 Vitest tests, 5,051 passed, 0 failed, 29 were skipped and 8 are todo. The 600 Node tests: 599 passed, 0 failed, 1 skipped. The Vitest and Node exit codes are both 0.
  • Earlier runs failed for environment reasons: with --maxWorkers=2 some tests exceeded the time limit, and with the GNU tar environment 6 archive extraction tests failed. Both are classified as environment factors and pass under the conditions above.
  • Not run: pnpm source:verify (comparison with the remote origin), pnpm validate:official (Codex development environment only), signing with a passkey in a real browser, releasing a root from a real Codex host to the end, the Linux test server, and the rollback described above. The installation check is done after publication on Claude Code on this PC; the installation on Codex and Antigravity has not been checked (unverified).

AGS 5.1.2 릴리스 노트

AGS 5.1.2는 핫픽스 판입니다. MCP 폼을 보여 주지 않는 호스트(예: Codex)에서도 사용자가 로컬 관리자 페이지에서 다른 세션의 convergence root 해제를 승인할 수 있게 하고, release_convergence_root의 userApprovalRefs 설명을 바로잡았습니다. 스킬, 그 밖의 도구 입력·출력 계약, 저장 파일 형식은 바뀌지 않았습니다.

업그레이드 전 확인

  • 깨지는 변경이 없고 5.1.1의 데이터를 그대로 씁니다. 저장 파일 형식(테이블 정의)은 바뀌지 않았고, 저장되는 기록에 새 값이 생깁니다. workflow 저장소의 승인 기록에 원본 admin-passkey가, 관리자 서명 기록에 변경 rootRelease.approve가 들어갑니다.
  • 설치한 뒤 다시 시작해야 합니다. 실행 중인 MCP 서버는 시작할 때의 코드로 계속 동작합니다. 관리자 페이지를 띄운 프로세스(AGS MCP 서버 중 하나이며, 다시 시작한 어느 호스트 세션이든 이어받을 수 있습니다)와, 해제하지 못하는 root에 막힌 호스트 세션(예: Codex 세션)을 다시 시작해 그 MCP 서버가 5.1.2로 돌게 하십시오. 그 전에는 5.1.1 동작입니다.
  • 위에 적은 것만이 아니라 모든 AGS MCP 프로세스를 다시 시작하십시오. 다시 시작하지 않은 5.1.1 프로세스는 관리자 페이지를 띄우려고 계속 시도하다가 지금 띄운 프로세스가 끝나면 이어받습니다. 그때 이미 서명된 승인이 있으면 그 5.1.1 프로세스는 변경 rootRelease.approve의 기록을 읽지 못해, 관리자 페이지에 「되돌리기」 절에서 설명한 것과 같은 검증 실패 띠가 보일 수 있습니다. 해결은 5.1.1로 도는 프로세스가 없도록 모든 AGS MCP 프로세스를 다시 시작하는 것입니다.
  • 관리자 페이지에 「root 해제 승인」 메뉴가 생겼습니다. 이 메뉴에서 승인하려면 페이지의 다른 변경과 같이 등록된 패스키가 필요합니다.

되돌리기

5.1.1로 되돌릴 수는 있지만, 아래는 코드를 읽고 추론한 것이며 실행해 확인하지 않았습니다. 5.1.1 서버는 변경 rootRelease.approve를 모르므로, 이미 서명된 승인 기록이 검증 실패 항목(관리자 페이지의 검증 실패 띠)으로 남을 수 있고 「버리기」로 지워지지 않을 수 있습니다. 승인한 뒤 되돌리면 그 띠가 보일 것으로 예상하십시오. 다른 서명 설정은 마지막 유효 판으로 그대로 동작합니다. 피하려면 아무도 root 해제 승인에 서명하기 전에 되돌리거나, 승인을 모두 쓸 때까지 5.1.2를 유지하십시오(쓰지 않은 승인은 서명 30분 뒤 효력이 끝나지만 그 기록은 로그에 남습니다).

바뀐 점

  • 폼을 못 보여 주는 호스트에서도 다른 세션의 root를 놓을 수 있습니다. release_convergence_root는 다른 세션 root에 대한 사용자 승인을 MCP 폼으로만 받았습니다. 폼을 보여 주지 않고 바로 decline으로 답하는 클라이언트(Codex 클라이언트)에서는 그런 root를 놓을 수 없었습니다. 이제 폼을 보여 주는 것으로 확인되지 않은 호스트에서 userApprovalRefs 없이 호출하면 아무것도 바꾸지 않고 폼도 띄우지 않으며, 관리자 페이지의 「root 해제 승인」 메뉴에 요청을 남깁니다. 요청에는 root, 소유 세션과 접속 상태, 에이전트가 적은 사유, 해제했을 때의 영향이 보입니다. 사용자가 패스키로 승인하면 에이전트가 받은 승인 ID를 userApprovalRefs에 넣어 release_convergence_root를 다시 호출합니다.
  • 승인의 범위가 좁습니다. 승인은 root 하나의 revision 하나, 사용자가 본 사유(다른 사유로 호출하면 거절합니다), 요청한 세션에만, 서명한 뒤 30분 동안 유효하고, 한 번 해제하면 소진됩니다. 그 사이 바뀐 root, 다른 세션의 사용, 만료되었거나 이미 쓴 승인, 아무도 서명하지 않은 승인은 거절합니다. 기존 검사는 그대로입니다. 소유 세션이 online인 root는 여전히 거절하고, 해제 기록에는 누가·언제·어떤 presence 판독과 승인으로 놓았는지 남습니다.
  • 폼을 보여 주는 호스트는 폼을 유지합니다. Claude Code는 기존처럼 폼으로 묻습니다. 폼을 보여 주는 호스트라도 클라이언트가 폼을 알리지 않으면 거절하지 않고 관리자 페이지에서 묻습니다. 모든 호스트가 관리자 페이지에서 받은 승인 ID를 받아들입니다.
  • 도구 설명이 사실과 같아졌습니다. release_convergence_root의 userApprovalRefs는 서버가 받지 않는 「사용자 메시지」를 예로 들었습니다. 도구 설명, 필드 설명, ROOT_CONFLICT 안내가 이제 받는 참조를 정확히 말합니다. 관리자 페이지에서 서명한 승인 ID, 또는 폼 승인의 ID입니다. 대화에 있는 사용자 메시지는 승인이 아닙니다.

한계

  • root 교체(open_convergence_root의 parentRootId)는 여전히 MCP 폼으로만 묻...
Read more

AGS 5.1.1

Choose a tag to compare

@jaeseongs95 jaeseongs95 released this 13 Nov 12:40
f0a6d4a

AGS 5.1.1 Release Notes

AGS 5.1.1 is a hotfix release. It adds one paragraph to the independent-audit-gate skill so that an audit is performed as an exclusive adversarial review. Tool input and output contracts, storage file formats, hooks and the MCP server behavior are unchanged.

Before upgrading

  • No action is required. There are no breaking changes, and the 5.1.0 data is used as it is.

Changes

  • independent-audit-gate states the audit stance. The skill now says, in Korean as the rest of its body: 「감사는 배타적 적대적 검수로 한다. 감사자는 작성자의 보고와 판단에 기대지 않고, 대상이 맞다는 생각을 버린 채 결함을 찾는다.」 (An audit is an exclusive adversarial review: the auditor does not rely on the author's report or judgment, and looks for defects after discarding the assumption that the target is correct.) The skill's classification spans were moved to the new line numbers with their text unchanged, and the change is registered as a reviewed successor of the 5.1.0 bytes.

Verification

Candidate: the hotfix/5.1.1 commit tagged v5.1.1.

  • Windows (developer PC): pnpm lint, pnpm build, pnpm release:check, pnpm claude:check, pnpm bundle:check, pnpm source:check and git diff --check passed. pnpm test ran 5,068 Vitest tests (5,024 passed, 29 skipped, 8 todo, 7 failed) and 600 Node tests (599 passed, 1 skipped, 0 failed).
  • The 7 Vitest failures are environment failures of this PC and fail identically on v5.1.0: six live-bootstrap tests take Git Bash tar from PATH (they pass when Windows tar comes first; rerun: 0 failures), and one admin-page test expects the default admin port while this PC's AGS uses another.
  • The change is registered as source-binding successor r42 (tests/skill-classification/fixtures.v511-independent-audit-source-successor.json) and as a reviewed guidance successor in scripts/check-skill-context-optimization.mjs.
  • Not run: GitHub Actions CI (this project no longer runs it), the Linux test server, and real-host checks on Codex and Antigravity.

AGS 5.1.1 릴리스 노트

AGS 5.1.1은 핫픽스 판입니다. independent-audit-gate 스킬에 문단 하나를 더해 감사를 배타적 적대적 검수로 하도록 했습니다. 도구 입력·출력 계약, 저장 파일 형식, 훅과 MCP 서버 동작은 바뀌지 않았습니다.

업그레이드 전 확인

  • 따로 할 일은 없습니다. 깨지는 변경이 없고 5.1.0의 데이터를 그대로 씁니다.

바뀐 점

  • independent-audit-gate가 감사 태도를 적습니다. 스킬 본문에 「감사는 배타적 적대적 검수로 한다. 감사자는 작성자의 보고와 판단에 기대지 않고, 대상이 맞다는 생각을 버린 채 결함을 찾는다.」를 넣었습니다. 스킬 분류 근거 범위는 글은 그대로 두고 새 줄 번호로 옮겼고, 이 변경을 5.1.0 바이트의 검토된 후속으로 등록했습니다.

검증

후보는 v5.1.1 tag가 붙은 hotfix/5.1.1 커밋입니다.

  • Windows(개발 PC): pnpm lint, pnpm build, pnpm release:check, pnpm claude:check, pnpm bundle:check, pnpm source:check, git diff --check가 통과했습니다. pnpm test는 Vitest 5,068건(통과 5,024, 건너뜀 29, todo 8, 실패 7)과 Node 시험 600건(통과 599, 건너뜀 1, 실패 0)입니다.
  • Vitest 실패 7건은 이 PC의 환경 때문이며 v5.1.0에서도 똑같이 실패합니다. live-bootstrap 시험 6건은 PATH의 Git Bash tar를 쓰기 때문입니다(Windows tar를 앞에 두고 다시 돌리면 실패 0건). 관리자 페이지 시험 1건은 기본 관리자 포트를 기대하는데 이 PC의 AGS는 다른 포트를 씁니다.
  • 이 변경은 원문 결속 후속 r42(tests/skill-classification/fixtures.v511-independent-audit-source-successor.json)와 scripts/check-skill-context-optimization.mjs의 검토된 후속으로 등록했습니다.
  • 실행하지 않음: GitHub Actions CI(이 프로젝트는 더 이상 돌리지 않습니다), Linux 시험 서버, Codex·Antigravity 실호스트 확인.

AGS 5.1.0

Choose a tag to compare

@jaeseongs95 jaeseongs95 released this 08 Nov 20:10
c43874c

AGS 5.1.0 릴리스 노트

AGS 5.1.0은 훅과 MCP 서버의 지연을 줄인 판입니다. 훅이 이벤트마다 저장소를 열면서 쓰기 잠금을 기다리던 경로를 없앴고, MCP 서버 시작 시간은 절반 안팎으로 줄었습니다. 도구 입력·출력 계약과 저장 파일 형식은 바뀌지 않았고, 시간 제한은 늘리지 않았습니다.

업그레이드 전 확인

  • 따로 할 일은 없습니다. 깨지는 변경이 없고 5.0.0의 데이터를 그대로 씁니다.

바뀐 점

  • 훅이 현재 판의 저장소를 잠금 없이 엽니다. 세션 안의 훅은 연속성·workflow·컨텍스트 저장소를 열 때마다 쓰기 잠금을 잡고 스키마를 다시 확인했습니다. 다른 세션이 쓰는 중이면 그만큼 기다렸고, 데이터가 많을수록 오래 걸렸습니다. 이제 파일이 현재 판이면 잠금 없이 엽니다. 새 파일과 다른 판의 파일은 지금까지와 같은 경로로 처리하고, 세션 시작 때는 전체 검증을 그대로 합니다.
  • MCP 서버가 필요한 것만 읽고 시작합니다. 언어별 메시지 카탈로그와 계약 스키마를 시작할 때 모두 처리하던 것을 처음 쓸 때 처리합니다. 깨진 스키마는 런타임이 아니라 발행 전 시험에서 잡습니다.
  • 세션 활동 시각을 단계마다 쓰지 않습니다. 컨텍스트 시작과 턴 시작, 처음 보는 세션, 마지막 기록이 1시간을 넘긴 세션에서만 기록합니다. 사용자 입력 없이 이어지는 세션도 30일 보존 기준에서 사용 중으로 남습니다.

고치지 않은 지연

  • Windows agy의 PreInvocation·PostInvocation·SessionStart·Stop(약 950ms): PowerShell로 호스트 신원을 경계마다 조회하기 때문입니다. 캐시하면 메시지 수신 세션의 신원 결속이 약해지고, Windows agy 실호스트로 검증할 수도 없어 그대로 두었습니다.
  • Windows Codex SessionStart(약 2초): relay 시작에 필요한 프로세스 조회와 PowerShell 경유 비용입니다. 세션당 한 번입니다.
  • get_skill_inventory(Linux 약 100ms, Windows 약 320ms)와 record_stage_result의 스키마 파일 확인(Linux 호출당 약 33ms): 무결성 검사이고 호출 빈도가 낮습니다. get_skill_inventory는 이번 판에서 줄지 않았습니다.
  • Node compile cache: Windows 효과가 약 0~2%에 그쳐 넣지 않았습니다.

검증

후보 커밋 48b9fe25 기준입니다. 이후 커밋은 이 노트만 고쳤습니다.

  • CI와 전체 시험: CI Linux·Windows 통과(run 42513815672). 시험 서버 전체 시험 5064건은 Linux·Windows 모두 실패 0건입니다(Linux 통과 5035·skip 21, Windows 통과 5028·skip 28, 양쪽 todo 8). 새 시험은 제품 코드 변이 7개를 모두 실패로 잡았습니다.
  • Linux 실호스트(Claude·Codex·agy): 5.0.0과 후보를 호스트별 3회씩 같은 작업으로 실행했습니다. 훅 354회 모두 코드 0이고 응답도 정상입니다. 훅 시간 합계의 중앙값은 Claude 3437→3191ms, Codex 3546→3124ms, agy 3282→2874ms입니다.
  • Windows 실호스트: Claude -p만 측정했습니다(직전 후보 3255316e). 훅 시간 합계 중앙값 3714→3518ms이고 회차 편차가 큽니다(후보 3204~4166ms). Codex와 agy는 Windows 실호스트로 측정하지 못했습니다. agy는 SSH 세션에서 Google 재인증으로 멈추고, Codex는 시험 서버의 공유 설정을 건드리지 않으려고 실행하지 않았습니다.

합성 입력 측정(5.0.0 → 5.1.0, P50 ms, 저장소 행 0개 / 10만 개)

Linux는 후보 48b9fe25, Windows는 직전 후보 3255316e로 쟀습니다. 둘의 차이는 세션 활동 시각 갱신 조건과 시험뿐입니다.

항목 Linux Windows
MCP 서버 시작 1009 → 549 1516 → 662
Claude SessionStart 238 → 209 / 267 → 239 446 → 398 / 475 → 452
Claude UserPromptSubmit 242 → 227 / 279 → 222 429 → 411 / 469 → 407
Claude PreToolUse(Edit) 137 → 113 / 181 → 124 222 → 197 / 355 → 221
Claude Stop 161 → 141 / 220 → 161 272 → 247 / 356 → 287
Codex SessionStart 315 → 283 / 340 → 303 2119 → 1948 / 2090 → 2081
Codex PreToolUse(Bash) 103 → 88 / 134 → 88 376 → 357 / 466 → 366
Codex Stop 157 → 134 / 220 → 156 629 → 603 / 718 → 657
agy PreInvocation 197 → 170 / 189 → 165 954 → 964 / 1031 → 1112
agy PreToolUse 91 → 78 / 90 → 78 145 → 172 / 169 → 169
agy Stop 197 → 164 / 255 → 189 1001 → 937 / 1079 → 959

Windows의 agy는 뚜렷하게 나아지지 않았고 측정 변동이 큽니다.

AGS 5.0.0

Choose a tag to compare

@jaeseongs95 jaeseongs95 released this 08 Nov 17:18
d08939d

AGS 5.0.0 릴리스 노트

AGS 5.0.0은 4.0.0을 쓰면서 드러난 결함을 고친 판입니다. 기능이 있어도 에이전트가 쓸 계기가 없던 문제를 바로잡았고, 담당 컨텍스트를 관리자 페이지에서 직접 고칠 수 있게 했습니다. 깨지는 변경은 하나입니다. workflow를 시작할 때 쓸 스킬을 반드시 내야 합니다.

업그레이드 전 확인(깨지는 변경)

  • start_workflow와 start_guarded_workflow에 skills가 필수입니다. skills: [{skillId, reason}]로 이 시도에서 쓸 스킬을 하나 이상 이유와 함께 내야 하고 그중 하나 이상은 AGS가 아는 스킬이어야 하며, 아니면 INVALID_INPUT(details.reason: SKILLS_REQUIRED)으로 시작되지 않습니다. 에이전트는 도구 입력 형식으로 새 필드를 받으므로 따로 할 일이 없습니다. 이 도구들을 입력을 고정해 부르는 스크립트에는 skills를 넣어야 합니다. plan_workflow와 claim_workflow_attempt의 입력은 그대로입니다. 업그레이드 전에 시작한 workflow는 그대로 끝낼 수 있습니다. workflow 기록은 이 컴퓨터의 모든 호스트가 함께 쓰며, 4.x 서버는 5.0.0이 시작한 run을 읽지 못합니다. 호스트는 함께 올리고, 4.x로 되돌리기 전에는 5.0.0에서 시작한 workflow를 끝내거나 중단하세요.
  • JEV를 켜 둔 환경은 호출이 늘어납니다. JEV가 준비된 상태(켜짐·모델·전송 허용·key·예산)이고 스킬 분류 프리셋이 켜져 있으면, 에이전트가 작업에 쓸 스킬을 고르기 전에 JEV를 기본으로 호출합니다. 호출 비용과 전송 항목은 관리자 페이지의 JEV 화면에서 볼 수 있습니다. 원치 않으면 스킬 분류 프리셋이나 JEV를 끄면 됩니다.
  • 여러 호스트를 차례로 올리는 동안: 5.0.0 관리자 페이지에서 담당 컨텍스트를 저장한 기록은 4.0.0 서버에는 알 수 없는 기록으로 보입니다. 해당 역할 본문의 검증 실패로만 표시되고 다른 설정에는 영향이 없으며, 모든 호스트를 올리면 사라집니다.
  • 담당 컨텍스트 1000 byte 초과 저장은 모든 호스트를 올린 뒤에: 4.0.0은 1000 byte를 넘는 본문을 손상으로 판단해 세션에 전달하지 않습니다. 4.0.0으로 되돌릴 때도 먼저 본문을 1000 byte 이하로 줄이세요.

바뀐 점

  • workflow를 시작할 때 쓸 스킬을 제출합니다. 에이전트가 시작 전에 스킬을 직접 고르게 하려는 변경입니다. 개수 제한은 1~32개이고 「스킬 없음」은 없습니다. 시도마다 따로 내므로 상황이 바뀌어 다시 시작할 때 스킬도 다시 정합니다. classify_skills 조언을 받았으면 classificationOperationId를 함께 내어 조언 중 무엇을 채택·추가·미채택했는지 run에 남깁니다. 조언은 관문이 아니어서 JEV가 꺼져 있거나 실패해도 시작은 막히지 않습니다. 완료할 때 제출했지만 호출이 보이지 않은 스킬을 영수증에 표시하며, 이 표시로 완료를 막지는 않습니다. 훅에 보이지 않는 호출(슬래시 직접 호출, AGS 밖 스킬)과, agy 서브에이전트가 AGS 도구를 부르기 전에 읽은 스킬은 호출이 있어도 이 표시에 나올 수 있습니다.
  • 담당 컨텍스트 본문 상한을 UTF-8 1000 byte에서 2000 byte로 늘렸습니다. 전역 컨텍스트(4000 byte)와 세션 상황 컨텍스트(2000 byte)는 그대로입니다.
  • 스킬 통계 화면을 관리자 페이지에 추가했습니다. 어느 호스트가 어느 AGS 스킬을 몇 번 호출했는지 기간별로 보여 주며, 호출이 없는 스킬은 0으로 나옵니다. 호스트마다 스킬을 여는 방식이 달라(스킬 도구 호출, SKILL.md 읽기) 세는 기준을 표에 적었습니다. 5.0.0을 설치한 뒤의 호출부터 기록하고, 새 파일 skill-usage.sqlite3에 90일 보관합니다. 대화 내용은 저장하지 않습니다.

고친 결함

  • AGS3-D-0095 에이전트들이 서브에이전트를 호출하지 않음: coordinate-subagents의 설명이 사용자 요청이나 입증된 순이익을 먼저 요구하고 적용 대상도 「subagents」뿐이어서, 위임 여부를 따지는 절차가 들어 있는 스킬 자체가 선택되지 않았습니다. 혼자 완료·검증할 수 있는 작업 단위가 있거나 작성자와 분리된 확인이 필요할 때 이 스킬을 고르도록 설명과 대상을 고쳤습니다. 위임 여부는 지금처럼 스킬 안의 조건으로 정합니다. 서로 무관한 세 모듈의 전수조사를 호스트마다 3회씩 시켜 수정 전후를 비교했습니다. coordinate-subagents 선택은 Codex 0/3에서 3/3으로 늘었고, agy는 3/3 그대로이며 실제 서브에이전트 호출은 0/3에서 2/3이 되었습니다(그 2회는 위임 때문에 시험의 응답 제한 6분 20초를 넘겼습니다). Claude는 스킬 선택과 호출 모두 0/3으로 달라지지 않았습니다. Codex의 실제 호출도 0/3 그대로입니다. 표본이 작고, Claude 쪽은 시험 서버의 오래된 플러그인 데이터 때문에 연속성 훅이 꺼진 환경에서 돌았습니다.
  • AGS3-D-0049 안내서를 보지 않고 실행해 실패한 뒤 하나씩 고쳐 다시 돌림(재발): 도구 결과에 프로그램·경로·권한이 없다는 실패가 있으면 그 다음 단계에 안내서와 마지막으로 성공한 실행 스크립트를 읽고 실행 조건을 한 번에 맞추라는 안내가 나옵니다. 같은 실패에는 한 번만 나옵니다. 시험·설치·외부 도구를 처음 돌리기 전 확인도 workflow 안내에 넣었습니다. 파일 내용을 읽는 도구의 결과는 보지 않지만, 셸이나 원격 명령으로 읽은 로그가 같은 문구를 인용하면 안내가 한 번 나올 수 있습니다. Claude Code는 명령이 실패하면 PostToolUse 대신 PostToolUseFailure를 보내므로, 이 이벤트도 등록해 실패한 호출에 같은 안내가 나오게 했습니다.
  • AGS3-D-0094 기존 코드 전수조사에 code-review가 선택되지 않음: 스킬 설명과 적용 대상이 고정 변경분(diff, patch, PR)으로만 적혀 있어, 변경분이 없는 결함 조사 요청은 이 스킬에 맞지 않는 것으로 읽혔습니다. 고정한 시점의 기존 코드에서 결함을 찾는 검토(지정 파일·전수조사)도 대상에 넣었습니다. 수정 전후를 같은 요청으로 비교한 시험에서는 수정 전에도 code-review가 선택되어 원래 증상을 재현하지 못했으므로, 이 수정의 효과는 확인되지 않았습니다.
  • AGS3-D-0093 H11 시험이 단언하지도 않는 표준 라이브러리 소스를 읽어 임베디드 Python에서 실패함: 판정에 쓰지 않던 소스 읽기를 시험에서 뺐습니다. 제품 동작은 바뀌지 않습니다.
  • AGS3-D-0092 Codex에서 역할 저장마다 승인창이 뜸: checkpoint_role_context가 파괴적 도구로 표시돼 있어 Codex의 승인 요청 모드(on-request)에서 저장할 때마다 멈췄습니다. 상태 토큰으로 덮어쓰기를 막는 도구이므로 checkpoint_context와 같게 표시를 고쳤습니다. 전역 컨텍스트 저장은 그대로 승인 대상입니다.
  • AGS3-D-0091 세션 목록에 agy 서브에이전트가 메인 세션처럼 나옴: AGS 도구를 호출해 서브에이전트로 기록된 대화는 세션 현황과 세션 결속 화면에서 뺍니다. 호스트가 표식을 주지 않아 메인 세션인지 알 수 없고 요약·역할도 없는 세션은 세션 결속 화면의 「구분 불가」에 모이며, 사용자가 역할을 정하거나 목록에서 뺄 수 있습니다.
  • AGS3-D-0089 서브에이전트 시작 안내가 호스트 한도를 넘을 수 있음: 전역·담당·상황 컨텍스트가 모두 상한이고 ASCII일 때 10,000자를 넘었습니다. 시작 안내가 한도를 넘으면 상황 컨텍스트는 서브에이전트의 첫 단계에서 전달합니다.
  • AGS3-D-0090 관리자 페이지 JEV 화면의 빈 공간: 모델 선택 아래가 크게 벌어지던 배치를 고쳤습니다.
  • AGS3-D-0088 담당 컨텍스트가 비어 있어도 채울 계기와 경로가 없음: 역할에 결속된 세션은 이제 사용자 입력마다 역할 저장 안내를 받습니다. 본문이 비었을 때와 있을 때 안내가 다릅니다. 관리자 페이지의 역할 화면에서 패스키로 본문을 직접 고칠 수 있습니다. 편집을 시작한 뒤 다른 세션이 본문을 바꿨다면 덮어쓰지 않고 거부합니다.
  • AGS3-D-0087 JEV가 준비돼 있어도 호출되지 않음: JEV가 준비되면 사용자 입력마다, 그리고 workflow 단계가 바뀔 때 스킬 선택 전 classify_skills를 호출하라고 안내합니다. JEV는 조언 계층이므로 호출 실패가 작업을 막지 않고, 최종 선택은 에이전트가 합니다.
  • AGS3-D-0086 도구 설명의 전역 컨텍스트 상한이 2000 byte로 남음: 실제 상한인 4000 byte로 고쳤고, 설명과 코드 상수가 어긋나면 시험이 실패합니다.
  • AGS3-D-0085 전체 시험을 돌려 실패를 하나씩 찾는 순환: workflow 단계가 남아 있을 때마다 나오는 안내에, 여러 곳이 읽는 것을 바꾼 뒤에는 읽는 쪽을 먼저 찾아 한 번에 고치고, 실패가 바뀌며 되풀이되면 원인 묶음을 다시 정하며, 모든 검증 실행기의 결과를 읽고 보고하라는 기준을 넣었습니다.

검증

후보 커밋 3a328da6 기준입니다. 이후 커밋은 이 노트만 고쳤습니다.

  • CI와 전체 시험: CI Linux·Windows 통과(run 42496112800). 시험 서버 전체 시험 4949건은 Linux·Windows 모두 실패 0건입니다.
  • Linux 실호스트(Claude 2.1.316, Codex 0.166.0, agy 1.5.3): 3종 모두 컨텍스트 전달과 역할 저장, 실패 뒤 실행 안내, 스킬 호출 기록을 확인했습니다. skills 없는 시작은 SKILLS_REQUIRED로 거부되고, 제출한 스킬이 workflow 영수증에 남습니다. Codex 대화형에서 역할 저장 때 승인창이 뜨지 않았습니다(D-0092). agy 대화형은 직전 후보 f718cb65로 확인했습니다. 시험한 파일 5종의 해시는 후보와 일치합니다.
  • Windows Claude 대화형: 실패 뒤 실행 안내가 나왔고 훅 오류는 0건입니다. 시험 서버의 API key가 대화형에서 Credit balance too low로 막혀 구독 인증으로 시험했습니다. 같은 API key의 claude -p는 성공했습니다.
  • 통계 화면: 실제 서버와 Edge로 기간 전환, 키보드 초점, 390px 폭, 오류·빈 상태를 DOM으로 확인했습니다. 스크린샷을 사람이 보는 확인은 하지 못했습니다.
  • 미실행: Windows에서 agy 실호스트 시험은 하지 못했습니다. SSH 세션의 agy는 Google 재인증에서 멈추고, GUI 세션에는 다른 작업의 창이 열려 있어 입력하지 않았습니다.

AGS 4.0.0

Choose a tag to compare

@jaeseongs95 jaeseongs95 released this 08 Nov 07:42
ab92b16

AGS 4.0.0 릴리스 노트

AGS 4.0.0은 결함 수정을 중심으로 한 주 버전입니다. 깨지는 변경은 세 가지입니다. JEV(스킬 선택 조언)를 MCP 서버와 로컬 관리자 페이지가 전부 관리합니다. ponytail 스킬을 AGS 전용 minimal-implementation으로 바꿨습니다. 모델이 읽는 AGS 문구를 언어 설정 없이 문구마다 토큰이 적은 형태 하나로 고정하면서 영어 전용 패키지와 표시 언어 설정을 없앴습니다. 결함 장부(AGS3)의 D-0072부터 D-0084까지 13건을 고쳤고, 저장소 문서를 사용자용과 기여자용으로 나눠 다시 썼습니다.

업그레이드 전 확인(깨지는 변경)

  • JEV는 관리자 페이지에서만 설정합니다. 설치 설정 파일(AGENT_GOVERNANCE_CLASSIFICATION_CONFIG)의 jevEnabled·JEV 경로·JEV 프로필·budget.jev와 환경 변수 JEV_API_KEY는 더 이상 JEV에 쓰지 않습니다. 남아 있어도 오류는 아니며, 서버가 시작할 때 진단 jev-installation-settings-ignored를 남깁니다.
  • 3.x에서 JEV를 쓰던 사용자는 관리자 페이지(http://localhost:47615/, 포트가 바뀌었으면 에이전트가 알려 주는 주소)의 JEV 화면에서 다음을 하고 패스키로 저장합니다.
    1. key 표의 JEV_API_KEY 행에 key를 등록합니다.
    2. 모델을 고릅니다.
    3. 「JEV에 정보 전송 허용」을 켭니다. 보내는 항목은 「전송 정보 자세히 보기」에서 확인합니다.
    4. 예산 한도(USD)를 적습니다. 비우면 JEV를 부르지 않습니다.
    5. JEV 사용을 켭니다. 「지금(저장된 설정 기준)」 줄에 빠진 것이 없으면 쓰입니다.
  • JEV 실패 뒤 벤더 경로를 자동으로 시도하지 않습니다. 3.x는 JEV가 실패하면 현재 벤더 경로를 시도했습니다. 4.0.0의 기본값은 「사용 안 함」이며, 원하면 「JEV 평가 불가 시 대체 평가자」에서 고릅니다.
  • 벤더 경로만 쓰는 사용자는 바꿀 것이 없습니다. 벤더 경로·qualification·전송 허용 규칙과 벤더 경로 key의 환경 변수 우선 규칙은 그대로입니다.
  • ponytail 스킬이 minimal-implementation으로 바뀌었습니다. /agent-governance-suite:ponytail로 부르던 것은 /agent-governance-suite:minimal-implementation으로 부릅니다. workflow capability 이름(minimal-implementation)과 단계 순서는 그대로입니다. 강도 인자(lite|full|ultra)는 없어졌습니다. 자세한 내용은 아래 「ponytail을 minimal-implementation으로 교체」를 봅니다.
  • cs-engineering 지식팩 digest가 바뀌었습니다. 지식팩 판 번호(0.1.0)와 규칙 카드는 그대로이지만, 스킬에서 설계 초안 사본을 빼면서 잠금 digest가 바뀌었습니다. 3.x에서 만들어 보관한 cs-constraint-report·binding·review는 이전 digest를 담고 있어 4.0.0의 check-bundle에서 무결성 오류로 거부됩니다. 4.0.0에서 제약 보고서를 다시 만듭니다.
  • AGS 문구에 언어 설정이 없습니다. 모델이 읽는 문구는 문구마다 토큰이 적은 형태 하나로 고정됩니다. 그래서 hook 안내, MCP 도구 설명·결과, 오류, 스킬·hook CLI 출력, 스킬 description은 영어이고, MCP instructions의 공통 접수 기준은 한국어입니다(아래 「모델이 읽는 문구를 토큰이 적은 형태로」). 환경 변수 AGENT_GOVERNANCE_LOCALE, 요청 _meta의 acceptLanguage, 공유 상태 폴더 settings.json의 locale, 패키지의 runtime/locale.json, 관리자 페이지의 표시 언어는 더 이상 효과가 없습니다. 사용자에게 보이는 답은 에이전트가 사용자의 언어로 씁니다.
  • 영어 전용 패키지(agent-governance-suite-en, agy -en.zip)를 더 배포하지 않습니다. 설치했다면 업데이트와 이전대로 지우고 agent-governance-suite를 설치합니다. 상태는 같은 위치에 있으므로 그대로 이어집니다.
  • 문서 위치가 바뀌었습니다. 사용자 문서는 docs/user/, 기여자 문서는 docs/contributing/, 지난 설계 문서는 docs/archive/, 릴리스 노트는 docs/release-notes/에 있습니다. 시작점은 docs/README.md입니다.
  • 데이터 이관은 필요 없습니다. 3.9.x의 상태 파일과 서명 기록을 그대로 씁니다.
  • 되돌리기: 3.9.0을 다시 설치하면 됩니다. 3.9.0에서는 ponytail과 표시 언어 설정이 다시 쓰입니다. 4.0.0 이전에 서명한 표시 언어 기록은 4.0.0에서도 검증만 되고 아무것도 바꾸지 않으며, 4.0.0에서는 새로 서명할 수 없습니다. 4.0.0에서 서명한 JEV 모델·전송 허용·대체 평가자 기록은 3.9.0이 읽지 않으므로 남아 있어도 영향이 없습니다. 3.9.0의 JEV는 3.9.0 방식(설치 설정 파일과 서명)으로 다시 켜야 합니다.

JEV를 MCP 서버가 관리(AGS3-D-0075)

  • JEV는 에이전트의 스킬 선택을 돕는 조언 계층입니다. 판정·승인·관문이 아닙니다. JEV가 조언하지 못하면 조언이 없을 뿐이고 에이전트가 직접 고릅니다.
  • 공급자 정의(호출 주소·모델 목록 주소·wire 형식·key 이름)는 AGS 소스에 들어 있습니다. 페이지에서는 켜고 끄기, 모델, 정보 전송 허용, 예산, 프리셋, 대체 평가자, key를 서명해 바꿉니다.
  • 모델 목록은 서버가 24시간마다(실패하면 1시간 뒤) 다시 받습니다. 목록이 바뀌어도 저장한 모델은 자동으로 바뀌지 않습니다.
  • JEV 예산에 서버가 따로 두던 5 USD 상한을 없앴습니다. 서명한 한도만 씁니다.
  • 고친 결함: 페이지는 JEV를 「켜짐」으로 보이고 workflow 응답은 「스킬 분류 지원이 설정돼 있다」고 안내했지만, 프로필 등록표가 비어 있어 JEV가 한 번도 호출되지 않았습니다. 이제 JEV를 실제로 부를 수 있을 때만 「켜짐」과 그 안내를 보이고, 아니면 빠진 조건(모델 미선택, 전송 미허용, key 없음, 예산 없음·부족·소진 등)을 적습니다.
  • 자세한 내용은 관리자 페이지 문서를 봅니다.

ponytail을 minimal-implementation으로 교체

  • 사용자 결정으로 외부 원본을 들여온 ponytail을 빼고 AGS 전용 스킬 minimal-implementation 1.0.0을 새로 썼습니다. 코드만이 아니라 문서·자료·설정·절차까지, 결과물을 만들거나 바꾸는 모든 작업에 적용합니다. 원 요구를 줄이지 않는 가장 작은 완전한 결과물을 고르고, 저장소에 이미 있는 것·표준·플랫폼 기능을 먼저 씁니다. 검토·감사·검증·완료 판정과 설명·조사만 하는 답에는 적용하지 않습니다.
  • 「결과물을 만들거나 바꿀 때 먼저 호출한다」는 조건은 이 스킬의 description에 둡니다(아래 「모델이 읽는 문구를 토큰이 적은 형태로」).
  • 스킬 폴더는 에이전트가 읽을 수 있고 읽으면 그만큼 문맥 비용이 듭니다. 그래서 cs-engineering에 들어 있던 2.7.7 설계 초안 사본(references/design-basis.ko.md, 47 KB, ponytail 언급 9곳)을 스킬에서 뺐습니다. 어느 스킬 문서도 이 파일을 가리키지 않았고, 같은 내용의 원본은 docs/archive/cs-engineering-design.ko.md에 있습니다. 지식팩 출처 목록(sources.json)의 설계 근거 주소도 그 원본으로 바꿨습니다.

모델이 읽는 문구를 토큰이 적은 형태로

  • AGS가 내보내는 문구는 사람보다 에이전트(모델)가 먼저 읽고, 세션마다 토큰으로 비용을 냅니다. 사용자 결정에 따라 언어를 고르게 하지 않고, 같은 규칙을 가장 적은 토큰으로 싣는 형태 하나로 고정했습니다. 사용자에게 보이는 답은 에이전트가 사용자의 언어로 씁니다. 아래 토큰 수는 모두 o200k 기준 측정값입니다.
  • 카탈로그 문구(hook 안내, 도구 설명·결과, 오류, CLI 출력): 1,526개를 하나씩 비교했습니다. 영어가 짧은 것이 1,468개, 같은 것이 47개였고, 한국어가 짧았던 11개는 영어를 한국어 이하로 줄였습니다. 그래서 모두 영어로 렌더링합니다.
  • 공통 접수 기준(MCP instructions 본문): 같은 내용이면 영어가 23% 적지만(한국어 2,116, 영어 1,594) 영어는 8,151자라 Claude Code가 instructions를 자르는 4,096자를 넘습니다. 그래서 한국어로 두고, 대신 다른 곳과 겹치는 조항을 그 한 곳으로 옮겨 1,861로 줄였습니다(−12%). 규칙은 하나도 빼지 않았습니다.
    • 무거운 단계 조항 → mutation-risk-preflight·change-scope-guardian description
    • minimal-implementation 먼저 호출 → 그 스킬의 description(꺼졌거나 없는 스킬에 관한 규칙은 모든 스킬에 대한 규칙으로 공통 접수 기준에 남김)
    • classify_skills를 설정된 환경에서만 쓰는 규칙 → 그 도구 설명에 이미 있음(공통 분류 지원 계약 경로는 그 설명 끝에 둠)
  • 스킬 description 25개(매 세션 스킬 목록): 영어 한 줄로 바꿔 2,211에서 1,621로 줄였습니다(−27%). 스킬 본문은 원문 그대로이며, 번역하면 행동을 모두 다시 시험해야 하므로 후속 과제입니다.
    • Claude 패키지는 15개 스킬에서 공용 description을 Claude용 문구로 덮어씁니다. 그 문구도 같은 기준으로 영어로 바꾸고, 공통 접수 기준에서 옮겨 온 규칙(위임 지시문 요건, 무거운 단계 판단)을 넣었습니다. 공용 문구와 같던 3개는 덮어쓰기를 없앴습니다. Claude 패키지 description 25개는 2,635에서 1,885로 줄었습니다(−28%).
    • 분야 중립 문구 검사(check-domain-neutral-wording)는 영어 제외절(「Not for …」)을 한국어 제외절과 같은 조건(같은 절 안, 「only」 한정 없음)에서만 인정합니다.
  • 반복해서 붙는 안내: 사용자 메시지마다 붙는 [AGS turn check]는 공통 접수 기준을 다시 적던 문장을 그 기준을 부르는 짧은 신호로 바꿔 195에서 98로 줄였습니다(−50%). 저장 요령은 checkpoint_context·load_context 도구 설명에 이미 있습니다. 세션 시작 안내는 225에서 99로, workflow 변경 안내는 스킬 대상 목록을 다시 싣지 않게 했습니다.
  • instructions 전체는 4,000자 예산 안입니다.
  • 영어 전용 패키지는 runtime/locale.json 하나만 달랐으므로, 언어를 고정하면서 함께 없앴습니다. 관리자 페이지의 표시 언어 항목도 없앴습니다.

전역 컨텍스트 상한 4000 byte

  • 관리자 페이지에서 서명하는 전역 컨텍스트 본문 상한을 UTF-8 2000 byte에서 4000 byte로 늘렸습니다. 역할 컨텍스트(1000 byte)와 세션 상황 컨텍스트(2000 byte)는 그대로입니다.
  • 3.9.0으로 되돌려도 4000 byte까지 저장된 전역 컨텍스트는 그대로 읽고 주입합니다. 다만 3.9.0에서 새로 저장할 때는 2000 byte 상한이 다시 적용됩니다.

고친 결함

컨텍스트·세션 현황판

  • AGS3-D-0072: 역할 컨텍스트 본문이 비어 있으면 결속된 역할 이름조차 주입하지 않아, 세션이 도구로 묻기 전에는 자기 역할을 몰랐습니다. 이제 본문이 비어도 결속된 역할 이름을 알리고, 결속이 풀리면 그 사실도 알립니다.
  • AGS3-D-0073: list_session_status의 role이 관리자 페이지의 서명된 역할 결속이 아니라 세션이 직접 적은 값을 보여, 담당 세션 찾기가 틀릴 수 있었습니다. 이제 서명된 결속을 우선하고 roleSource로 출처를 함께 보여 줍니다.
  • AGS3-D-0077: 단계 확인 안내(4.0.0부터 [AGS stage check])가 조건 변화 없이 모든 도구 호출 뒤마다 붙어 같은 줄이 문맥에 쌓였습니다(agy는 지속 메시지). 이제 사용자 메시지, 실행 주체 시작, workflow 변경 때만 붙습니다.

공통 접수 기준(모든 호스트·모든 작업 종류)

  • AGS3-D-0080: 사용자가 「보안이 최우선」이라고 밝혔는데도 에이전트가 그 조건과 대조하지 않고 더 약한 약식안을 기본 권고로 내밀었다가 지적을 받고서야 바로잡았습니다. 공통 접수 기준의 목적 확인은 설계를 그 효과와만 대조했고, 약식 대체안을 막는 규칙은 코드 작업용 ponytail에만 있었습니다. 이제 행동 전 확인 1이 사용자가 밝힌 우선순위·제약을 지키는지도 대조하고, 이를 낮춘 안을 기본으로 내밀지 않게 합니다.
  • AGS3-D-0081: 사용자가 다른 에이전트의 대화를 붙여 넣고 결함 등록을 지시하자, 에이전트가 붙여 준 이유(그 에이전트의 행동)가 아니라 자료의 소재(대화가 다룬 제품)로 목적을 정해 엉뚱한 장부에 등록하려 했습니다. 이제 행동 전 확인 1이 붙인 자료를 소재가 아니라 그 세션 역할에 준 이유로 읽게 합니다.
  • AGS3-D-0082: 검수 에이전트가 다른 에이전트의 결과물을, 작성자가 정한 지적 목록이 닫혔고 완료 보고와 시험이 통과했다는 이유로 승인(VERIFIED)했습니다. 결과물이 원래 하려던 일(호스트 PC의 작업 화면을 원격·모바일에서 그대로 보고 조작)과는 대조하지 않아, 원격 접속 시 빈 화면, 모바일 화면 없음, 중계 시 터미널 출력 누락을 놓쳤습니다. 목적 확인(행동 전 확인 1)은 만들거나 권고할 때만 걸렸고, 보고 전 대조(확인 3)는 작성자가 쓴 수용 기준과만 비교했습니다. 이제 확인 1이 남의 결과물을 판정하기 전에도 적용되고, 확인 3이 받은 보고와 시험 통과 주장을 수용 기준뿐 아니라 확인 1에서 세운 효과와도 실제 실행으로 대조하게 합니다.
  • AGS3-D-0083: 에이전트가 모의 객체·고정값·자리 채움·조용한 대체 경로·삼킨 오류로 시험을 통과시키고 완료로 보고할 수 있었습니다. 이를 막는 규칙이 없었습니다. 이제 공통 접수 기준 확인 3이 이런 것이 낸 통과를 근거로 세지 않게 하고, 남은 대체물은 위치와 함께 미검증으로 적게 합니다. minimal-implementation에도 「대체물로 완료를 만들지 않는다」 절을 두었습니다.
  • 이 조건들이 들어갈 자리를 만들려고 확인 4의 예시 괄호를 뺐고, 무거운 단계 조항은 mutation-risk-preflight·change-scope-guardian description으로 옮겼습니다(위 「모델이 읽는 문구를 토큰이 적은 형태로」). MCP instructions는 4,000자 예산 안입니다.

workflow

  • AGS3-D-0084: workflow의 구현 단계(minimal-implementation capability)는 실제 실행이 실패해도 failed·GATE_FAILED로 기록할 수 없었습니다. 3.x registry의 provider 상태 대응표가 기본 passed와 입력·근거 오류만 두었기 때문입니다. 이제 provider 출력의 status로 passed, failed(GATE_FAILED), blocked(MISSING_EVIDENCE)를 기록하고, 실패한 실행을 passed로 기록하려 하면 거부합니다.

관리자 페이지

  • AGS3-D-0078: 고정 포트 47615가 점유돼 있으면 페이지를 한 번만 시도하고 포기했고, 페이지를 띄운 서버가 끝나도 다른 서버가 넘겨받지 않았습니다. AGS가 아닌 프로그램이 점유하면 환경 변수를 바꾸는 것 말고는 방법이 없었습니다.
    • 점유자가 다른 AGS 서버면 그 서버에 맡기고, 그 서버가 끝나면 이어받습니다.
    • 점유자가 AGS가 아니면 빈 포트에서 페이지를 열고, 그 주소를 공유 상태 폴더의 admin-page.json에 적습니다. 에이전트가 알려 주는 주소도 그 실제 주소를 따릅니다.

훅 비용

  • AGS3-D-0079: Claude·agy의 continuity·증명 훅 실행기가 번들을 자식 node 프로세스로 다시 띄워 도구 호출마다 node 기동이 두 배였습니다. 이제 같은 프로세스에서 실행합니다. 같은 입력의 훅 실행 시간 중앙값(30회)이 Claude PostToolUse 기준 약 249ms에서 161ms로 줄었습니다.
  • AGS3-D-0074: 긴 Claude 대화형 세션에서 AGS 도구의 PreToolUse 증명 훅이 기록 파일 전체를 두 번 이상 훑어 10초 한도를 넘기고 호출이 막혔습니다. 이제 기록의 최신 2 MiB·4000줄 창만 읽습니다. 창 밖에서 호출 메시지를 찾지 못하면 root 세션은 세션 모델로 기록하고, 서브에이전트는 CLAUDE_MODEL_UNOBSERVED로 남깁니다. 메시지 본문은 읽어 내지 않습니다.

시험

  • AGS3-D-0076: hook 시험 fixture가 공유 상태 경로를 지정하지 않아 실행한 PC의 실제 전역 컨텍스트를 읽었습니다. 같은 원인으로 PC의 서명된 표시 언어를 읽던 i18n 시험도 함께 고쳤습니다.

문서 개편

  • README와 docs/를 사용자용(docs/user/)과 기여자용(docs/contributing/)으로 나눠 다시 썼습니다.
  • 현재 동작과 맞지 않는 지난 설계 문서는 docs/archive/로 옮겼고, 릴리스 노트는 내용을 바꾸지 않고 docs/release-notes/로 옮겼습니다.

AGS 3.9.0

Choose a tag to compare

@jaeseongs95 jaeseongs95 released this 07 Nov 17:19
ca6ac8b

AGS 3.9.0 릴리스 노트

AGS 3.9.0은 결함 수정을 중심으로 한 기능판입니다. 전역·담당·상황 컨텍스트와, 사람이 정하는 설정을 패스키로 서명해 바꾸는 로컬 관리자 페이지를 추가했습니다. 결함 장부(AGS3)에 미해결로 남아 있던 결함 35건과 발행 준비 중 찾은 결함 1건(D-0071)도 함께 고쳤습니다.

업그레이드 전 확인

  • 데이터 이관은 필요 없습니다. 3.8.x의 workflow·continuity·세션 현황판·메시지 상태는 그대로 씁니다. 새 공유 상태 파일 context-layers.sqlite3는 처음 저장할 때 만들어집니다. 저장한 적이 없으면 파일도, 주입도 없습니다.
  • 관리자 페이지가 로컬 포트를 엽니다. AGS MCP 서버가 시작될 때 127.0.0.1:47615에서 관리자 페이지를 엽니다.
    • 포트를 바꾸려면 AGENT_GOVERNANCE_ADMIN_PORT를 설정합니다. 0으로 두면 페이지를 열지 않습니다.
    • 포트가 이미 쓰이고 있으면 페이지만 건너뛰고 MCP 서버는 정상 동작합니다.
  • JEV(스킬 분류 지원)를 쓰던 사용자는 다시 켜야 합니다. 3.9.0부터 JEV는 기본으로 꺼져 있고, 관리자 페이지에서 패스키로 서명해 켜야 동작합니다. 설치 설정 파일(AGENT_GOVERNANCE_CLASSIFICATION_CONFIG)이 JEV를 허용하더라도 서명이 없으면 꺼진 채로 동작하고, 서버가 진단 jev-off-until-signed를 남깁니다. 켜는 순서는 다음과 같습니다. 끝나면 진단이 사라지는지 확인합니다.
    1. http://localhost:47615/를 엽니다.
    2. 첫 패스키를 등록합니다.
    3. JEV 화면에서 켜고, 필요하면 예산과 key를 정해 서명합니다.
  • 새 MCP 도구: load_shared_context, checkpoint_global_context, checkpoint_role_context, bind_session_role, recall_session_message. 기존 도구의 입력 계약은 바뀌지 않았습니다.
  • 되돌리기: 3.8.2를 다시 설치하면 됩니다. 3.8.2는 context-layers.sqlite3를 읽지 않으므로 이 파일은 남아 있어도 영향이 없습니다.

전역·담당·상황 컨텍스트

AGS는 세 가지 컨텍스트를 둡니다. 프로젝트 단위 컨텍스트는 없습니다.

컨텍스트 받는 대상 상한 바꾸는 주체
전역 이 컴퓨터에서 AGS에 붙은 모든 세션과 그 서브에이전트 2000 byte 사용자. 관리자 페이지에서 패스키로 서명합니다.
담당 해당 역할에 결속된 세션과 그 서브에이전트 1000 byte 그 역할에 결속된 세션
상황 그 세션과 그 서브에이전트 2000 byte(기존 현재 메모리) 그 세션
  • 세션 시작·재개·압축 때와 서브에이전트 시작 때 컨텍스트를 주입합니다.
  • 세션 도중 컨텍스트가 바뀌면, 그 판을 아직 받지 않은 실행 주체에게만 다음 경계에서 한 번 넣습니다.
  • 에이전트는 전역 컨텍스트와 세션·역할 결속을 직접 바꾸지 못하고 요청만 남깁니다. 사용자가 관리자 페이지에서 승인합니다.
  • 결속은 root 세션 단위입니다. 서브에이전트는 root 세션의 결속을 이어받습니다. 결속은 마지막으로 쓴 뒤 30일이 지나면 없어집니다.
  • 자세한 내용은 운영 문서를 봅니다.

로컬 관리자 페이지

  • 주소는 http://localhost:47615/입니다. 패스키(WebAuthn) 규칙상 IP 주소로는 쓸 수 없어 localhost만 받습니다.

  • 페이지에서 바꾸는 항목(패스키 서명 필요): 전역 컨텍스트, 역할 등록표, 세션↔역할 결속, 패스키 목록, JEV 켜고 끄기(기본 꺼짐)·예산·프리셋, JEV key, 표시 언어, 편집 관문 예외 경로(절대 경로만).

  • 페이지에서 보기만 하는 항목: 담당 컨텍스트, 세션 현황, 변경 이력, JEV 사용액.

  • 환경 변수가 서명값보다 우선합니다. 기존에 환경 변수로 정해 둔 설정이 조용히 무시되지 않도록 한 것입니다. 환경 변수 때문에 잠긴 항목은 페이지에 그렇게 표시됩니다.

    • 표시 언어: AGENT_GOVERNANCE_LOCALE → 서명값 → settings.json 순입니다.
    • 편집 관문 예외 경로: AGENT_GOVERNANCE_PHASE_EXEMPT_PATHS가 비어 있지 않으면 그 값만 씁니다.
    • JEV key: 같은 이름의 환경 변수가 있으면 그것을 씁니다.
    • JEV 켜고 끄기·예산: 설치 설정 파일이 허용하는 범위가 상한입니다. 파일이 허용하고 서명 스위치도 켜져 있어야 켜집니다. 예산은 파일 한도·서명 한도·5 USD 가운데 가장 작은 값입니다.
  • JEV key는 지문만 보여 줍니다. 저장할 때는 AES-256-GCM으로 암호화하고, 데이터 키는 같은 사용자 폴더의 jev-key-vault.bin에 둡니다.

  • 바꾸는 항목의 정본은 패스키가 서명한 추가 전용 기록입니다. hook·MCP·페이지는 읽을 때마다 서명을 검증하고, 검증에 실패한 기록은 적용하지 않습니다. 이 경우 마지막으로 유효했던 판으로 동작하고, 사용자에게 알리라는 한 줄을 넣습니다.

  • 보기는 인증 없이 열립니다. 같은 컴퓨터의 사용자와 에이전트는 공유 상태 파일을 어차피 직접 읽을 수 있기 때문입니다. 다른 웹 페이지가 읽거나 쓰는 것은 Host·Origin·Content-Type 검사로 막습니다.

  • 이 설계로 막지 못하는 것: 같은 OS 사용자로 도는 프로그램이 의도적으로 공격하는 경우입니다.

    • 첫 패스키를 먼저 등록하는 선점
    • AGS 설치 파일 패치
    • 공유 상태 파일 전체 교체
    • 기록의 꼬리 자르기
    • 대기 중인 요청 거절
    • agy 서브에이전트 root 기록 파일 수정
    • JEV key 복호화(데이터 키 파일과 상태 파일을 함께 읽는 경우)
    • 호스트를 띄우는 환경 변수 변경

    이런 시도는 최초 등록 시각·지문 표시, 기록 후퇴 경고 등으로 드러나게 했을 뿐 막지는 못합니다.

  • 키를 모두 잃었을 때는 같은 컴퓨터에서 node <설치 경로>/mcp-server/dist/server.mjs admin-reset --yes로 재설정합니다. 재설정하면 모든 항목이 기본값으로 돌아가므로, 재설정으로 권한을 얻을 수는 없습니다.

  • 자세한 내용은 관리자 페이지 문서를 봅니다.

고친 결함

훅·런타임·설치물

  • AGS3-D-0005: edit-gate가 스크립트의 쓰기 호출을 잘못 셌습니다. 이제 open()의 쓰기 모드는 뒤쪽 인자에서만 읽고, 접미사가 붙은 쓰기 호출도 셉니다.
  • AGS3-D-0013: Windows에서 ENOENT가 나면 검증된 npm Claude Code 실행 파일로 실행합니다.
  • AGS3-D-0014: clean-room smoke가 continuity hook을 30초 제한으로 돌려, 호스트라면 10초에 끊었을 hook도 통과시켰습니다. 이제 hooks.json에 선언된 timeout으로 실행합니다.
  • AGS3-D-0016: 저장소가 아닌 작업 공간에서 profile-workspace가 git 프로세스를 하나 더 띄워 Windows 시간 제한을 넘겼습니다. 저장소 표식이 없으면 git을 띄우지 않습니다.
  • AGS3-D-0015, D-0022, D-0054: 인식하지 못한 깨우기 턴은 붙이거나 막고, hook 진입점을 예산 경계로 두어 hook 출력 예산을 구조화해 검사합니다.
  • AGS3-D-0019: evaluation-validity-auditor의 runtime smoke를 설치 패키지에서 실행합니다.
  • AGS3-D-0023: hook·launcher·connector의 stderr 기록을 한 형식으로 맞췄습니다.
  • AGS3-D-0027: 번들 서버가 실제로 읽는 skills 파일만 복사합니다.
  • AGS3-D-0028: Antigravity에서 3.0 이전 서버 키의 schema cache를 옮깁니다.
  • AGS3-D-0059: 작업 기록을 공개 트리 밖에 둡니다.
  • AGS3-D-0064: relay가 hook의 작업 폴더를 물려받아 agy 플러그인 갱신 때 폴더를 지우지 못했습니다. relay를 상태 디렉터리에서 시작합니다.
  • AGS3-D-0071: source-binding 승계 시험이 같은 커밋의 파일을 사례마다 git show로 다시 읽어, 느린 Windows에서 30초 제한을 넘겼습니다(3.8.2에도 있던 문제). 한 번 읽은 내용을 시험 파일 안에서 재사용합니다. 이 PC 기준 해당 시험이 13.1초에서 1.7초로 줄었습니다.

모델·스킬 실행

  • AGS3-D-0007: core가 선언된 CS 단계 validator를 실행하고 glossary를 소유합니다.
  • AGS3-D-0018, D-0058: 모델 등급이나 추론 수준을 이유로 실행·기록을 거부하지 않습니다. 모델은 추천 순서로 고르고, 카탈로그는 runtime이 소유합니다.
  • AGS3-D-0062: mutation-risk-preflight를 직접 호출할 때 MutationIntent JSON이나 receipt 스크립트가 필요 없다고 지침에 명시했습니다.

공통 접수 기준과 에이전트 행동

  • AGS3-D-0032, D-0038, D-0053: 공통 접수 기준을 경로별 규칙으로 줄였습니다(MCP instructions: ko 약 3.3천 자, en 약 3.9천 자). 줄이면서 빠졌던 조항은 복원했습니다. acceptance-evidence-validator의 대상은 분야 중립으로 바꿨고, checkpoint_context는 저장할 때마다 상태를 다시 구성하라고 안내합니다.

  • AGS3-D-0042, D-0043, D-0045~D-0051, D-0055: 행동 전 확인 다섯 가지를 공통 접수 기준에 넣었습니다.

    1. 결과물을 누가 어떻게 써서 무엇이 달라지는지 먼저 세웁니다.
    2. 기억한 전제가 아니라 현재 정본·인계 자료·가이드·기존 연결 지점을 먼저 대조합니다.
    3. 수용 기준의 대상 목록과 실제로 실행한 대상을 하나씩 대조합니다.
    4. 맡은 범위의 결함은 보고로 끝내지 않고 그 턴에 고칩니다.
    5. 계약을 바꿀 때는 이전·복구 안내를 넣습니다.

    사용자만 할 수 있는 단계는 그 부분만 요청하라는 규칙과, 호출한 스킬의 필수 산출물·검증을 대조하라는 규칙도 넣었습니다. 이 규칙들은 지침 문구를 고친 것이며, 실제 호스트에서 에이전트 행동이 바뀌는지는 측정하지 않았습니다.

  • AGS3-D-0067: 저장소 지침(AGENTS.md)의 벤더 무관 원칙을 확장했습니다. 이제 모델·실행 주체가 달라도 같은 판정을 내리는 것과, 모든 수정을 세 호스트에서 실제로 시험하는 것까지 요구합니다.

컨텍스트·서브에이전트

  • AGS3-D-0065: 서브에이전트는 시작할 때 스킬 안내를 한 번 받을 뿐, 작업 도중 판단할 때마다 스킬을 대조하라는 안내는 받지 못했습니다. 이제 모든 실행 주체(메인·서브에이전트)가 단계 경계마다 스킬 대조 안내 한 줄(ko 154 byte, en 157 byte)을 받습니다. 단계 경계는 Claude Code·Codex에서 도구 호출 뒤(PostToolUse), Antigravity에서 모델 호출 뒤(PostInvocation)입니다. 부모 세션의 상황 컨텍스트가 바뀌면, 서브에이전트가 아직 받지 않은 판을 다음 단계 경계에서 한 번 넣습니다.
  • AGS3-D-0068: agy 서브에이전트가 메인 세션의 역할 결속을 이어받지 못했습니다. 이제 MCP가 기록한 대화→root 대응으로 root 세션을 찾고, 모델 호출이 끝나는 경계(PostInvocation)에서 담당 컨텍스트를 넣습니다.
  • AGS3-D-0069: 전역·담당 컨텍스트를 따로 읽습니다. 하나를 읽지 못해도 다른 하나는 주입합니다.
  • AGS3-D-0070: 역할 결속을 결속 시각이 아니라 마지막 사용 시각 기준 30일 뒤에 지웁니다.

알려진 한계

  • agy 서브에이전트는 AGS 도구를 처음 호출한 다음 단계부터 담당 컨텍스트를 받습니다. 그 전에 오는 hook에서는 root 세션을 알 수 없습니다(agy 1.5.3 실측: 서브에이전트 hook 입력에 root·부모 ID가 없음). 또 모델 호출 단계마다 hook 프로세스가 하나 더 뜹니다. 이 PC에서 5회 재 보니 회당 약 0.2~0.3초였습니다.
  • 단계 확인 때문에 Claude Code·Codex에서는 도구를 호출할 때마다 continuity hook이 한 번 더 돌고, 안내 한 줄이 문맥에 쌓입니다. Antigravity에서는 이 줄이 지속되는 systemMessage로 들어가므로 단계마다 대화 기록에 남습니다.
  • JEV 프리셋은 내장 프리셋(skill-classification)을 켜고 끄는 것만 됩니다. 추가·편집은 지원하지 않습니다.
  • 관리자 페이지는 한국어만 지원합니다.

검증

  • GitHub Actions: Node 24 / ubuntu-latest·windows-latest에서 전체 vitest와 node:test를 돌렸습니다.
  • D-0014·D-0016 회귀 시험은 수정 전 코드에서 실패하고 수정 후에는 통과했습니다. 시험 서버가 제출을 거부해서 이 PC(Windows 11, Node 24.19.0)에서 실행했습니다.
  • 관리자 페이지: 실제 dist 서버와 헤드리스 Chrome으로 E2E를 돌렸습니다. 컨텍스트·역할·패스키는 79/79, 설정 편집은 30/30 통과했습니다. 설정 편집 E2E에서는 key 원문이 상태·페이지·DB/WAL에 남지 않는 것, 한국어 IME, 390px 폭 표시도 확인했습니다.
  • 프로세스 경계를 넘는 서버 전용 시험(test:server, vitest 334 파일·node:test): 시험 서버가 모든 제출을 거부해 다른 곳에서 돌렸습니다. Windows는 이 PC(Windows 11, Node 24.19.0)에서 vitest 332 통과·2 건너뜀, node:test 598 통과·1 건너뜀·실패 0. Linux는 이 시험만 돌리는 일회용 GitHub Actions 작업(ubuntu-latest, Node 24.22.2)에서 vitest 333 통과·1 건너뜀, node:test 609/609 통과.
  • 미실행:
    • 지정 시험 서버(Linux·Windows)에서의 실행: 발행 시점에 시험 서버가 모든 제출을 거부했습니다.
    • Claude Code·Codex·Antigravity 세 호스트에서 이 판을 설치해 실시험하는 것은 하지 않았습니다.

AGS 3.8.2

Choose a tag to compare

@jaeseongs95 jaeseongs95 released this 07 Nov 11:43
99fd589

AGS 3.8.2 릴리스 노트

2026년 11월 7일 공개한 AGS 3.8.2는 3.8.1의 하위 에이전트 단계 확인을 실행 주체 기준으로 다시 고친 수정판입니다. 데이터·공개 API 계약은 바꾸지 않으며 이관 작업은 필요 없습니다.

고친 결함

  • AGS3-D-0061: 턴 끝 단계 확인을 세션 단위로만 판정해, 하위 에이전트가 만든 workflow의 남은 단계가 그 하위 에이전트에게 안내되지 않았습니다. 판정도 일부 호스트의 하위 에이전트 표지에만 기대고 있었습니다.
    • 단계 확인은 일을 한 실행 주체(메인 또는 각 하위 에이전트)의 것입니다. 하위 에이전트의 편집과 그 하위 에이전트가 시작하거나 연 workflow는 그 하위 에이전트가 끝날 때 확인하고, 부모의 Stop에서는 확인하지 않습니다.
    • Claude Code와 Codex는 하위 에이전트가 끝날 때 SubagentStop(agent_id)을 보냅니다. 이것을 그 하위 에이전트의 턴 끝으로 보고, 두 호스트 플러그인 모두 SubagentStop 훅을 새로 등록합니다(Claude Code 2.1.316, Codex 0.166.0 실측).
    • Antigravity는 하위 에이전트의 훅과 그 턴 끝 Stop이 하위 에이전트 자기 대화 ID로 들어옵니다(agy 1.5.3 실측). 하위 에이전트가 AGS 도구를 한 번 부르면 그 대화를 부모 세션의 하위 에이전트로 기록하고, 이후 그 대화의 편집과 턴 끝을 그 하위 에이전트의 것으로 판정합니다.
  • AGS3-D-0063(3.8.1 회귀): 하위 에이전트가 직접 시작하거나 연 workflow 안의 편집이 범위 밖으로 세어져 세 번째 제품 파일부터 거부되던 문제를 고쳤습니다. 편집 관문은 다시 세션의 모든 결속 workflow를 봅니다.

알려진 제한

  • Antigravity 하위 에이전트가 AGS 도구를 한 번도 부르지 않았으면 그 대화는 독립 세션으로 판정됩니다. workflow 없는 제품 파일 편집은 거부 안내가 나오며, 안내대로 workflow를 시작하면 그때부터 하위 에이전트로 판정됩니다.

AGS 3.8.1

Choose a tag to compare

@jaeseongs95 jaeseongs95 released this 07 Nov 11:08
5c9c327

AGS 3.8.1 릴리스 노트

2026년 11월 7일 공개한 AGS 3.8.1은 3.8.0의 긴급 결함 하나를 고친 수정판입니다. 데이터·공개 API 계약은 바꾸지 않으며 이관 작업은 필요 없습니다.

고친 결함

  • AGS3-D-0060: 하위 에이전트(서브에이전트)가 한 일이 부모 세션의 턴 끝 단계 확인에 부모의 일로 잡혔습니다. 그래서 백그라운드 하위 에이전트를 기다리기만 하는 부모 세션이 Stop마다 「멈추지 말고 남은 작업을 이어서 하라」는 안내로 다시 깨어나 할 일 없는 턴을 반복했고, 안내에는 하위 에이전트가 연 workflow도 섞였습니다.
    • 턴 끝 단계 확인은 그 세션이 직접 한 편집에만 반응합니다.
    • 하위 에이전트가 시작하거나 연 workflow는 부모 세션의 단계 확인 목록에 나오지 않습니다. 결속은 그대로라 하위 에이전트가 그 범위 안에서 하는 편집은 편집 관문을 통과합니다.
    • 하위 에이전트의 편집은 이전처럼 편집 관문(workflow 없는 제품 파일 편집 거부, 파일 수 상한)을 그대로 거칩니다.

알려진 제한

  • 호스트가 도구 호출마다 하위 에이전트를 알려 주는 Claude Code와 Codex에 적용됩니다. Antigravity는 아직 도구 호출에서 하위 에이전트를 구분할 근거를 받지 못해 같은 증상이 남을 수 있습니다.

AGS 3.8.0

Choose a tag to compare

@jaeseongs95 jaeseongs95 released this 07 Nov 07:57
a32badf

정정된 상세 릴리스 노트

AGS 3.8.0 릴리스 노트

2026년 11월 7일 공개한 AGS 3.8.0은 압축·재개 후 작업을 이어 가는 현재 메모리를 개편하고, 스킬 선택·위임·검증 안내와 기존 결함을 개선한 버전입니다.

릴리스 소스는 a32badf30c3890ecb9cd1f82a15efa051a1e261b입니다. 이 문서는 해당 버전의 안내를 정정한 것으로, 배포 파일이나 태그를 교체하지 않습니다.

업그레이드 전 확인

이번 버전은 데이터와 공개 API 계약을 변경합니다. 설치 전에 3.8.0 데이터 이관 가이드를 읽고, AGS 데이터를 쓰는 MCP 서버·hook·relay를 중지한 뒤 백업과 이관을 진행하세요. 호스트별 설치 방법은 설치 안내를 따릅니다.

  • continuity SQLite 스키마는 4입니다. 기존 current가 새 제한을 넘으면, 의미를 보존해 줄인 내용을 담은 mapping이 필요합니다. 원문을 자동으로 자르거나 비워서 이관하지 않습니다.
  • 백업은 WAL의 변경까지 포함해야 합니다. 이관에 실패하면 원인을 해결한 뒤 다시 진행하고, 구버전으로 돌아갈 때는 이전 버전과 그 버전에 맞는 백업을 함께 복구하세요.
  • checkpoint_context와 purge_direct_context의 expectedRevision은 expectedStateToken으로 바뀝니다. 기존 API 연동도 수정해야 합니다. load_context가 반환한 stateToken을 그대로 사용하세요. workflow의 revision 계약은 이 변경과 별개입니다.

현재 메모리 개편

현재 메모리는 대화 기록을 모으는 공간이 아니라, 압축·재개 뒤 작업을 이어 갈 핵심 상태입니다. 에이전트는 목표·제약·진행 상황이 바뀔 때 내용을 갱신하며, 완료 이력과 중복 정보를 계속 쌓지 않습니다.

  • status, core, evidenceRefs를 합친 JSON의 UTF-8 크기 상한은 2000 byte입니다. 상한을 채우는 것이 목표는 아닙니다.
  • 현재 내용과 이전 내용을 continuity_current_memory, continuity_memory_history로 나눕니다. 갱신 시 이전 내용의 보관과 현재 내용의 교체는 하나의 트랜잭션으로 처리합니다.
  • 이전 내용은 AGS 도구·hook·복원 경로에 노출하지 않습니다. 같은 OS 사용자가 파일을 직접 읽는 권한까지 격리한 것은 아닙니다.
  • 기존 hook은 압축·재개 시 현재 메모리를 주입하고, 사용자 교정이나 작업 상황 변경 시 갱신을 안내합니다. hook 출력만으로 모델이 내용을 따랐다고 판정하지 않습니다.

스킬과 협업 안내

  • 독립적으로 맡길 수 있는 일을 구분하고, 위임 여부를 검토하도록 공통 안내를 보완했습니다. 위임 시 목표·범위·금지 구역·쓰기 소유·검증 기준을 전달하도록 안내합니다.
  • 하위 에이전트의 결과·기록·잘못은 생성한 부모가 확인하고 정정할 책임이 있음을 명시했습니다.
  • 세션 현황판에 선택 필드 role을 추가했습니다. 사용자가 맡긴 역할을 기록하고, 역할 밖 요청은 담당 세션에 전달하도록 안내합니다. 역할 표시는 권한이나 잠금이 아닙니다.
  • 단계 확인 알림에 runId와 rootId를 포함해, 진행 중인 workflow를 다시 찾을 수 있게 했습니다.
  • 작업 전에 검증 사례를 정하고, 사용자의 실제 진입점에서 확인하며, 막힌 단계와 계속할 수 있는 일을 구분하도록 안내를 보완했습니다.
  • 범용 스킬의 표현이 특정 분야에 불필요하게 묶이지 않도록 문구와 검사를 개선했습니다.
  • 포함 스킬은 25개입니다. codex-token-usage-analyzer를 제거했습니다. model-effort-advisor는 하위 에이전트를 호출하기 전에 모델·추론 수준을 선택하는 역할로 바뀌었으며, 현재 메인 모델을 관측하는 기능을 전제로 하지 않습니다.

Windows 범위 검사 성능

변경 범위 검사에서 파일마다 Git 프로세스를 실행하던 경로를 일괄 조회로 바꿨습니다. 파일 내용 해시와 기존 자원 상한을 유지하면서 프로세스 생성 비용을 줄입니다.

TEST의 동일 사례에서 파일 수가 8개에서 80개로 늘 때 Git 프로세스 수가 기존 13→85개에서 7→7개로 바뀌었습니다. Windows 80파일 사례의 관측 시간은 약 7.1초에서 0.7초로 줄었습니다. 이 시간은 해당 시험 환경의 관측값이며 모든 환경의 성능을 보장하지 않습니다.

호스트별 범위와 알려진 한계

  • Codex와 Claude Code는 SubagentStart를 통한 시작 안내를 지원합니다. Antigravity 네이티브 앱에는 해당 이벤트가 없어 이 시작 안내를 지원하지 않습니다. 이를 Antigravity의 모든 AGS 기능이 미지원이라는 뜻으로 해석하지 않습니다.
  • hook이 읽은 현재 메모리를 전달하더라도, 이후 상태 변경이나 호스트 중단까지 포함해 정확히 한 번 전달되거나 첫 행동 시점까지 최신이라고 보장하지 않습니다.
  • 과거 native 시험의 실패와 Antigravity의 직접 관측 한계는 남아 있습니다. 안내 출력·정적 검사·일부 시험의 통과를 모든 호스트의 실제 행동 성공으로 확대하지 않습니다.
  • 내부 wake 표식의 UI 노출·반복 회차 개선은 이번 버전에 포함하지 않았습니다. 남아 있는 모든 결함을 해결한 버전이라고 선언하지 않습니다.

검증 근거

  • 릴리스 소스 a32badf30c3890ecb9cd1f82a15efa051a1e261b의 CI 42352810552는 Linux·Windows에서 성공했습니다.
  • main 반영 후 같은 소스의 CI 42353422373와 패키지 생성 42353421247도 성공했습니다.
  • TEST와 실제 Codex·Claude Code·Antigravity 시험 및 변경분 독립 감사 결과를 릴리스 판단에 사용했습니다. 이전 후보의 결과는 그 후보의 근거로 보존하며, 최종 소스에서 모든 시험 파일을 한 번에 통과했다는 뜻은 아닙니다.

변경 파일과 개별 커밋은 3.7.0에서 3.8.0까지의 비교에서 확인할 수 있습니다.

AGS 3.7.0

Choose a tag to compare

@jaeseongs95 jaeseongs95 released this 06 Nov 14:49
36265b7

AGS 3.7.0 릴리스 노트

3.7.0은 사람이 보고 쓰는 결과물의 UI/UX 설계·점검을 맡는 전문 스킬 ui-ux-design을 더하고, 한국어·영어 README를 설치·턴별 동작·한계 중심으로 다시 썼다. 사용자 원문은 「이 브랜치 봐보고 문제 없으면 메인에 반영해줘.」(브랜치 codex/ui-ux-specialist-20261106), 「UI/UX 설계 스킬 릴리즈해.」다.

호환성:

  • 전문 스킬이 23개에서 24개가 됐다. skills/registry.json, skills/source-lock.json, scripts/fixtures/registry-contract.3.0.json에 ui-ux-design 0.1.0이 늘었다.
  • MCP 서버·hook 실행 코드는 3.6.0과 같다. 바뀐 것은 판 번호 문자열뿐이다(mcp-server/src/plugin-info.ts).
  • 이전 판의 3.7.0·3.8.0 계획(상주 서비스, PostgreSQL 저장소)은 3.8.0·3.9.0으로 옮긴다. 4.0.0 계획은 그대로다.

새 전문 스킬 ui-ux-design

  • 사람이 보고 이해하고 행동하는 결과물(화면, 인쇄·광고, 영상, 공간·안내물, 제품, 서비스 절차, 문서·양식)의 사용자 흐름·정보 계층·행동 유도·접근성·예외 상황을 설계하거나 점검한다. 결과물이 대상 사용자에게 통하는지(첫인상·이해·행동·예외·접근성)를 먼저 확인하고, 컴포넌트·반응형·비동기 상태·대량 목록 같은 화면 전용 기준은 「화면일 때」 항목으로 둔다.
  • 입력·출력 계약은 ui-ux-design-request.v1, ui-ux-design-report.v1 schema다. 스킬 descriptor, classification, 참고 자료(설계 절차, 출력 계약, AGS 역할 경계)를 함께 둔다.
  • Claude(한·영), Codex(한·영), agy 패키지에 같은 스킬이 들어간다.
  • 스킬 문맥 최적화 검사(scripts/check-skill-context-optimization.mjs)는 고정된 26개 스킬 snapshot에 이 스킬을 넣지 않고 POST_SNAPSHOT_SPECIALISTS로 따로 둔다. snapshot 이후에 생긴 스킬이기 때문이다.

적용 범위 수정: 화면 밖 결과물 (AGS3-D-0037)

  • 첫 후보의 description·본문·참고 자료·classification targets·descriptor preconditions가 대상을 웹·데스크톱·모바일 화면으로 한정해, 광고·영상·안내물·양식·제품·서비스 절차의 사용자 경험 설계·점검에는 선택되지 않았다. 사용자 원문: 「UI/UX가 꼭 컴퓨터 작업에만 쓰이겠냐? 광고는 그럼?」
  • 위 다섯 곳을 매체 무관으로 고쳤다. 스킬 이름, capability, schema 이름과 필수 필드는 그대로다. request surface에 print·video·physical-space·physical-product·service-process·document·multi-channel을, report check kind에 audience를 더했다(기존 값은 그대로 유효).
  • tests/ui-ux-design에 선택돼야 하는 요청 7건(쇼츠 구성, 신문 광고, 매장 안내판, 종이 신청서, 제품 조작부, 민원 절차, 웹 결제 화면)과 선택되면 안 되는 요청 3건(순수 백엔드, 일반 질의, 이미지 한 장 생성), 대상 사용자 확인 기준·계약 사례를 먼저 넣었다. 수정 전 후보에서 45건 중 11건 실패, 수정 후 45건 통과. 이 시험은 선택 문구와 계약의 결속을 확인하며, 실제 모델의 스킬 선택은 평가하지 않았다.

README 개편

  • README.md, README.en.md, codex-plugin-en/README.md를 설치, 턴마다 하는 일, 구성 요소, 전문 스킬 표(출처·버전·하는 일), 한계, 문제 해결 순서로 다시 썼다.

시험 도구 수정: 스킬 문맥 최적화 검사의 git 호출 축소 (AGS3-D-0033)

  • 첫 후보 4849bdd4의 Windows 시험 서버(논리 CPU 2개) pnpm test:server에서 tests/tooling/skill-context-optimization.test.mjs > 'does not read executable script history'가 30초 한도를 넘었다(34,631ms). 검사 한 번이 git 프로세스를 278개(show 199, diff 55, ls-files 23, ls-tree 1) 띄워 부하에 따라 한도를 넘는 시험이었다. 한도는 올리지 않았다.
  • scripts/check-skill-context-optimization.mjs가 고정 커밋의 과거 파일을 리비전마다 git ls-tree -r -z 한 번과 git cat-file --batch 한 번으로 읽고, 커밋 쌍마다 git diff --name-only --no-renames -z 결과 하나를 재사용한다. 목록에 없는 경로(그 리비전에 없는 파일, 실행 스크립트)는 예전처럼 git show로 읽어 git 원래 오류를 낸다.
  • 검사 한 번의 git 프로세스: 278 → 83. 검사 JSON 출력은 변경 전후 sha256이 같다(925e9d0e…7fb4).
  • 'does not read executable script history' 시험이 cat-file 배치 입력의 실행 스크립트 경로도 센다. 실행 스크립트 제외를 망가뜨린 사본에서는 Linux·Windows CI 모두 이 시험만 실패했다(run 42158351426), 수정본은 통과했다(run 42158355448). 정규 CI(AGS_TEST_SCOPE=ci)는 이 시험 파일을 실행하지 않아 확인용 브랜치에서 따로 돌렸다.

검증

후보 커밋은 1cd5f20b(판 번호·릴리스 노트 초안 4849bdd4 + AGS3-D-0033 수정 efffea18 + AGS3-D-0037 검증 사례 b134025e·수정 1cd5f20b)이다. 3.6.0(c6f76414)부터 이 후보까지 mcp-server/src, mcp-server/dist의 서버 코드, hooks는 판 번호 문자열 말고 바뀌지 않았다.

  • CI(run 42166484117, head 1cd5f20b): Node 24 / ubuntu-latest, Node 24 / windows-latest 모두 success. 직전 후보 efffea18은 run 42157205064 success.
  • Linux 시험 서버 pnpm test:server(Node v24.22.1, 1cd5f20b): vitest 시험 파일 288 passed·1 skipped(289), 시험 4199 passed·15 skipped·8 todo(4222). node:test 546/546 pass. runtime ready(스킬 CLI 34개). 종료 코드 0. 'does not read executable script history' 1,041ms.
  • Windows 시험 서버 pnpm test:server(Node v24.22.2, 논리 CPU 2개, 1cd5f20b, r03): vitest 시험 파일 287 passed·2 skipped(289), 시험 4186 passed·28 skipped·8 todo(4222). node:test 545 pass·1 skipped(546)·fail 0. 설치 준비·빌드·시험·runtime 검사의 종료 코드 모두 0. 직전 후보 efffea18의 'does not read executable script history'는 5,612ms(첫 후보 34,631ms).
  • 로컬: node scripts/sync-release-metadata.mjs 일치, node scripts/build-en-packages.mjs --check fresh, node scripts/check-skill-context-optimization.mjs 종료 코드 0.

이번에 고치지 않은 것

  • 열린 결함은 운영 장부 프로젝트 AGS3에 있다. 이번 판 작업 중 새로 등록한 것은 AGS3-D-0029(session-board 참고 문서가 없앤 _sessionBinding 훅 방식을 설명함), AGS3-D-0030(세션이 자기 역할을 인지하고 담당 세션에 맡기도록 이끄는 장치가 없음), AGS3-D-0031(대상을 닫거나 없애기 전에 그 목적이 이미 이뤄졌는지 확인하도록 이끄는 장치가 없음), AGS3-D-0032(공통 접수 기준이 길고 중복돼 문맥을 낭비함), AGS3-D-0033(위 시험 시간 초과, 이번 판에서 수정), AGS3-D-0034(외부 원인으로 한 단계가 막히면 작업 전체를 멈춤), AGS3-D-0035(바꾼 동작을 실제 사용 경로·대상 환경에서 확인하지 않음), AGS3-D-0036(작업 전에 검증 사례를 먼저 정하는 단계가 없음)이다. 같은 원인·수정 위치인 D-0003·D-0030은 D-0002로, D-0034·D-0035는 D-0031로 합쳤다.
  • ui-ux-design의 실제 설계 품질과 실제 모델의 선택 여부(화면 밖 매체 포함)는 평가하지 않았다. 계약·등록·schema·선택 문구 결속 시험만 있다.