agentlas 0.9.10 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +106 -0
- package/README.md +319 -341
- package/bin/agentlas.cjs +32 -9
- package/engine/agentlas-banner.cjs +24 -3
- package/engine/agentlas-composer.cjs +239 -31
- package/engine/agentlas-config.cjs +103 -7
- package/engine/agentlas-core-harness.cjs +48 -4
- package/engine/agentlas-evolution.cjs +3 -4
- package/engine/agentlas-i18n.cjs +88 -32
- package/engine/agentlas-input.cjs +234 -18
- package/engine/agentlas-memory-governance.cjs +3 -5
- package/engine/agentlas-memory-import.cjs +3 -3
- package/engine/agentlas-native-host.cjs +200 -9
- package/engine/agentlas-onboard.cjs +112 -20
- package/engine/agentlas-permissions.cjs +14 -7
- package/engine/agentlas-sqlite-policy.cjs +34 -0
- package/engine/agentlas-ui.cjs +93 -42
- package/engine/agentlas-workforce.cjs +472 -58
- package/engine/agentlas-workload-routing.cjs +8 -3
- package/engine/agentlas.cjs +140 -12367
- package/engine/agents/files.cjs +61 -0
- package/engine/agents/import-local.cjs +237 -0
- package/engine/agents/registry.cjs +158 -0
- package/engine/agents/router.cjs +565 -0
- package/engine/agents/routes.cjs +43 -0
- package/engine/architecture.data.json +2 -2
- package/engine/automation/daemon.cjs +335 -0
- package/engine/automation/schedule.cjs +181 -0
- package/engine/automation/store.cjs +209 -0
- package/engine/cloud/auth.cjs +279 -0
- package/engine/cloud/hub-client.cjs +239 -0
- package/engine/cloud-assets/cargo.cjs +49 -0
- package/engine/cloud-assets/cas.cjs +235 -0
- package/engine/cloud-assets/commands.cjs +273 -0
- package/engine/cloud-assets/package.cjs +936 -0
- package/engine/cloud-assets/restore.cjs +172 -0
- package/engine/cloud-assets/state.cjs +268 -0
- package/engine/commands/automation.cjs +195 -0
- package/engine/commands/billing.cjs +96 -0
- package/engine/commands/browser.cjs +20 -0
- package/engine/commands/build.cjs +33 -0
- package/engine/commands/call.cjs +24 -0
- package/engine/commands/career-graph.cjs +51 -0
- package/engine/commands/cd.cjs +22 -0
- package/engine/commands/chat.cjs +12 -0
- package/engine/commands/chats.cjs +28 -0
- package/engine/commands/cloud.cjs +17 -0
- package/engine/commands/connect.cjs +20 -0
- package/engine/commands/context.cjs +66 -0
- package/engine/commands/creds.cjs +203 -0
- package/engine/commands/doctor.cjs +68 -0
- package/engine/commands/env.cjs +33 -0
- package/engine/commands/evolve.cjs +23 -0
- package/engine/commands/experience.cjs +34 -0
- package/engine/commands/film.cjs +8 -0
- package/engine/commands/firm.cjs +115 -0
- package/engine/commands/help.cjs +65 -0
- package/engine/commands/hep.cjs +23 -0
- package/engine/commands/import.cjs +35 -0
- package/engine/commands/index.cjs +136 -0
- package/engine/commands/install.cjs +27 -0
- package/engine/commands/journal.cjs +31 -0
- package/engine/commands/legacy-network.cjs +29 -0
- package/engine/commands/list.cjs +49 -0
- package/engine/commands/login.cjs +68 -0
- package/engine/commands/logout.cjs +28 -0
- package/engine/commands/mcp.cjs +91 -0
- package/engine/commands/memory.cjs +21 -0
- package/engine/commands/multimodal.cjs +91 -0
- package/engine/commands/native.cjs +34 -0
- package/engine/commands/netadmin.cjs +31 -0
- package/engine/commands/oberon.cjs +70 -0
- package/engine/commands/ontology.cjs +24 -0
- package/engine/commands/open.cjs +48 -0
- package/engine/commands/plugin.cjs +101 -0
- package/engine/commands/project.cjs +47 -0
- package/engine/commands/research.cjs +36 -0
- package/engine/commands/route.cjs +37 -0
- package/engine/commands/run.cjs +149 -0
- package/engine/commands/search.cjs +55 -0
- package/engine/commands/setup.cjs +45 -0
- package/engine/commands/storm.cjs +75 -0
- package/engine/commands/swarm.cjs +75 -0
- package/engine/commands/telegram.cjs +32 -0
- package/engine/commands/uninstall.cjs +68 -0
- package/engine/commands/update.cjs +54 -0
- package/engine/commands/upload.cjs +18 -0
- package/engine/commands/usage.cjs +35 -0
- package/engine/commands/variant.cjs +25 -0
- package/engine/commands/version.cjs +9 -0
- package/engine/commands/whoami.cjs +38 -0
- package/engine/commands/workforce.cjs +103 -0
- package/engine/core/db.cjs +160 -0
- package/engine/core/paths.cjs +35 -0
- package/engine/experience/build.cjs +181 -0
- package/engine/experience/intents.cjs +492 -0
- package/engine/experience/runtime.cjs +242 -0
- package/engine/experience/variant.cjs +196 -0
- package/engine/firms/orchestrate.cjs +333 -0
- package/engine/hephaestus/runtime.cjs +697 -0
- package/engine/hub/install.cjs +872 -0
- package/engine/hub/plugins.cjs +213 -0
- package/engine/mcp/consent.cjs +289 -0
- package/engine/mcp/contract.cjs +202 -0
- package/engine/mcp/index.cjs +43 -0
- package/engine/mcp/inventory.cjs +322 -0
- package/engine/mcp/plan.cjs +286 -0
- package/engine/mcp/probe.cjs +151 -0
- package/engine/memory-cli/curate.cjs +163 -0
- package/engine/oberon/common.cjs +69 -0
- package/engine/oberon/manifest.cjs +164 -0
- package/engine/oberon/outputs.cjs +70 -0
- package/engine/oberon/render.cjs +164 -0
- package/engine/project/career-graph.cjs +249 -0
- package/engine/project/credentials.cjs +262 -0
- package/engine/project/env-file.cjs +46 -0
- package/engine/project/index.cjs +27 -0
- package/engine/project/memory-context.cjs +453 -0
- package/engine/project/ontology.cjs +467 -0
- package/engine/project/paths.cjs +39 -0
- package/engine/project/seed.cjs +200 -0
- package/engine/project/state.cjs +403 -0
- package/engine/project/super-ontology-seed.json +3288 -0
- package/engine/runtimes/detect.cjs +54 -0
- package/engine/runtimes/overrides.cjs +139 -0
- package/engine/runtimes/resolve.cjs +64 -0
- package/engine/sessions/apply-fences.cjs +188 -0
- package/engine/sessions/fences.cjs +362 -0
- package/engine/sessions/orchestrator.cjs +170 -0
- package/engine/sessions/prompt.cjs +212 -0
- package/engine/sessions/session.cjs +245 -0
- package/engine/sessions/sink.cjs +54 -0
- package/engine/sessions/store.cjs +79 -0
- package/engine/storm/deps.cjs +88 -0
- package/engine/storm/storm.cjs +218 -0
- package/engine/storm/swarm.cjs +422 -0
- package/engine/ui/palette.cjs +105 -0
- package/engine/ui/renderer.cjs +85 -0
- package/engine/ui/repl.cjs +444 -0
- package/engine/workforce/capture.cjs +701 -0
- package/engine/workforce/deps.cjs +472 -0
- package/package.json +2 -6
- package/engine/agentlas-experience-mcp.cjs +0 -1709
- package/engine/agentlas-parity.cjs +0 -1499
- package/engine/agentlas-repl.cjs +0 -1780
package/README.md
CHANGED
|
@@ -9,372 +9,187 @@
|
|
|
9
9
|
╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
Agentlas Terminal is the already-shipped independent terminal product. It is
|
|
18
|
-
not a Desktop `cli/` mirror and does not require the Desktop app to run.
|
|
19
|
-
|
|
20
|
-
> **Current source release candidate (2026-07-26):** `v0.9.10`. A source commit
|
|
21
|
-
> does not prove npm publication. Verify the independently published package
|
|
22
|
-
> before installation with `npm view agentlas version`.
|
|
23
|
-
|
|
24
|
-
Release tags are published to npm through the repository's OIDC trusted
|
|
25
|
-
publisher workflow. The workflow accepts only an exact immutable `vX.Y.Z` tag,
|
|
26
|
-
runs the Core/project-bootstrap contracts and smoke suite, and verifies the
|
|
27
|
-
registry result after publishing. No long-lived npm publish token is stored in
|
|
28
|
-
GitHub.
|
|
29
|
-
|
|
30
|
-
Release history and the source-versus-registry boundary are recorded in
|
|
31
|
-
[CHANGELOG.md](CHANGELOG.md). A published version must always come from its
|
|
32
|
-
exact tag: post-tag `main` changes are the next version and must never be
|
|
33
|
-
republished under an older version number.
|
|
12
|
+
**Agentlas 터미널 CLI** — `npm install -g agentlas` 하나로 깔리고 `agentlas`
|
|
13
|
+
하나로 도는 독립 에이전트 터미널. 설치된 AI 에이전트·팀과 대화하고, 새로 만들고,
|
|
14
|
+
멀티세션으로 굴린다. 데스크탑 앱이 없어도 동작하며, 앱이 깔려 있으면 같은
|
|
15
|
+
SQLite(userData)를 공유해 에이전트·대화·자동화가 양쪽에서 그대로 보인다.
|
|
16
|
+
모델은 당신 것을 쓴다 — Claude Code / Codex / Gemini CLI 구독 또는 BYOK API 키.
|
|
34
17
|
|
|
35
18
|
> **We are Agent Trust. Your agent is not a program. It is an asset. — Agentlas —**
|
|
36
19
|
|
|
37
|
-
Agent Trust
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
runtimes.
|
|
42
|
-
|
|
43
|
-
```sh
|
|
44
|
-
npm install -g agentlas
|
|
45
|
-
agentlas
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Type a task and it auto-routes to the right agent. Your model, your choice:
|
|
49
|
-
Claude Code / Codex / Gemini CLI subscriptions or BYOK API keys.
|
|
50
|
-
|
|
51
|
-
For team, builder, and swarm decomposition, the parent LLM first receives this
|
|
52
|
-
host's privacy-safe **live runtime inventory** and chooses an exact
|
|
53
|
-
`runtimeId`, `exactModelId`, and reasoning effort for every child and final
|
|
54
|
-
synthesis. When both Claude Code and Codex are connected, workers can run in
|
|
55
|
-
parallel across both; a plugin host only exposes the runtimes available in that
|
|
56
|
-
host. Terminal validates that each exact selection is still live, honors
|
|
57
|
-
explicit `/model <id>` and `/effort <level>` pins, and records visible fallback
|
|
58
|
-
reasons if a selected runtime/model disappears. It never derives a new model
|
|
59
|
-
name from task keywords or a fixed role table. Decision receipts contain a task
|
|
60
|
-
hash, not the raw prompt, in the private Agentlas user-data directory.
|
|
61
|
-
Operators can set `AGENTLAS_MODEL_MAX_TIER=economy|balanced|frontier` as a hard
|
|
62
|
-
cost ceiling.
|
|
20
|
+
Agent Trust는 에이전트 패키지를 소유자 범위·이식 가능·검사 가능·복원 가능하게
|
|
21
|
+
다룬다는 **제품 원칙**이다. 금융·법률상 신탁(trust) 서비스를 뜻하지 않는다.
|
|
22
|
+
Agent Cloud는 소유한 패키지를 보관하고, 이 터미널은 그 로컬 실행 사본을 지원
|
|
23
|
+
런타임으로 검증·실행한다.
|
|
63
24
|
|
|
64
25
|
---
|
|
65
26
|
|
|
66
|
-
|
|
67
|
-
`npm install` 하나로 깔리고, `agentlas` 하나로 도는 독립 에이전트 터미널.
|
|
68
|
-
**데스크탑 앱이 없어도 동작한다.**
|
|
27
|
+
## 요구사항
|
|
69
28
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
29
|
+
| 항목 | 내용 |
|
|
30
|
+
| --- | --- |
|
|
31
|
+
| Node | **22+ 권장.** `package.json`의 `engines`는 `>=20`이지만, 런처는 optional 네이티브 의존성 `better-sqlite3` 빌드가 실패하면 Node 22+의 `node:sqlite`로만 폴백한다 (`bin/agentlas.cjs`). 즉 **Node 20은 better-sqlite3 네이티브 빌드가 성공할 때만** 동작한다. |
|
|
32
|
+
| 에이전트 CLI | 실행에는 `claude` · `codex` · `gemini` 중 최소 하나가 PATH에 필요하다. 하나도 없으면 `no_runtime`으로 정직하게 멈춘다(가짜 응답 폴백 없음). |
|
|
33
|
+
| OS | macOS / Linux 검증. Windows는 런처·설치 스크립트가 있으나 미검증. |
|
|
34
|
+
|
|
35
|
+
`kimi` · `grok` · `cursor-agent`는 **탐지만 되고 아직 구동되지 않는다**
|
|
36
|
+
(`engine/runtimes/resolve.cjs`의 `EXECUTABLE_KINDS = claude-code, codex, gemini`).
|
|
37
|
+
`doctor`가 이들을 "감지됨"으로 표시해도 `--runtime`으로 지정하면
|
|
38
|
+
`has no v2 streaming driver yet`으로 거절한다.
|
|
76
39
|
|
|
77
40
|
## 설치
|
|
78
41
|
|
|
79
42
|
```sh
|
|
80
43
|
npm install -g agentlas
|
|
81
44
|
# 또는 이 폴더에서: npm install -g .
|
|
82
|
-
# 또는:
|
|
45
|
+
# 또는: sh install.sh # ~/.local/bin/agentlas 심링크 (sudo 불필요)
|
|
46
|
+
# 또는: sh install.sh --prefix /usr/local/bin
|
|
83
47
|
```
|
|
84
48
|
|
|
85
49
|
Windows(미검증): `powershell -ExecutionPolicy Bypass -File install.ps1`
|
|
86
50
|
|
|
87
|
-
|
|
88
|
-
에이전트 실행에는 claude / codex / gemini 중 하나의 CLI가 필요하다(BYOK API 키도 가능).
|
|
89
|
-
|
|
90
|
-
## 사용
|
|
51
|
+
## 빠른 시작
|
|
91
52
|
|
|
92
53
|
```sh
|
|
93
|
-
agentlas
|
|
94
|
-
agentlas "할 일" # 자동 라우팅 후 1회 실행
|
|
54
|
+
agentlas
|
|
95
55
|
```
|
|
96
56
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
agentlas
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
agentlas chats [n] # 최근 대화 목록
|
|
103
|
-
```
|
|
57
|
+
**1. 첫 실행 마법사** — TTY 첫 실행에서 3단계 온보딩이 뜬다: 언어 → 기본 런타임
|
|
58
|
+
(`auto` 또는 설치된 CLI) → 기본 권한(read/write/full). 결과는 `cli-prefs.json`에
|
|
59
|
+
저장되고, 언제든 `agentlas setup`으로 다시 돌린다. 같은 실행에서 데이터 폴더가
|
|
60
|
+
없으면 데스크탑과 동일한 스키마로 SQLite를 부트스트랩하고 빌트인 에이전트
|
|
61
|
+
(오케스트레이터·PM 소울·메모리 큐레이터 등)를 시드한다.
|
|
104
62
|
|
|
105
|
-
|
|
106
|
-
```sh
|
|
107
|
-
agentlas search "할 일" # Hub에서 에이전트 발견 (hep-search)
|
|
108
|
-
agentlas install <slug> # 공개 Hub 에이전트 설치 (hep-cloud)
|
|
109
|
-
agentlas build "요청" # 에이전트/팀 빌드·수리·패키징 (hep-build)
|
|
110
|
-
agentlas upload <경로> # 내 Agent Cloud에 비공개 저장 (hep-upload)
|
|
111
|
-
agentlas upload <경로> --visibility marketplace
|
|
112
|
-
# 호환 flag: Agentlas Hub 공개 발행
|
|
113
|
-
agentlas connect # Telegram/플랫폼 연결 (hep-connect)
|
|
114
|
-
agentlas import <폴더> # 로컬 에이전트/팀 임포트
|
|
115
|
-
agentlas list # 설치된 에이전트/회사 + 활성 런타임
|
|
116
|
-
```
|
|
63
|
+
**2. 실제 작업 한 번 돌리기**
|
|
117
64
|
|
|
118
|
-
**프로젝트 의존관계 지도**
|
|
119
65
|
```sh
|
|
120
|
-
agentlas
|
|
121
|
-
agentlas
|
|
122
|
-
agentlas
|
|
123
|
-
agentlas
|
|
124
|
-
agentlas
|
|
125
|
-
--target src/package-kind.ts --render
|
|
126
|
-
agentlas context impact --changed src/package-kind.ts
|
|
127
|
-
agentlas context verify --changed src/package-kind.ts \
|
|
128
|
-
--reviewed src/register/route.ts
|
|
66
|
+
agentlas "이 저장소의 테스트 실패 원인을 찾아줘" # 자동 라우팅 → 1회 실행
|
|
67
|
+
agentlas run -p "CHANGELOG 최근 3개 요약" # 최종 답만 stdout (파이프용)
|
|
68
|
+
git log --oneline -20 | agentlas run # 프롬프트 없으면 stdin을 읽는다
|
|
69
|
+
agentlas <agent> # 그 에이전트와 대화형 REPL
|
|
70
|
+
agentlas firm <firm> "요청" # 회사(팀) CEO에 위임
|
|
129
71
|
```
|
|
130
72
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
`.gitignore`를 만들거나 수정하지 않는다. Hub/Cloud 검색에는 코드맵,
|
|
135
|
-
소스 경로, 프로젝트 파일 내용이 전송되지 않는다.
|
|
73
|
+
자동 라우팅은 호스트 LLM 판정이 고른다. 어휘 점수는 후보 모집에만 쓰고 선택은
|
|
74
|
+
하지 않는다. 판정 런타임이 없으면 기본 에이전트로 폴백하되 그 사실을 stderr에
|
|
75
|
+
반드시 남긴다(조용한 오라우팅 금지).
|
|
136
76
|
|
|
137
|
-
**
|
|
138
|
-
```sh
|
|
139
|
-
agentlas experience list
|
|
140
|
-
agentlas experience inspect <exact-release-id|bundle-id|upload-id>
|
|
141
|
-
agentlas experience validate <bundle.agentlas-experience.json>
|
|
142
|
-
agentlas experience save <bundle> --base-cloud-id <id> --base-package-hash sha256:<hash>
|
|
143
|
-
agentlas experience publish <bundle> --visibility unlisted \
|
|
144
|
-
--base-cloud-id <id> --base-package-hash sha256:<hash>
|
|
145
|
-
agentlas experience status <bundle-id|upload-id>
|
|
146
|
-
agentlas experience export <bundle-id|upload-id> [--out <file>] [--overwrite]
|
|
147
|
-
agentlas experience unpublish <exact-release-id|bundle-id|upload-id> [--dry-run]
|
|
148
|
-
# withdraw는 unpublish와 같은 exact receipt/revision 계약의 호환 별칭
|
|
149
|
-
agentlas experience withdraw <exact-release-id|bundle-id|upload-id>
|
|
150
|
-
|
|
151
|
-
# 로컬 0600 캐시만 만들고 Hub에는 보내지 않음
|
|
152
|
-
agentlas experience save <bundle> --local-only
|
|
153
|
-
|
|
154
|
-
# 이전 pack-only 로컬 의도 호환 명령
|
|
155
|
-
agentlas experience legacy-list
|
|
156
|
-
agentlas experience legacy-inspect <pack-id|release-id>
|
|
157
|
-
agentlas experience legacy-publish .agentlas/experience-pack.json
|
|
158
|
-
agentlas experience legacy-unpublish <pack-id|release-id>
|
|
159
|
-
|
|
160
|
-
agentlas variant resolve --candidates variants.json --base-release <release-id>
|
|
161
|
-
```
|
|
77
|
+
**3. 대화 이어가기**
|
|
162
78
|
|
|
163
|
-
`validate`는 256 items/3 MiB 한도, NFC canonical hash, 비밀값·PII·raw prompt/transcript·
|
|
164
|
-
로컬 경로·base package·MCP 실행 정의 유입을 모델 호출 없이 검사한다. `save`는 정확한
|
|
165
|
-
Cloud base artifact를 서버에서 확인한 뒤 owner-private `draft-saved`로 저장한다.
|
|
166
|
-
`publish`도 곧바로 공개하지 않고 `verification-requested`까지만 요청한다. evaluator가
|
|
167
|
-
검증한 새 release와 별도 Variant가 없으면 공개 활성·평판·자동대여 권위가 생기지 않는다.
|
|
168
|
-
모든 변경 요청은 기존 로그인 세션, Idempotency-Key, exact revision ETag를 사용하고,
|
|
169
|
-
Terminal은 서버 영수증과 별도의 0600 로컬 상태만 보관한다. `--dry-run`은 로그인 확인,
|
|
170
|
-
네트워크, 로컬 저장을 모두 하지 않는다.
|
|
171
|
-
`list`와 `inspect`는 현재 프로젝트에 저장된 Portable Bundle만 다시 검증해 보여주며,
|
|
172
|
-
owner/account, 로컬 경로, raw content, prompt/transcript, credential은 출력하지 않는다.
|
|
173
|
-
pack ID가 여러 release를 가리키면 최신 것을 임의 선택하지 않고 정확한 release/bundle/
|
|
174
|
-
upload ID를 요구한다. `unpublish --dry-run`은 로컬에서 검증된 exact server receipt와
|
|
175
|
-
revision이 있을 때만 조건부 삭제 계획을 보여주며 네트워크와 로컬 쓰기를 모두 0으로
|
|
176
|
-
유지한다. 실제 `unpublish`는 그 revision을 `If-Match`로 보내고 서버의 새 `withdrawn`
|
|
177
|
-
영수증을 검증한 뒤에만 로컬 상태를 전진시킨다.
|
|
178
|
-
`export`는 서버가 돌려준 bundle hash/semantic content/영수증 owner를 다시 검증한 뒤
|
|
179
|
-
0600 파일로 원자적으로 저장한다. 기본은 기존 출력 파일을 덮어쓰지 않고 symlink는
|
|
180
|
-
항상 거절하며, 같은 일반 파일을 명시적으로 교체할 때만 `--overwrite`를 사용한다.
|
|
181
|
-
|
|
182
|
-
이전 pack-only 동작은 `legacy-list|legacy-inspect|legacy-publish|legacy-unpublish`로만
|
|
183
|
-
명시적으로 접근한다. full Portable Bundle을 `publish`하면 새 서버 교환 경로를 사용한다. Experience Bundle은
|
|
184
|
-
base release를 참조할 뿐 base package를 복사하지 않는다.
|
|
185
|
-
|
|
186
|
-
`variant resolve`도 로컬 호환성 미리보기다. 후보 JSON의 `score`나
|
|
187
|
-
`compatibilityStatus: verified`는 사용자가 직접 쓸 수 있으므로 평판·결제·대여·실행
|
|
188
|
-
권위로 인정하지 않는다. 실제 자동대여에는 Agentlas Web이 발급·검증한 서버 resolution
|
|
189
|
-
receipt가 별도로 필요하다.
|
|
190
|
-
|
|
191
|
-
**빌드 전 MCP 계획**
|
|
192
79
|
```sh
|
|
193
|
-
agentlas
|
|
194
|
-
agentlas
|
|
195
|
-
agentlas
|
|
196
|
-
agentlas build "Windows 셸 에이전트" \
|
|
197
|
-
--experience-base-release <exact-release-id> \
|
|
198
|
-
--experience-pack-release <exact-experience-release-id> \
|
|
199
|
-
--experience-task-signature agentlas.task.v1/debugging \
|
|
200
|
-
--experience-environment agentlas.env.v1/os/windows,agentlas.env.v1/arch/x64,agentlas.env.v1/runtime/terminal
|
|
201
|
-
agentlas run <agent> "Windows 오류를 디버깅해줘" \
|
|
202
|
-
--experience-base-release <exact-release-id> \
|
|
203
|
-
--experience-pack-release <exact-experience-release-id> \
|
|
204
|
-
--experience-task-signature agentlas.task.v1/debugging \
|
|
205
|
-
--experience-environment agentlas.env.v1/os/windows,agentlas.env.v1/arch/x64,agentlas.env.v1/runtime/terminal
|
|
206
|
-
|
|
207
|
-
# Desktop에서 사용자가 이미 승인해 현재 장착된 exact loadout만 명시적으로 사용
|
|
208
|
-
agentlas run <agent> "Windows 오류를 디버깅해줘" --experience-desktop-loadout
|
|
80
|
+
agentlas chats # 최근 대화 목록 (데스크탑과 같은 DB)
|
|
81
|
+
agentlas chats 30
|
|
82
|
+
agentlas open <chat-id> # 그 챗의 에이전트로 REPL 재개
|
|
209
83
|
```
|
|
210
84
|
|
|
211
|
-
|
|
212
|
-
실행은 사용자가 선택했거나 권위 있는 loadout이 넘긴 정확한 Experience release ID가
|
|
213
|
-
있을 때만 그 릴리스의 항목을 조회한다. 응답 유실이나 재시작도 다른 릴리스를 대신
|
|
214
|
-
붙이는 근거가 되지 않는다.
|
|
215
|
-
|
|
216
|
-
Desktop 연동도 자동 장착이 아니다. `--experience-desktop-loadout`을 준 그 실행에서만
|
|
217
|
-
Desktop이 canonical `terminal-bridge/ontology-loadout-v2.json`에 원자적으로 쓴 0600
|
|
218
|
-
로컬 권위 receipt를 읽는다. 임의 receipt 경로는 지원하지 않는다. Terminal은 로컬 DB의
|
|
219
|
-
exact 설치 에이전트 ↔ Hub base release 결속, Desktop 설치 authority instance와 단조
|
|
220
|
-
sequence를 다시 확인한다. 5분이 지난 receipt, 권한이 넓은 파일, symlink, 손상·변조된
|
|
221
|
-
JSON, 다른 Desktop 설치에서 복사한 receipt, rollback된 sequence, 다른 설치 에이전트,
|
|
222
|
-
다른 base release는 모두 Experience 없는 안전 모드로 건너뛴다. 이 receipt는 Hub 서버
|
|
223
|
-
서명이 아니라 같은 로컬 Agentlas DB에 결속된 Desktop 권위 증명이다. 같은 OS 사용자
|
|
224
|
-
권한으로 DB와 canonical receipt를 함께 완전히 장악한 경우는 로컬 호스트 침해로 간주한다.
|
|
225
|
-
수동 exact 플래그가 receipt와 다르면 둘 중 하나를 추정하지 않고 Experience를 끈다.
|
|
226
|
-
`--no-experience`가 항상 최우선이다.
|
|
227
|
-
|
|
228
|
-
설치 에이전트의 성공한 실행이 새 `procedure|decision|risk` Memory를 큐레이션하면,
|
|
229
|
-
Terminal은 exact 에이전트/base release/현재 OS·arch·runtime에 묶인 Operational Experience
|
|
230
|
-
후보를 기존 로컬 exchange store에 `private + draft + candidate`로 저장한다. 실행 자체는
|
|
231
|
-
검증 통과로 간주하지 않으므로 후보는 자동 장착·promote·publish·Hub 전송되지 않는다.
|
|
232
|
-
raw prompt/transcript, 로컬 경로, URL, 이메일·전화·고객 식별자, credential, base package
|
|
233
|
-
재료가 감지되면 내용은 복사하지 않고 reason code만 로컬 run ledger에 남긴다. 같은
|
|
234
|
-
실행/Memory/base/environment 재처리는 같은 후보를 재사용한다. 실패 실행과 큐레이션된
|
|
235
|
-
근거가 없는 성공 실행은 RunReceipt만 남기며 후보를 만들지 않는다. `preference`는
|
|
236
|
-
Operational 후보에 섞지 않고 내용 없는 로컬 Taste observation으로만 분리한다.
|
|
237
|
-
|
|
238
|
-
빌드 전에는 Agentlas 시스템 전역 MCP 레지스트리의 메타데이터를 먼저 읽고, 관련
|
|
239
|
-
MCP·키 필요 여부·키 존재 여부만 한 번에 보여 준다. 승인 뒤에만 정확한 시스템 전역
|
|
240
|
-
DB 행을 다시 읽어 MCP initialize/tools-list 연결을 개별 검사한다. 성공한 행만 private
|
|
241
|
-
structured allowlist로 native 빌더 경계에 전달되며, 자연어 prompt는 실행 권한이 아니다.
|
|
242
|
-
이 첫 출력은 추천일 뿐이다. 한 번의 명시 동의 전에는 어떤 MCP도 붙이지 않고,
|
|
243
|
-
네트워크 key probe나 설치도 수행하지 않는다.
|
|
244
|
-
성공한 Build 승인에는 서버 ID·transport·command·args·키 이름을 묶은 비밀 없는 지문만
|
|
245
|
-
로컬 영수증으로 남는다. 이후 일반 `full` 턴은 enabled 상태와 이 exact 지문이 모두 맞는
|
|
246
|
-
서버만 붙이며, 행이 바뀌거나 비활성화되면 자동으로 empty-MCP로 돌아간다. Playwright를
|
|
247
|
-
포함한 어떤 서버도 legacy 기본값으로 자동 주입하지 않는다.
|
|
248
|
-
명령·인자는 로컬 host config에만 있고 package/prompt/영수증에는 들어가지 않으며 URL·키
|
|
249
|
-
값은 전달하지 않는다. LLM provider는 자기 로그인 환경을 유지하지만 실제 MCP 자식은
|
|
250
|
-
Agentlas 소유 wrapper를 거쳐 별도 HOME과 최소 실행 환경을 받는다. 이때 post-consent
|
|
251
|
-
레지스트리의 `env_keys_json`에 적힌 키 이름만 값이 전달되고, 나머지 process/global/project/
|
|
252
|
-
agent 자격증명은 상속되지 않는다. wrapper 설정과 로그에는 키 값이 기록되지 않는다.
|
|
253
|
-
HOME과 임시 폴더도 서버별 전용 디렉터리다. PATH/OS 실행 필수값 외의 proxy·TLS override·
|
|
254
|
-
NODE_OPTIONS 같은 host-control 변수는 `env_keys_json`에 적혀 있어도 거절한다.
|
|
255
|
-
최대 3개 probe만 병렬 실행하고 전체 12초 deadline을 적용하므로 8개 서버가 순차로 64초를
|
|
256
|
-
소모하지 않는다. 한 probe의 timeout/실패는 그 서버에만 남는다. 비대화형 실행은 묻지 않고 기본적으로 아무 MCP도 승인하지 않아
|
|
257
|
-
CI가 멈추지 않는다. 한 MCP가 없거나 키가 없어도 그 기능만 degraded가 되며 빌드는
|
|
258
|
-
나머지 연결 또는 empty-MCP 모드로 계속된다. `--require-mcp <catalog-id>`는 빌드 전체를 중단시키지 않고
|
|
259
|
-
Variant 대여 판단에서 해당 Variant만 제외하는 계약을 만든다.
|
|
260
|
-
한 requirement에 승인된 alternatives가 있으면 primary 실패 뒤 같은 12초 deadline 안에서
|
|
261
|
-
그 그룹만 순차 fallback하며, 다른 requirement의 probe와 결과는 격리한다.
|
|
262
|
-
시스템 전역 레지스트리를 읽지 못한 경우도 `registry: unavailable`로 명확히 구분하고,
|
|
263
|
-
설치나 네트워크 폴백 없이 empty-MCP 모드로 계속한다.
|
|
264
|
-
REPL의 `/build`도 top-level `agentlas build`와 같은 계획·한 번 동의·결과 경로를
|
|
265
|
-
사용하며, MCP 사전 계획을 건너뛰는 별도 builder 지름길은 없다.
|
|
266
|
-
로컬 promoted Experience도 같은 handler에서 사용자가 고른 exact Experience release,
|
|
267
|
-
exact base release, 현재 프로젝트, task signature, environment constraint가 모두 맞을 때만
|
|
268
|
-
조회한다. 일반 `agentlas run`의 내부 loadout 경로 역시 설치된 Cloud package marker와
|
|
269
|
-
로컬의 서버 확인 baseResolution이 hash/slug/release까지 정확히 같고, 권위 있는 loadout이
|
|
270
|
-
정확한 Experience release ID를 넘긴 경우에만 후보가 된다. 현재 요청은 고정된 양언어
|
|
271
|
-
키워드 표로 분류하며 허용된 `agentlas.task.v1/<class>` ID가 그 장착 릴리스의 item에 있을
|
|
272
|
-
때만 조회한다. 환경도 현재 host가 만든 `agentlas.env.v1/os|arch|runtime/...` 태그와 정확히
|
|
273
|
-
맞아야 한다. opaque hash, `general`, legacy signature/constraint는 저장·교환은 가능하지만
|
|
274
|
-
활성하지 않고 stderr에 skip reason을 남긴다. 동의어·embedding 추정은 쓰지 않으며 CLI의
|
|
275
|
-
명시 task class는 자동 분류보다 우선한다.
|
|
276
|
-
분류표는 `engine/experience-taxonomy-v1.json`의 checksum
|
|
277
|
-
`sha256:413833472e423352518f9591cd0e051c5bc0a7971e53ab3dc7b5aaf7d50c37ab`으로 고정한다.
|
|
278
|
-
OS는 macos/windows/linux/ios/android/unknown, arch는 arm64/x64/unknown만 허용하고 runtime은
|
|
279
|
-
최소 2자다. 알 수 없는 OS/arch는 해당 item만 `unknown`/ineligible 처리하며 base agent는 유지한다.
|
|
280
|
-
합계 8개/800
|
|
281
|
-
추정 토큰을 넘지 않으며, prompt에는 `NO SERVER RENTAL-RESOLUTION RECEIPT`가 표시되어
|
|
282
|
-
로컬 사용자 증언을 서버 검증 평판처럼 오인하지 않게 한다.
|
|
283
|
-
|
|
284
|
-
API/BYOK 경로의 항상 켜진 Memory emitter는 UTF-8 bytes/3 기준 150토큰 이하 core만
|
|
285
|
-
주입한다. 전체 Memory Events schema는 기억·메모리 작업에서만, 로컬 credential index
|
|
286
|
-
안내는 deploy/release/billing/auth/API/cloud 작업에서만 별도로 로드한다.
|
|
287
|
-
|
|
288
|
-
**내 Agent Cloud 자산**
|
|
289
|
-
```sh
|
|
290
|
-
agentlas cloud save <경로> # 소유자 전용 비공개 저장(공개 심사/라우팅 카드 없음)
|
|
291
|
-
agentlas cloud publish <경로> # Agentlas Hub에 명시적으로 공개 발행
|
|
292
|
-
agentlas cloud list # 로그인한 소유자의 비공개 패키지 조회
|
|
293
|
-
agentlas cloud restore <slug> # 전체 hash 검증 후 이 컴퓨터에 exact snapshot 복원
|
|
294
|
-
```
|
|
85
|
+
## 명령 목록
|
|
295
86
|
|
|
296
|
-
|
|
297
|
-
전체 package hash를 검사한다. 공개 Hub 발행에만 라우팅 카드와 공개 검토가 붙는다.
|
|
298
|
-
`.agentlas/experience-relations.jsonl`과 `.previous`/hidden temp siblings는 로컬에서
|
|
299
|
-
재생성되는 Experience 관계 인덱스이므로 base Agent hash와 Cloud bundle에서 제외된다.
|
|
87
|
+
`agentlas help`가 정본이다. 아래는 같은 그룹 구성이다.
|
|
300
88
|
|
|
301
|
-
|
|
302
|
-
|
|
89
|
+
### TALK & RUN
|
|
90
|
+
```sh
|
|
91
|
+
agentlas <agent> # 에이전트와 대화 (= chat <agent>)
|
|
92
|
+
agentlas chat <agent>
|
|
93
|
+
agentlas run [agent] [prompt] # 1회 실행 (-p · --runtime · --permission · stdin)
|
|
94
|
+
agentlas firm <firm> [task] # 회사 CEO에 위임
|
|
95
|
+
agentlas chats [n] # 최근 대화
|
|
96
|
+
agentlas open <chat-id> # 대화 재개
|
|
97
|
+
agentlas cd <agent> # 그 에이전트 폴더 경로만 출력 (cd "$(agentlas cd x)")
|
|
98
|
+
```
|
|
303
99
|
|
|
304
|
-
|
|
100
|
+
### AGENTS & HUB
|
|
305
101
|
```sh
|
|
306
|
-
agentlas
|
|
307
|
-
agentlas
|
|
308
|
-
agentlas
|
|
309
|
-
agentlas
|
|
310
|
-
agentlas
|
|
311
|
-
agentlas
|
|
312
|
-
agentlas
|
|
313
|
-
agentlas
|
|
102
|
+
agentlas search "<필요한 일>" # Hub 에이전트 검색 (로그인 불필요)
|
|
103
|
+
agentlas install <slug> # Hub 에이전트 로컬 설치 (아래 설치 게이트 참고)
|
|
104
|
+
agentlas plugin add <slug> # Hub 플러그인(MCP 서버) 추가
|
|
105
|
+
agentlas plugin list # (= agentlas plugins)
|
|
106
|
+
agentlas build "<요청>" # 에이전트/팀 빌드·수리·패키징
|
|
107
|
+
agentlas upload <경로> # 기본은 owner-private Agent Cloud 저장
|
|
108
|
+
agentlas upload <경로> --visibility marketplace # 명시적 공개 Hub 발행
|
|
109
|
+
agentlas connect <sub> # Telegram 등 플랫폼 연결 (무인자는 usage, exit 0)
|
|
110
|
+
agentlas import <폴더> # 로컬 에이전트/팀 임포트
|
|
111
|
+
agentlas native prepare <agent> # 네이티브 CLI 문맥 파일 생성
|
|
112
|
+
agentlas list # 설치 에이전트/회사 + 활성 런타임
|
|
113
|
+
agentlas uninstall <agent> # 설치 에이전트 제거 (빌트인 거부)
|
|
114
|
+
agentlas experience <sub> # list|inspect|validate|save|publish|status|export|unpublish|withdraw
|
|
115
|
+
agentlas variant resolve # 로컬 variant 호환성 프리뷰 (권위 없음)
|
|
314
116
|
```
|
|
315
117
|
|
|
316
|
-
|
|
317
|
-
가능한 런타임·모델·effort 목록을 보고 각 워커 및 최종 종합의 정확한
|
|
318
|
-
`runtimeId + exactModelId + effort`를 고른다. Claude Code와 Codex가 둘 다 연결돼
|
|
319
|
-
있으면 둘로 병렬 분배한다. 플러그인 안에서는 그 플러그인을 호스트하는 CLI의 목록만
|
|
320
|
-
노출한다. 터미널 코드는 이 판단을 키워드 규칙이나 고정 모델명으로 대체하지 않고,
|
|
321
|
-
선택이 여전히 가능한지·capability·context·비용 상한·명시적 사용자 고정만 검증한다.
|
|
322
|
-
배정 JSON이 깨지거나 런타임/모델이 사라지면 현재 모델로 폴백하고 그 이유를 화면과
|
|
323
|
-
비공개 영수증에 남긴다.
|
|
324
|
-
|
|
325
|
-
`network`는 새 Agent Workforce Ontology 경로다. 활성 상위 LLM이 먼저 redacted
|
|
326
|
-
work order와 역할 슬롯을 만든 뒤 Hub MCP의 `workforce.search_candidates`를 직접
|
|
327
|
-
호출하고, 반환된 직무·skill·MCP/tool·eval 증거 안에서 정확한 release를 고른다.
|
|
328
|
-
호스트 코드는 팀을 고르지 않고 계약만 검사한다. 선택은
|
|
329
|
-
`workforce.validate_selection`으로 검증하고, `workforce.prepare_execution`이 같은
|
|
330
|
-
release/version/package hash/content digest에 고정한 directive bundle을 반환한 뒤에만
|
|
331
|
-
manager plan → 별도 worker → synthesis → verifier 순서로 실행한다. 후보 밖 release,
|
|
332
|
-
digest 불일치, 실행 불가, 대체 release, 잘못된 planner JSON은 기존 검색이나 로컬
|
|
333
|
-
에이전트로 폴백하지 않고 실패한다. `--benchmark`는 planner fallback 0건, 모든 child,
|
|
334
|
-
synthesis, verifier 영수증과 verifier pass를 모두 요구한다. 이전 Hephaestus 분해기는
|
|
335
|
-
`legacy-network`로만 명시 호출할 수 있다.
|
|
336
|
-
|
|
337
|
-
새 설치와 아직 network 설정을 건드리지 않은 설치에서는 일반적인 실작업형 요청도
|
|
338
|
-
이 Workforce 경로로 자동 진입한다. 사용자가 `/config network off`로 명시적으로 끈
|
|
339
|
-
값은 업그레이드 후에도 보존된다. 질문·잡담과 이미 특정 에이전트를 고른 대화에는
|
|
340
|
-
자동 TF를 붙이지 않는다.
|
|
341
|
-
|
|
342
|
-
**지식 & 리서치**
|
|
118
|
+
### EXECUTE
|
|
343
119
|
```sh
|
|
344
|
-
agentlas
|
|
345
|
-
agentlas
|
|
346
|
-
agentlas
|
|
120
|
+
agentlas storm "<목표>" # Goal+UltraCode 하네스: 계획 → 배정 → 실행 → 검증 [--research]
|
|
121
|
+
agentlas swarm "<목표>" # emergent 에이전트 스웜 [--parallel N]
|
|
122
|
+
agentlas workforce "<요청>" # Agent Workforce Ontology 라우트
|
|
123
|
+
agentlas network "<요청>" # workforce 별칭
|
|
124
|
+
agentlas taskforce "<요청>" # workforce 별칭
|
|
125
|
+
agentlas legacy-network "<요청>" # 이전 Hephaestus 분해기 (명시 호출 전용)
|
|
126
|
+
agentlas call "a,b" "<맥락>" # 이름을 정확히 지정한 Hub/Cloud 에이전트 호출
|
|
127
|
+
agentlas browser [...] # 실제 브라우저 하드포인트
|
|
128
|
+
agentlas route "<요청>" [--json] # 라우팅 미리보기 (실행 없음)
|
|
129
|
+
agentlas research <sub> # status|gather|search|read|plan
|
|
347
130
|
```
|
|
348
131
|
|
|
349
|
-
|
|
132
|
+
### KNOWLEDGE
|
|
350
133
|
```sh
|
|
351
|
-
agentlas
|
|
352
|
-
agentlas
|
|
353
|
-
agentlas
|
|
354
|
-
agentlas
|
|
355
|
-
agentlas
|
|
356
|
-
agentlas
|
|
357
|
-
agentlas
|
|
358
|
-
agentlas setup # 온보딩 다시 실행
|
|
134
|
+
agentlas memory import <경로> --agent <id> [--apply]
|
|
135
|
+
agentlas evolve [list|apply <id>|revert <id>]
|
|
136
|
+
agentlas ontology <sub> # status|list|add
|
|
137
|
+
agentlas career-graph <sub> # 상태·소스 등록 + ingest|query|verify|trace|public-card 위임
|
|
138
|
+
agentlas journal <sub> # status|verify|repair|gate
|
|
139
|
+
agentlas project [status|init] # `.agentlas/` 를 만드는 유일한 진입점
|
|
140
|
+
agentlas context <sub> # refresh|locate|refs|slice|impact|verify
|
|
359
141
|
```
|
|
360
142
|
|
|
361
|
-
|
|
143
|
+
`agentlas project init`으로 **명시 초기화한 프로젝트에서만** 일반 실행·팀·
|
|
144
|
+
Stormbreaker·Workforce가 같은 로컬 Context Slice를 받는다. 읽기·쓰기·전체 권한만
|
|
145
|
+
으로는 `.agentlas/`나 `.gitignore`를 만들거나 고치지 않는다. Hub/Cloud 검색에는
|
|
146
|
+
코드맵·소스 경로·프로젝트 파일 내용이 전송되지 않는다.
|
|
147
|
+
|
|
148
|
+
### ACCOUNT & OPS
|
|
362
149
|
```sh
|
|
363
|
-
agentlas
|
|
364
|
-
agentlas
|
|
365
|
-
agentlas cloud <sub>
|
|
150
|
+
agentlas login | logout | whoami # Agentlas Cloud 로그인 (loopback 브라우저 플로우)
|
|
151
|
+
agentlas billing # 크레딧 잔액
|
|
152
|
+
agentlas cloud <sub> # save|publish|package|list|restore|delete|search|install
|
|
153
|
+
# |security scan|runtime bundle|field-test (cloud help 참고)
|
|
154
|
+
agentlas automation <sub> # list|add|on|off|remove|run <id>|runs|daemon
|
|
155
|
+
agentlas creds save --provider <n> --key <ENV> --value <v>
|
|
156
|
+
agentlas creds file --source <경로> [--env <ENV>] # 값은 어떤 경로로도 출력하지 않음
|
|
157
|
+
agentlas env # 공유 env 키 이름만 열거 (값 없음)
|
|
158
|
+
agentlas usage # 로컬 사용 현황 (공급자 쿼터 대시보드는 데스크탑)
|
|
159
|
+
agentlas telegram # 바인딩 현황 (읽기 전용)
|
|
160
|
+
agentlas mcp # MCP 서버 목록
|
|
161
|
+
agentlas mcp probe <id> # initialize→tools/list 핸드셰이크만 확인
|
|
162
|
+
agentlas multimodal # 이미지/영상/음성 provider 설정
|
|
163
|
+
agentlas doctor # 런타임·데이터·세션 점검
|
|
164
|
+
agentlas setup # 첫 실행 마법사 재실행 (TTY 필요)
|
|
165
|
+
agentlas update # npm 최신판 확인 (자기 패키지만)
|
|
166
|
+
agentlas oberon <sub> # AI 필름 렌더: scaffold|render|list|open (= agentlas film)
|
|
167
|
+
agentlas hep <sub…> # Hephaestus 네이티브 전체 패스스루
|
|
168
|
+
agentlas netadmin <sub> # 로컬 네트워크 admin (init|status|reindex|bench|add-source)
|
|
169
|
+
agentlas version | help
|
|
366
170
|
```
|
|
367
171
|
|
|
368
|
-
공통 옵션: `--runtime claude-code|codex|gemini` ·
|
|
369
|
-
|
|
172
|
+
공통 옵션: `-p|--print` · `--runtime claude-code|codex|gemini` ·
|
|
173
|
+
`--permission read|write|full`
|
|
174
|
+
|
|
175
|
+
### 오타 가드 / 데스크탑 표면 거절
|
|
370
176
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
증거 기반 최종 게이트에서 결과를 종합한다. Core 하네스를 읽거나 검증하지 못하면 로컬 문구로
|
|
375
|
-
대체하지 않고 모델 호출 전에 중단한다.
|
|
177
|
+
공백 없는 **한 단어**를 넣었는데 명령도 에이전트도 아니면, 프롬프트로 흘려서
|
|
178
|
+
모델을 부르지 않는다. 편집거리로 가장 가까운 명령을 최대 3개 제안하고 exit 1로
|
|
179
|
+
멈춘다.
|
|
376
180
|
|
|
377
|
-
|
|
181
|
+
```
|
|
182
|
+
$ agentlas lst
|
|
183
|
+
'lst' 은(는) agentlas 명령이 아닙니다. 혹시: list
|
|
184
|
+
명령 목록: agentlas help · 한 단어를 그대로 실행하려면: agentlas run -p "lst"
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
데스크탑 전용 표면 이름(`site` `trex` `prompts` `dashboard` `marketplace`
|
|
188
|
+
`library` `groups` `settings` `apps` `quests` `bookmarks` `one` …)도 같은 방식으로
|
|
189
|
+
멈추고 터미널 대체 경로를 안내한다. 진짜 그 단어를 작업으로 돌리려면 따옴표로
|
|
190
|
+
감싸거나 `run -p`를 쓴다.
|
|
191
|
+
|
|
192
|
+
### 권한
|
|
378
193
|
|
|
379
194
|
| Agentlas 권한 | Claude Code | Codex | Gemini CLI |
|
|
380
195
|
| --- | --- | --- | --- |
|
|
@@ -382,46 +197,209 @@ Goal/UltraCode 하네스를 읽고 SHA-256을 검증한 뒤, Terminal의 부모
|
|
|
382
197
|
| `write` | `acceptEdits` | `workspace-write` sandbox | `auto_edit` |
|
|
383
198
|
| `full` | permission 검사 우회 | approval + sandbox 우회 | `yolo` |
|
|
384
199
|
|
|
385
|
-
`
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
200
|
+
저장된 `full`은 세션 한정이라 다음 실행에서 `write`로 fail-closed 강등된다.
|
|
201
|
+
REPL의 `!<셸명령>`은 작업 공간 경계를 강제할 수 없어 **`full`에서만** 실행되며,
|
|
202
|
+
출력 8MB 캡·표시 전 시크릿 마스킹·프로세스 그룹 종료가 걸린다.
|
|
203
|
+
|
|
204
|
+
## REPL & Orca 멀티세션
|
|
205
|
+
|
|
206
|
+
`agentlas`를 인자 없이 실행하면 REPL로 들어간다. 포그라운드 턴도 하나의 세션이고,
|
|
207
|
+
`/spawn`으로 만든 서브에이전트는 백그라운드 세션으로 병렬로 돈다. 화면은 활성
|
|
208
|
+
세션 하나만 스트리밍하고, 백그라운드 턴 종료는 한 줄 알림으로 뜬다.
|
|
209
|
+
|
|
210
|
+
### 슬래시 명령 (정본: `engine/ui/palette.cjs`)
|
|
211
|
+
|
|
212
|
+
| 명령 | 하는 일 |
|
|
213
|
+
| --- | --- |
|
|
214
|
+
| `/help` | 명령·단축키 |
|
|
215
|
+
| `/sessions` · `/tree` | 세션 표 / 부모-자식 트리 |
|
|
216
|
+
| `/s <n>` · `/switch <n>` | 활성 세션 전환 (tail 재생 + 라이브 구독) |
|
|
217
|
+
| `/spawn <agent> [task]` | 서브에이전트 세션 생성(+task 주면 즉시 실행) |
|
|
218
|
+
| `/steer <n> <msg>` | 그 세션의 다음 턴에 지시 큐잉 |
|
|
219
|
+
| `/kill <n>` | 실행 중 턴 중단 |
|
|
220
|
+
| `/rm <n>` | 세션 제거 |
|
|
221
|
+
| `/broadcast <msg>` | 모든 세션에 같은 지시 |
|
|
222
|
+
| `/use <agent>` | 메인 세션 에이전트 교체 |
|
|
223
|
+
| `/agents` · `/list` | 설치 에이전트 목록 |
|
|
224
|
+
| `/chats [n]` | 최근 대화 |
|
|
225
|
+
| `/mcp` | MCP 서버 목록 |
|
|
226
|
+
| `/doctor` | 런타임·데이터 점검 |
|
|
227
|
+
| `/runtime <kind>` | 새 세션 런타임 지정 (claude-code\|codex\|gemini) |
|
|
228
|
+
| `/permission <level>` | 새 세션 권한 지정 (read\|write\|full) |
|
|
229
|
+
| `/quit` · `/exit` | 종료 |
|
|
230
|
+
|
|
231
|
+
목록에 없는 슬래시는 `unknown: /xxx (see /help)`로 멈춘다 — REPL 슬래시는
|
|
232
|
+
top-level 명령으로 흘러가지 않는다.
|
|
233
|
+
|
|
234
|
+
### 키·입력
|
|
235
|
+
|
|
236
|
+
| 입력 | 동작 |
|
|
237
|
+
| --- | --- |
|
|
238
|
+
| 실행 중 타이핑 후 Enter | 그 세션의 **다음 턴 스티어링 큐**에 들어간다 (턴을 끊지 않음) |
|
|
239
|
+
| `ctrl-c` (실행 중) | 현재 턴만 중단 |
|
|
240
|
+
| `ctrl-c` (유휴) | 1회는 경고, **2회 연속이면 종료** |
|
|
241
|
+
| `Tab` | 슬래시 명령 · 에이전트/회사 슬러그 · **살아있는 세션 키(s1, s2…)** · `/runtime` `/permission` 값 완성 |
|
|
242
|
+
| `@경로` + `Tab` | 파일 경로 완성 |
|
|
243
|
+
| `↑` / `↓` | 입력 히스토리 |
|
|
244
|
+
| `!<셸명령>` | 셸 실행 — **`full` 권한에서만** |
|
|
245
|
+
|
|
246
|
+
동시 실행 상한은 기본 4다. 초과 스폰은 대기가 아니라 정직한 거부이며
|
|
247
|
+
`AGENTLAS_MAX_PARALLEL`(최대 16)로 올린다.
|
|
390
248
|
|
|
391
249
|
## 동작 방식
|
|
392
250
|
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
251
|
+
### 엔진 경계 — 터미널은 Agentlas OS를 재구현하지 않는다
|
|
252
|
+
|
|
253
|
+
이건 자주 오해된다. 터미널은 **설치된 Agentlas OS(Hephaestus/Core) 런타임을 찾아
|
|
254
|
+
그 런타임을 실행**한다. 자체 사본을 들고 있지 않다.
|
|
255
|
+
|
|
256
|
+
탐색 순서 (`engine/agentlas-core-harness.cjs`, `engine/hephaestus/runtime.cjs`):
|
|
257
|
+
|
|
258
|
+
1. `HEPHAESTUS_BIN` / `HEPHAESTUS_RUNTIME_ROOT`
|
|
259
|
+
2. `~/.agentlas/runtime/current`
|
|
260
|
+
3. 패키징된 Core (`<resources>/Hephaestus`, macOS는
|
|
261
|
+
`/Applications/Agentlas.app/Contents/Resources/Hephaestus`)
|
|
262
|
+
|
|
263
|
+
`storm` · `swarm` · `workforce`/`network` · `route` · `research` · `context` ·
|
|
264
|
+
`career-graph`(파생 인덱스) · `journal` · `netadmin` · `hep` · `build` · `call` ·
|
|
265
|
+
`browser` · `connect`은 이 런타임으로 넘어가는 **패스스루**다. 런타임이 없으면
|
|
266
|
+
로컬 모조 실행이나 어휘 폴백을 만들지 않고 무엇이 없는지 말하고 exit 1 한다
|
|
267
|
+
(예: `storm`은 `stormbreaker-core-harness-unavailable`, `context`는 Core/Python
|
|
268
|
+
부재를 보고). 이 정직 정지가 계약이다.
|
|
269
|
+
|
|
270
|
+
터미널 자체가 소유한 것: REPL·세션 오케스트레이션·에이전트 레지스트리·Hub/Cloud
|
|
271
|
+
HTTP 표면·자격증명·MCP 프리플라이트·자동화 스케줄러·SQLite 스키마.
|
|
272
|
+
|
|
273
|
+
### 공유 상태 — 데스크탑과 같은 DB
|
|
274
|
+
|
|
275
|
+
런처(`bin/agentlas.cjs`)가 이 패키지의 `engine/`(정본)을 시스템 Node로 실행한다.
|
|
276
|
+
데이터 폴더는 데스크탑 앱과 **동일한 userData**다 (`engine/core/paths.cjs`):
|
|
277
|
+
|
|
278
|
+
| OS | 경로 |
|
|
279
|
+
| --- | --- |
|
|
280
|
+
| macOS | `~/Library/Application Support/Agentlas` |
|
|
281
|
+
| Windows | `%APPDATA%\Agentlas` |
|
|
282
|
+
| Linux | `$XDG_CONFIG_HOME/Agentlas` (기본 `~/.config/Agentlas`) |
|
|
283
|
+
|
|
284
|
+
DB는 그 폴더의 `agentlas.sqlite`. 첫 실행 시 `engine/bootstrap-schema.sql`
|
|
285
|
+
(`user_version=45`)로 부트스트랩하며, 앱을 나중에 깔면 앱이 거기서부터
|
|
286
|
+
마이그레이션한다. 결과적으로 **에이전트·챗·자동화·MCP 등록이 양쪽에서 같이
|
|
287
|
+
보인다.** `/spawn`으로 만든 서브에이전트 세션은 데스크탑의 `division` 서브챗
|
|
288
|
+
(`kind='division'` + `parent_chat_id`)으로 그대로 남는다.
|
|
289
|
+
|
|
290
|
+
SQLite 드라이버 사다리: `better-sqlite3`(optionalDependency, 네이티브 빌드
|
|
291
|
+
성공 시) → 실패하면 Node 22+ `node:sqlite`.
|
|
292
|
+
|
|
293
|
+
### Hub는 빌려 쓰는 게 기본, 설치는 예외
|
|
294
|
+
|
|
295
|
+
`engine/hub/install.cjs`의 `assertHubInstallAllowed`가 로컬 설치를 게이트한다.
|
|
296
|
+
막히는 경우:
|
|
297
|
+
|
|
298
|
+
- **cloud-callable / call-only 에이전트** — 로컬 설치 불가. 빌려 쓴다:
|
|
299
|
+
`agentlas call <slug>` (데스크탑에서는 북마크). 소유자는
|
|
300
|
+
`agentlas cloud restore <slug>`로 자기 패키지를 복원한다.
|
|
301
|
+
- **지시문 없는 패키지** — 안전한 로컬 설치에 필요한 instructions가 없으면 거절.
|
|
302
|
+
- **trustGrade가 A/B가 아님** — 사이드로드는 명시 승인이 필요하다며 차단.
|
|
303
|
+
- **web-only 에이전트** — 터미널에서 제공하지 않는다.
|
|
304
|
+
- **회수된 공개 리스팅** — 데스크탑 마켓플레이스와 같은 관측 결과
|
|
305
|
+
(`Hub agent not found`).
|
|
306
|
+
|
|
307
|
+
`upload`도 같은 방향이다: 기본은 owner-private Agent Cloud 저장이고, 공개 Hub
|
|
308
|
+
발행은 `--visibility marketplace`를 명시할 때만 일어난다.
|
|
309
|
+
|
|
310
|
+
## 데스크탑 전용 (터미널에서 약속하지 않는 것)
|
|
311
|
+
|
|
312
|
+
- Telegram 봇 발급·포트 관리 (터미널의 `telegram`은 **읽기 전용 바인딩 조회**)
|
|
313
|
+
- 에이전트 그룹(조합)
|
|
314
|
+
- 승인 인박스 / 브라우저 승인 시트
|
|
315
|
+
- MCP 커스텀 서버 추가·토글 (터미널은 목록 + `mcp probe`만)
|
|
316
|
+
- Site 스튜디오 · T-rex 슬라이드 스튜디오 · Prompt Store
|
|
317
|
+
- 모바일 페어링
|
|
318
|
+
- 퀘스트
|
|
319
|
+
- Hub 북마크
|
|
320
|
+
- 공급자 쿼터 대시보드, Marketplace/Library 브라우징, Agentlas One
|
|
321
|
+
|
|
322
|
+
## 환경변수
|
|
323
|
+
|
|
324
|
+
| 변수 | 효과 |
|
|
325
|
+
| --- | --- |
|
|
326
|
+
| `AGENTLAS_USER_DATA_DIR` | 데이터 폴더 override (기본: 데스크탑과 같은 userData) |
|
|
327
|
+
| `AGENTLAS_LANG` | `ko` \| `en` — prefs와 `LANG`보다 우선 |
|
|
328
|
+
| `AGENTLAS_MAX_PARALLEL` | 동시 실행 세션 상한 (기본 4, 최대 16) |
|
|
329
|
+
| `AGENTLAS_SESSION` | Agentlas Cloud 세션 쿠키 값. 해석 순서는 env → 세션 파일이라, 설정돼 있으면 `logout` 후에도 로그인 상태로 보인다 |
|
|
330
|
+
| `AGENTLAS_WEB_BASE_URL` | 웹 베이스 (기본 `https://agentlas.cloud`) |
|
|
331
|
+
| `AGENTLAS_MCP_BASE_URL` | Hub MCP 베이스 (기본 `<web>/api/mcp/v1`) |
|
|
332
|
+
| `HEPHAESTUS_BIN` · `HEPHAESTUS_RUNTIME_ROOT` | Agentlas OS 런타임 위치 지정 (탐색 사다리 1순위) |
|
|
333
|
+
| `AGENTLAS_MODEL_MAX_TIER` | `economy`\|`balanced`\|`frontier` — **swarm 배정 한정** 비용 상한 |
|
|
334
|
+
| `NO_COLOR` | 비어 있지 않으면 컬러 출력 끔 (`FORCE_COLOR=1`로 강제 켜기, `AGENTLAS_NO_COLOR=1`도 끔) |
|
|
335
|
+
|
|
336
|
+
## 문제 해결
|
|
396
337
|
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
338
|
+
```sh
|
|
339
|
+
agentlas doctor # DB · PATH의 런타임 · 활성 런타임 · 클라우드 세션
|
|
340
|
+
agentlas --where # 런처/엔진/DB 해석 결과 + sqlite 드라이버 + Node 버전 JSON
|
|
341
|
+
```
|
|
401
342
|
|
|
402
|
-
|
|
343
|
+
- **`no_runtime: no agent CLI found`** — `claude` / `codex` / `gemini` 중 하나를
|
|
344
|
+
설치하고 PATH에 올린다. `doctor`가 `kimi`/`grok`/`cursor-agent`를 감지했더라도
|
|
345
|
+
구동 드라이버가 없어 실행 대상이 아니다.
|
|
346
|
+
- **`runtime '<kind>' has no v2 streaming driver yet`** — `--runtime`에 아직
|
|
347
|
+
구동되지 않는 런타임을 지정했다. `claude-code` · `codex` · `gemini`만 된다.
|
|
348
|
+
- **`Node vX — Node 22+ (node:sqlite) is required when better-sqlite3 is
|
|
349
|
+
unavailable.`** — Node 20/21에서 `better-sqlite3` 네이티브 빌드가 실패했다.
|
|
350
|
+
Node 22+로 올리거나 빌드 도구를 갖추고 재설치한다. `--where`의 `sqliteDriver`가
|
|
351
|
+
실제 사용 드라이버를 알려준다.
|
|
352
|
+
- **`storm`/`context`/`hep`가 런타임 없음으로 멈춤** — Agentlas OS 런타임이 없다.
|
|
353
|
+
설치하거나 `HEPHAESTUS_BIN=<경로>`를 지정한다.
|
|
354
|
+
- **`'xxx' 은(는) agentlas 명령이 아닙니다`** — 오타 가드다. 작업으로 돌리려면
|
|
355
|
+
`agentlas run -p "xxx"`.
|
|
356
|
+
- **`logout` 했는데 로그인 상태** — `AGENTLAS_SESSION`이 설정돼 있다. env를 지운다.
|
|
357
|
+
- **`agentlas setup requires an interactive terminal`** — 비-TTY에서 마법사를 돌리면
|
|
358
|
+
조용한 성공으로 위장되므로 거절한다.
|
|
359
|
+
|
|
360
|
+
## 개발
|
|
403
361
|
|
|
404
362
|
엔진 소스는 `engine/*.cjs` — 여기가 정본이므로 직접 수정한다.
|
|
405
|
-
첫 실행용 스키마가 데스크탑 DB 마이그레이션과 어긋나면 재생성:
|
|
406
363
|
|
|
407
364
|
```sh
|
|
408
|
-
sh
|
|
365
|
+
sh test/smoke.sh # 기본 표면 + 무인자 가드 + 신선 환경 첫 실행
|
|
366
|
+
# + 계약 테스트 + Runtime Doctor 3제품 패리티 게이트
|
|
367
|
+
npm run smoke # 동일 (= npm run test:release-contracts)
|
|
368
|
+
sh scripts/gen-bootstrap-schema.sh [db-path] # engine/bootstrap-schema.sql 재생성
|
|
409
369
|
```
|
|
410
370
|
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
agentlas --where # 엔진/DB 해석 결과 JSON
|
|
415
|
-
sh test/smoke.sh # where/version/list/doctor + 신선 환경 첫 실행
|
|
416
|
-
```
|
|
371
|
+
스모크는 임시 `AGENTLAS_USER_DATA_DIR`에서 돌아 실제 데이터를 건드리지 않는다.
|
|
372
|
+
런타임 진단·수리 규칙(`engine/agentlas-doctor.cjs`)을 고쳤다면 3제품 패리티
|
|
373
|
+
게이트를 반드시 통과시켜라.
|
|
417
374
|
|
|
418
375
|
## 제거
|
|
419
376
|
|
|
420
377
|
```sh
|
|
421
|
-
npm uninstall -g agentlas
|
|
422
|
-
rm ~/.local/bin/agentlas
|
|
378
|
+
npm uninstall -g agentlas # npm 설치 시
|
|
379
|
+
rm ~/.local/bin/agentlas # install.sh 설치 시 (또는 지정한 --prefix)
|
|
423
380
|
```
|
|
424
381
|
|
|
382
|
+
데이터는 userData 폴더에 남는다 (위 "공유 상태" 표 참고) — 데스크탑 앱과 공유하는
|
|
383
|
+
폴더이므로 지우기 전에 확인한다. `agentlas uninstall <agent>`는 **설치 에이전트**를
|
|
384
|
+
지우는 별개 명령이며 CLI 자체를 제거하지 않는다.
|
|
385
|
+
|
|
386
|
+
## 릴리스 / npm 경계
|
|
387
|
+
|
|
388
|
+
published 버전은 `npm view agentlas version`이 알려주는 값이 정본이다. 이
|
|
389
|
+
저장소의 소스 커밋이나 `package.json`의 버전은 GitHub 릴리스나 npm 발행을 증명하지
|
|
390
|
+
않는다 — 설치 전에 레지스트리를 직접 확인하라.
|
|
391
|
+
|
|
392
|
+
발행은 저장소의 OIDC trusted publisher 워크플로(`.github/workflows/npm-publish.yml`)
|
|
393
|
+
하나로만 이뤄진다. 정확한 immutable `vX.Y.Z` 태그(또는 현재 main의 정확한 커밋
|
|
394
|
+
SHA + 명시 버전)만 받고, 태그↔패키지 identity 검증 → 릴리스 계약 + 스모크 →
|
|
395
|
+
`npm pack` 산출물 allowlist 검사(test/docs/fixtures/scripts 등 개발 전용 경로 차단)
|
|
396
|
+
→ 발행 → 레지스트리 재확인 순으로 진행한다. 장기 npm publish 토큰은 GitHub에
|
|
397
|
+
저장하지 않는다.
|
|
398
|
+
|
|
399
|
+
릴리스 이력과 소스-대-레지스트리 경계는 [CHANGELOG.md](CHANGELOG.md)에 기록된다.
|
|
400
|
+
발행된 버전은 언제나 그 정확한 태그에서 나와야 하고, 태그 이후의 `main` 변경은
|
|
401
|
+
다음 버전이지 옛 번호로 재발행되지 않는다.
|
|
402
|
+
|
|
425
403
|
## License
|
|
426
404
|
|
|
427
405
|
Apache-2.0 — Agentlas Terminal is the independent terminal runtime for the
|