@ngockhoale/ukit 1.1.8 → 1.2.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 +18 -0
- package/README.md +9 -5
- package/manifests/platform.full.yaml +28 -0
- package/package.json +1 -1
- package/src/cli/commands/doctor.js +2 -0
- package/src/cli/commands/install.js +8 -7
- package/src/cli/commands/uninstall.js +1 -1
- package/src/core/ensureGitignore.js +2 -0
- package/src/core/runInstallPipeline.js +6 -1
- package/src/core/runtimeConfig.js +147 -3
- package/src/core/uninstall.js +1 -1
- package/src/index/routeCatalog.js +4 -4
- package/src/index/taskRouting.js +35 -9
- package/templates/.claude/agents/ukit-small-task-maintainer.md +72 -0
- package/templates/.claude/skills/docs-quality/SKILL.md +15 -1
- package/templates/.claude/skills/next-step/SKILL.md +13 -5
- package/templates/.claude/skills/update-status/SKILL.md +16 -2
- package/templates/.claude/ukit/index/route-catalog.mjs +4 -4
- package/templates/.claude/ukit/index/route-task.mjs +35 -9
- package/templates/.codex/README.md +5 -2
- package/templates/.codex/settings.json +125 -4
- package/templates/.gitignore +2 -1
- package/templates/AGENTS.md +13 -3
- package/templates/CLAUDE.md +13 -3
- package/templates/docs/INSTALL.md +2 -0
- package/templates/docs/PROJECT.md +5 -4
- package/templates/docs/STATUS.md +1 -1
- package/templates/docs/TASKS.md +79 -0
- package/templates/docs/UKIT_USAGE_GUIDE.md +4 -3
- package/templates/ukit/README.md +1 -1
- package/templates/ukit/storage/config.json +243 -2
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# AI Task Queue — {{project.name}}
|
|
2
|
+
|
|
3
|
+
> Local AI task queue.
|
|
4
|
+
> Use this for work the human wants an AI/agent to pick up later.
|
|
5
|
+
> Keep tasks actionable; source code, tests, and project docs remain ground truth.
|
|
6
|
+
|
|
7
|
+
## How to Use
|
|
8
|
+
|
|
9
|
+
- Human or AI can add tasks here when work is deferred.
|
|
10
|
+
- AI should read this for open-ended “what next?” / “continue” prompts, or when the user asks to work from the task queue.
|
|
11
|
+
- AI/agents may implement tasks from `Ready for AI`; do not dispatch from `Inbox` until the task has acceptance and verification notes.
|
|
12
|
+
- This file is local working state, not project history and not a full roadmap.
|
|
13
|
+
- Completed work belongs in `docs/WORKLOG.md`; current state belongs in `docs/STATUS.md`.
|
|
14
|
+
|
|
15
|
+
## Auto-Cleanup Rules
|
|
16
|
+
|
|
17
|
+
AI should keep this file compact by default whenever it reads or updates the queue:
|
|
18
|
+
|
|
19
|
+
- Auto-remove exact duplicate tasks.
|
|
20
|
+
- Auto-prune `Done Recently` to max 10 compact lines.
|
|
21
|
+
- Auto-remove tasks from active sections after all are true:
|
|
22
|
+
- the task is done,
|
|
23
|
+
- verification is recorded,
|
|
24
|
+
- completion is summarized in `docs/WORKLOG.md` or `Done Recently`.
|
|
25
|
+
- Auto-move stale, vague, or blocked tasks to `Deferred / Needs Human Review` instead of deleting them.
|
|
26
|
+
- Do not delete non-completed human-authored tasks unless the user explicitly asks for cleanup and the task is clearly obsolete or duplicated.
|
|
27
|
+
- If the user says “clean tasks” / “dọn tasks”, perform the cleanup pass and report what changed.
|
|
28
|
+
|
|
29
|
+
## Inbox
|
|
30
|
+
|
|
31
|
+
<!-- Raw ideas go here first. Refine before moving to Ready for AI. -->
|
|
32
|
+
|
|
33
|
+
- [ ] TODO task title
|
|
34
|
+
- Why: TODO
|
|
35
|
+
- Context: TODO
|
|
36
|
+
- Expected files: TODO
|
|
37
|
+
- Acceptance: TODO
|
|
38
|
+
- Verification: TODO
|
|
39
|
+
- Risk: low / medium / high
|
|
40
|
+
|
|
41
|
+
## Ready for AI
|
|
42
|
+
|
|
43
|
+
<!-- Tasks here should be specific enough for an AI/agent to start without scanning the whole repo. -->
|
|
44
|
+
|
|
45
|
+
- [ ] TODO ready task
|
|
46
|
+
- Goal: TODO
|
|
47
|
+
- Files likely involved: TODO
|
|
48
|
+
- Constraints: TODO
|
|
49
|
+
- Acceptance: TODO
|
|
50
|
+
- Verification: TODO
|
|
51
|
+
- Notes: TODO
|
|
52
|
+
|
|
53
|
+
## In Progress
|
|
54
|
+
|
|
55
|
+
- [ ] TODO active task
|
|
56
|
+
- Owner: human / Claude / Codex / OpenCode / agent
|
|
57
|
+
- Started: TODO YYYY-MM-DD
|
|
58
|
+
- Current state: TODO
|
|
59
|
+
- Next action: TODO
|
|
60
|
+
|
|
61
|
+
## Blocked / Waiting
|
|
62
|
+
|
|
63
|
+
- [ ] TODO blocked task
|
|
64
|
+
- Blocker: TODO
|
|
65
|
+
- Needed from human: TODO
|
|
66
|
+
|
|
67
|
+
## Deferred / Needs Human Review
|
|
68
|
+
|
|
69
|
+
<!-- AI should move stale/vague/blocked tasks here instead of deleting uncertain human intent. -->
|
|
70
|
+
|
|
71
|
+
- [ ] TODO deferred task
|
|
72
|
+
- Reason deferred: TODO
|
|
73
|
+
- Last touched: TODO YYYY-MM-DD
|
|
74
|
+
|
|
75
|
+
## Done Recently
|
|
76
|
+
|
|
77
|
+
<!-- Keep max 10. Older completed work belongs in docs/WORKLOG.md. -->
|
|
78
|
+
|
|
79
|
+
- TODO YYYY-MM-DD — task — verification
|
|
@@ -139,9 +139,10 @@ Project đang ở đâu, làm gì tiếp?
|
|
|
139
139
|
Expected UKit behavior:
|
|
140
140
|
1. auto-load the hidden next-step lane
|
|
141
141
|
2. read `docs/STATUS.md` first and show whether it is fresh, possibly stale, stale, or missing
|
|
142
|
-
3.
|
|
143
|
-
4.
|
|
144
|
-
5. if
|
|
142
|
+
3. read `docs/TASKS.md` only when selecting queued work or when status points at queued tasks
|
|
143
|
+
4. suggest only a few actionable next candidates
|
|
144
|
+
5. if status/tasks are stale, verify with source/index before treating any candidate as authoritative
|
|
145
|
+
6. if the prompt names a concrete bug/feature/review target, keep the concrete workflow primary instead of producing a global roadmap
|
|
145
146
|
|
|
146
147
|
---
|
|
147
148
|
|
package/templates/ukit/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# UKit Shared Runtime
|
|
2
2
|
|
|
3
|
-
This folder stores shared UKit runtime state for v1.
|
|
3
|
+
This folder stores shared UKit runtime state for v1.2.2 features.
|
|
4
4
|
|
|
5
5
|
- `storage/config.json` — runtime feature flags and defaults
|
|
6
6
|
- `storage/cache/` — prompt-cache, compact history, compact pressure state, output summaries, and preserved raw tool outputs under `storage/cache/tee/`
|
|
@@ -1,11 +1,63 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
2
|
+
"version": "1.2.2",
|
|
3
3
|
"agent": "claude-code",
|
|
4
4
|
"compact": {
|
|
5
5
|
"enabled": true,
|
|
6
6
|
"tokenThreshold": 100000,
|
|
7
7
|
"contextRotDetection": true,
|
|
8
|
-
"askBeforeDrop": true
|
|
8
|
+
"askBeforeDrop": true,
|
|
9
|
+
"codexContext": {
|
|
10
|
+
"enabled": true,
|
|
11
|
+
"autoCompact": true,
|
|
12
|
+
"budgetTokens": 100000,
|
|
13
|
+
"compactTarget": 150,
|
|
14
|
+
"compactTargetUnit": "lines",
|
|
15
|
+
"decisionAgent": "ukit-small-task-maintainer",
|
|
16
|
+
"mode": "soft-handoff",
|
|
17
|
+
"preserve": [
|
|
18
|
+
"current-goal",
|
|
19
|
+
"non-negotiable-rules",
|
|
20
|
+
"active-files",
|
|
21
|
+
"decisions",
|
|
22
|
+
"unresolved-failures",
|
|
23
|
+
"verification-evidence",
|
|
24
|
+
"next-actions"
|
|
25
|
+
],
|
|
26
|
+
"compactTargetRecommendedRange": [
|
|
27
|
+
120,
|
|
28
|
+
170
|
|
29
|
+
],
|
|
30
|
+
"compactTargetMax": 170
|
|
31
|
+
},
|
|
32
|
+
"agentContext": {
|
|
33
|
+
"enabled": true,
|
|
34
|
+
"decisionAgent": "ukit-small-task-maintainer",
|
|
35
|
+
"executionMode": "sidecar-parallel",
|
|
36
|
+
"mustNotBlockMainTask": true,
|
|
37
|
+
"targets": {
|
|
38
|
+
"claude": {
|
|
39
|
+
"autoCompact": true,
|
|
40
|
+
"mode": "precompact-reinject",
|
|
41
|
+
"preserveExistingHooks": true
|
|
42
|
+
},
|
|
43
|
+
"opencode": {
|
|
44
|
+
"autoCompact": true,
|
|
45
|
+
"mode": "native-auto-prune",
|
|
46
|
+
"preserveExistingCompaction": true
|
|
47
|
+
},
|
|
48
|
+
"codex": {
|
|
49
|
+
"autoCompact": true,
|
|
50
|
+
"mode": "soft-handoff",
|
|
51
|
+
"compactTarget": 150,
|
|
52
|
+
"compactTargetUnit": "lines",
|
|
53
|
+
"compactTargetRecommendedRange": [
|
|
54
|
+
120,
|
|
55
|
+
170
|
|
56
|
+
],
|
|
57
|
+
"compactTargetMax": 170
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
9
61
|
},
|
|
10
62
|
"tokenPipeline": {
|
|
11
63
|
"inputCompression": true,
|
|
@@ -33,5 +85,194 @@
|
|
|
33
85
|
"autoRetry": true,
|
|
34
86
|
"maxRetries": 1,
|
|
35
87
|
"confidenceThreshold": 50
|
|
88
|
+
},
|
|
89
|
+
"subagents": {
|
|
90
|
+
"enabled": true,
|
|
91
|
+
"smallTaskModel": "unic-lite",
|
|
92
|
+
"smallTaskAgent": "ukit-small-task-maintainer",
|
|
93
|
+
"smallTaskUseCases": [
|
|
94
|
+
"task-cleanup",
|
|
95
|
+
"compact-decision",
|
|
96
|
+
"codex-context-budget",
|
|
97
|
+
"doc-summarization",
|
|
98
|
+
"classification",
|
|
99
|
+
"small-decision",
|
|
100
|
+
"auto-triage",
|
|
101
|
+
"queue-maintenance",
|
|
102
|
+
"workspace-maintenance"
|
|
103
|
+
],
|
|
104
|
+
"keepMainModelFor": [
|
|
105
|
+
"security",
|
|
106
|
+
"risky-code-change",
|
|
107
|
+
"release",
|
|
108
|
+
"data-loss",
|
|
109
|
+
"architecture-decision",
|
|
110
|
+
"deep-reasoning"
|
|
111
|
+
],
|
|
112
|
+
"decisionPolicy": {
|
|
113
|
+
"nonBlocking": true,
|
|
114
|
+
"endUserInvisible": true,
|
|
115
|
+
"handBackOnRisk": true,
|
|
116
|
+
"optimizeOrder": [
|
|
117
|
+
"quality",
|
|
118
|
+
"safety",
|
|
119
|
+
"speed",
|
|
120
|
+
"token-discipline"
|
|
121
|
+
],
|
|
122
|
+
"decisions": [
|
|
123
|
+
"fast-vs-slow-lane",
|
|
124
|
+
"safe-vs-risky-lane",
|
|
125
|
+
"skill-routing-needed",
|
|
126
|
+
"step-budget-enough",
|
|
127
|
+
"compact-now-or-later",
|
|
128
|
+
"summarize-docs-or-keep-detail"
|
|
129
|
+
],
|
|
130
|
+
"stepBudgets": {
|
|
131
|
+
"trivial": {
|
|
132
|
+
"maxSteps": 1,
|
|
133
|
+
"verification": "skip-unless-risky"
|
|
134
|
+
},
|
|
135
|
+
"simple": {
|
|
136
|
+
"maxSteps": 2,
|
|
137
|
+
"verification": "targeted-if-covered"
|
|
138
|
+
},
|
|
139
|
+
"nonTrivial": {
|
|
140
|
+
"maxSteps": 4,
|
|
141
|
+
"verification": "targeted-then-widen-on-risk"
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
"executionMode": "sidecar-parallel",
|
|
145
|
+
"mustNotBlockMainTask": true,
|
|
146
|
+
"maxSidecarWaitMs": 0
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"_help": {
|
|
150
|
+
"README": {
|
|
151
|
+
"muc_dich": "Đây là file cấu hình runtime duy nhất của UKit, khi install sẽ nằm ở .ukit/storage/config.json. Không dùng .env để chỉnh UKit nữa.",
|
|
152
|
+
"ai_nen_sua": "Người dùng bình thường vẫn chỉ cần nhớ `ukit install`. Maintainer hoặc power user mới cần sửa file JSON này để chỉnh cách UKit tự điều phối AI.",
|
|
153
|
+
"cach_sua": "Chỉ sửa value, không đổi tên key. Đây là JSON chuẩn: string phải dùng dấu nháy kép, có dấu phẩy giữa các field, không dùng // comment.",
|
|
154
|
+
"nguyen_tac_chat_luong": "Luôn theo UKit CoDev: chất lượng > an toàn > tốc độ > tiết kiệm token. Không chỉnh cho nhanh nếu làm AI trả lời kém hơn.",
|
|
155
|
+
"sau_khi_sua": "Sau khi sửa file này, nên mở session AI mới. Nếu muốn refresh template trong repo thì chạy lại `ukit install`."
|
|
156
|
+
},
|
|
157
|
+
"cac_chinh_sua_thuong_gap": {
|
|
158
|
+
"doi_model_noi_bo": {
|
|
159
|
+
"field": "subagents.smallTaskModel",
|
|
160
|
+
"mac_dinh": "unic-lite",
|
|
161
|
+
"y_nghia": "Model nội bộ chạy sidecar cho các quyết định nhỏ/an toàn của UKit. Không thay thế model chính đang làm task của user.",
|
|
162
|
+
"vi_du": "Đổi subagents.smallTaskModel sang tên model khác nếu unic-lite không dùng được hoặc bạn muốn model nội bộ khác."
|
|
163
|
+
},
|
|
164
|
+
"compact_codex_khi_gan_150k_token": {
|
|
165
|
+
"field": "compact.codexContext.budgetTokens",
|
|
166
|
+
"mac_dinh": 100000,
|
|
167
|
+
"co_the_tang_len": 150000,
|
|
168
|
+
"khuyen_nghi": "100000 là mức cân bằng: đủ context cho chất lượng nhưng tránh để phiên chạy tới 150k-180k token dễ gặp lỗi connection/capacity.",
|
|
169
|
+
"y_nghia": "Ngưỡng token context của Codex Desktop trước khi UKit chuẩn bị compact/handoff. Ví dụ 100000 nghĩa là gần 100k token thì compact."
|
|
170
|
+
},
|
|
171
|
+
"doi_do_dai_ban_tom_tat_codex": {
|
|
172
|
+
"field": "compact.codexContext.compactTarget",
|
|
173
|
+
"mac_dinh": 150,
|
|
174
|
+
"khoang_goi_y": [
|
|
175
|
+
120,
|
|
176
|
+
170
|
|
177
|
+
],
|
|
178
|
+
"y_nghia": "Độ dài bản handoff sau compact, tính bằng dòng, không phải token. Không set 150000 ở đây."
|
|
179
|
+
},
|
|
180
|
+
"tat_auto_compact_codex": {
|
|
181
|
+
"field": "compact.codexContext.autoCompact",
|
|
182
|
+
"mac_dinh": true,
|
|
183
|
+
"y_nghia": "Chỉ set false khi đang debug hành vi compact của UKit."
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
"version": "Phiên bản config runtime đi kèm package UKit.",
|
|
187
|
+
"agent": "Adapter mặc định của workspace. Thường giữ nguyên theo lúc install.",
|
|
188
|
+
"compact": {
|
|
189
|
+
"enabled": "Bật/tắt toàn bộ helper compact của UKit.",
|
|
190
|
+
"tokenThreshold": "Ngưỡng token chung cho runtime compact dùng chung.",
|
|
191
|
+
"contextRotDetection": "Phát hiện context quá dài/dễ mục để giữ lại state quan trọng trước khi AI nhớ sai.",
|
|
192
|
+
"askBeforeDrop": "Giữ thái độ thận trọng trước khi bỏ context quan trọng. Nếu rủi ro thì hand back cho main model.",
|
|
193
|
+
"agentContext": {
|
|
194
|
+
"enabled": "Bật policy compact context theo từng agent.",
|
|
195
|
+
"decisionAgent": "Agent nội bộ hỗ trợ quyết định compact/handoff trong trường hợp an toàn.",
|
|
196
|
+
"executionMode": "sidecar-parallel nghĩa là lane quyết định compact chạy song song với task chính.",
|
|
197
|
+
"mustNotBlockMainTask": "Nếu true, sidecar nội bộ không được dừng/thay thế/làm chậm task chính của user.",
|
|
198
|
+
"targets": {
|
|
199
|
+
"claude": {
|
|
200
|
+
"autoCompact": "Giữ compact lane của Claude bật.",
|
|
201
|
+
"mode": "precompact-reinject nghĩa là Claude được bơm context quan trọng trước/sau compact.",
|
|
202
|
+
"preserveExistingHooks": "Nên giữ true để không gỡ PreCompact/reinject của Claude."
|
|
203
|
+
},
|
|
204
|
+
"opencode": {
|
|
205
|
+
"autoCompact": "Giữ compact lane của OpenCode bật.",
|
|
206
|
+
"mode": "native-auto-prune nghĩa là OpenCode dùng compaction.auto/prune native.",
|
|
207
|
+
"preserveExistingCompaction": "Nên giữ true để không gỡ compact native của OpenCode."
|
|
208
|
+
},
|
|
209
|
+
"codex": {
|
|
210
|
+
"autoCompact": "Bật policy soft handoff compact cho Codex Desktop.",
|
|
211
|
+
"mode": "soft-handoff nghĩa là UKit tạo/dùng state tóm tắt, không can thiệp trực tiếp vào internals của app Codex.",
|
|
212
|
+
"compactTarget": "Độ dài bản handoff sau compact, tính bằng dòng.",
|
|
213
|
+
"compactTargetUnit": "Đơn vị của compactTarget. Nên giữ là lines.",
|
|
214
|
+
"compactTargetRecommendedRange": "Khoảng số dòng khuyến nghị cho bản handoff.",
|
|
215
|
+
"compactTargetMax": "Số dòng tối đa cho bản handoff, tránh lỡ tay set quá dài."
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
"codexContext": {
|
|
220
|
+
"enabled": "Bật policy soft context handoff cho Codex Desktop.",
|
|
221
|
+
"autoCompact": "Cho phép UKit tự quyết định compact/handoff khi context Codex dài.",
|
|
222
|
+
"budgetTokens": "Ngưỡng token context của Codex Desktop trước khi compact. Mặc định 100000 để cân bằng chất lượng và giảm lỗi capacity/connection. Có thể tăng 150000 nếu cần, nhưng không nên để quá dài.",
|
|
223
|
+
"compactTarget": "Độ dài bản handoff sau compact, tính bằng dòng, không phải token. Mặc định 150; nên 120-150; tối đa 170.",
|
|
224
|
+
"compactTargetUnit": "Đơn vị của compactTarget. Nên giữ là lines.",
|
|
225
|
+
"compactTargetRecommendedRange": "Khoảng số dòng khuyến nghị. Nên ở trong khoảng này nếu không có lý do đặc biệt.",
|
|
226
|
+
"compactTargetMax": "Số dòng tối đa cho bản handoff. Chặn trường hợp lỡ set 150000 dòng.",
|
|
227
|
+
"decisionAgent": "Agent nội bộ dùng cho quyết định compact an toàn.",
|
|
228
|
+
"mode": "soft-handoff nghĩa là UKit tóm tắt state để tiếp tục thay vì replay toàn bộ transcript.",
|
|
229
|
+
"preserve": "Những thứ bắt buộc phải giữ khi compact: mục tiêu, rule, file đang làm, quyết định, lỗi chưa xử lý, bằng chứng verify, bước tiếp theo."
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
"tokenPipeline": {
|
|
233
|
+
"inputCompression": "Nén/tái sử dụng input context khi an toàn.",
|
|
234
|
+
"outputCompression": "Tóm tắt output command ồn nhưng vẫn giữ recovery hint.",
|
|
235
|
+
"promptCache": "Dùng cache prompt/context compact để giảm lặp lại."
|
|
236
|
+
},
|
|
237
|
+
"router": {
|
|
238
|
+
"enabled": "Bật task routing nội bộ.",
|
|
239
|
+
"defaultModel": "Model hint cân bằng cho công việc bình thường. Adapter/provider có thể map khác.",
|
|
240
|
+
"advisorModel": "Model hint mạnh hơn cho planning/reasoning khó khi được bật.",
|
|
241
|
+
"advisorEnabled": "Cho phép advisor-style planning cho task phức tạp.",
|
|
242
|
+
"maxAdvisorCalls": "Giới hạn số lần gọi advisor để không lãng phí."
|
|
243
|
+
},
|
|
244
|
+
"memory": {
|
|
245
|
+
"enabled": "Bật memory local của UKit.",
|
|
246
|
+
"autoCapture": "Cho phép UKit lưu decision/rule bền vững khi an toàn.",
|
|
247
|
+
"progressiveRetrieval": "Lấy memory liên quan nhỏ trước, chỉ mở rộng khi cần.",
|
|
248
|
+
"maxInjectionTokens": "Số token memory tối đa được inject vào context.",
|
|
249
|
+
"archiveAfterDays": "Sau bao nhiêu ngày memory có thể được archive/compact.",
|
|
250
|
+
"maxSessions": "Số session memory gần đây giữ active.",
|
|
251
|
+
"redactSecrets": "Cố tránh lưu secret vào memory."
|
|
252
|
+
},
|
|
253
|
+
"validation": {
|
|
254
|
+
"enabled": "Bật kiểm tra output nhẹ.",
|
|
255
|
+
"autoRetry": "Cho phép retry an toàn một lần khi validation thấy lỗi rõ.",
|
|
256
|
+
"maxRetries": "Số lần retry tối đa.",
|
|
257
|
+
"confidenceThreshold": "Ngưỡng confidence tối thiểu trước khi báo thận trọng."
|
|
258
|
+
},
|
|
259
|
+
"subagents": {
|
|
260
|
+
"enabled": "Cho phép UKit dùng các lane subagent nội bộ khi hữu ích.",
|
|
261
|
+
"smallTaskModel": "Model sidecar nội bộ cho quyết định nhỏ/an toàn của UKit. Đổi key này nếu muốn đổi model nội bộ.",
|
|
262
|
+
"smallTaskAgent": "Tên agent nội bộ phụ trách quyết định nhỏ không block task chính.",
|
|
263
|
+
"smallTaskUseCases": "Các loại việc an toàn sidecar có thể xử lý: dọn task, compact decision, phân loại, triage, queue maintenance, workspace maintenance.",
|
|
264
|
+
"keepMainModelFor": "Các việc rủi ro phải giữ ở main model: security, code risky, release, data-loss, architecture, deep reasoning.",
|
|
265
|
+
"decisionPolicy": {
|
|
266
|
+
"nonBlocking": "Sidecar nội bộ không được block task chính của user.",
|
|
267
|
+
"endUserInvisible": "Không biến orchestration nội bộ thành thứ end user phải học.",
|
|
268
|
+
"handBackOnRisk": "Nếu sidecar thấy rủi ro thì trả lại main model quyết định.",
|
|
269
|
+
"executionMode": "sidecar-parallel nghĩa là việc nội bộ có thể chạy riêng/song song với task chính.",
|
|
270
|
+
"mustNotBlockMainTask": "True nghĩa là sidecar không được dừng/thay thế/làm chậm task chính.",
|
|
271
|
+
"maxSidecarWaitMs": "0 nghĩa là không chờ sidecar trước khi tiếp tục task chính.",
|
|
272
|
+
"optimizeOrder": "Thứ tự ưu tiên khi ra quyết định nội bộ.",
|
|
273
|
+
"decisions": "Nhóm quyết định sidecar được phép hỗ trợ.",
|
|
274
|
+
"stepBudgets": "Gợi ý số bước planning tối đa theo độ lớn task trước khi reassess."
|
|
275
|
+
}
|
|
276
|
+
}
|
|
36
277
|
}
|
|
37
278
|
}
|