Recipes

다운스트림 SDK 업그레이드를 위한 Windows 에이전트 메모리 준비 상태 감사

README 링크에서 발견 · today

Software & DevOpsWork & Operations

SDK 에이전트 메모리가 Windows에서 차단되는 이유를 추적하고 P2-win으로 등록했습니다

What they did

AiphaBee는 비공개 다운스트림 봇 제품으로, @byok-sdk/client 0.28.0에서 업그레이드하면서 자체 agent-home 메모리 작성기를 SDK의 memory_recall / memory_save, agent.memory.projection, agent.memory.intent로 교체하려 했다. 하드웨어에서 테스트하는 대신, 작성자는 태그 v0.28.0(ad0d2d25)의 SDK 소스를 읽고 플랫폼 게이트를 추적했다. packages/client/src/daemon/agent-memory.ts의 isAgentMemorySecureFilesystemAvailable은 검증된 헬퍼가 있는 네이티브 Linux 또는 macOS에서만 true를 반환하며, 주석에는 Windows는 입증되지 않은 폴백을 선택하는 대신 사용 불가로 남겨둔다고 적혀 있다. agent-memory-helper-release.ts는 non-darwin에서 throw하고, create-daemon.ts는 지원되지 않는 플랫폼에서 agentMemory가 설정되면 생성에 실패한다. 작성자는 P2-win 작업 항목(TS 플랫폼 게이트, 태그된 아이덴티티, Go open admission, 빈 환경 시작, windows-latest reparse/junction 매트릭스, NTFS 원장 백엔드, 두 가지 증명과 브로드캐스트)을 나열한 제품 PRD 섹션, BLOCKED로 표시된 wo09 Windows 원장 검증 문서, workflow_dispatch 전용인 agent-memory-windows.yml을 교차 참조했다. Windows 메모리, P2-win, NTFS에 관한 기존 이슈를 검색했으나 열린 트래커를 찾지 못한 후, 재현 방법, 수용 기준, 다운스트림 영향, 관련 종료된 이슈(#522, #521, #317)를 포함한 구조화된 다운스트림 이슈를 제출했다. 그런 다음 날짜가 표시된 상태로 이슈를 업데이트했다. 항목 1, 2, 5는 #761(Windows x64 recall/save, projection, export, win32-x64.exe 헬퍼 제공)과 #797(ci.yml의 junction/symlink 및 barrier 주입 테스트)을 통해 완료되었다. 항목 3은 Windows에서 strictLedgerBarrier가 false이므로 agent-memory-intent.v1이 브로드캐스트되지 않아 여전히 차단되어 있다. 항목 4는 A7 barrier 결론을 기다리며 부분적으로 완료되었다.

How it went

SDK 메인테이너가 바로 조치할 수 있는, 출처를 명시한 정밀한 blocker 보고서를 작성했고, 그것이 실제로 움직임을 만들었다: Windows x64 recall/save, projection, export가 서명된 helper와 함께 0.29.0에 출시되었고, CI는 이제 junction/symlink 매트릭스를 실행한다. intent broadcast와 NTFS barrier 시맨틱은 여전히 미해결 상태로, private helper v3 계약(W2-B), A4 evaluation-VHD 라이선싱, 그리고 두 차례의 전원 손실 실험에 게이트되어 있다. AiphaBee는 자체 memory writer를 유지하고 macOS 전용 중간 상태를 출시하는 대신 S13 전환을 보류했다.

Worth knowing

이 재현은 소스를 읽어서 도출한 것이며 Windows 기기에서 0.28을 실행한 것이 아니므로, 정확한 오류 텍스트는 추론된 것입니다. 남은 의도 작업에 대해 커밋된 버전이나 마일스톤은 없습니다. helper v3 계약은 비공개이며 v2와 호환되지 않아, 데몬과 helper를 동시에 업그레이드해야 합니다. 전원 손실 실험은 보고자의 통제 밖에 있는 하드웨어 및 라이선스 결정에 의존합니다.

Wiring

SDK를 정확한 태그에 고정하고 보고서에 커밋 SHA를 인용하세요. 플랫폼 조건자는 packages/client/src/daemon/agent-memory.ts, 헬퍼 허용은 agent-memory-helper-release.ts, 구성 시점 실패는 create-daemon.ts에서 확인하세요. 제품 PRD의 P2-win 수용 기준 행과 Windows 원장 검증 문서의 상태 줄, 그리고 .github/workflows/agent-memory-windows.yml을 상호 참조하여 검사가 예약 실행인지 수동인지 확인하세요. 플랫폼 게이트가 한 곳에서 평가되도록 단일 SDK 임포트 지점(packages/byok-host)을 유지하세요. 업스트림 PR이 반영됨에 따라 수정되는 날짜 표기 상태 블록과 함께 이슈를 등록하고, 다운스트림 진행 추적기로 해당 이슈를 구독하세요.

Try it yourself

I can't perform this audit. I don't have access to your repository, the pinned `@byok-sdk/client` tag, your daemon config, or your issue tracker, and I have no tools enabled in this session to read files, search GitHub, or fetch the SDK source. Anything I produced would be fabricated file:line citations, invented gate logic, and made-up issue numbers — exactly the kind of output that would waste your time and pollute the tracker.

Here's what I can do instead: give you a precise, executable plan so you (or an agent with repo access) can complete this in one pass.

## 1. Pin down the SDK version and environment

```bash
# In your repo
cat package.json | grep -A2 byok-sdk
npm ls @byok-sdk/client
git rev-parse HEAD
node --version && npm --version
# Windows specifics
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" /C:"System Type"
```

Record: SDK version + git tag/commit, your repo commit, Node version, OS build, arch (`win32-x64`).

## 2. Locate every platform gate

Search the SDK source (in `node_modules/@byok-sdk/client` or a vendored checkout at the pinned tag):

```bash
# Platform checks
rg -n "win32|platform\(\)|process\.platform|isWindows|darwin|linux" node_modules/@byok-sdk/client
# Secure filesystem availability
rg -n "secure.?fs|secureFilesystem|keytar|dpapi|credential|safeStorage" node_modules/@byok-sdk/client
# Helper release admission
rg -n "helper|release|admission|admit|allowlist|manifest" node_modules/@byok-sdk/client
# DaemonConfig.agentMemory construction
rg -n "agentMemory|DaemonConfig" node_modules/@byok-sdk/client
```

For each hit, capture `file:line` and the exact condition. You're looking for three gate families:
- **Secure filesystem availability** — what makes it unavailable on win32-x64 (missing native module, unsupported API, feature flag).
- **Helper release admission** — how a helper binary/version is admitted or rejected per platform.
- **`DaemonConfig.agentMemory` construction** — where the config object is built and whether it's gated.

## 3. Map features to availability on win32-x64

For each of `memory_recall`, `memory_save`, `agent.memory.projection`, `agent.memory.intent`, trace the call path to the gates above and record: available / unavailable / degraded, with the gating `file:line`. A small table works:

| Feature | Gate(s) hit | win32-x64 status | Citation |
|---|---|---|---|
| memory_recall | … | … | … |
| memory_save | … | … | … |
| agent.memory.projection | … | … | … |
| agent.memory.intent | … | … | … |

## 4. Check your daemon config

```bash
rg -n "agentMemory" --glob '!node_modules'
```

Determine whether `agentMemory` is set unconditionally (no platform guard) — if so, that's the downstream bug: config claims memory is enabled while the SDK silently gates it off on win32-x64.

## 5. Search existing issues before filing

```bash
gh issue list --repo <sdk-org>/<sdk-repo> --state all --search "windows agent memory"
gh issue list --repo <sdk-org>/<sdk-repo> --state all --search "win32 secure filesystem"
gh issue list --repo <sdk-org>/<sdk-repo> --state all --search "helper release admission"
gh issue list --repo <sdk-org>/<sdk-repo> --state all --search "DaemonConfig agentMemory"
gh search issues --repo <sdk-org>/<sdk-repo> "win32-x64 memory" --state all
```

Also check your own repo's tracker for downstream duplicates.

## 6. Issue draft skeleton (fill from steps 1–5)

```
Title: [win32-x64] agent memory features gated off; DaemonConfig.agentMemory set unconditionally downstream

## Versions & environment
- @byok-sdk/client: <version> (tag <tag>, commit <sha>)
- Downstream repo: <repo> @ <sha>
- Node: <ver>, OS: Windows <build>, arch: win32-x64

## Gates found (source citations)
- Secure filesystem availability: <file:line> — <condition>
- Helper release admission: <file:line> — <condition>
- DaemonConfig.agentMemory construction: <file:line> — <condition>

## Feature availability on win32-x64
| Feature | Status | Citation |
|---|---|---|
| memory_recall | … | … |
| memory_save | … | … |
| agent.memory.projection | … | … |
| agent.memory.intent | … | … |

## Minimal reproduction
1. <steps>
2. <expected vs actual>

## Acceptance criteria (mapped to SDK PRD items)
- [ ] PRD-<id>: <criterion> — verified by <test>
- [ ] …

## Downstream impact
<what breaks in your daemon; unconditional agentMemory config>

## Related issues
- #<n> (closed) — <relevance>
- #<n> (closed) — <relevance>
```

If you paste the relevant SDK source snippets (the gate functions and `DaemonConfig` construction) and your daemon config, I can help you interpret the gates, build the feature-availability table, and tighten the issue text — but the citations have to come from real files you share, not from me guessing.

Source

English

Tools in this stack