8.8 KiB
| test_env | test_profile | domain | verification_type | last_rule_updated_at |
|---|---|---|---|---|
| dev | node-smoke | node | smoke | 2026-07-04 |
node-smoke dev 테스트
읽기 조건
apps/node/**변경 또는 node 실행, adapter, transport, router, store dev 검증 판단이 필요한 경우
적용 범위
apps/node/cmd/node/**apps/node/internal/bootstrap/**apps/node/internal/node/**apps/node/internal/runtime/**apps/node/internal/router/**apps/node/internal/transport/**apps/node/internal/adapters/**apps/node/internal/store/**
분류
- domain: node
- verification_type: smoke
- scope: node 실행 파이프라인과 edge 연결 baseline
환경
- host: local checkout. dev host, external CLI profile, shared Edge runtime evidence가 필요하면 원격 runner를 사용한다.
- port: dev Edge-Node TCP transport
19003 - runtime: Go
1.24 - package manager: Go modules / Makefile
- docker: unit/smoke quick check는 Docker를 요구하지 않는다. compose dev 검증은
docker compose --env-file .env.dev.example ...로 수행한다. - external service: dev Edge runtime 주소 후보
toki-labs.com:19003 - model endpoint: dev OpenAI-compatible base URL 후보
http://toki-labs.com:18083/v1 - credential: token/secret 원문은 문서에 기록하지 않는다.
dev-runtime Node 접속 기준
dev-runtime의 실제 3-node 연결을 점검할 때는 원격 runner ssh toki@toki-labs.com의 /Users/toki/agent-work/iop-dev checkout과 build/dev-runtime/edge.yaml을 기준으로 한다. Node는 dev-runtime provider pool 기준에서 Edge-Node TCP toki-labs.com:18084로 붙는다.
- mac CLI + MLX provider node:
mac-codex-node/mac-codex- SSH/user:
ssh toki@toki-labs.com - 목적:
cliadapter,codex app-server+mac-mlx-vllmprovider resource - workspace:
/Users/toki/agent-work/iop-workspace/nomadcode - MLX vLLM provider:
mac-mlx-vllm- provider endpoint:
http://127.0.0.1:8002/v1 - served model:
mlx-community/Qwen3.6-35B-A3B-4bit - capacity baseline:
2 - priority baseline:
2 - workdir:
/Users/toki/agent-work/iop-mlx-vllm - runtime baseline:
vllm-mlx,--max-num-seqs 2,--max-kv-size 262144,--max-request-tokens 262144,--use-paged-cache --paged-cache-block-size 64 --max-cache-blocks 4096,--tool-call-parser qwen,--reasoning-parser qwen3,default_chat_template_kwargs.enable_thinking=true - KV policy: per-call window bound
262144, one full context-size setting - long-context admission baseline:
total_context_tokens=262144,long_context_capacity=1(KV budget262144fits one full 262144-window request; long slot count is not the normal capacity2)
- provider endpoint:
- SSH/user:
- GX10 vLLM node:
gx10-vllm-node/gx10-vllm- SSH/user:
ssh toki@192.168.0.91 - provider endpoint:
http://192.168.0.91:8001/v1 - served model:
nvidia/Qwen3.6-35B-A3B-NVFP4 - capacity baseline:
4 - priority baseline:
0 - runtime baseline:
vllm,--max-model-len 262144,--max-num-seqs 4,--gpu-memory-utilization 0.30,--reasoning-parser qwen3,default_chat_template_kwargs.enable_thinking=true - agent/tool-call note: tracked GX10 runtime evidence has not yet fixed a Qwen tool-call parser/template option; before using this provider for Pi/Cline-style agent tools, validate
tools[]non-stream/stream responses and then record the chosen--tool-call-parser/--chat-templatevalues inagent-test/dev/inventory.yaml. - long-context admission baseline:
total_context_tokens=262144,long_context_capacity=1(conservative;max-model-len 262144until runtime evidence proves a larger concurrent long-context budget) - workspace:
/home/toki/iop-gx10-vllm
- SSH/user:
- OneXPlayer Lemonade node:
onexplayer-lemonade-node/onexplayer-lemonade- SSH/user:
ssh r0bin@192.168.0.59 - 접속 기준: 현재 작업 호스트에서 직접 SSH
- provider endpoint:
http://192.168.0.59:13305/v1 - served model:
Qwen3.6-35B-A3B-MTP-GGUF - capacity baseline:
3 - priority baseline:
1 - load baseline: backend
vulkan, ctx size524288,llamacpp_args="--spec-type none -np 3 -cb -fa on -b 4096 -ub 1024",save_options=true - long-context admission baseline:
total_context_tokens=524288,long_context_capacity=2(SDD D04 fixed;ctx_size=524288,-np 3유지,ctx_size를524288초과로 키우지 않는다) - workspace:
C:/Users/r0bin/iop-field
- SSH/user:
OneXPlayer Lemonade는 Qwen3.6-35B-A3B-MTP-GGUF artifact를 사용하되 runtime MTP speculative decoding은 끈 상태를 dev 기준으로 삼는다. Node 검증 전 /v1/load의 recipe_options가 model_name=Qwen3.6-35B-A3B-MTP-GGUF, Vulkan, ctx_size=524288, --spec-type none -np 3 -cb -fa on -b 4096 -ub 1024를 포함하는지 확인한다. backend /slots에서는 총 ctx 524288이 slot 3개로 나뉘어 2026-07-04 기준 slot별 n_ctx=174848로 보인다.
GX10은 Linux/ARM64 bootstrap, OneXPlayer는 Windows native PowerShell bootstrap을 기본으로 한다. OneXPlayer는 현재 작업 호스트에서 직접 접속해 세팅하며, 원격 runner나 Edge host에서 node-onexplayer-lemonade.yaml로 proxy 실행하지 않는다.
mac-mlx-vllm provider는 mac-codex-node 소속 resource로, Edge host와 같은 macOS host에서 vllm-mlx process로 실행한다. vllm-mlx API는 외부에 직접 노출하지 않고 127.0.0.1:8002에 bind하며, Edge의 OpenAI-compatible adapter가 local bearer header로 호출한다. 운영 확인은 /Users/toki/agent-work/iop-mlx-vllm/vllm-mlx.pid, logs/vllm-mlx.stdout.log, logs/vllm-mlx.stderr.log를 기준으로 한다. Docker와 macOS 여유 메모리를 고려해 capacity는 2를 기본선으로 유지한다.
OneXPlayer에서 SSH 세션 안의 Start-Process로 iop-node.exe를 띄우면 SSH 세션 종료와 함께 process가 정리될 수 있다. dev 반복 배포에서는 Win32_Process.Create 또는 동등한 세션 독립 실행 방식으로 C:/Users/r0bin/iop-field에서 iop-node.exe --config node.yaml serve를 시작하고, WMI/process query와 iop-node.log의 connected to edge 로그로 유지 여부를 확인한다.
Qwen provider를 agent/tool-call 용도로 검증할 때는 일반 chat smoke와 별도로 forced tool call, auto tool call, streaming delta.tool_calls, multi-turn tool result 후 최종 답변을 확인한다. raw native marker나 reasoning text가 assistant content로 새면 해당 model/runtime의 parser/template profile 미확정으로 보고한다.
명령
- setup:
- lint:
- unit:
go test ./apps/node/... - smoke:
./scripts/e2e-smoke.sh는 기본 포트 임시 설정을 쓰는 보조 smoke이므로 dev 포트 override 필요 여부를 먼저 확인한다. - e2e:
make test-e2e - model:
- full-cycle: repo 내부 edge-node 진단과 사용자 실행 cycle 수동 검증
필수 검증
- 변경한 node 패키지 또는
go test ./apps/node/...를 실행한다. - 실행 요청, stream, cancel, status, session, adapter registry 경로를 바꾼 경우 repo 내부 edge-node 진단과 full-cycle 실제 구동 기준을 함께 적용한다.
- CLI profile 변경 시
/capabilities,/transport,/sessions, persistent profile이면/terminate-session을 확인한다. - dev Edge runtime으로 연결하는 경우 Node가
19003을 사용하고 local/test19090field baseline으로 붙지 않는지 확인한다.
보조 검증
./scripts/e2e-smoke.sh는 mock adapter 기반 보조 smoke로 사용한다.make test-e2e는 보조 smoke이며 full-cycle 실제 구동을 대체하지 않는다.
판정 기준
- node 등록 후 edge console에서 node가 조회된다.
- 같은 session에서 메시지 2회가 start, 기대 payload를 포함한
[node-*-message], 같은 run의 complete 순서로 edge 화면에 도착한다. - node 로컬
[node-message]payload 라인 목록과 edge[node-*-message]payload 라인 목록이 run별로 내용/순서까지 동일해야 한다. - edge complete는 같은 run의 마지막
[node-*-message]이후에만 정상이다. - command 결과가
[node-*-<command>]또는 명확한 성공/unsupported/error 출력으로 edge 화면에 표시된다.
기준 출력 예시
edge> /nodes
edge> Convert token iop_manual_one and reply only with converted token
[node-*-event] start
[node-*-message] IOP_MANUAL_ONE_OK
[node-*-event] complete
차단 기준
- dev host 또는 Edge-Node TCP port 접근이 불가능하다.
- 외부 CLI profile 검증에 필요한 CLI 설치, 계정, provider 상태가 없다.
보고 항목
- 실행한 명령:
- 성공한 검증:
- 실패/차단된 검증:
- 생략 사유:
- 남은 위험:
금지 사항
- 사용자 실행 파이프라인 변경을 unit test만으로 완료 처리하지 않는다.
proto/gen/iop/*.pb.go생성 파일을 직접 수정하지 않는다.- secret, token, 개인 endpoint 원문은 tracked 파일에 기록하지 않는다.