skyloom 1.12.0 → 1.13.0
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/.github/workflows/ci.yml +36 -36
- package/README.md +142 -46
- package/config/default.yaml +43 -47
- package/config/models.yaml +155 -155
- package/config/providers.yaml +39 -39
- package/config/skills/api_integrator/SKILL.md +15 -15
- package/config/skills/arch_designer/SKILL.md +13 -13
- package/config/skills/ci_cd_manager/SKILL.md +14 -14
- package/config/skills/code_analysis/SKILL.md +13 -13
- package/config/skills/code_generator/SKILL.md +12 -12
- package/config/skills/code_reviewer/SKILL.md +13 -13
- package/config/skills/content_writer/SKILL.md +14 -14
- package/config/skills/data_transformer/SKILL.md +15 -15
- package/config/skills/document_analysis/SKILL.md +13 -13
- package/config/skills/emotional_companion/SKILL.md +15 -15
- package/config/skills/performance_checker/SKILL.md +14 -14
- package/config/skills/security_auditor/SKILL.md +14 -14
- package/config/skills/self_evolve/SKILL.md +13 -13
- package/config/skills/sys_operator/SKILL.md +15 -15
- package/config/skills/task_planner/SKILL.md +14 -14
- package/config/skills/web_research/SKILL.md +14 -14
- package/config/skills/workflow_designer/SKILL.md +13 -13
- package/dist/agents/dew.js +52 -52
- package/dist/agents/fair.js +84 -84
- package/dist/agents/fog.js +30 -30
- package/dist/agents/frost.js +32 -32
- package/dist/agents/rain.js +32 -32
- package/dist/agents/snow.js +68 -68
- package/dist/cli/main.js +103 -51
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/tui.d.ts.map +1 -1
- package/dist/cli/tui.js +8 -1
- package/dist/cli/tui.js.map +1 -1
- package/dist/core/agent/task.d.ts +58 -0
- package/dist/core/agent/task.d.ts.map +1 -0
- package/dist/core/agent/task.js +83 -0
- package/dist/core/agent/task.js.map +1 -0
- package/dist/core/agent.d.ts +2 -45
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +61 -145
- package/dist/core/agent.js.map +1 -1
- package/dist/core/agent_helpers.d.ts +10 -0
- package/dist/core/agent_helpers.d.ts.map +1 -1
- package/dist/core/agent_helpers.js +39 -0
- package/dist/core/agent_helpers.js.map +1 -1
- package/dist/core/catalog.d.ts +71 -0
- package/dist/core/catalog.d.ts.map +1 -0
- package/dist/core/catalog.js +176 -0
- package/dist/core/catalog.js.map +1 -0
- package/dist/core/config.d.ts +8 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +12 -4
- package/dist/core/config.js.map +1 -1
- package/dist/core/factory.js +16 -16
- package/dist/core/llm.d.ts +7 -0
- package/dist/core/llm.d.ts.map +1 -1
- package/dist/core/llm.js +139 -7
- package/dist/core/llm.js.map +1 -1
- package/dist/core/longdoc.js +5 -5
- package/dist/core/memory.d.ts.map +1 -1
- package/dist/core/memory.js +69 -62
- package/dist/core/memory.js.map +1 -1
- package/dist/core/theme.d.ts +46 -0
- package/dist/core/theme.d.ts.map +1 -0
- package/dist/core/theme.js +42 -0
- package/dist/core/theme.js.map +1 -0
- package/dist/web/server.js +542 -519
- package/dist/web/server.js.map +1 -1
- package/docs/AESTHETIC_DESIGN.md +144 -0
- package/docs/OPTIMIZATION_PLAN.md +178 -0
- package/package.json +60 -60
- package/scripts/install.js +48 -48
- package/scripts/link.js +10 -10
- package/setup.bat +79 -79
- package/skill-test-ty2fOA/test.md +10 -10
- package/src/agents/dew.ts +70 -70
- package/src/agents/fair.ts +102 -102
- package/src/agents/fog.ts +48 -48
- package/src/agents/frost.ts +50 -50
- package/src/agents/rain.ts +50 -50
- package/src/agents/snow.ts +239 -239
- package/src/cli/main.ts +425 -372
- package/src/cli/mode.ts +58 -58
- package/src/cli/tui.ts +272 -269
- package/src/core/agent/task.ts +100 -0
- package/src/core/agent.ts +1446 -1549
- package/src/core/agent_helpers.ts +496 -461
- package/src/core/arbitrate.ts +162 -162
- package/src/core/catalog.ts +178 -0
- package/src/core/checkpoint.ts +94 -94
- package/src/core/config.ts +20 -4
- package/src/core/estimate.ts +104 -104
- package/src/core/evolve.ts +191 -191
- package/src/core/factory.ts +627 -627
- package/src/core/filter.ts +103 -103
- package/src/core/graph.ts +156 -156
- package/src/core/icons.ts +53 -53
- package/src/core/index.ts +37 -37
- package/src/core/learn.ts +146 -146
- package/src/core/llm.ts +108 -5
- package/src/core/longdoc.ts +155 -155
- package/src/core/mcp_server.ts +176 -176
- package/src/core/memory.ts +1178 -1171
- package/src/core/profile.ts +255 -255
- package/src/core/router.ts +124 -124
- package/src/core/sandbox.ts +142 -142
- package/src/core/security.ts +243 -243
- package/src/core/skill.ts +342 -342
- package/src/core/theme.ts +65 -0
- package/src/core/tool_router.ts +193 -193
- package/src/core/vector.ts +152 -152
- package/src/core/workspace.ts +150 -150
- package/src/plugins/loader.ts +66 -66
- package/src/skills/loader.ts +46 -46
- package/src/sql.js.d.ts +29 -29
- package/src/tools/builtin.ts +380 -380
- package/src/tools/computer.ts +269 -269
- package/src/tools/delegate.ts +49 -49
- package/src/web/server.ts +660 -634
- package/src/web/tts.ts +93 -93
- package/tests/agent_helpers.test.ts +48 -0
- package/tests/bus.test.ts +121 -121
- package/tests/catalog.test.ts +86 -0
- package/tests/config.test.ts +41 -0
- package/tests/icons.test.ts +45 -45
- package/tests/memory.test.ts +147 -0
- package/tests/router.test.ts +86 -86
- package/tests/schemas.test.ts +51 -51
- package/tests/semantic.test.ts +83 -83
- package/tests/setup.ts +10 -10
- package/tests/skill.test.ts +172 -172
- package/tests/task.test.ts +60 -0
- package/tests/tool.test.ts +108 -108
- package/tests/tool_router.test.ts +71 -71
- package/vitest.config.ts +17 -17
package/dist/web/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# 天空织机 · Skyloom — 美学设计系统
|
|
2
|
+
|
|
3
|
+
> 设计哲学:**水墨气象台 (Ink-Wash Weather Station)**。
|
|
4
|
+
> 不是极简,是**克制的繁复**——东方水墨的留白与西方信息设计的精确并置。
|
|
5
|
+
> 每个 Agent 是一种天气、一味矿物颜料、一句诗、一种动势。辨识度来自这套贯穿 CLI / TUI / Web 的统一意象。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 0. 设计立场
|
|
10
|
+
|
|
11
|
+
| 反对 | 主张 |
|
|
12
|
+
|------|------|
|
|
13
|
+
| 扁平、纯灰、性冷淡的"AI 默认风" | 宣纸质感、矿物颜料、笔触与晕染 |
|
|
14
|
+
| 装饰为零的极简 | **有意义的繁复**:每个元素承载身份(天气/颜料/诗/动势) |
|
|
15
|
+
| 千篇一律的等宽终端 | 真彩矿物色 + 印章 + 汉字字符画 |
|
|
16
|
+
| 静态界面 | 气象动效——雾飘、雨落、霜结、雪降、露凝、晴升 |
|
|
17
|
+
|
|
18
|
+
核心意象:**织机**(六梭交织)+ **气象台**(六种天气)+ **水墨**(宣纸/矿物/印章/诗)。
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 1. 六灵 · 设计令牌(Design Tokens)
|
|
23
|
+
|
|
24
|
+
唯一事实源。建议落地为 `src/core/theme.ts`,由 CLI(chalk)、TUI、Web 共同 import。
|
|
25
|
+
|
|
26
|
+
| Agent | 汉字 | 天气 | 矿物色 (hex) | 职责 | 诗 | 动势 |
|
|
27
|
+
|-------|------|------|------------|------|----|----|
|
|
28
|
+
| **雾 Fog** | 霧 | 雾 | `#4a4a44` 松烟墨 | 探索洞察 | 山色有无中 | 飘移 drift |
|
|
29
|
+
| **雨 Rain** | 雨 | 雨 | `#2a5c8a` 石青 | 创造产出 | 一蓑烟雨任平生 | 坠落 fall |
|
|
30
|
+
| **霜 Frost** | 霜 | 霜 | `#3a7a6e` 石绿 | 精炼品质 | 月落乌啼霜满天 | 结晶 glint |
|
|
31
|
+
| **雪 Snow** | 雪 | 雪 | `#8a8a82` 铅白 | 架构规划 | 千树万树梨花开 | 飘降 float |
|
|
32
|
+
| **露 Dew** | 露 | 露 | `#8b6914` 赭石 | 可靠守护 | 金风玉露一相逢 | 凝珠 bead |
|
|
33
|
+
| **晴 Fair** | 晴 | 晴 | `#b3342d` 朱砂 | 情感陪伴 | 道是无晴却有晴 | 升腾 rise |
|
|
34
|
+
|
|
35
|
+
### 1.1 纸与墨(基底色板)
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
--paper #f8f4ec 宣纸
|
|
39
|
+
--paper-warm #f3ede2 暖宣纸(输入区)
|
|
40
|
+
--ink-deep #1a1614 焦墨(正文)
|
|
41
|
+
--ink-mid #3d3833 浓墨
|
|
42
|
+
--ink-light #8c8680 淡墨(次要信息)
|
|
43
|
+
--ink-faint #c4bfb8 飞白(分隔线/占位)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
矿物色派生:每色提供 `solid` / `soft`(12% alpha) / `seal`(印章) 三档。
|
|
47
|
+
|
|
48
|
+
### 1.2 字体
|
|
49
|
+
|
|
50
|
+
- 中文/标题:**Noto Serif SC**(300/400/600/700)——书法骨架。
|
|
51
|
+
- 西文/正文:**Noto Serif**(含斜体,用于诗句)。
|
|
52
|
+
- 终端:等宽回退,但用真彩矿物色补回身份。
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 2. 三端一致性
|
|
57
|
+
|
|
58
|
+
设计 token 一处定义,三端各自表达同一意象。
|
|
59
|
+
|
|
60
|
+
### 2.1 Web(水墨气象台)— 现状强项,做工程化
|
|
61
|
+
|
|
62
|
+
保留并强化:宣纸纹理 `#paper-grain`、顶部水墨山影、`#ambient-layer` 气象粒子、`#kanji-decoration` 印章、侧栏诗句、切灵换主题。
|
|
63
|
+
|
|
64
|
+
工程化改进(见优化计划 P7.3):
|
|
65
|
+
- 内联 HTML 抽到 `src/web/ui/{index.html,styles.css,app.js}`,token 由 `theme.ts` 注入。
|
|
66
|
+
- **真流式**:工具调用呈现为"气象事件"卡片(如 `web_search` → 一道雨痕划过、`apply_patch` → 一枚朱印落下)。
|
|
67
|
+
- 消息气泡的笔触边框按 Agent `msgStyle` 区分(已有雏形,统一到 token)。
|
|
68
|
+
|
|
69
|
+
### 2.2 TUI(全屏)— 当前最弱,重点升级
|
|
70
|
+
|
|
71
|
+
现状:`tui.ts` 仅捕获输入,响应回落到线性滚动;全屏重绘有闪烁。
|
|
72
|
+
|
|
73
|
+
目标布局(保留意象,做实):
|
|
74
|
+
```
|
|
75
|
+
┌─ 天空织机 ──────────────────────────── 霧 ─┐ ← 印章随灵变色
|
|
76
|
+
│ ● 雾 Fog 松烟墨 gpt-4o · $0.02 │
|
|
77
|
+
│ 雨 Rain 石青 ████░░░░ 41% ctx │ ← 真彩矿物色侧栏
|
|
78
|
+
│ 霜 Frost 石绿 │
|
|
79
|
+
│ ─────────────────────────────────────────────── │
|
|
80
|
+
│ 山色有无中 │ ← 流式正文,墨迹晕染入场
|
|
81
|
+
│ ▍ 助手正在书写… │
|
|
82
|
+
│ ─────────────────────────────────────────────── │
|
|
83
|
+
│ > / │ ← 命令面板浮层
|
|
84
|
+
└──────────────────────────────────────────────────┘
|
|
85
|
+
```
|
|
86
|
+
- 真彩(24-bit)矿物色,切灵时印章与侧栏高亮换色。
|
|
87
|
+
- 流式渲染:token 逐字"晕染"(淡→实),工具调用以单行天气符号脉冲(`≋ web_search…` / `✱ review…`)。
|
|
88
|
+
- 双缓冲/差量重绘消除闪烁(仅重绘变化行)。
|
|
89
|
+
|
|
90
|
+
### 2.3 CLI(线性)— 真彩 + 印章
|
|
91
|
+
|
|
92
|
+
- 真彩矿物色替换当前 `chalk.cyan` 单色。
|
|
93
|
+
- 欢迎横幅:六灵以各自矿物色 + 天气符号排布,当前灵加印章方框。
|
|
94
|
+
- Agent 切换:打印一枚朱砂印章(`▣ 霜`)作过场。
|
|
95
|
+
- 流式:复用 `chatStream`,`reasoning` 以淡墨斜体、正文焦墨、工具状态淡墨脉冲。
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 3. 标志性元素(辨识度锚点)
|
|
100
|
+
|
|
101
|
+
1. **印章 (Seal)**:当前 Agent 的汉字以朱砂方框印章呈现——出现在 Web 角落、TUI 标题栏、CLI 切换过场、README badge。是品牌第一记忆点。
|
|
102
|
+
2. **气象粒子**:六种天气动效是 Web 的灵魂,未来可做成 TUI 的字符粒子(ASCII 雨/雪)。
|
|
103
|
+
3. **诗句**:每灵一句古诗,出现在侧栏/欢迎屏/空状态,是"克制的繁复"的体现。
|
|
104
|
+
4. **天气符号集**:`≋ ⸽ ✱ ❉ ∘ ☼`——跨端统一的 Agent 字形。
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 4. 品牌资产清单(P7.4)
|
|
109
|
+
|
|
110
|
+
- [ ] **Logo**:印章风 SVG("织"或"气象台"篆刻),亮/暗两版。
|
|
111
|
+
- [ ] **README hero**:六灵矿物色横幅 + 印章。
|
|
112
|
+
- [ ] **社交卡片** (og:image):水墨山影 + 六色梭。
|
|
113
|
+
- [ ] **截图/录屏**:TUI 流式 + Web 气象台切灵,放 `docs/`。
|
|
114
|
+
- [ ] **配色规范图**:六矿物色 + 纸墨色板。
|
|
115
|
+
- [ ] **favicon**:朱砂"晴"印。
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 5. 设计 token 落地(建议代码形态)
|
|
120
|
+
|
|
121
|
+
```ts
|
|
122
|
+
// src/core/theme.ts — 唯一事实源
|
|
123
|
+
export interface AgentTheme {
|
|
124
|
+
name: string; kanji: string; weather: string;
|
|
125
|
+
pigment: { name: string; hex: string; rgb: [number, number, number] };
|
|
126
|
+
poem: string; symbol: string; motion: string;
|
|
127
|
+
}
|
|
128
|
+
export const PALETTE = {
|
|
129
|
+
paper: "#f8f4ec", paperWarm: "#f3ede2",
|
|
130
|
+
inkDeep: "#1a1614", inkMid: "#3d3833", inkLight: "#8c8680", inkFaint: "#c4bfb8",
|
|
131
|
+
} as const;
|
|
132
|
+
export const AGENT_THEMES: Record<string, AgentTheme> = { /* 见 §1 表 */ };
|
|
133
|
+
// CLI: hex → chalk.hex(); TUI: → ANSI truecolor; Web: → CSS 变量注入
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
> 一处改色,三端同步。这是把"美观"从一次性手艺变成**可维护的系统**的关键。
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 6. 不做什么
|
|
141
|
+
|
|
142
|
+
- 不引入重型前端框架(保持零依赖 Web,宣纸般轻)。
|
|
143
|
+
- 不把界面"洗白"成通用 SaaS 风。
|
|
144
|
+
- 不让动效喧宾夺主——气象是氛围,内容是主角。
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# 天空织机 · Skyloom — 顶级 Agent 框架优化计划
|
|
2
|
+
|
|
3
|
+
> 目标:把 Skyloom 从「功能完整的多 Agent 终端」打磨成 **架构清晰、体验顶级、辨识度强** 的开源 Agent 框架。
|
|
4
|
+
> 参照系:[opencode](https://github.com/sst/opencode)(架构)、[Claude Code](https://docs.claude.com)(交互范式)、Skyloom Python 原版(功能对等)。
|
|
5
|
+
>
|
|
6
|
+
> 制定日期:2026-06-08 · 当前版本:v1.12.0 · 类型检查:✅ 通过
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 0. 现状诊断(Analysis)
|
|
11
|
+
|
|
12
|
+
### 0.1 项目规模
|
|
13
|
+
|
|
14
|
+
| 层 | 文件 | 关键模块 | LOC |
|
|
15
|
+
|----|------|----------|-----|
|
|
16
|
+
| CLI | `src/cli/` | main, tui, mode | ~700 |
|
|
17
|
+
| Core | `src/core/` | agent(1549), memory(1171), mcp(953), llm(804), factory(627) … 38 个模块 | ~11000 |
|
|
18
|
+
| Agents | `src/agents/` | fog/rain/frost/snow/dew/fair | ~500 |
|
|
19
|
+
| Tools | `src/tools/` | builtin, computer, delegate | ~700 |
|
|
20
|
+
| Web | `src/web/` | server(水墨气象台), tts | ~720 |
|
|
21
|
+
| Skills | `config/skills/` | 17 个 SKILL.md | — |
|
|
22
|
+
| Tests | `tests/` | 13 套件 · 129 用例(catalog/memory/task/agent_helpers/config) | — |
|
|
23
|
+
|
|
24
|
+
### 0.2 已经做得好的(保留 & 强化)
|
|
25
|
+
|
|
26
|
+
- **美学辨识度强**:水墨气象台 Web UI(宣纸纹理、六矿物色、粒子气象、印章汉字)——这是项目的灵魂,是优化的审美基线,不动它的方向,只做工程化与一致性提升。
|
|
27
|
+
- **功能广度大**:三层记忆、事件总线、DAG 编排、技能系统、向量检索、知识图谱、自进化、安全分级、MCP 双向桥、跨平台电脑操作。
|
|
28
|
+
- **路由分级**:direct / single / orchestrate 三级路由 + 9 种 Pipeline 模板,省 LLM 调用。
|
|
29
|
+
|
|
30
|
+
### 0.3 必须修复的问题(Critical)
|
|
31
|
+
|
|
32
|
+
| # | 问题 | 位置 | 影响 |
|
|
33
|
+
|---|------|------|------|
|
|
34
|
+
| C1 | ~~虚构模型~~ **已更正**:`deepseek-v4-flash`/`v4-pro` 经 `/v1/models` 实测**是真实可调模型**(`deepseek-chat` 即其别名)。早先的"虚构"判断错误——会话初的报错来自 Claude Code **宿主**的子 agent 模型注册表,与 Skyloom 无关。已恢复入目录。 | — | — |
|
|
35
|
+
| C2 | **模型数据三处重复且漂移**:`config/models.yaml`、`cli/main.ts` 向导、`README` 表格各写一份 | 多处 | 维护噩梦、数据不一致(catalog 已统一✅) |
|
|
36
|
+
| C3 | **流式已实现却未接线**:`agent.chatStream()` 存在,但 CLI `chat()` 和 Web 都用阻塞式 `chat()` + 假打字机 | `cli/main.ts:314`、`web/server.ts:101` | 体验远低于 opencode/Claude Code;首字延迟高 |
|
|
37
|
+
| C4 | **README 模型表含虚构条目**(`deepseek-v4-*`);测试数随增量需同步 | `README.md` | 可信度 |
|
|
38
|
+
| C5 | **`agent.ts` 1549 行巨石**:LLM 循环、工具执行、记忆、防循环启发式、委派全混在一个类 | `core/agent.ts` | 难测试、难维护 |
|
|
39
|
+
|
|
40
|
+
#### 🔴 集成测试发现并已修复的严重 Bug(用真实 DeepSeek key 验证)
|
|
41
|
+
|
|
42
|
+
| # | 问题 | 根因 | 修复 |
|
|
43
|
+
|---|------|------|------|
|
|
44
|
+
| **B1** | **首条消息必崩**:全新会话发第一条消息 → `Cannot read properties of undefined (reading 'content')`,且首轮请求**根本不含用户消息** | `Memory.addMessage` 把 push 放进**异步 mutex 回调**(fire-and-forget),而 `chatImpl`/`chatStreamImpl` 同一 tick 同步读 `getMessages()` → 读不到 | push 改为**同步**,仅保留改写数组的 prune 在锁内([memory.ts](../src/core/memory.ts))+ `messagesWithRecall` 防御性 guard + 回归测试 |
|
|
45
|
+
| **B2** | **用户选的模型被忽略**:`~/.skyloom/config.yaml` 设了 `default_model: deepseek-v4-flash`,却仍走 `gpt-4o`(无 key 必败) | `mergeConfigs` 丢弃了 `llm`/`default_model`/`default_provider` 等顶层键;且 `getModel` 读 camelCase `defaultModel` 而 YAML 是 snake_case `default_model` | `mergeConfigs` 保留全部顶层键并深合并 `llm`;`getModel` 按 `default_model → llm.default_model → …` 解析;`default.yaml` 移除每 Agent 硬编码 `gpt-4o`,统一由 `default_model` 驱动 |
|
|
46
|
+
| **B3** | **memory 配置 snake/camel 不匹配**(B2 修复后暴露):Agent 构造崩在 `expandUserPath(undefined)` | `default.yaml` 用 `db_path`/`short_term_limit`,`Memory` 期望 `dbPath`/`shortTermLimit`;旧代码靠"配置被丢弃→走 fallback"侥幸不崩 | `BaseAgent` 构造时归一化 memory 配置,两种命名都接受 |
|
|
47
|
+
| **B4** | ~~`deepseek-v4-*` 虚构~~ **判断错误**:经 `/v1/models` 实测**真实可调**,且是用户日常默认模型 | 早先误判;会话初的报错来自 Claude Code **宿主**的子 agent 模型注册表 | 已恢复入目录 + 反转测试断言 |
|
|
48
|
+
|
|
49
|
+
> 这些 Bug 仅靠类型检查/单测无法发现——必须真实 API 集成验证。修复后 `fog.chat()` 返回「蓝色」、`chatStream` 实测 15–18 个 token 增量。
|
|
50
|
+
|
|
51
|
+
### 0.4 架构差距(对标 opencode)
|
|
52
|
+
|
|
53
|
+
| 维度 | opencode | Skyloom 现状 | 差距 |
|
|
54
|
+
|------|----------|-------------|------|
|
|
55
|
+
| Provider/Model | 强类型 Catalog(capabilities/cost/limit/status/variants) | 字符串前缀匹配(`isAnthropicModel`…) | **大** |
|
|
56
|
+
| Session | 持久化实体 + 事件日志 + 消息投影 | 内存对象,落 SQLite 但无事件溯源 | 中 |
|
|
57
|
+
| 上下文压缩 | 按 token 预算自动 compaction + checkpoint | 手动 `/compact` | 中 |
|
|
58
|
+
| 工具系统 | codec 校验输入输出 + 工具内 permission.assert | 注册表 + 全局 security 回调 | 中 |
|
|
59
|
+
| 插件 | 有序 hook 系统(init/provider.update…) | 目录加载器,无 hook 生命周期 | 中 |
|
|
60
|
+
| UI | client/server 分离,真流式 | TUI 仅捕获输入,响应回落到线性滚动 | 中 |
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 1. 优化原则
|
|
65
|
+
|
|
66
|
+
1. **不破坏美学**:水墨气象台是辨识度核心。所有 UI 改动只增强,不"极简化"。详见 [AESTHETIC_DESIGN.md](./AESTHETIC_DESIGN.md)。
|
|
67
|
+
2. **单一事实源**:每类数据(模型、命令、Agent 元数据、配色)只有一份定义。
|
|
68
|
+
3. **小步可验证**:每个增量保持 `tsc --noEmit` 绿 + 测试通过,再进下一步。
|
|
69
|
+
4. **功能对等优先于重构**:先保证不丢功能,再分层。
|
|
70
|
+
5. **类型安全**:消除无谓 `any`,用 schema 校验外部边界(LLM 响应、配置、工具 IO)。
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 2. 分阶段路线图
|
|
75
|
+
|
|
76
|
+
### Phase 0 — 止血(Critical Fixes)|~0.5 天 ✅ 已完成
|
|
77
|
+
|
|
78
|
+
- [x] **P0.1 统一模型目录**(修 C2)
|
|
79
|
+
新建 [`src/core/catalog.ts`](../src/core/catalog.ts):单一类型化目录(`ModelInfo`/`ProviderMeta`),从 `config/models.yaml` 读取真实数据。修复了原 `config.ts:loadModelCatalog` 的字段名错配(`context`↔`context_window`)。设置向导现从 catalog 派生。
|
|
80
|
+
⚠️ 更正:曾误删 `deepseek-v4-flash/pro`,经 DeepSeek `/v1/models` 实测确认其真实可调后**已恢复**(见 C1)。
|
|
81
|
+
- [x] **P0.2 默认模型自检**:`chat()` 启动时用 `validateModel()` 校验当前模型,不在目录则给出可选清单与提示,而非静默 404。
|
|
82
|
+
- [x] **P0.3 README 校正**(修 C4):真实模型表、移除虚构条目、链接到本计划与美学文档。
|
|
83
|
+
- [x] **测试**:新增 [`tests/catalog.test.ts`](../tests/catalog.test.ts) 11 用例(含"不含虚构模型"回归断言)。
|
|
84
|
+
|
|
85
|
+
**验收**:✅ 设置向导列出的每个模型都真实可调;`tsc --noEmit` 绿;9 套件 98 用例全通过。
|
|
86
|
+
|
|
87
|
+
### Phase 1 — Provider/Model Catalog 强化|~1 天
|
|
88
|
+
|
|
89
|
+
对标 opencode `provider-model.md`:
|
|
90
|
+
|
|
91
|
+
- [ ] **P1.1** Catalog schema:`ModelInfo { id, providerID, family, capabilities{tools,input,output}, cost[], limit{context,output}, status }`。
|
|
92
|
+
- [ ] **P1.2** `LLMClient` 用 catalog 解析端点/能力,替换散落的 `isAnthropicModel`/`isDeepseekModel`/`splitProvider` 启发式。
|
|
93
|
+
- [ ] **P1.3** Provider 鉴权统一:env → `~/.skyloom/config.yaml` → 交互向导,三级回退集中到一处。
|
|
94
|
+
- [ ] **P1.4** 上下文窗口与成本从 catalog 取,喂给自动压缩(Phase 4)和成本统计。
|
|
95
|
+
|
|
96
|
+
### Phase 2 — 真流式接线(最高体验收益)|~1 天 ✅ 基本完成
|
|
97
|
+
|
|
98
|
+
- [x] **P2.0 LLM 层真流式**(关键):`streamWithTools` 原本只是包装阻塞 `complete()` 一次性吐出。新增 `callOpenAIStream` —— 对所有 OpenAI 兼容 provider 做真正的 SSE(`stream:true` + `stream_options.include_usage`),逐 token yield content/reasoning、按 index 累积 tool_calls、末帧取 usage 记成本。Anthropic 与流早期失败回落阻塞路径。**实测 DeepSeek 15–18 个增量**。
|
|
99
|
+
- [x] **P2.1 CLI 流式**:`chat()` 改为消费 `agent.chatStream()`(新 `streamResponse()`),逐字渲染真实 token,`reasoning` 淡墨斜体、正文矿物色、工具调用以天气符号脉冲呈现。删除旧的阻塞 `render()`。
|
|
100
|
+
- [x] **P2.2 Web 流式**:`/api/chat` 改 SSE(`text/event-stream`),前端 `fetch` + `ReadableStream` 真流式替换假打字机,工具调用呈现为"气象事件"系统消息。已 curl + 真实 API 验证。
|
|
101
|
+
- [ ] **P2.3 中断**:Ctrl-C / ESC 中断当前 turn(需在 `llm.streamWithTools` 引入 `AbortSignal`)—— **延后**,依赖较深,单列一个 slice。
|
|
102
|
+
|
|
103
|
+
### Phase 3 — `agent.ts` 分层(可维护性)|~1.5 天 🔵 进行中(1549 → 1437 行)
|
|
104
|
+
|
|
105
|
+
把巨石拆成职责单一的模块(保持对外 API 不变,re-export 兜底):
|
|
106
|
+
|
|
107
|
+
- [x] `core/agent/task.ts` — 域模型 `Task`/`TaskState`/`TaskResult`/`AgentState`(纯、可测,re-export 验证身份一致)。
|
|
108
|
+
- [x] `agent_helpers.ts` += `parseExtractedFacts`(纯解析器,移出 BaseAgent)。
|
|
109
|
+
- [ ] `core/agent/loop.ts` — LLM 推理循环(`llmLoop` / `chatStreamImpl`,~275 行热路径)
|
|
110
|
+
- [ ] `core/agent/tools.ts` — 工具选择/执行/结果记录
|
|
111
|
+
- [ ] `core/agent/guard.ts` — 防循环启发式(签名窗口、search storm、hardstop)
|
|
112
|
+
- [ ] `core/agent/delegate.ts` — 跨 Agent 委派与汇总
|
|
113
|
+
- [ ] `core/agent.ts` — 仅保留 `BaseAgent` 编排与公共 API(目标 < 500 行)
|
|
114
|
+
|
|
115
|
+
> ⚠️ **热路径前置条件**:`loop/tools/guard/delegate` 直接动 LLM 推理循环,拆分前需先补 **mock-LLM 特征化测试**(Phase 6 中的 `agent` 套件),并在有 API key 的环境跑一遍集成验证,否则回归不可观测。纯单元(task/helpers)已先行抽出并测试。
|
|
116
|
+
|
|
117
|
+
### Phase 4 — Session & 自动上下文管理|~1.5 天
|
|
118
|
+
|
|
119
|
+
对标 opencode `session.md`:
|
|
120
|
+
|
|
121
|
+
- [ ] **P4.1 Session 实体**:显式 `Session { id, location, messages, model, agent }`,CLI/Web 共用,可列举/恢复(已有 `listSessions` 雏形,补 resume)。
|
|
122
|
+
- [ ] **P4.2 自动压缩**:每轮 provider turn 前用 catalog 的 `limit.context` 估算,超预算自动 compaction(保留完整 transcript + 结构化摘要 checkpoint)。手动 `/compact` 保留。
|
|
123
|
+
- [ ] **P4.3 上下文快照**:环境信息、日期、工作区、激活技能合成一份"系统上下文",模型可见但与历史分离(轻量版 Context Epoch)。
|
|
124
|
+
|
|
125
|
+
### Phase 5 — 工具与插件健壮性|~1 天
|
|
126
|
+
|
|
127
|
+
- [ ] **P5.1 工具 IO 校验**:工具定义带 input/output schema,非法输入不执行、非法输出不算成功(对标 opencode `tools.md`)。
|
|
128
|
+
- [ ] **P5.2 权限内聚**:危险操作的 `permission.assert` 由工具自身发起,security 模块只评估策略 + 管理审批,统一 `ask/allow/deny` 语义。
|
|
129
|
+
- [ ] **P5.3 插件 hook**:目录加载器升级为有序 hook(`init` / `tool.register` / `provider.update`),插件在自己的 scope 注册,卸载即移除。
|
|
130
|
+
|
|
131
|
+
### Phase 6 — 测试与质量门禁|~1.5 天
|
|
132
|
+
|
|
133
|
+
- [ ] **P6.1** 把覆盖率提到核心全覆盖:仍需 `agent`(mock LLM)、`llm`(mock)、`factory`、`pipelines`、`security` 套件(已建 `catalog`✅ `memory`✅ `task`✅ `agent_helpers`✅,共 12 套件 123 用例)。目标 ≥ 140 用例。`memory`/`task`/`agent_helpers` 已对三层记忆裁剪、任务状态机、事实解析做了特征化,为 `agent.ts` 拆分提供安全网。
|
|
134
|
+
- [ ] **P6.2** CI 加门禁:`type-check` + `lint` + `test` + 覆盖率阈值。
|
|
135
|
+
- [ ] **P6.3** 修正所有 `README`/文档与代码的数字一致性(测试数自动从 `vitest` 输出取)。
|
|
136
|
+
|
|
137
|
+
### Phase 7 — 美学工程化|~1 天(详见 [AESTHETIC_DESIGN.md](./AESTHETIC_DESIGN.md))
|
|
138
|
+
|
|
139
|
+
- [x] **P7.1 设计 token 单一源**:新建 [`src/core/theme.ts`](../src/core/theme.ts)(`PALETTE` + `AGENT_THEMES`:矿物色/汉字/天气符号/诗句/动势)。CLI 已接入;TUI/Web 待接(Web 仍内联 PIGMENTS,P7.3 抽取时统一)。
|
|
140
|
+
- [x] **P7.2 CLI 视觉升级(部分)**:欢迎横幅六灵各显矿物真彩 + 活动灵印章 `▣`;切灵时落朱印 + 诗句;流式正文矿物色、工具调用天气符号。"墨迹晕染"逐字过场待做。
|
|
141
|
+
- [ ] **P7.3 Web 抽出静态资源**:`server.ts` 内联 HTML 拆为 `web/ui/`(html/css/js),加构建步骤,便于演进与缓存。
|
|
142
|
+
- [ ] **P7.4 品牌资产**:SVG logo(印章风)、社交卡片、`docs/` 截图。
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## 3. 里程碑与顺序
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
M1 止血+目录 Phase 0 + 1 → 真实可用、单一事实源
|
|
150
|
+
M2 体验飞跃 Phase 2 + 7.2 → 真流式 + CLI 视觉,最高感知收益
|
|
151
|
+
M3 工程地基 Phase 3 + 6 → 拆巨石 + 测试网,安全重构
|
|
152
|
+
M4 框架深度 Phase 4 + 5 → Session/压缩/工具/插件,对标 opencode
|
|
153
|
+
M5 打磨成品 Phase 7 → 美学工程化 + 品牌资产 + 发布
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
建议执行顺序:**M1 → M2 → M3 → M4 → M5**。M1/M2 立刻提升可信度与体验;M3 在动大手术前先织好测试网。
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## 4. 成功标准(Definition of Done)
|
|
161
|
+
|
|
162
|
+
- 设置向导/文档中**每个模型都真实可调**,模型数据全局一份。
|
|
163
|
+
- CLI 与 Web **真流式**输出,首字延迟显著下降,可中断。
|
|
164
|
+
- `agent.ts` 拆分后**单文件 < 500 行**,核心模块均有单测,CI 绿且有覆盖率门禁。
|
|
165
|
+
- Session 可列举/恢复,超长上下文**自动压缩**不崩。
|
|
166
|
+
- 美学系统单一源驱动 CLI/TUI/Web,品牌资产齐备。
|
|
167
|
+
- README 与实现**零失真**。
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 5. 风险
|
|
172
|
+
|
|
173
|
+
| 风险 | 缓解 |
|
|
174
|
+
|------|------|
|
|
175
|
+
| 重构 `agent.ts` 引入回归 | Phase 6 测试网先行;逐块拆 + 每步跑测 |
|
|
176
|
+
| 流式与工具执行交错复杂 | 复用已存在的 `chatStreamImpl` 事件模型,只接线不重写 |
|
|
177
|
+
| Catalog 迁移漏模型 | 以 `config/models.yaml` 为真值源迁移,向导/README 派生 |
|
|
178
|
+
| 美学改动破坏现有观感 | 设计 token 抽取为"提取"非"重画",先快照对比 |
|
package/package.json
CHANGED
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "skyloom",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "天空织机 Skyloom — 6 weather-themed AI agents: Fog, Rain, Frost, Snow, Dew, Fair",
|
|
5
|
-
"preferGlobal": true,
|
|
6
|
-
"type": "commonjs",
|
|
7
|
-
"main": "./dist/index.js",
|
|
8
|
-
"bin": {
|
|
9
|
-
"sky": "dist/cli/main.js"
|
|
10
|
-
},
|
|
11
|
-
"scripts": {
|
|
12
|
-
"build": "tsc",
|
|
13
|
-
"dev": "tsc --watch",
|
|
14
|
-
"start": "node ./dist/cli/main.js",
|
|
15
|
-
"chat": "node ./dist/cli/main.js chat",
|
|
16
|
-
"task": "node ./dist/cli/main.js task",
|
|
17
|
-
"web": "node ./dist/cli/main.js web",
|
|
18
|
-
"test": "vitest",
|
|
19
|
-
"test:coverage": "vitest --coverage",
|
|
20
|
-
"lint": "eslint src --ext .ts",
|
|
21
|
-
"type-check": "tsc --noEmit",
|
|
22
|
-
"format": "prettier --write \"src/**/*.ts\"",
|
|
23
|
-
"pretest": "npm run type-check",
|
|
24
|
-
"setup": "node scripts/install.js",
|
|
25
|
-
"postinstall": "node scripts/link.js"
|
|
26
|
-
},
|
|
27
|
-
"keywords": [
|
|
28
|
-
"multi-agent",
|
|
29
|
-
"llm",
|
|
30
|
-
"orchestration",
|
|
31
|
-
"ai",
|
|
32
|
-
"tool-use"
|
|
33
|
-
],
|
|
34
|
-
"author": "Skyloom Team",
|
|
35
|
-
"license": "MIT",
|
|
36
|
-
"dependencies": {
|
|
37
|
-
"axios": "^1.7.7",
|
|
38
|
-
"chalk": "^5.3.0",
|
|
39
|
-
"commander": "^12.1.0",
|
|
40
|
-
"glob": "^11.0.0",
|
|
41
|
-
"sql.js": "^1.14.1",
|
|
42
|
-
"yaml": "^2.4.1"
|
|
43
|
-
},
|
|
44
|
-
"devDependencies": {
|
|
45
|
-
"@types/glob": "^8.1.0",
|
|
46
|
-
"@types/node": "^22.0.0",
|
|
47
|
-
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
|
48
|
-
"@typescript-eslint/parser": "^8.0.0",
|
|
49
|
-
"@vitest/coverage-v8": "^2.0.0",
|
|
50
|
-
"@vitest/ui": "^2.0.0",
|
|
51
|
-
"eslint": "^9.0.0",
|
|
52
|
-
"prettier": "^3.2.0",
|
|
53
|
-
"tsx": "^4.7.0",
|
|
54
|
-
"typescript": "^5.4.0",
|
|
55
|
-
"vitest": "^2.0.0"
|
|
56
|
-
},
|
|
57
|
-
"engines": {
|
|
58
|
-
"node": ">=18.0.0"
|
|
59
|
-
}
|
|
60
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "skyloom",
|
|
3
|
+
"version": "1.13.0",
|
|
4
|
+
"description": "天空织机 Skyloom — 6 weather-themed AI agents: Fog, Rain, Frost, Snow, Dew, Fair",
|
|
5
|
+
"preferGlobal": true,
|
|
6
|
+
"type": "commonjs",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"bin": {
|
|
9
|
+
"sky": "dist/cli/main.js"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"dev": "tsc --watch",
|
|
14
|
+
"start": "node ./dist/cli/main.js",
|
|
15
|
+
"chat": "node ./dist/cli/main.js chat",
|
|
16
|
+
"task": "node ./dist/cli/main.js task",
|
|
17
|
+
"web": "node ./dist/cli/main.js web",
|
|
18
|
+
"test": "vitest",
|
|
19
|
+
"test:coverage": "vitest --coverage",
|
|
20
|
+
"lint": "eslint src --ext .ts",
|
|
21
|
+
"type-check": "tsc --noEmit",
|
|
22
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
23
|
+
"pretest": "npm run type-check",
|
|
24
|
+
"setup": "node scripts/install.js",
|
|
25
|
+
"postinstall": "node scripts/link.js"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"multi-agent",
|
|
29
|
+
"llm",
|
|
30
|
+
"orchestration",
|
|
31
|
+
"ai",
|
|
32
|
+
"tool-use"
|
|
33
|
+
],
|
|
34
|
+
"author": "Skyloom Team",
|
|
35
|
+
"license": "MIT",
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"axios": "^1.7.7",
|
|
38
|
+
"chalk": "^5.3.0",
|
|
39
|
+
"commander": "^12.1.0",
|
|
40
|
+
"glob": "^11.0.0",
|
|
41
|
+
"sql.js": "^1.14.1",
|
|
42
|
+
"yaml": "^2.4.1"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/glob": "^8.1.0",
|
|
46
|
+
"@types/node": "^22.0.0",
|
|
47
|
+
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
|
48
|
+
"@typescript-eslint/parser": "^8.0.0",
|
|
49
|
+
"@vitest/coverage-v8": "^2.0.0",
|
|
50
|
+
"@vitest/ui": "^2.0.0",
|
|
51
|
+
"eslint": "^9.0.0",
|
|
52
|
+
"prettier": "^3.2.0",
|
|
53
|
+
"tsx": "^4.7.0",
|
|
54
|
+
"typescript": "^5.4.0",
|
|
55
|
+
"vitest": "^2.0.0"
|
|
56
|
+
},
|
|
57
|
+
"engines": {
|
|
58
|
+
"node": ">=18.0.0"
|
|
59
|
+
}
|
|
60
|
+
}
|
package/scripts/install.js
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* 天空织机 · Skyloom — 一键安装
|
|
4
|
-
*
|
|
5
|
-
* Usage:
|
|
6
|
-
* npm run setup # 自动 install → build → link
|
|
7
|
-
* npm install -g ./ # 全局安装(装完后 sky 命令可用)
|
|
8
|
-
* npx skyloom # 免安装直接运行
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
const { execSync } = require("child_process");
|
|
12
|
-
const { existsSync } = require("fs");
|
|
13
|
-
|
|
14
|
-
const CYAN = "\x1b[36m";
|
|
15
|
-
const GREEN = "\x1b[32m";
|
|
16
|
-
const DIM = "\x1b[2m";
|
|
17
|
-
const RESET = "\x1b[0m";
|
|
18
|
-
|
|
19
|
-
function run(cmd, label) {
|
|
20
|
-
process.stdout.write(` ${CYAN}✦${RESET} ${label} ${DIM}...${RESET}`);
|
|
21
|
-
try {
|
|
22
|
-
execSync(cmd, { stdio: "pipe", encoding: "utf-8" });
|
|
23
|
-
process.stdout.write(` ${GREEN}✓${RESET}\n`);
|
|
24
|
-
} catch (e) {
|
|
25
|
-
process.stdout.write(` ${GREEN}✓${RESET}\n`);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
console.log(`\n ${CYAN}✦ 天空织机 · Skyloom ✦${RESET}\n`);
|
|
30
|
-
|
|
31
|
-
run("npm install --no-fund --no-audit", "Installing dependencies");
|
|
32
|
-
run("npx tsc", "Building TypeScript");
|
|
33
|
-
|
|
34
|
-
// Try global link so `sky` works anywhere
|
|
35
|
-
try {
|
|
36
|
-
execSync("npm link", { stdio: "pipe", encoding: "utf-8", timeout: 10000 });
|
|
37
|
-
process.stdout.write(` ${CYAN}✦${RESET} Global 'sky' command ${GREEN}✓${RESET}\n`);
|
|
38
|
-
} catch {
|
|
39
|
-
process.stdout.write(` ${CYAN}✦${RESET} Global 'sky' command ${DIM}(use: npm install -g .)${RESET}\n`);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
console.log(`\n ${GREEN}✅ 天空织机 已就绪${RESET}\n`);
|
|
43
|
-
console.log(` ${DIM}────────────────────────────────${RESET}`);
|
|
44
|
-
console.log(` ${CYAN}sky chat ${DIM}开始对话${RESET}`);
|
|
45
|
-
console.log(` ${CYAN}sky web ${DIM}启动 Web UI → http://localhost:3000${RESET}`);
|
|
46
|
-
console.log(` ${CYAN}sky task <goal> ${DIM}多 Agent 编排${RESET}`);
|
|
47
|
-
console.log(` ${CYAN}sky help ${DIM}所有命令${RESET}`);
|
|
48
|
-
console.log(` ${DIM}────────────────────────────────${RESET}\n`);
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* 天空织机 · Skyloom — 一键安装
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* npm run setup # 自动 install → build → link
|
|
7
|
+
* npm install -g ./ # 全局安装(装完后 sky 命令可用)
|
|
8
|
+
* npx skyloom # 免安装直接运行
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const { execSync } = require("child_process");
|
|
12
|
+
const { existsSync } = require("fs");
|
|
13
|
+
|
|
14
|
+
const CYAN = "\x1b[36m";
|
|
15
|
+
const GREEN = "\x1b[32m";
|
|
16
|
+
const DIM = "\x1b[2m";
|
|
17
|
+
const RESET = "\x1b[0m";
|
|
18
|
+
|
|
19
|
+
function run(cmd, label) {
|
|
20
|
+
process.stdout.write(` ${CYAN}✦${RESET} ${label} ${DIM}...${RESET}`);
|
|
21
|
+
try {
|
|
22
|
+
execSync(cmd, { stdio: "pipe", encoding: "utf-8" });
|
|
23
|
+
process.stdout.write(` ${GREEN}✓${RESET}\n`);
|
|
24
|
+
} catch (e) {
|
|
25
|
+
process.stdout.write(` ${GREEN}✓${RESET}\n`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
console.log(`\n ${CYAN}✦ 天空织机 · Skyloom ✦${RESET}\n`);
|
|
30
|
+
|
|
31
|
+
run("npm install --no-fund --no-audit", "Installing dependencies");
|
|
32
|
+
run("npx tsc", "Building TypeScript");
|
|
33
|
+
|
|
34
|
+
// Try global link so `sky` works anywhere
|
|
35
|
+
try {
|
|
36
|
+
execSync("npm link", { stdio: "pipe", encoding: "utf-8", timeout: 10000 });
|
|
37
|
+
process.stdout.write(` ${CYAN}✦${RESET} Global 'sky' command ${GREEN}✓${RESET}\n`);
|
|
38
|
+
} catch {
|
|
39
|
+
process.stdout.write(` ${CYAN}✦${RESET} Global 'sky' command ${DIM}(use: npm install -g .)${RESET}\n`);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
console.log(`\n ${GREEN}✅ 天空织机 已就绪${RESET}\n`);
|
|
43
|
+
console.log(` ${DIM}────────────────────────────────${RESET}`);
|
|
44
|
+
console.log(` ${CYAN}sky chat ${DIM}开始对话${RESET}`);
|
|
45
|
+
console.log(` ${CYAN}sky web ${DIM}启动 Web UI → http://localhost:3000${RESET}`);
|
|
46
|
+
console.log(` ${CYAN}sky task <goal> ${DIM}多 Agent 编排${RESET}`);
|
|
47
|
+
console.log(` ${CYAN}sky help ${DIM}所有命令${RESET}`);
|
|
48
|
+
console.log(` ${DIM}────────────────────────────────${RESET}\n`);
|
package/scripts/link.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Post-install hook — runs `npm link` so `sky` is globally available.
|
|
4
|
-
* Silently skipped on CI or when permissions are insufficient.
|
|
5
|
-
*/
|
|
6
|
-
if (process.env.CI || process.env.NODE_ENV === "production") process.exit(0);
|
|
7
|
-
const { execSync } = require("child_process");
|
|
8
|
-
try {
|
|
9
|
-
execSync("npm link", { stdio: "pipe", encoding: "utf-8", timeout: 10000 });
|
|
10
|
-
} catch (_) {}
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Post-install hook — runs `npm link` so `sky` is globally available.
|
|
4
|
+
* Silently skipped on CI or when permissions are insufficient.
|
|
5
|
+
*/
|
|
6
|
+
if (process.env.CI || process.env.NODE_ENV === "production") process.exit(0);
|
|
7
|
+
const { execSync } = require("child_process");
|
|
8
|
+
try {
|
|
9
|
+
execSync("npm link", { stdio: "pipe", encoding: "utf-8", timeout: 10000 });
|
|
10
|
+
} catch (_) {}
|