work-ally 0.2.0-alpha.1
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/AGENTS.md +110 -0
- package/DASHBOARD.md +160 -0
- package/PRODUCT.md +113 -0
- package/README.md +403 -0
- package/ally.sh +171 -0
- package/bridge/src/approval-rules.ts +360 -0
- package/bridge/src/channel-delivery.ts +207 -0
- package/bridge/src/channel-types.ts +22 -0
- package/bridge/src/channels/fake/adapter.ts +31 -0
- package/bridge/src/channels/feishu/adapter.ts +411 -0
- package/bridge/src/channels/feishu/approvals.ts +6 -0
- package/bridge/src/channels/feishu/formatter.ts +276 -0
- package/bridge/src/channels/feishu/normalize.ts +368 -0
- package/bridge/src/codex-config.ts +52 -0
- package/bridge/src/config.ts +240 -0
- package/bridge/src/fake-runtime-client.ts +505 -0
- package/bridge/src/handoff-service.ts +494 -0
- package/bridge/src/logger.ts +194 -0
- package/bridge/src/memory-digest.ts +186 -0
- package/bridge/src/receiver-approval-autonomy.ts +158 -0
- package/bridge/src/receiver-control-core.ts +140 -0
- package/bridge/src/receiver-control-work-session.ts +218 -0
- package/bridge/src/receiver-control.ts +83 -0
- package/bridge/src/receiver-delivery.ts +136 -0
- package/bridge/src/receiver-helpers.ts +96 -0
- package/bridge/src/receiver-human-gate.ts +333 -0
- package/bridge/src/receiver-inbound-preflight.ts +162 -0
- package/bridge/src/receiver-recovery.ts +236 -0
- package/bridge/src/receiver-runtime-callbacks.ts +367 -0
- package/bridge/src/receiver-runtime-policy.ts +132 -0
- package/bridge/src/receiver-runtime-state.ts +124 -0
- package/bridge/src/receiver-support-actions.ts +189 -0
- package/bridge/src/receiver-thread-start.ts +57 -0
- package/bridge/src/receiver-turn-coordination.ts +94 -0
- package/bridge/src/receiver-turn-execution.ts +257 -0
- package/bridge/src/receiver-turn-failure.ts +143 -0
- package/bridge/src/receiver-turn-result.ts +185 -0
- package/bridge/src/receiver-turn-steer.ts +70 -0
- package/bridge/src/receiver-work-session.ts +76 -0
- package/bridge/src/receiver.ts +329 -0
- package/bridge/src/router.ts +62 -0
- package/bridge/src/runtime-client-agent-messages.ts +150 -0
- package/bridge/src/runtime-client-message-dispatch.ts +176 -0
- package/bridge/src/runtime-client-protocol.ts +411 -0
- package/bridge/src/runtime-client-request-ops.ts +56 -0
- package/bridge/src/runtime-client-run-turn.ts +158 -0
- package/bridge/src/runtime-client-thread-ops.ts +270 -0
- package/bridge/src/runtime-client-transport.ts +309 -0
- package/bridge/src/runtime-client-turn-poll.ts +224 -0
- package/bridge/src/runtime-client-turn-read.ts +185 -0
- package/bridge/src/runtime-client-turn-state.ts +105 -0
- package/bridge/src/runtime-client.ts +344 -0
- package/bridge/src/runtime-user-input.ts +403 -0
- package/bridge/src/scheduler.ts +239 -0
- package/bridge/src/server-handoff-command.ts +364 -0
- package/bridge/src/server-main.ts +80 -0
- package/bridge/src/server-routine-command.ts +60 -0
- package/bridge/src/server-routine-execution.ts +222 -0
- package/bridge/src/server-runtime-app-support.ts +107 -0
- package/bridge/src/server-runtime-app.ts +238 -0
- package/bridge/src/server-thread-sync-command.ts +63 -0
- package/bridge/src/server.ts +17 -0
- package/bridge/src/session-store-delivery.ts +220 -0
- package/bridge/src/session-store-human-gate.ts +380 -0
- package/bridge/src/session-store-inbound-acceptance.ts +66 -0
- package/bridge/src/session-store-meta.ts +134 -0
- package/bridge/src/session-store-turn-ledger.ts +272 -0
- package/bridge/src/session-store.ts +380 -0
- package/bridge/src/system-notify.ts +220 -0
- package/bridge/src/thread-sync.ts +200 -0
- package/bridge/src/translator.ts +494 -0
- package/bridge/src/types.ts +289 -0
- package/bridge/src/utils.ts +104 -0
- package/bridge/src/work-session-store.ts +471 -0
- package/docs/.gitkeep +0 -0
- package/docs/architecture/codex-feishu-bridge-proposal.md +2742 -0
- package/docs/completed/FEATURE-feishu-markdown-and-reply-support.md +327 -0
- package/docs/completed/README.md +21 -0
- package/docs/completed/SPEC-approval-autonomy-and-safe-defaults.md +205 -0
- package/docs/completed/SPEC-approval-batch-and-strict-reply-shortcuts.md +153 -0
- package/docs/completed/SPEC-conversation-noise-reduction-and-busy-input-gate.md +538 -0
- package/docs/completed/SPEC-engineering-sop-skillization.md +190 -0
- package/docs/completed/SPEC-faithful-bridge-core-thinning-v2.md +376 -0
- package/docs/completed/SPEC-faithful-bridge-core-thinning.md +1071 -0
- package/docs/completed/SPEC-group-chat-sender-identity.md +301 -0
- package/docs/completed/SPEC-middleware-exception-visibility.md +227 -0
- package/docs/completed/SPEC-nightly-memory-digest-visibility.md +121 -0
- package/docs/completed/SPEC-project-group-chat-human-centered-conversation-mapping.md +326 -0
- package/docs/completed/SPEC-remove-cli-persona-bootstrap.md +201 -0
- package/docs/developer-workflow.md +49 -0
- package/docs/implementation/SPEC-codex-same-machine-session-handoff-implementation.md +239 -0
- package/docs/implementation/test-coverage-map.md +363 -0
- package/docs/implementation/work-ally-implementation-guide.md +790 -0
- package/docs/issues/README.md +10 -0
- package/docs/issues/pending/ANALYSIS-ally-premature-recovery-notice-and-task-state-semantics-2026-03-18.md +295 -0
- package/docs/issues/resolved/ANALYSIS-approval-waiting-visible-but-approval-artifact-missing-2026-03-16.md +466 -0
- package/docs/issues/resolved/ANALYSIS-blocking-state-visible-without-user-actionable-artifact-2026-03-16.md +261 -0
- package/docs/issues/resolved/ANALYSIS-codex-app-server-transport-disconnect-semantics-2026-03-14.md +606 -0
- package/docs/issues/resolved/ANALYSIS-premature-terminalization-on-fresh-thread-poll-and-object-error-leak-2026-03-16.md +348 -0
- package/docs/issues/resolved/ANALYSIS-runtime-turn-delivery-and-recovery-2026-03-14.md +603 -0
- package/docs/issues/resolved/ANALYSIS-self-test-gap-approval-waiting-visible-but-approval-artifact-missing-2026-03-16.md +166 -0
- package/docs/issues/resolved/ANALYSIS-self-test-gap-blocking-state-visible-without-user-actionable-artifact-2026-03-16.md +186 -0
- package/docs/issues/resolved/ANALYSIS-self-test-gap-premature-terminalization-on-fresh-thread-poll-and-object-error-leak-2026-03-16.md +166 -0
- package/docs/issues/resolved/REPORT-ally-runtime-turn-delivery-3b42fb8-2026-03-15.md +373 -0
- package/docs/manual-acceptance.md +127 -0
- package/docs/ops-runbook.md +44 -0
- package/docs/planning/FEATURE-memory-system.md +748 -0
- package/docs/planning/SPEC-active-turn-steer-and-context-compaction-visibility.md +269 -0
- package/docs/planning/SPEC-approval-rules-inheritance-and-local-validation-lane.md +450 -0
- package/docs/planning/SPEC-assistant-persona-bootstrap.md +199 -0
- package/docs/planning/SPEC-assistant-rename.md +610 -0
- package/docs/planning/SPEC-bridge-app-server-protocol-alignment.md +667 -0
- package/docs/planning/SPEC-claude-runtime-host-for-work-ally.md +434 -0
- package/docs/planning/SPEC-cli-feishu-codex-session-unification.md +236 -0
- package/docs/planning/SPEC-codex-same-machine-session-handoff.md +873 -0
- package/docs/planning/SPEC-feishu-reaction-shortcuts.md +282 -0
- package/docs/planning/SPEC-local-stable-release-boundary.md +166 -0
- package/docs/planning/SPEC-managed-thread-entry-and-surface-mobility.md +862 -0
- package/docs/planning/SPEC-minimal-bridge-semantics-and-user-visible-surface.md +362 -0
- package/docs/planning/SPEC-npm-alpha-distribution-and-install-first-release.md +222 -0
- package/docs/planning/SPEC-remove-websocket-runtime-transport.md +364 -0
- package/docs/planning/SPEC-runtime-abstraction-phase-1.md +424 -0
- package/docs/planning/SPEC-runtime-connection-and-turn-recovery-semantics.md +274 -0
- package/docs/planning/SPEC-session-presence-and-state-visibility.md +397 -0
- package/docs/planning/SPEC-skill-first-capability-packaging.md +338 -0
- package/docs/planning/SPEC-stable-archive-contract.md +456 -0
- package/docs/planning/SPEC-supervised-start-boundary.md +127 -0
- package/docs/planning/SPEC-user-barrier-reduction-and-activation.md +832 -0
- package/docs/planning/ally-next.md +1278 -0
- package/docs/planning/assistant-workbench-spec.md +725 -0
- package/docs/planning/product-workbench.md +283 -0
- package/docs/product-onboarding.md +227 -0
- package/docs/product-spec-standard.md +528 -0
- package/docs/troubleshooting.md +45 -0
- package/docs/user-quickstart.md +46 -0
- package/internal/dispatch.sh +95 -0
- package/internal/lib/common.sh +1450 -0
- package/internal/modules/assistant/manage.sh +1312 -0
- package/internal/modules/bootstrap/setup.sh +144 -0
- package/internal/modules/config/init-env.sh +10 -0
- package/internal/modules/global/manage.sh +154 -0
- package/internal/modules/handoff/manage.sh +54 -0
- package/internal/modules/mcp/manage.sh +83 -0
- package/internal/modules/ops/logs.sh +76 -0
- package/internal/modules/routines/manage.sh +55 -0
- package/internal/modules/runtime/assistant-autosave.sh +26 -0
- package/internal/modules/runtime/restart.sh +6 -0
- package/internal/modules/runtime/start.sh +283 -0
- package/internal/modules/runtime/status.sh +194 -0
- package/internal/modules/runtime/stop.sh +55 -0
- package/internal/modules/runtime/supervisor.sh +216 -0
- package/internal/modules/runtime/update.sh +26 -0
- package/package.json +41 -0
- package/runtime/config/.gitkeep +0 -0
- package/runtime/host/.gitkeep +0 -0
- package/runtime/host/healthcheck-codex-app-server.ts +22 -0
- package/runtime/host/ping-pong-codex-app-server.ts +66 -0
- package/runtime/host/probe-codex-app-server.ts +115 -0
- package/skills/archive-reader/SKILL.md +9 -0
- package/skills/feishu-production-debug/SKILL.md +37 -0
- package/skills/feishu-production-debug/references/feishu-debug-order.md +49 -0
- package/skills/feishu-production-debug/references/platform-permission-baseline.md +23 -0
- package/skills/issue-to-spec-triage/SKILL.md +44 -0
- package/skills/issue-to-spec-triage/references/triage-rules.md +66 -0
- package/skills/memory-digest/SKILL.md +9 -0
- package/skills/post-implementation-closure/SKILL.md +39 -0
- package/skills/post-implementation-closure/references/closure-checklist.md +45 -0
- package/skills/post-implementation-closure/references/doc-drift-map.md +49 -0
- package/skills/product-spec/SKILL.md +244 -0
- package/templates/env.example +5 -0
- package/templates/routines/nightly-memory-digest.yaml +10 -0
- package/templates/workspace/AGENTS.md +26 -0
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
# Skill-First Capability Packaging
|
|
2
|
+
|
|
3
|
+
更新时间:2026-03-21
|
|
4
|
+
状态:Draft / Exploration
|
|
5
|
+
Owner:Ally
|
|
6
|
+
相关文档:
|
|
7
|
+
- `docs/product-spec-standard.md`
|
|
8
|
+
- `docs/architecture/codex-feishu-bridge-proposal.md`
|
|
9
|
+
- `docs/implementation/work-ally-implementation-guide.md`
|
|
10
|
+
- `skills/`
|
|
11
|
+
- `.research/nanoclaw/CONTRIBUTING.md`
|
|
12
|
+
- `.research/openclaw/skills/skill-creator/SKILL.md`
|
|
13
|
+
|
|
14
|
+
## 1. Summary
|
|
15
|
+
|
|
16
|
+
这份 spec 要回答的不是“现在立刻把多少代码搬成 skill”,而是先把 `work-ally` 的一个长期产品方向收清楚:
|
|
17
|
+
|
|
18
|
+
> 对于新增能力,默认先判断它是否应该做成一个 Skill 包,而不是继续把逻辑长进中间层核心。
|
|
19
|
+
|
|
20
|
+
这里的 Skill 不是一段孤立提示词,而是一个能力包:`SKILL.md` 加上可选的 `scripts/`、`references/`、`assets/`。它更适合承接“AI 遇到特定任务时怎么做”的方法、模板、辅助脚本与领域工作流,而不是承接桥接主链路本身。
|
|
21
|
+
|
|
22
|
+
这次 spec 的首要目标有两个:
|
|
23
|
+
|
|
24
|
+
1. 固定 `Core / Hybrid / Skill` 三分法,作为今后新增能力的默认判断模型。
|
|
25
|
+
2. 固定 `skill-first` 产品原则:新增 capability 若可作为 Skill 包成立,就不应优先进入 bridge / internal 核心。
|
|
26
|
+
|
|
27
|
+
这次不直接推进已有能力的大规模外迁。旧能力往外迁,另立后续专题,避免一次改动过大影响稳定性。
|
|
28
|
+
|
|
29
|
+
## 2. 背景
|
|
30
|
+
|
|
31
|
+
### 2.1 当前问题不是“会不会做功能”,而是“功能往哪里长”
|
|
32
|
+
|
|
33
|
+
`work-ally` 经过多轮 bridge core thinning 之后,长期方向已经越来越明确:
|
|
34
|
+
|
|
35
|
+
- core 只负责忠实桥接
|
|
36
|
+
- 中间层只补官方 Codex 与真实协作场景之间的缝隙
|
|
37
|
+
- 不继续把产品做成第二套任务系统或第二套 agent 脑
|
|
38
|
+
|
|
39
|
+
但当前仍缺一条明确的新增能力准则:
|
|
40
|
+
|
|
41
|
+
- 某个能力到底应该进 bridge core?
|
|
42
|
+
- 还是应该进 desk 资产?
|
|
43
|
+
- 还是其实更适合做成 Skill 包?
|
|
44
|
+
|
|
45
|
+
如果这条准则不先拍板,后续每次加 feature 都很容易重新把中间层做厚。
|
|
46
|
+
|
|
47
|
+
### 2.2 官方 Codex 的 Skill 模型已经给了正确启发
|
|
48
|
+
|
|
49
|
+
官方 Codex 的 Skills 本身就是一种“能力包”机制,而不是只塞一段常驻提示词。一个 Skill 可以包含:
|
|
50
|
+
|
|
51
|
+
- `SKILL.md`
|
|
52
|
+
- `scripts/`
|
|
53
|
+
- `references/`
|
|
54
|
+
- `assets/`
|
|
55
|
+
|
|
56
|
+
这说明 Skill 更适合承接:
|
|
57
|
+
|
|
58
|
+
- 特定任务的 workflow
|
|
59
|
+
- 可复用模板
|
|
60
|
+
- 辅助脚本
|
|
61
|
+
- 领域知识与参考资料
|
|
62
|
+
|
|
63
|
+
也就是说,它天然适合作为 `work-ally` 的“内容工作流外挂层”。
|
|
64
|
+
|
|
65
|
+
### 2.3 竞品给出的方向高度一致
|
|
66
|
+
|
|
67
|
+
从 research 目录里的参考实现看,方向基本一致:
|
|
68
|
+
|
|
69
|
+
- NanoClaw 的态度非常激进:新 feature、capability、compatibility、enhancement 默认不直接进核心源码,而是做成 skills。
|
|
70
|
+
- OpenClaw 的实践更成熟:它把很多渠道与领域能力组织成独立 skills,并明确把 skill 视为模块化、自包含、可组合的能力包。
|
|
71
|
+
|
|
72
|
+
这两者虽然程度不同,但都在强调同一件事:
|
|
73
|
+
|
|
74
|
+
> 主产品保持极简,把变化快、个性化强、方法论导向的能力外置。
|
|
75
|
+
|
|
76
|
+
### 2.4 `work-ally` 其实已经有这条路的雏形
|
|
77
|
+
|
|
78
|
+
当前仓库并不是从 0 开始:
|
|
79
|
+
|
|
80
|
+
- `skills/archive-reader/`
|
|
81
|
+
- `skills/memory-digest/`
|
|
82
|
+
- `skills/product-spec/`
|
|
83
|
+
|
|
84
|
+
另外,灯塔文档和 implementation guide 里都已经写过类似判断:`archive-reader`、`memory-digest` 这类机制能力更适合落成 skills 或等价装配点。
|
|
85
|
+
|
|
86
|
+
因此,这次 spec 更像是把已有直觉、零散实践和长期边界,正式收口成一个产品合同。
|
|
87
|
+
|
|
88
|
+
## 3. 问题定义
|
|
89
|
+
|
|
90
|
+
当前如果不明确建立 `skill-first` 准则,会持续出现 4 类问题:
|
|
91
|
+
|
|
92
|
+
### 3.1 新能力默认继续长进中间层
|
|
93
|
+
|
|
94
|
+
即使某个能力本质上只是“AI 在某类任务里该如何工作”,实现时也很容易顺手长到 bridge / internal 里,导致核心越来越厚。
|
|
95
|
+
|
|
96
|
+
### 3.2 内容工作流和桥接合同混在一起
|
|
97
|
+
|
|
98
|
+
路由、审批、恢复、状态真相,和摘要提炼、模板生成、排查方法、本地脚本,这些本来是不同层级的东西;一旦混住,就会让 bridge 丧失清晰边界。
|
|
99
|
+
|
|
100
|
+
### 3.3 用户定制空间被核心实现绑死
|
|
101
|
+
|
|
102
|
+
如果能力都长在核心里,用户要么接受整包复杂度,要么只能 fork 主产品改代码;这不利于让用户按项目或按角色做差异化能力包。
|
|
103
|
+
|
|
104
|
+
### 3.4 后续维护重心会继续落在“守着大 core”
|
|
105
|
+
|
|
106
|
+
真正高成本的不是现在这一次改多少代码,而是未来每加一个 feature,都要在 bridge / internal 里再拧一轮产品语义、测试和恢复路径。
|
|
107
|
+
|
|
108
|
+
## 4. 目标 / 非目标
|
|
109
|
+
|
|
110
|
+
### 4.1 目标
|
|
111
|
+
|
|
112
|
+
1. 定义 `Core / Hybrid / Skill` 三分法,作为新增能力默认判断模型。
|
|
113
|
+
2. 明确 `skill-first` 原则:新增 capability 若可以作为 Skill 包成立,不优先长进 core。
|
|
114
|
+
3. 固定 `work-ally` 的第一阶段 Skill 包边界:依赖官方 Codex Skill 机制,不自造第二套插件平台。
|
|
115
|
+
4. 明确第一阶段的信任与分发边界:先做仓库内 / 自管 / 可审计的 Skill,不做远程 market。
|
|
116
|
+
5. 列出当前最适合试点 Skill 化的能力候选,为后续专题提供输入。
|
|
117
|
+
6. 把这条原则同步回核心产品文档与项目纪律,避免它只停留在一次聊天里。
|
|
118
|
+
|
|
119
|
+
### 4.2 非目标
|
|
120
|
+
|
|
121
|
+
1. 这次不直接迁移已有能力到 Skill。
|
|
122
|
+
2. 这次不承诺上线远程 Skill marketplace、在线安装或自动拉取机制。
|
|
123
|
+
3. 这次不为 Skill 再造一套独立 runtime / registry / sandbox 平台。
|
|
124
|
+
4. 这次不修改 bridge 主链路的稳定行为。
|
|
125
|
+
5. 这次不把所有能力一股脑地解释成 Skill。
|
|
126
|
+
|
|
127
|
+
## 5. 产品定义与用户路径
|
|
128
|
+
|
|
129
|
+
### 5.1 一句话定义
|
|
130
|
+
|
|
131
|
+
> `work-ally` 的长期方向是:bridge core 负责稳定桥接合同,变化快、定制性强、方法论驱动的能力优先做成 Skill 包。
|
|
132
|
+
|
|
133
|
+
### 5.2 这份 spec 的主要使用者
|
|
134
|
+
|
|
135
|
+
这份 spec 主要不是给终端用户看的,而是给:
|
|
136
|
+
|
|
137
|
+
- 产品经理
|
|
138
|
+
- 工程维护者
|
|
139
|
+
- 后续 feature owner
|
|
140
|
+
|
|
141
|
+
他们在新增能力之前,必须先回答:这件事到底应该放在哪一层。
|
|
142
|
+
|
|
143
|
+
### 5.3 新增能力的默认路径
|
|
144
|
+
|
|
145
|
+
以后当有人提出一个新能力时,默认先走下面这个判断路径:
|
|
146
|
+
|
|
147
|
+
1. 它是不是 bridge contract 的一部分?
|
|
148
|
+
2. 如果不是,它是不是只是在回答“AI 遇到某类任务时怎么做”?
|
|
149
|
+
3. 如果是,它能否作为 `SKILL.md + scripts/references/assets` 的能力包独立成立?
|
|
150
|
+
4. 如果能,默认不优先改 bridge / internal 核心,而是优先设计为 Skill 或 Hybrid。
|
|
151
|
+
|
|
152
|
+
### 5.4 对用户意味着什么
|
|
153
|
+
|
|
154
|
+
这条方向不是为了让用户学习更多新概念,而是为了让最终产品更轻:
|
|
155
|
+
|
|
156
|
+
- 默认核心更稳定
|
|
157
|
+
- 非主链路能力更容易定制
|
|
158
|
+
- 不需要的人不必继承整包复杂度
|
|
159
|
+
|
|
160
|
+
## 6. 机制设计
|
|
161
|
+
|
|
162
|
+
### 6.1 三分法定义
|
|
163
|
+
|
|
164
|
+
#### A. Core
|
|
165
|
+
|
|
166
|
+
Core 只承接“没有它,桥就不成立”的能力。
|
|
167
|
+
|
|
168
|
+
典型包括:
|
|
169
|
+
|
|
170
|
+
- Feishu 收发与路由
|
|
171
|
+
- approval / user-input gate
|
|
172
|
+
- active turn steer
|
|
173
|
+
- recovery / final redelivery
|
|
174
|
+
- same-machine handoff
|
|
175
|
+
- scheduler 的触发、占位、去重与状态记录
|
|
176
|
+
|
|
177
|
+
判断标准:
|
|
178
|
+
|
|
179
|
+
- 如果拿掉它,bridge 主链路就不再成立
|
|
180
|
+
- 或者产品无法继续诚实表达运行真相
|
|
181
|
+
|
|
182
|
+
那么它必须留在 core。
|
|
183
|
+
|
|
184
|
+
#### B. Hybrid
|
|
185
|
+
|
|
186
|
+
Hybrid 指的是:
|
|
187
|
+
|
|
188
|
+
- 触发、调度、通知、写回、失败补偿留在 core
|
|
189
|
+
- 具体内容生成、提炼规则、模板和辅助脚本放进 Skill 包
|
|
190
|
+
|
|
191
|
+
这类能力既和 bridge 运行态有关,又包含明显的内容工作流。
|
|
192
|
+
|
|
193
|
+
当前最典型的候选就是:
|
|
194
|
+
|
|
195
|
+
- `memory-digest`
|
|
196
|
+
|
|
197
|
+
#### C. Skill
|
|
198
|
+
|
|
199
|
+
Skill 只承接“遇到某类任务时 AI 应该怎么工作”的能力包。
|
|
200
|
+
|
|
201
|
+
它更适合放:
|
|
202
|
+
|
|
203
|
+
- 方法论
|
|
204
|
+
- 工作流
|
|
205
|
+
- 模板
|
|
206
|
+
- 领域参考资料
|
|
207
|
+
- 辅助脚本
|
|
208
|
+
- 可选资产
|
|
209
|
+
|
|
210
|
+
它不应该直接承接:
|
|
211
|
+
|
|
212
|
+
- 路由真相
|
|
213
|
+
- 审批真相
|
|
214
|
+
- 会话恢复真相
|
|
215
|
+
- 交付补偿真相
|
|
216
|
+
|
|
217
|
+
### 6.2 Skill 包定义
|
|
218
|
+
|
|
219
|
+
在 `work-ally` 里,Skill 采用官方 Codex 的能力包心智,不再把 Skill 理解成“一个额外提示词文件”。
|
|
220
|
+
|
|
221
|
+
一个 Skill 包至少包含:
|
|
222
|
+
|
|
223
|
+
- `SKILL.md`
|
|
224
|
+
|
|
225
|
+
可按需包含:
|
|
226
|
+
|
|
227
|
+
- `scripts/`
|
|
228
|
+
- `references/`
|
|
229
|
+
- `assets/`
|
|
230
|
+
|
|
231
|
+
因此,Skill 适合表达的是“按需加载的机制能力”,而不是“主身份”或“常驻人格”。
|
|
232
|
+
|
|
233
|
+
### 6.3 第一阶段挂载边界
|
|
234
|
+
|
|
235
|
+
第一阶段坚持 KISS:
|
|
236
|
+
|
|
237
|
+
- 直接复用官方 Codex Skill 机制
|
|
238
|
+
- `work-ally` 不自造第二套 Skill runtime
|
|
239
|
+
- `work-ally` 不自造远程插件市场
|
|
240
|
+
- `work-ally` 不为 Skill 再做独立权限模型
|
|
241
|
+
|
|
242
|
+
第一阶段只承认两类可信来源:
|
|
243
|
+
|
|
244
|
+
1. 仓库内随产品分发的内置 Skill
|
|
245
|
+
2. 用户自己管理、自己承担后果的本地自管 Skill
|
|
246
|
+
|
|
247
|
+
也就是说,第一阶段的重点不是“让用户随便装很多东西”,而是先把边界拍板:
|
|
248
|
+
|
|
249
|
+
> 什么该进 core,什么该作为 Skill 包挂进来。
|
|
250
|
+
|
|
251
|
+
### 6.4 新增能力的评审规则
|
|
252
|
+
|
|
253
|
+
从这份 spec 开始,后续新增 capability 的 spec,至少应显式回答一次:
|
|
254
|
+
|
|
255
|
+
- 这件事为什么必须进 core?
|
|
256
|
+
- 如果不进 core,是否可以作为 Skill?
|
|
257
|
+
- 如果不能纯 Skill,是否应设计为 Hybrid?
|
|
258
|
+
|
|
259
|
+
如果这三个问题没有回答清楚,不应直接把能力写进 bridge / internal。
|
|
260
|
+
|
|
261
|
+
### 6.5 第一批候选范围
|
|
262
|
+
|
|
263
|
+
这次 spec 只给出候选,不直接迁移实现。
|
|
264
|
+
|
|
265
|
+
#### 最适合先试点的候选
|
|
266
|
+
|
|
267
|
+
1. `archive-reader`
|
|
268
|
+
- 最接近纯 Skill
|
|
269
|
+
2. `memory-digest`
|
|
270
|
+
- 最适合做 Hybrid
|
|
271
|
+
3. 技术客服排查能力包
|
|
272
|
+
- 未来非常适合作为项目级 Skill
|
|
273
|
+
|
|
274
|
+
#### 明确不作为第一批试点的能力
|
|
275
|
+
|
|
276
|
+
- Feishu 路由
|
|
277
|
+
- approval gate
|
|
278
|
+
- recovery / steer
|
|
279
|
+
- handoff
|
|
280
|
+
- runtime transport
|
|
281
|
+
- 状态账本与最终态确认
|
|
282
|
+
|
|
283
|
+
这些能力属于 bridge contract,本身就不应外包给 Skill。
|
|
284
|
+
|
|
285
|
+
### 6.6 对代码规模的现实预期
|
|
286
|
+
|
|
287
|
+
这次方向的核心收益,不是立刻把总代码“砍掉很多”。
|
|
288
|
+
|
|
289
|
+
更真实的收益是两层:
|
|
290
|
+
|
|
291
|
+
1. 中短期内,有机会把 bridge 里一部分内容工作流逻辑往外抽薄。
|
|
292
|
+
2. 长期内,阻止新增能力继续无边界地长进 core。
|
|
293
|
+
|
|
294
|
+
因此,Skill-first 的主要价值是:
|
|
295
|
+
|
|
296
|
+
- 降低复杂度增长率
|
|
297
|
+
- 降低未来功能接入成本
|
|
298
|
+
- 提高用户定制能力
|
|
299
|
+
|
|
300
|
+
而不只是一次性的 LOC 缩减。
|
|
301
|
+
|
|
302
|
+
## 7. 验收标准
|
|
303
|
+
|
|
304
|
+
这份 spec 进入可用状态,至少要满足:
|
|
305
|
+
|
|
306
|
+
1. `Core / Hybrid / Skill` 三分法定义清楚,没有互相打架。
|
|
307
|
+
2. 明确写清这次不迁移已有能力,只影响后续新增能力的准入思路。
|
|
308
|
+
3. 明确写清第一阶段不做远程 Skill market,不自造第二套插件平台。
|
|
309
|
+
4. 明确列出第一批候选与明确不迁移的主链路能力。
|
|
310
|
+
5. 项目级核心文档已同步回写 `skill-first` 原则,而不是只留在 spec 里。
|
|
311
|
+
6. 后续新增 capability 的评审流程,已经包含“为什么不是 Skill / 为什么不是 Hybrid”的问题。
|
|
312
|
+
|
|
313
|
+
## 8. 风险 / 假设 / 待决问题
|
|
314
|
+
|
|
315
|
+
### 8.1 风险
|
|
316
|
+
|
|
317
|
+
- 如果把 Skill-first 理解成“所有东西都外置”,会伤害主链路稳定性。
|
|
318
|
+
- 如果只写理念、不写评审规则,后续 feature 仍会照样长进 core。
|
|
319
|
+
- 如果第一阶段就追求远程 market,会把中间层重新做厚。
|
|
320
|
+
|
|
321
|
+
### 8.2 假设
|
|
322
|
+
|
|
323
|
+
- 官方 Codex Skill 机制会继续作为稳定基础,不需要 `work-ally` 自己重造一层。
|
|
324
|
+
- 用户真正需要的是定制能力,而不是一个更重的插件平台。
|
|
325
|
+
- `work-ally` 的长期目标仍然是忠实桥接,而不是功能越做越全。
|
|
326
|
+
|
|
327
|
+
### 8.3 待决问题
|
|
328
|
+
|
|
329
|
+
1. 第一阶段是否需要给 assistant desk 明确一个“自管 product skills”目录,还是先只使用仓库内置 skills?
|
|
330
|
+
2. `memory-digest` 未来的 Hybrid 收口,应先从 prompt / parse / references 外提开始,还是先定义统一 routine-skill contract?
|
|
331
|
+
3. 技术客服类能力包,未来是否按项目级 skill 分发,还是按 assistant 角色级 skill 分发?
|
|
332
|
+
|
|
333
|
+
## 9. 建议的后续顺序
|
|
334
|
+
|
|
335
|
+
1. 先把这份探索型 spec 收口,并同步 `PRODUCT.md`、`README.md`、`AGENTS.md`、`DASHBOARD.md`。
|
|
336
|
+
2. 从这之后,对所有新增 capability 启用 `skill-first` 评审规则。
|
|
337
|
+
3. 等边界稳定后,再单独立专题处理“已有能力外迁”。
|
|
338
|
+
4. 第一批试点优先考虑:`archive-reader` 与 `memory-digest`。
|