@zq-silk/yui 0.15.8 → 0.15.11

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.
Files changed (151) hide show
  1. package/ARCHITECTURE.md +2 -0
  2. package/ARCHITECTURE.zh-CN.md +151 -0
  3. package/README.md +211 -14
  4. package/dist/agent/launchEnvironment.js +7 -0
  5. package/dist/artifacts/artifactCapability.js +74 -0
  6. package/dist/artifacts/artifactCommitLock.js +249 -0
  7. package/dist/artifacts/artifactPaths.js +151 -0
  8. package/dist/artifacts/gitArtifactRef.js +146 -0
  9. package/dist/artifacts/managedGit.js +332 -0
  10. package/dist/artifacts/taskArtifactRepository.js +277 -0
  11. package/dist/cli/commandCatalog.js +40 -16
  12. package/dist/cli/interactionPolicy.js +3 -3
  13. package/dist/cli/updateOrchestrator.js +24 -1
  14. package/dist/cli/updatePorts.js +7 -3
  15. package/dist/cli/upgradeCommand.js +42 -2
  16. package/dist/cli.js +403 -93
  17. package/dist/commands/globalRoleCommands.js +314 -4
  18. package/dist/commands/operatorCommands.js +33 -2
  19. package/dist/commands/projectCommands.js +6 -7
  20. package/dist/commands/releaseCommands.js +18 -0
  21. package/dist/commands/taskActivationCommands.js +22 -0
  22. package/dist/commands/taskActor.js +25 -0
  23. package/dist/commands/taskCommands.js +846 -155
  24. package/dist/commands/taskIntegrationCommands.js +16 -38
  25. package/dist/commands/taskIntegrationQueueCommands.js +1 -1
  26. package/dist/commands/taskRemoteDeliveryCommand.js +6 -6
  27. package/dist/commands/taskRoleRuntimeStatus.js +35 -0
  28. package/dist/context/runContextPack.js +28 -16
  29. package/dist/context/taskContext.js +64 -5
  30. package/dist/controller/agentHostObservation.js +155 -0
  31. package/dist/controller/clientRuntime.js +17 -2
  32. package/dist/controller/controller.js +11 -2
  33. package/dist/controller/fileSchedulerStoreAdapter.js +446 -13
  34. package/dist/controller/globalInputDelivery.js +119 -0
  35. package/dist/controller/jobControl.js +6 -2
  36. package/dist/controller/resourceInventory.js +14 -4
  37. package/dist/controller/resourceInventoryLinux.js +2 -6
  38. package/dist/controller/runtime.js +81 -6
  39. package/dist/controller/runtimeEventInbox.js +32 -3
  40. package/dist/controller/runtimeEventProcessor.js +26 -6
  41. package/dist/controller/runtimeHookRunFence.js +75 -19
  42. package/dist/controller/structuredProviderObservation.js +133 -70
  43. package/dist/coordination/workMailboxQueue.js +5 -0
  44. package/dist/execution/workItemExecutionProjection.js +1 -1
  45. package/dist/executor/agentExecutor.js +64 -4
  46. package/dist/executor/executorRegistry.js +3 -0
  47. package/dist/executor/fileRoleLaunchPlanner.js +78 -118
  48. package/dist/integration/deliveryObligation.js +2 -1
  49. package/dist/integration/gitIntegrationService.js +312 -382
  50. package/dist/integration/integrationAttempt.js +30 -4
  51. package/dist/integration/integrationQueueService.js +7 -7
  52. package/dist/integration/integrationSourceApplication.js +323 -0
  53. package/dist/kernel/builtinCapabilities.js +32 -24
  54. package/dist/message/globalInterrupt.js +33 -0
  55. package/dist/message/inputControlResolution.js +106 -0
  56. package/dist/message/message.js +423 -0
  57. package/dist/message/messageContinuation.js +126 -3
  58. package/dist/message/taskInterrupt.js +34 -0
  59. package/dist/observability/orchestrationMetrics.js +1 -1
  60. package/dist/plugins/pluginService.js +11 -3
  61. package/dist/release/releaseHandover.js +22 -0
  62. package/dist/release/releaseWorkflowPorts.js +15 -7
  63. package/dist/repository/gitWorkspace.js +72 -15
  64. package/dist/repository/taskWorkspaceCoordinator.js +134 -0
  65. package/dist/repository/taskWorkspacePreparer.js +120 -49
  66. package/dist/repository/workItemCandidateSnapshot.js +34 -0
  67. package/dist/resources/projectResource.js +0 -48
  68. package/dist/resources/projectResourceService.js +3 -81
  69. package/dist/resources/resourceDiscovery.js +3 -2
  70. package/dist/runtime/agentHost.js +152 -72
  71. package/dist/runtime/agentHostCompatibility.js +127 -0
  72. package/dist/runtime/agentHostProtocol.js +53 -0
  73. package/dist/runtime/executionEnvironment.js +0 -19
  74. package/dist/runtime/launchBroker.js +6 -0
  75. package/dist/runtime/sessionReconciliation.js +4 -4
  76. package/dist/runtime/taskRuntimeIsolation.js +30 -6
  77. package/dist/runtime/tmuxAdapters.js +5 -3
  78. package/dist/scheduler/operatorEvent.js +4 -0
  79. package/dist/scheduler/taskExecutionProjection.js +12 -1
  80. package/dist/scheduler/wakeReason.js +7 -1
  81. package/dist/scheduler/wakeupQueue.js +2 -0
  82. package/dist/setup/setupCommand.js +29 -16
  83. package/dist/storage/homeLayout.js +130 -0
  84. package/dist/storage/migrations/artifactsToGit.js +338 -0
  85. package/dist/storage/migrations/collapseWorktreeLayout.js +963 -0
  86. package/dist/storage/migrations/integrationContinuation.js +104 -0
  87. package/dist/storage/migrations/submitIntent.js +126 -0
  88. package/dist/storage/migrations/unifyHomeLayout.js +925 -0
  89. package/dist/storage/sqliteSchema.js +173 -7
  90. package/dist/storage/sqliteStore.js +41 -22
  91. package/dist/storage/storageVersions.js +1 -1
  92. package/dist/storage/storeRpc.js +2 -1
  93. package/dist/storage/upgrade/upgradeOrchestrator.js +95 -2
  94. package/dist/task/archiveDiagnostics.js +128 -0
  95. package/dist/task/nextAction.js +44 -11
  96. package/dist/task/taskActivation.js +26 -0
  97. package/dist/task/taskActivationService.js +85 -69
  98. package/dist/task/taskSubmission.js +236 -0
  99. package/dist/web/assets/client/app.js +58 -2
  100. package/dist/web/assets/client/components.js +1 -0
  101. package/dist/web/assets/client/i18n.js +6 -0
  102. package/dist/web/assets/client/taskSurface.js +202 -7
  103. package/dist/web/assets/client/view.js +7 -4
  104. package/dist/web/assets/shell.js +23 -0
  105. package/dist/web/assets/styles/layout.js +1 -1
  106. package/dist/web/assets/styles/widgets.js +12 -0
  107. package/dist/web/webServer.js +135 -4
  108. package/dist/web/webSnapshot.js +4 -3
  109. package/dist/web/webTaskSurface.js +225 -8
  110. package/dist/workItem/workItem.js +14 -10
  111. package/dist/workspace/workItemChangeSetManager.js +18 -2
  112. package/docs/agent-result-consumption.md +2 -0
  113. package/docs/agent-result-consumption.zh-CN.md +81 -0
  114. package/docs/agent-runtime-drivers.md +2 -0
  115. package/docs/agent-runtime-drivers.zh-CN.md +77 -0
  116. package/docs/architecture/README.md +44 -32
  117. package/docs/architecture/README.zh-CN.md +43 -0
  118. package/docs/architecture/capabilities-and-resources.md +118 -79
  119. package/docs/architecture/capabilities-and-resources.zh-CN.md +83 -0
  120. package/docs/managed-turn-and-session-runtime.md +2 -0
  121. package/docs/managed-turn-and-session-runtime.zh-CN.md +180 -0
  122. package/docs/observability/README.md +2 -0
  123. package/docs/observability/README.zh-CN.md +71 -0
  124. package/docs/plugin-sdk.md +320 -217
  125. package/docs/plugin-sdk.zh-CN.md +293 -0
  126. package/docs/provider-runtime.md +2 -0
  127. package/docs/provider-runtime.zh-CN.md +132 -0
  128. package/docs/release-workflow.md +41 -0
  129. package/docs/release-workflow.zh-CN.md +266 -0
  130. package/docs/roles-and-configuration.md +2 -0
  131. package/docs/roles-and-configuration.zh-CN.md +96 -0
  132. package/docs/sqlite-control-plane-design.md +225 -1
  133. package/docs/sqlite-control-plane-design.zh-CN.md +62 -0
  134. package/docs/task-dag-semantics.md +80 -57
  135. package/docs/task-dag-semantics.zh-CN.md +59 -0
  136. package/docs/task-delivery.md +2 -0
  137. package/docs/task-delivery.zh-CN.md +82 -0
  138. package/docs/task-local-identity.md +2 -0
  139. package/docs/task-local-identity.zh-CN.md +58 -0
  140. package/docs/testing/verification-levels.md +26 -0
  141. package/docs/testing/verification-levels.zh-CN.md +80 -0
  142. package/i18n/README.zh-CN.md +199 -10
  143. package/package.json +2 -1
  144. package/skills/yui-leader/SKILL.md +88 -331
  145. package/skills/yui-leader/references/execution.md +405 -0
  146. package/skills/yui-leader/references/integration.md +52 -2
  147. package/skills/yui-leader/references/planning.md +109 -0
  148. package/skills/yui-leader/references/task-plugins.md +8 -4
  149. package/skills/yui-operator/SKILL.md +22 -4
  150. package/skills/yui-runtime/SKILL.md +27 -0
  151. package/skills/yui-runtime/references/publication.md +20 -0
@@ -2,18 +2,38 @@
2
2
 
3
3
  # Yui
4
4
 
5
+ [![Core CI](https://github.com/zhangqian-silk/yui/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/zhangqian-silk/yui/actions/workflows/ci.yml)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](../LICENSE)
7
+ ![Node](https://img.shields.io/badge/node-20%20%7C%2022%20%7C%2024-brightgreen.svg)
8
+ ![Platform](https://img.shields.io/badge/platform-Linux%20x64%20%28glibc%29-blue.svg)
9
+ [![PRs welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](#参与开发)
10
+
5
11
  让 Agent 持续推进你的任务,而不只是回答一轮对话。
6
12
 
7
- Yui 帮你把日常请求组织成任务,再协调 Agent 解决它们。你只需在对话中描述
8
- 目标:Agent 识别相关 Project,区分新任务与已有任务的补充,把相关需求放在
9
- 一起。每个 Task 由一个 Leader 负责规划,按需调用其他已配置的 Agent,
10
- 并把结果和需要你决定的事项带回来。
13
+ Yui 是面向编程 Agent 的本地控制面。你只需用自然语言把目标告诉 Operator:它
14
+ 识别相关 Project,区分新任务与已有任务的补充,并把每个请求整理成一个 Task,
15
+ 由一个 Leader 负责规划、委派,并把结果与决策带回来。意图、进展和结果都保存
16
+ 在单次对话之外,因此继续工作从 Task 开始——而不是靠你在多个终端之间搬运
17
+ 上下文或凭记忆。
18
+
19
+ **亮点**
20
+
21
+ - **天生持久** —— Task、决策与结果都保存在本地的单一 SQLite 存储里,进程
22
+ 崩溃或重启都不丢,继续工作从 Task 开始,而不是从聊天记录开始。
23
+ - **一处对话,多个 Task** —— Operator 把自然语言请求变成新 Task 或已有
24
+ Task 的补充,无需记 Task ID,也不用在多个终端之间搬运上下文。
25
+ - **每个结果都有 Leader 负责** —— 规划、拆成 WorkItem、委派给 Worker 与
26
+ Reviewer 并闭环;你也可以随时直接和它沟通。
27
+ - **自带 Agent** —— Codex CLI、Claude Code CLI 和 ACP 通过统一边界接入,
28
+ 可替换而不丢失 Task。
29
+ - **本地优先、私有** —— 一切运行在你自己的机器上,面向单个受信任用户;
30
+ Web 视图仅本地回环、只读。
31
+ - **默认隔离** —— 仓库改动发生在受管 Git worktree 中,稳定 checkout 保持只读。
11
32
 
12
- 你不必为每个步骤手动建单,在多个终端之间搬运上下文,或记住哪个 Agent
13
- 正在处理哪条需求。Yui 把意图、进展和结果保存在单次对话之外,让继续工作
14
- 从任务本身开始,而不是依赖你的记忆。
33
+ > **状态:** 尚未发布 1.0(0.15.x)。CLI 与配置在版本之间仍可能变化;每次升级
34
+ > 都会迁移有效的既有 Home。
15
35
 
16
- [快速开始](#快速开始) · [通过对话管理工作](#通过对话管理工作) · [核心设计](#核心设计)
36
+ [快速开始](#快速开始) · [通过对话管理工作](#通过对话管理工作) · [架构](#架构) · [设计原则](#设计原则)
17
37
 
18
38
  ## 快速开始
19
39
 
@@ -104,7 +124,156 @@ Agent 可以重新读取任务上下文,继续兼容的 Session,或在必要
104
124
  想直观看进展,可以在另一个终端运行 `yui web`。本地 Web 展示同一份任务与
105
125
  待回答问题,不是另一套需要同步的任务系统。
106
126
 
107
- ## 核心设计
127
+ ## 架构
128
+
129
+ 在底层,Yui 把每一条持久事实都保存在同一个本地 SQLite 存储里,并让 Agent
130
+ 通过小而明确的操作来读写它。下面从几个不同角度看同一套系统:
131
+
132
+ - [产品结构](#产品结构) —— 你面对的持久对象
133
+ - [工作如何流转](#工作如何流转) —— 围绕 Task 的闭环
134
+ - [用户消息流转](#用户消息流转) —— 你发一条消息时发生了什么
135
+ - [核心模块](#核心模块) —— 长期运行的运行时组件
136
+ - [分层设计](#分层设计) —— 自上而下的职责划分
137
+ - [生命周期](#生命周期) —— Task 与 WorkItem 经历的状态
138
+
139
+ ### 产品结构
140
+
141
+ Yui 为你组织的东西 —— 是持久对象,而不是进程:
142
+
143
+ ```text
144
+ 全局
145
+ ├─ Operator ── 与你对话的 Agent;横跨所有 Project 与 Task
146
+ └─ Projects
147
+ └─ Project ── 受管的代码库 + 它的 Project Knowledge
148
+ └─ Task ── 你要的一个明确结果
149
+ ├─ Brief ......... 目标 · 边界 · 方法
150
+ ├─ Roles ......... Leader(负责)· Workers · Reviewers
151
+ ├─ WorkItem ...... 可独立验收的需求
152
+ │ └─ AgentRun .. 一次明确请求的执行 ─▶ Result
153
+ ├─ 消息 .......... 持久对话 + Decision
154
+ └─ 审查 / 集成 ─▶ 验收交付
155
+ ```
156
+
157
+ ### 工作如何流转
158
+
159
+ ```text
160
+ 你
161
+ │ 用自然语言描述工作 · 回答问题 · 细化范围
162
+ ▼
163
+ Operator ── 读取你的意图,然后:
164
+ │ • 新建一个 Task,或
165
+ │ • 把补充追加到已有 Task(follow-up)
166
+ ▼
167
+ Task ── 由一个 Leader 负责,闭环推进:
168
+ │
169
+ │ 规划 ─▶ 拆解为多个 WorkItem ─▶ 交付 ─▶ 审查 ─▶ 关闭
170
+ │
171
+ │ 每个 WorkItem 由 Leader 自己推进,或委派出去:
172
+ │ ├──▶ Worker 另一个 Agent 来实现
173
+ │ └──▶ Reviewer 在验收前检查结果
174
+ │
175
+ ▼
176
+ 结果与决策回到你这里 —— 你也可以随时直接和 Leader 沟通某个任务的细节。
177
+ ```
178
+
179
+ ### 用户消息流转
180
+
181
+ 你发一条消息时会发生什么 —— Controller 只负责唤醒 Agent,持久记录始终在存储里:
182
+
183
+ ```text
184
+ ── 入站 ────────────────────────────────────────────────────────────────────
185
+ 你 ─▶ Operator ─▶ 记录一个 Task(新建或 follow-up)+ 一条 Message ─▶ yui.db
186
+ │
187
+ Controller 唤醒 Leader
188
+ ▼
189
+ ── 处理 ────────────────────────────────────────────────────────────────────
190
+ Leader 读取 Context ─▶ 自己动手,或委派给 Worker / Reviewer
191
+ ─▶ 把结果 · 决策 · 消息写回 ─▶ yui.db
192
+ │
193
+ Controller 唤醒 Operator
194
+ ▼
195
+ ── 出站 ────────────────────────────────────────────────────────────────────
196
+ yui.db ─▶ Operator 读取更新 ─▶ 回复你
197
+ ```
198
+
199
+ ### 核心模块
200
+
201
+ 长期运行的运行时组件。你始终只和 Operator 对话,真正读写存储的是 Agent
202
+ 与 Controller:
203
+
204
+ ```text
205
+ 你
206
+ │ 你用自然语言和 Operator 对话
207
+ │ (你不直接驱动 Controller 或存储)
208
+ ▼
209
+ Agent 会话 · 在 tmux 中
210
+ │ Operator ── 与你对话的 Agent;把请求归入 Task
211
+ │ Leader · Workers · Reviewers ── 规划、交付、审查
212
+ │ 每个角色通过 AgentHost / AgentEndpoint / Driver 驱动一个原生 Agent:
213
+ │ Codex CLI(App Server)· Claude Code CLI(stream-json)· ACP
214
+ │
215
+ │ Agent 读取 Context 并做原子修改(yui 操作)
216
+ ▼
217
+ ┌─ yui.db — SQLite (WAL) · 唯一事实来源 · 每次修改一个事务
218
+ │ Task · WorkItem · AgentRun · 消息 · 决策 · 结果
219
+ └─ Project Knowledge · 配置
220
+ ▲
221
+ │ 读取并记录运行事实;唤醒会话并投递工作
222
+ │
223
+ Controller · 每个 Home 一个
224
+ 投递 · Scheduler · Job · 能力宿主 · Web 监听
225
+ 它负责搬运工作、记录事实——但从不判断回答好坏
226
+
227
+ Agent 在 Project 中工作:只读 checkout + 隔离 worktree。
228
+ Web 视图(yui web):对存储的本地回环、只读投影。
229
+ ```
230
+
231
+ ### 分层设计
232
+
233
+ 每一层只负责一件事,并暴露小而明确的能力,而不是固定流程:
234
+
235
+ ```text
236
+ 体验层 Experience — 你如何交互
237
+ CLI(Operator)· Web(本地回环、只读)· 原生 Agent 会话
238
+ 采集输入 · 展示事实 · 确认操作 · 调用能力
239
+ ▼
240
+ 决策层 Intelligence — 谁来决定
241
+ Operator:识别请求、划分 Task
242
+ Leader: 规划 · 委派 · 判断 · 完成一个 Task
243
+ Workers · Reviewers(行为来自 Role 与 Skill)
244
+ ▼
245
+ 能力层 Capability — Yui 暴露的原子操作
246
+ 交付: Task · WorkItem · Decision · Candidate · Review
247
+ 上下文:Context · Message · InputRequest · Project Knowledge
248
+ 配置: Role · Agent 配置 · Project · Plugin
249
+ 执行: dispatch · inspect · stop · 资源操作 · Artifact
250
+ ▼
251
+ 执行层 Execution — 工作实际如何运行
252
+ AgentHost / AgentEndpoint / Driver,各自运行在 tmux 会话中
253
+ Codex CLI(App Server)· Claude Code CLI(stream-json)· ACP
254
+ 受管 Git worktree · 采用的环境
255
+ ▼
256
+ 内核 Kernel — 持久权威:yui.db(SQLite,WAL)
257
+ 存储 · 身份 · 权限 · 操作事实 · 实例宿主
258
+
259
+ ▲ 插件通过 Capability Registry 扩展能力层
260
+ ```
261
+
262
+ ### 生命周期
263
+
264
+ 每个对象的状态只有一个权威;执行与等待是运行事实,不是额外状态:
265
+
266
+ ```text
267
+ Task draft ─▶ active ─▶ completed ─▶ archived
268
+ └────▶ cancelled ─▶ archived
269
+
270
+ WorkItem open ─▶ accepted ─▶ retired
271
+
272
+ Draft 只保存规划;激活后才采用交付工作区。
273
+ 归档需要工作已了结、worktree 干净,且不可重新打开。
274
+ ```
275
+
276
+ ## 设计原则
108
277
 
109
278
  ### Agent 做判断,Yui 保存工作事实
110
279
 
@@ -139,6 +308,17 @@ Task-local 插件。可执行插件仍需要具体执行授权;业务结果可
139
308
  Yui 面向一个受信任本地用户,不是 OS 沙箱,也不是远程多用户服务。发布、
140
309
  授予新权限等外部效果仍需相应授权。
141
310
 
311
+ ## 对比
312
+
313
+ | | 只聊天的 Agent | 手动 Agent CLI + tmux | Yui |
314
+ | --- | --- | --- | --- |
315
+ | 工作能否跨会话留存 | 否 | 靠你自己记 | 持久 Task,集中存储 |
316
+ | 新请求还是补充 | 你判断 | 你判断 | Operator 自动分流 |
317
+ | 多步委派 | 手动 | 手动 | Leader → WorkItem → Worker/Reviewer |
318
+ | 中途换模型/Agent | 上下文丢失 | 手动重配 | 统一边界下可替换 |
319
+ | 并行工作隔离 | —— | 自己管分支 | 受管 Git worktree |
320
+ | 事实存放在哪 | 聊天记录 | 分散各处 | 单一 SQLite 事实来源 |
321
+
142
322
  ## 深入了解
143
323
 
144
324
  [总体架构](../ARCHITECTURE.md)介绍端到端设计,
@@ -150,7 +330,9 @@ Yui 默认将控制面数据保存在 `~/.yui`,通过 `YUI_HOME` 选择另一
150
330
 
151
331
  ## 参与开发
152
332
 
153
- 源码 checkout 中从 `npm ci` 和 `npm test` 开始,阅读
333
+ 完整流程见 [CONTRIBUTING.md](../CONTRIBUTING.md),并请遵守
334
+ [行为准则](../CODE_OF_CONDUCT.md)。简而言之:源码 checkout 中从
335
+ `npm ci` 和 `npm test` 开始,阅读
154
336
  `.agents/skills/develop-yui/SKILL.md` 与[验证策略](../docs/testing/verification-levels.md)。
155
337
  源码构建还需要 Linux C 编译器和静态 libc 开发库,用于构建 Claude 子进程
156
338
  监督器;发布的 npm 包已包含该可执行文件,安装使用时无需编译。
@@ -160,6 +342,13 @@ Yui 默认将控制面数据保存在 `~/.yui`,通过 `YUI_HOME` 选择另一
160
342
  状态命令前执行该 launcher 的 `setup`。不要用全局 `yui` 或 `make link`
161
343
  验证本地修改。真实模型、付费或共享资源测试需要用户明确请求这些资源。
162
344
 
345
+ ## 社区与支持
346
+
347
+ - 问题、缺陷与功能建议:提交
348
+ [GitHub issue](https://github.com/zhangqian-silk/yui/issues)。
349
+ - 安全:见[安全策略](../SECURITY.md)。Yui 面向单个受信任的本地用户,不是
350
+ OS 沙箱,也不是远程服务;涉及安全的问题请私下报告,不要公开提交 issue。
351
+
163
352
  ## 许可证
164
353
 
165
354
  [MIT](../LICENSE)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zq-silk/yui",
3
- "version": "0.15.8",
3
+ "version": "0.15.11",
4
4
  "description": "Local control plane for long-running native agent CLI sessions backed by tmux.",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -14,6 +14,7 @@
14
14
  "docs",
15
15
  "README.md",
16
16
  "ARCHITECTURE.md",
17
+ "ARCHITECTURE.zh-CN.md",
17
18
  "i18n/README.zh-CN.md",
18
19
  "LICENSE"
19
20
  ],