@zq-silk/yui 0.14.0 → 0.14.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/ARCHITECTURE.md +64 -35
- package/README.md +258 -125
- package/dist/agent/argumentPolicy.js +2 -1
- package/dist/agent/managedRuntimeEnvironment.js +5 -8
- package/dist/cli/commandCatalog.js +74 -109
- package/dist/cli/helpRenderer.js +1 -2
- package/dist/cli/interactionCandidates.js +10 -0
- package/dist/cli/interactionPolicy.js +76 -37
- package/dist/cli/roleWizard.js +5 -6
- package/dist/cli/updateOrchestrator.js +10 -8
- package/dist/cli/updatePorts.js +17 -13
- package/dist/cli/upgradeCommand.js +2 -5
- package/dist/cli.js +268 -231
- package/dist/commands/agentCommands.js +13 -0
- package/dist/commands/configCommands.js +7 -19
- package/dist/commands/configOverview.js +3 -2
- package/dist/commands/durableJobCommands.js +1 -1
- package/dist/commands/executionAuditCommands.js +4 -9
- package/dist/commands/globalRoleCommands.js +17 -0
- package/dist/commands/profileCommands.js +200 -30
- package/dist/commands/sessionCommands.js +1 -1
- package/dist/commands/taskActor.js +29 -127
- package/dist/commands/taskChangeSetCommands.js +1 -3
- package/dist/commands/taskCommands.js +1771 -2107
- package/dist/commands/taskCompletionGate.js +27 -103
- package/dist/commands/taskContextCommand.js +47 -80
- package/dist/commands/taskExecutionCommands.js +9 -27
- package/dist/commands/taskInputCommands.js +10 -10
- package/dist/commands/taskIntegrationCommands.js +69 -61
- package/dist/commands/taskIntegrationQueueCommands.js +1 -1
- package/dist/commands/taskNextActionCommand.js +8 -29
- package/dist/commands/taskOverviewCommand.js +25 -3
- package/dist/commands/taskPublicationCommands.js +151 -85
- package/dist/commands/taskPublicationVerifyCommand.js +181 -0
- package/dist/commands/taskRemoteDeliveryCommand.js +134 -0
- package/dist/commands/taskRoleRuntimeStatus.js +5 -6
- package/dist/commands/taskUpstreamCommands.js +79 -95
- package/dist/config/configCatalog.js +1 -1
- package/dist/context/contextSnapshot.js +17 -2
- package/dist/context/sessionBootstrapManifest.js +18 -1
- package/dist/context/sourceTurnContext.js +30 -0
- package/dist/context/turnContextPack.js +107 -48
- package/dist/context/turnInputContract.js +11 -4
- package/dist/context/wakeNotification.js +84 -22
- package/dist/controller/agentRuntimeObserver.js +9 -12
- package/dist/controller/clientRuntime.js +13 -13
- package/dist/controller/controller.js +11 -11
- package/dist/controller/fileSchedulerStoreAdapter.js +262 -219
- package/dist/controller/jobControl.js +11 -10
- package/dist/controller/resourceInventory.js +6 -6
- package/dist/controller/resourceInventoryLinux.js +2 -2
- package/dist/controller/runtime.js +18 -61
- package/dist/controller/runtimeEventInbox.js +57 -34
- package/dist/controller/runtimeEventProcessor.js +36 -96
- package/dist/controller/runtimeHookTurnFence.js +33 -57
- package/dist/controller/runtimeLaunchCoordinator.js +44 -40
- package/dist/controller/runtimeObservationHook.js +18 -12
- package/dist/controller/sessionNotify.js +43 -28
- package/dist/controller/sessionOwnerReconciliation.js +21 -21
- package/dist/controller/structuredProviderObservation.js +13 -16
- package/dist/coordination/workMailboxQueue.js +132 -0
- package/dist/core/controllerServer.js +1 -0
- package/dist/domain/agentResultTransport.js +60 -0
- package/dist/execution/executionHealth.js +111 -118
- package/dist/execution/reviewMainTurn.js +161 -0
- package/dist/execution/workItemExecution.js +454 -0
- package/dist/execution/workItemExecutionProjection.js +309 -0
- package/dist/execution/workItemMainTurn.js +164 -0
- package/dist/executor/agentExecutor.js +19 -19
- package/dist/executor/executorRegistry.js +7 -28
- package/dist/executor/fileRoleLaunchPlanner.js +51 -83
- package/dist/external/githubPublicationVerifier.js +114 -0
- package/dist/external/gitlabPublicationVerifier.js +158 -0
- package/dist/external/pinnedCommandRunner.js +73 -0
- package/dist/integration/changeSetManifest.js +0 -3
- package/dist/integration/deliveryObligation.js +43 -6
- package/dist/integration/gitIntegrationService.js +284 -101
- package/dist/integration/integrationAttempt.js +64 -14
- package/dist/integration/integrationQueueEntry.js +5 -35
- package/dist/integration/integrationQueueService.js +65 -194
- package/dist/lifecycle/canonicalLifecycleEvent.js +16 -15
- package/dist/lifecycle/exactTurnTerminalization.js +100 -97
- package/dist/message/message.js +16 -0
- package/dist/observability/executionAudit.js +4 -25
- package/dist/observability/faultClassification.js +58 -70
- package/dist/observability/orchestrationMetrics.js +8 -50
- package/dist/profile/agentProfile.js +60 -15
- package/dist/profile/agentProfileRuntime.js +100 -0
- package/dist/release/releaseWorkflowPorts.js +5 -68
- package/dist/repository/executionLaneGitSnapshot.js +80 -0
- package/dist/repository/gitWorkspace.js +9 -67
- package/dist/repository/taskBaseFreshness.js +3 -1
- package/dist/repository/taskWorkspaceCoordinator.js +32 -4
- package/dist/repository/taskWorkspacePreparer.js +252 -411
- package/dist/resources/liveReferences.js +6 -55
- package/dist/resources/resourceDiscovery.js +1 -30
- package/dist/resources/resourceRegistrar.js +0 -23
- package/dist/review/deltaRecheck.js +8 -65
- package/dist/review/reviewAcceptance.js +22 -19
- package/dist/review/reviewConfig.js +0 -10
- package/dist/review/reviewDecision.js +2 -2
- package/dist/review/reviewRound.js +147 -273
- package/dist/review/reviewerAvailability.js +13 -23
- package/dist/role/role.js +3 -0
- package/dist/runtime/agentDriverObservation.js +1 -1
- package/dist/runtime/agentHost.js +51 -51
- package/dist/runtime/builtinAgentDrivers.js +9 -2
- package/dist/runtime/codexAppServerRuntime.js +23 -5
- package/dist/runtime/exactControlPlane.js +2 -267
- package/dist/runtime/firstProgressAdvisory.js +1 -1
- package/dist/runtime/index.js +1 -1
- package/dist/runtime/launchBroker.js +11 -11
- package/dist/runtime/lifecycleReservation.js +2 -2
- package/dist/runtime/managedCaller.js +111 -0
- package/dist/runtime/ports.js +16 -3
- package/dist/runtime/preallocatedNativeSession.js +2 -2
- package/dist/runtime/processExitObservation.js +3 -2
- package/dist/runtime/providerContinuationReconciliationService.js +1 -1
- package/dist/runtime/runtimeBinding.js +1 -1
- package/dist/runtime/runtimeObservation.js +33 -16
- package/dist/runtime/runtimeSessionCandidate.js +2 -2
- package/dist/runtime/runtimeStopReceipt.js +11 -11
- package/dist/runtime/sessionLaunchRequest.js +2 -2
- package/dist/runtime/sessionOwnerIdentity.js +9 -9
- package/dist/runtime/sessionOwnerRegistry.js +13 -13
- package/dist/runtime/sessionReconciliation.js +4 -4
- package/dist/runtime/sessionTerminationGuard.js +9 -9
- package/dist/runtime/sessionTokenMetrics.js +5 -7
- package/dist/runtime/structuredProviderHost.js +5 -5
- package/dist/runtime/taskRuntimeIsolation.js +24 -24
- package/dist/runtime/tmuxAdapters.js +32 -30
- package/dist/scheduler/activeRoleTurnDelivery.js +37 -15
- package/dist/scheduler/leaderWakeupProcessor.js +78 -55
- package/dist/scheduler/roleTurnLiveness.js +6 -6
- package/dist/scheduler/roleTurnStall.js +8 -9
- package/dist/scheduler/taskExecutionProjection.js +19 -41
- package/dist/scheduler/taskObservabilityProjection.js +75 -122
- package/dist/storage/sqliteSchema.js +1 -21
- package/dist/storage/sqliteStore.js +62 -47
- package/dist/storage/storageSchema.js +1 -8
- package/dist/storage/storageVersions.js +7 -4
- package/dist/storage/taskStore.js +8 -8
- package/dist/storage/upgrade/upgradeOrchestrator.js +112 -83
- package/dist/task/completionReadiness.js +17 -98
- package/dist/task/deliveryGuard.js +9 -11
- package/dist/task/draftPlan.js +142 -0
- package/dist/task/nextAction.js +179 -477
- package/dist/task/publicationVerification.js +1 -0
- package/dist/task/remoteDelivery.js +233 -0
- package/dist/task/task.js +108 -4
- package/dist/task/taskRecordReference.js +0 -1
- package/dist/turn/turn.js +109 -16
- package/dist/verification/verificationGateService.js +0 -26
- package/dist/web/assets/client/components.js +99 -121
- package/dist/web/assets/client/i18n.js +136 -58
- package/dist/web/assets/client/view.js +44 -0
- package/dist/web/assets/styles/cards.js +3 -15
- package/dist/web/assets/styles/widgets.js +4 -0
- package/dist/web/webSnapshot.js +29 -14
- package/dist/workItem/dependencyGate.js +34 -0
- package/dist/workItem/workItem.js +99 -266
- package/dist/workspace/workItemChangeSetManager.js +15 -59
- package/docs/task-local-identity.md +1 -1
- package/i18n/README.zh-CN.md +165 -59
- package/package.json +1 -1
- package/skills/yui-leader/SKILL.md +272 -782
- package/skills/yui-operator/SKILL.md +190 -365
- package/skills/yui-reviewer/SKILL.md +40 -33
- package/skills/yui-runtime/SKILL.md +27 -6
- package/skills/yui-worker/SKILL.md +19 -6
- package/dist/execution/candidateConvergence.js +0 -623
- package/dist/execution/executionGroup.js +0 -854
- package/dist/execution/resourceBroker.js +0 -426
- package/dist/executor/launchPlan.js +0 -16
- package/dist/review/reviewFinding.js +0 -240
- package/dist/review/reviewFindingLedger.js +0 -550
- package/dist/review/reviewOutcomeClassifier.js +0 -255
- package/dist/scheduler/resourceQueueProjection.js +0 -71
- package/dist/task/repairWave.js +0 -150
package/i18n/README.zh-CN.md
CHANGED
|
@@ -17,7 +17,7 @@ Yui 不把 Agent 的判断固化成确定性的工作流引擎。核心只负责
|
|
|
17
17
|
## 核心模型
|
|
18
18
|
|
|
19
19
|
- `WorkItem`:唯一的有界工作单元,保存目标、验收条件、依赖、状态和精简结果。
|
|
20
|
-
- `WorkerProfile
|
|
20
|
+
- `WorkerProfile`:可复用的 Worker 模板,分别保存可移植行为与继承或显式指定的 Agent runtime。
|
|
21
21
|
- `TaskRole`:Task 内可修改的 Worker 实例,可绑定多个 Agent,并分别保存运行配置。
|
|
22
22
|
- `Turn`:Task Role 的一次受管派发与结果交付。
|
|
23
23
|
- `ChangeSet`:隔离 WorkItem 当前 HEAD 的不可变 Git 结果。
|
|
@@ -33,8 +33,19 @@ Agent 对话内创建 native subagent,或交给 Task Role Turn。Yui
|
|
|
33
33
|
worker explorer implementer reviewer
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
Profile
|
|
37
|
-
|
|
36
|
+
Profile 的 runtime 要么动态继承当前全局 Worker active binding,要么显式指定
|
|
37
|
+
一个 Agent 及可选 model/effort;adapter 始终由 Agent 配置派生。`profile list`
|
|
38
|
+
和 `profile show` 会展示当前有效 Agent,以及继承时的 Worker launch revision,
|
|
39
|
+
但不会因此改写 Profile 或增加其 revision。Profile 本身不持有 Session 或
|
|
40
|
+
workspace。显式 Profile 指向的 Agent 只要在全局 Worker 中存在 binding(无论
|
|
41
|
+
active 还是 dormant),其余 binding 配置就取自该 binding;未绑定的 Agent
|
|
42
|
+
使用 Provider 默认值。被显式 Profile 这样引用的 Worker binding,必须先更新
|
|
43
|
+
Profile、改为继承或删除 Profile 后才能解绑。model/effort 仍由 Profile 自身
|
|
44
|
+
决定,省略即表示 Provider 默认值,而不是 Worker 中的值。把 Yui Agent Profile
|
|
45
|
+
应用到新 Task Role 时,会冻结完整解析后的
|
|
46
|
+
binding,以及 instructions、Skills 和访问意图;之后 Profile 或全局 Worker
|
|
47
|
+
变更不会反向改写已有 Task Role。它与 Codex 通过 `--profile` 选择的原生 config
|
|
48
|
+
profile 不是一回事。Operator、Leader 与 Task Role 是运行时 Role。
|
|
38
49
|
|
|
39
50
|
## 环境要求
|
|
40
51
|
|
|
@@ -100,7 +111,7 @@ Task 的命令(例如 `task work create`、`task integration start`)仍使
|
|
|
100
111
|
Task 内的本地子记录 ID。Candidate 只在所属 WorkItem 内递增,并同时保存
|
|
101
112
|
Task 与 WorkItem provenance。
|
|
102
113
|
|
|
103
|
-
Yui 只支持当前 aggregate-
|
|
114
|
+
Yui 只支持当前 aggregate-v31 / Task-v7 schema。旧 home 不提供转换、
|
|
104
115
|
双读或历史记录推断;需要使用新版本时初始化全新的 `YUI_HOME`。当前引用契约见
|
|
105
116
|
[Task 本地 ID](../docs/task-local-identity.md)。
|
|
106
117
|
|
|
@@ -116,11 +127,23 @@ yui task create "修复 CSV 转义" --project app --type bugfix
|
|
|
116
127
|
yui task create "交付 CSV 导出" --project app --type feature
|
|
117
128
|
yui task update <task-id> --priority high --tags release,csv --due-at 2026-08-01T00:00:00Z
|
|
118
129
|
yui task update <task-id> --clear-priority --clear-tags --clear-due-at
|
|
130
|
+
yui task message update <task-id>/<message-id> --body-file updated-message.md --wake-policy none
|
|
131
|
+
yui task work edit <task-id>/<work-item-id> --objective "修订后的目标" \
|
|
132
|
+
--accept "新的可观察验收标准"
|
|
133
|
+
yui task work retire <task-id>/<work-item-id> --summary "从当前 Draft 中移除"
|
|
119
134
|
yui task show <task-id>
|
|
120
135
|
yui task context <task-id>
|
|
121
136
|
yui task activate <task-id>
|
|
122
137
|
```
|
|
123
138
|
|
|
139
|
+
Draft 只保存规划记录和 Project 绑定,不采用可写 managed Workspace。Message
|
|
140
|
+
与 WorkItem 编辑只替换显式指定的可变字段,记录 ID 和审计历史保持不变;重复
|
|
141
|
+
选项表示整体替换,对应 `--clear-*` 显式表示空集合。retired 记录继续保留在历史
|
|
142
|
+
视图中,但退出当前 Draft。retired WorkItem 不满足依赖,也不会通过可选
|
|
143
|
+
replacement 自动重定向下游;激活前必须修正剩余 Draft。所有 Draft-only 编辑和
|
|
144
|
+
retire 都不创建、停止或清理运行时资源;`task activate` 会在采用任何 Workspace
|
|
145
|
+
之前校验当前依赖图、Role 和 Project scope。
|
|
146
|
+
|
|
124
147
|
Task type 描述需求意图,不选择执行协议。软件 Project 通常使用 `bugfix` 或
|
|
125
148
|
`feature`:bugfix 由 Leader 在 Task main 独立、快速完成;如果范围扩大到需要
|
|
126
149
|
独立 owner,应先改为 feature 再创建 WorkItem。feature 由 Leader 判断是自己直接
|
|
@@ -175,6 +198,23 @@ review。冻结头变化时创建新的语义 Round;同一 Reviewer 的兼容
|
|
|
175
198
|
所有候选、ReviewRound 和 Leader 决策都集中在原 WorkItem 下;reject
|
|
176
199
|
后的下一轮会复用原执行 Role、Session 与 workspace,并追加新候选。
|
|
177
200
|
|
|
201
|
+
显式 WorkItem Candidate Review 与 Task-final Review 默认都直接创建一个 main
|
|
202
|
+
Reviewer Turn;只有 Leader 明确提供至少两个不同的 `--lane-role` 时才使用复制执行。
|
|
203
|
+
复制执行最多支持八个 Lane。所有 Producer Lane 在隔离 workspace 中检查同一冻结 Assignment,全部 settle 且至少
|
|
204
|
+
两个成功后,才创建一个权威 main synthesis Turn。自动 policy 触发的 Candidate
|
|
205
|
+
Review 始终保持直接执行。主 Reviewer 通过冻结 Context 按 Lane 顺序读取每个成功
|
|
206
|
+
Producer Turn 的原始结果;Core 不复制其 prompt/workspace/runtime,也不解析结果语义。
|
|
207
|
+
|
|
208
|
+
```sh
|
|
209
|
+
yui task work review <task-id>/<work-item-id>
|
|
210
|
+
yui task work review <task-id>/<work-item-id> \
|
|
211
|
+
--lane-role security-reviewer --lane-role correctness-reviewer
|
|
212
|
+
|
|
213
|
+
yui task review request <task-id> --role reviewer
|
|
214
|
+
yui task review request <task-id> --role reviewer \
|
|
215
|
+
--lane-role security-reviewer --lane-role correctness-reviewer
|
|
216
|
+
```
|
|
217
|
+
|
|
178
218
|
查看已有 Task 的详细状态时,优先使用 `task context`。它一次聚合 Task、Brief、Active Decision、最近的 Milestone、Role、当前及最近的 WorkItem 与关联 Turn、最近的 Message、Open/Resolved InputRequest 和 Event。终端输出会精简历史和长文本;`yui --json task context <task-id>` 会在顶层 `data` 中返回完整记录。
|
|
179
219
|
|
|
180
220
|
Task identity 由一个有界交付目标决定,而不是由涉及几个仓库决定。带仓库的
|
|
@@ -281,10 +321,11 @@ Task/WorkItem 模型,不增加额外任务类型。
|
|
|
281
321
|
`--last` 可直接恢复最近一条;新建会话不会伪装成 resume 选项,必须显式使用
|
|
282
322
|
`operator new`,并把原对话保留在历史中。
|
|
283
323
|
|
|
284
|
-
|
|
324
|
+
从 Profile 当前解析出的 runtime 创建 Task Role 并派发 WorkItem:
|
|
285
325
|
|
|
286
326
|
```sh
|
|
287
327
|
yui config role show worker
|
|
328
|
+
yui config profile show implementer
|
|
288
329
|
yui task role add <task-id> implementer --profile implementer
|
|
289
330
|
yui task role show <task-id> implementer
|
|
290
331
|
|
|
@@ -294,47 +335,32 @@ yui task work isolate <task-id>/<work-item-id>
|
|
|
294
335
|
yui task work dispatch <task-id>/<work-item-id> --input "完成实现并运行聚焦测试"
|
|
295
336
|
```
|
|
296
337
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
338
|
+
不传 `--lane-role` 时,assignee 直接在 WorkItem 主工作区执行。若要让多个生产者
|
|
339
|
+
基于完全相同的冻结 Assignment 独立执行,必须传入至少两个不同的 Task Role;
|
|
340
|
+
单个 Role、重复 Role 或 assignee 本身都会被拒绝:
|
|
300
341
|
|
|
301
342
|
```sh
|
|
302
343
|
yui task work dispatch <task-id>/<work-item-id> \
|
|
303
|
-
--
|
|
304
|
-
--
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
不会阻塞独立资源域继续推进。Provider 限流仍沿用既有的原地重试窗口,不会扩散成
|
|
324
|
-
兄弟 Lane 失败。
|
|
325
|
-
|
|
326
|
-
Leader 可在接受 Group 时增加 `--early-stop <0-100>`。只有 quorum 已满足且 T5 的
|
|
327
|
-
Verify/Resolve 证据证明验收充分时,Yui 才允许提前终止;它只跳过从未启动的 Lane,
|
|
328
|
-
运行中的 straggler 会被报告并保留,不会因为省费被自动杀死。证据不足时,预算或
|
|
329
|
-
deadline 耗尽会把阶段留给 Leader 决议,绝不会把薄证据转换成成功。
|
|
330
|
-
|
|
331
|
-
新建探索历史还会冻结结构化候选收敛契约。Yui 将当前阶段的精确 JSON 形状追加到
|
|
332
|
-
每个 Lane assignment,并在 Leader 推进前校验入选报告:Compare 必须显式划分
|
|
333
|
-
重复簇,并以直接来源、可执行检查或冻结产物支持每条入选路线;Synthesize 对调研
|
|
334
|
-
使用 claim/evidence 表、对架构使用决策矩阵、对代码只选择一个冻结 Git snapshot。
|
|
335
|
-
Verify 必须使用与入选 Synthesize 作者不同的 Role。只有逐条验收证据完整时才能得到
|
|
336
|
-
`passed` 并由 Resolve 接受 Candidate;显式 gap 只能形成 `next-round`,再通过有界的
|
|
337
|
-
Resolve `retry` 继续。票数和衍生分析可以作为报告上下文,但不能替代直接证据。
|
|
344
|
+
--input "完成实现并运行聚焦测试" \
|
|
345
|
+
--lane-role producer-a --lane-role producer-b
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
Lane 是可恢复的逻辑槽。成功 Lane 指向不可变的 Producer Turn 结果;Turn 失败时
|
|
349
|
+
Lane 仍保持 open,并显示为 `needs-attention`。Leader 对精确失败 Turn 执行重试或
|
|
350
|
+
显式结算:
|
|
351
|
+
|
|
352
|
+
```sh
|
|
353
|
+
yui task turn retry <task-id>/<failed-turn-id>
|
|
354
|
+
yui task turn settle <task-id>/<failed-turn-id>
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
Yui 会等待所有 Lane 结算。至少两个 Producer 成功结果才会为 WorkItem assignee
|
|
358
|
+
幂等创建一个主 Turn;成功数不足时本次 WorkItem 尝试失败,不会降级使用单个结果。
|
|
359
|
+
主 Turn 重试继续引用同一来源 Group,也不会重跑成功 Lane。只有成功的主 Turn 能
|
|
360
|
+
形成 Review 与 Integration 使用的 Candidate。`task work show`、`task work list`、
|
|
361
|
+
Task context 和 Web 控制室从相同持久事实推导执行形态、恢复目标、综合资格、主 Turn、
|
|
362
|
+
Candidate 溯源、下一步及责任人。缺失事实保持 `unknown` 或 `unobserved`;token、
|
|
363
|
+
耗时和工具调用只读展示,不参与调度、恢复或生命周期决策。
|
|
338
364
|
|
|
339
365
|
每个 Agent binding 只有一套 adapter-specific 权限枚举配置:`default` 遵循
|
|
340
366
|
provider 默认行为;`bypass` 编译 provider 支持的 bypass flag;`configured`
|
|
@@ -342,26 +368,40 @@ provider 默认行为;`bypass` 编译 provider 支持的 bypass flag;`config
|
|
|
342
368
|
`mode`、`allowedTools` 与 `disallowedTools`。provider 权限与 Profile 行为意图、
|
|
343
369
|
Project 写入授权彼此独立:普通写入只由精确 WorkItem 范围和匹配的 managed
|
|
344
370
|
workspace 授权。任意非 Leader
|
|
345
|
-
Task Role
|
|
346
|
-
bindings,Leader 无需重新拼接 model、effort
|
|
347
|
-
`
|
|
348
|
-
`--agent`
|
|
371
|
+
Task Role 在创建时同时不传 `--profile` 和 `--agent`,会复制全局 Worker Role
|
|
372
|
+
的完整 Agent bindings,Leader 无需重新拼接 model、effort 和权限。传
|
|
373
|
+
`--profile` 时会冻结该 Profile 当前解析出的完整 binding。创建时的 model、
|
|
374
|
+
effort、权限和其他 Agent 设置必须与 `--agent` 同时提供,以便在任何持久化前
|
|
375
|
+
完成能力校验并原子写入一套完整 binding。创建时同时传入 `--profile` 与
|
|
376
|
+
`--agent`,Agent 必须与 Profile 当前解析出的 Agent 一致;Profile runtime
|
|
377
|
+
仍作为基础 binding,显式 Agent 设置覆盖对应字段。更新 Task Role 时,不传
|
|
378
|
+
`--agent` 会更新 active binding;传入 `--agent` 则只更新指定 binding 而不
|
|
379
|
+
激活它,只有 `task role bind` 会切换 active Agent。显式 Profile 必须解析到
|
|
380
|
+
该更新目标,其 runtime 作为基础 binding,显式 Agent 设置覆盖对应字段。单独
|
|
381
|
+
使用继承 Worker 的 Profile 时,可以只更新可移植 Role 行为,而不重新定向绑定
|
|
382
|
+
到其他 Agent 的 Role;若同时传入 `--agent` 或 Agent 设置,其当前解析出的
|
|
383
|
+
Worker Agent 必须与更新目标一致。创建回执与 `task context` 分别记录 Profile
|
|
384
|
+
intent、精确可写 Project 与实际 permission strategy。应用 Profile 会替换
|
|
385
|
+
AgentProfile 所拥有的可移植字段(`defaultAccess`、description、instructions、
|
|
386
|
+
skills 及由 access 派生的 constraints);同一命令中的显式 Role 选项随后覆盖。
|
|
349
387
|
|
|
350
388
|
ReviewRound 从冻结 Candidate SHA 创建独立的可写 worktree。只有 exact
|
|
351
389
|
ReviewRound owner、reviewRoundId、冻结 base 与 workspace 全部匹配时,才获得
|
|
352
390
|
该 workspace 的写入授权;Skill 仍禁止 push、Integration、Task state、其他
|
|
353
391
|
workspace 与真实 YUI_HOME 变更。Reviewer 以最终 Provider 回复交付当前 Turn,
|
|
354
|
-
Yui
|
|
355
|
-
|
|
356
|
-
|
|
392
|
+
Yui 原样保存其完整的自由格式 Markdown、JSON 或普通文本结果,不解析标题、字段、
|
|
393
|
+
checks、severity、finding、verdict 或 evidence commit。Skill 和派发消息可以建议
|
|
394
|
+
输出结构,但该结构不是 Core 协议;格式缺失或 JSON 无效由 Leader 阅读原文后判断。
|
|
395
|
+
Core 自己观测的 workspace 与 Git 证据独立保存。
|
|
357
396
|
|
|
358
397
|
Reviewer 可以修改文件并在不提交的情况下结束 Turn;脏字节不会被推断为 evidence。
|
|
359
398
|
该 Round 仍会精确终结且不产生 Candidate/ChangeSet,workspace 会为 Leader 判断而
|
|
360
399
|
保留,cleanup 会在其重新变干净前拒绝删除。
|
|
361
400
|
|
|
362
401
|
Provider 原生 Turn 终态会结束 Turn,Yui 保存最终回复,将 WorkItem 提交给 Leader 审查,并追加结果消息和
|
|
363
|
-
唤醒 Leader;它不会验收或完成 WorkItem
|
|
364
|
-
|
|
402
|
+
唤醒 Leader;它不会验收或完成 WorkItem。有效结果在 512 KiB 限制内逐字保留;
|
|
403
|
+
缺失、空白、含 NUL 或超限结果不会伪造成功文本,而是以 `missing-result` 和
|
|
404
|
+
Core 诊断失败终结该 Turn。Leader 不会自唤醒,pending wake 会保留到 Leader 空闲。
|
|
365
405
|
|
|
366
406
|
如果无法最终判断结果,交接必须明确标为 `uncertain`、`incomplete`、
|
|
367
407
|
`blocked` 或 `requiring Leader judgment`,并提交最完整且真实的身份、已执行
|
|
@@ -383,11 +423,13 @@ yui config profile show reviewer
|
|
|
383
423
|
subagent 的创建与结果返回完全由 Leader 当前 Agent 的 native child 能力
|
|
384
424
|
完成,没有 `yui ... subagent` 命令。Leader 必须选择并读取一个显式
|
|
385
425
|
Worker Profile;没有合适的专用 Profile 时使用 `worker`。child brief
|
|
386
|
-
需要包含 Profile revision、instructions、Skills
|
|
387
|
-
|
|
426
|
+
需要包含 Profile revision、instructions、Skills、访问边界、验证要求,并把
|
|
427
|
+
Profile 当前解析出的 Agent/model/effort 仅作为上下文。
|
|
388
428
|
|
|
389
429
|
native subagent 继承 Leader Agent、凭据和对话上下文,忽略 Task Role 的
|
|
390
|
-
Agent bindings
|
|
430
|
+
Agent bindings;Profile 的 runtime 选择只控制 Task Role 物化。只有当 Profile
|
|
431
|
+
解析到同一个 Agent 且 native child API 支持时,才应用其中的 model/effort,
|
|
432
|
+
否则继承实际 runtime。Leader 审查返回结果后,在 WorkItem summary 中登记真实
|
|
391
433
|
执行信息:
|
|
392
434
|
|
|
393
435
|
```sh
|
|
@@ -483,6 +525,64 @@ yui task context <task-id>
|
|
|
483
525
|
|
|
484
526
|
需要查看单个集合或记录时,再使用 `task work`、`task message`、`task turn` 和 Task Knowledge 下的细分命令。
|
|
485
527
|
|
|
528
|
+
使用一个幂等命令记录 Task 已确认的 PR/MR 外部交付状态:
|
|
529
|
+
|
|
530
|
+
```sh
|
|
531
|
+
yui task publication upsert <task-id> --project <project> \
|
|
532
|
+
--provider github --repository <owner/name> --kind pull-request --id <number> \
|
|
533
|
+
--url <url> --state open --reported
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
必需的 provider/repository/external ID 会定位当前 Publication。首次 upsert
|
|
537
|
+
创建记录。后续 upsert 会继承未指定的元数据;只有完整证据上下文不变时才继承未指定的
|
|
538
|
+
合入证据。证据上下文包括 local commit、PR/MR state、remote commit、evidence 文本
|
|
539
|
+
和 mergedAt。任一显式提供的上下文值真正变化时,未显式提供的 verification 会重置为
|
|
540
|
+
`reported`,未重新提供的合入证据字段会清除;仅改变 local commit 且未显式提供 state
|
|
541
|
+
时还会把 Publication 重置为 `open`。重复提供相同值仍保持幂等。只有语义发生变化时才
|
|
542
|
+
追加新的不可变记录,并由 Yui 自动关联上一版本;相同输入不会新增事件。`list`、`show`
|
|
543
|
+
和 `task context` 继续保留完整历史。该命令只记录调用方已经掌握的事实,不会自行查询
|
|
544
|
+
Provider,也不替代 Review、Integration 或 Task completion 门禁。
|
|
545
|
+
|
|
546
|
+
可针对当前 GitHub Publication 查询真实 PR 状态并记录验证结果:
|
|
547
|
+
|
|
548
|
+
```sh
|
|
549
|
+
yui task publication verify <task-id>/<publication-id>
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
验证是一次显式的外部读取。一期调用 PATH 中已固定绝对路径的可信本地 `gh`,复用
|
|
553
|
+
`gh` 自己的认证,Yui 不保存 GitHub token。命令先要求当前未 supersede
|
|
554
|
+
Publication 的 local commit 精确等于 Task 交付 head,再要求 GitHub 返回相同的
|
|
555
|
+
PR head、真实 merged 状态和远端合入 commit。远端调用结束后还会重新核对 Task head
|
|
556
|
+
与 Publication,全部不变才追加新的不可变 `verified` 记录。缺少 `gh`、认证不可用、
|
|
557
|
+
Provider 输出不明确、PR 仍 open/closed、head 已移动或本地权威并发变化时都不会写入
|
|
558
|
+
verified。一期不支持 GitLab 远端验证。
|
|
559
|
+
|
|
560
|
+
可查询每个已交付 Project head 是否都有当前 merged Publication 覆盖:
|
|
561
|
+
|
|
562
|
+
```sh
|
|
563
|
+
yui task remote-delivery <task-id>
|
|
564
|
+
yui task remote-delivery <task-id> --json
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
这是只读派生投影,不是新的 Task 状态,也不存在可单独写入的 `merged` 标志。
|
|
568
|
+
active 或 reopened Task 使用当前干净的 Task main heads,并明确标记为 provisional;
|
|
569
|
+
completed 或 archived Task 使用最近一次 `task.completed` 冻结的 heads。每个 Project
|
|
570
|
+
都会展示预期 local commit、匹配的当前未 supersede Publication、PR/MR state、
|
|
571
|
+
verification 与 remote commit。聚合状态为 `none`、`unavailable`、`pending`、
|
|
572
|
+
`partial` 或 `merged`,并分别暴露 `allMerged` 与 `allVerified`。只有
|
|
573
|
+
`localCommit` 精确匹配
|
|
574
|
+
预期 head 且 state 为 `merged` 的当前 Publication 才贡献 merged 覆盖;缺 commit、
|
|
575
|
+
open/closed、陈旧 head 与已 supersede 记录都不会被推断为已合入。Task head 与
|
|
576
|
+
managed base 相同的 Project 不需要 Publication。`task show`、`task context`、
|
|
577
|
+
`task next-action` 和 Web detail 共用同一个 selector。
|
|
578
|
+
`Archive --integrated coverage` 同时要求 `allMerged=true` 和
|
|
579
|
+
`allVerified=true`。
|
|
580
|
+
|
|
581
|
+
有效旧版本 completed Task 如果没有冻结的 completion heads,Yui 会报告
|
|
582
|
+
`unavailable`,并继续对 integrated archive fail closed。先 reopen,再重新 complete
|
|
583
|
+
以记录精确 heads,之后重试 archive。Yui 不会从 Publication 或 worktree 猜测缺失的
|
|
584
|
+
head,`--force` 也不能绕过缺失 head 证据。
|
|
585
|
+
|
|
486
586
|
完成目标后,可将 Task 标记为 completed,从而停止自动唤醒,同时保留 session 和 Task main worktree:
|
|
487
587
|
|
|
488
588
|
```sh
|
|
@@ -494,9 +594,15 @@ completed Task 在显式 reopen 前会拒绝消息、派发、进入 session、
|
|
|
494
594
|
Turn 交付。终态 WorkItem、Review、Integration 与 Lane worktree 会作为非阻塞的
|
|
495
595
|
completion advisory 返回,但必须在 archive 前处理。每个隔离 WorkItem worktree
|
|
496
596
|
仍需显式标记 integrated 或 abandoned,清理时也会删除其受管分支;archive 还必须
|
|
497
|
-
通过 `--integrated` 或 `--abandon` 明确 Task main
|
|
498
|
-
|
|
499
|
-
|
|
597
|
+
通过 `--integrated` 或 `--abandon` 明确 Task main 的处理结果。`--integrated`
|
|
598
|
+
还要求 remote-delivery 的 `allMerged=true` 与 `allVerified=true`;Task
|
|
599
|
+
completion 或只有 reported 的 merge 都不等同于已验证远端交付。如果所有精确
|
|
600
|
+
Task head 都已合入但仍有 Publication 是 `reported`,archive 会列出这些记录并拒绝。
|
|
601
|
+
只有获得明确授权后,`task archive <task-id> --integrated --force` 才能仅覆盖这一
|
|
602
|
+
verification 缺口,并在归档事件中记录 override;它不能绕过缺失、陈旧、open 或
|
|
603
|
+
closed 的合入证据。有意不合入时继续使用显式 `--abandon` 路径。之后 archive 才会
|
|
604
|
+
停止 session 并清理干净的 Task main。Task 与 WorkItem 记录都会保留,Task main
|
|
605
|
+
分支作为恢复信息保留,不会被静默删除。
|
|
500
606
|
Task 生命周期的交互选择只展示有效来源状态:activate 只展示 Draft,complete 只展示 active,reopen 只展示 completed。
|
|
501
607
|
|
|
502
608
|
## Session 与 tmux
|
|
@@ -519,7 +625,7 @@ yui task role takeover <task-id> <role>
|
|
|
519
625
|
yui task role release <task-id> <role>
|
|
520
626
|
```
|
|
521
627
|
|
|
522
|
-
Codex Role thread 可在 Desktop 中直接查看和操作;Desktop 已有 active Turn 时,Yui 只保留待投递工作并等待,不会失败或重复投递。`view`、`takeover`、`release` 继续作为 Claude 等独立进程 Provider 的人工控制入口。Yui 不写入全局 Hook/config,也不启动、重启或停止共享 daemon;Codex CLI/daemon 故障由 Task 生命周期之外修复。Global Operator 与 global Role 继续使用原生交互式 CLI,不属于受管理 Task Provider
|
|
628
|
+
Codex Role thread 可在 Desktop 中直接查看和操作;Desktop 已有 active Turn 时,Yui 只保留待投递工作并等待,不会失败或重复投递。`view`、`takeover`、`release` 继续作为 Claude 等独立进程 Provider 的人工控制入口。Yui 不写入全局 Hook/config,也不启动、重启或停止共享 daemon;Codex CLI/daemon 故障由 Task 生命周期之外修复。Global Operator 与 global Role 继续使用原生交互式 CLI,不属于受管理 Task Provider 协议;Yui 在内部将 Codex 的 Global TUI 连接到同一个默认 App Server,用户不能通过 Agent 或 Role 参数覆盖该连接,Session Manifest 自带不依赖启动进程环境的 Global Context 命令,因此同一 thread 可直接切换到 Desktop 继续对话。
|
|
523
629
|
|
|
524
630
|
当新版本需要离线迁移 Home 时,应等待当前 Turn 完成,然后从普通 shell
|
|
525
631
|
执行 `yui session stop --all`,再重新执行 `yui update`。停止命令会先整体预检:
|