npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

skyloom

v1.25.0

Published

天空织机 Skyloom — 6 weather-themed AI agents: Fog, Rain, Frost, Snow, Dew, Fair

Readme

Skyloom — 天空织机

≋ 雾 · ⸽ 雨 · ✱ 霜 · ❉ 雪 · ∘ 露 · ☼ 晴

六位 Agent,一支团队 —— 一座水墨气象台。

CI npm License: MIT Node TypeScript Tests


Skyloom 是一个本地优先的多智能体终端框架。六个专职 Agent 通过事件总线、三层记忆与 DAG 编排引擎协作完成复杂工作流。它不是又一个 LLM 聊天包装器 —— 而是一个分工明确、可观测、可审计的 AI 团队运行时

每个 Agent 对应一种天气、一味矿物颜料、一句古诗。这套贯穿 CLI、TUI 与 Web 的「水墨气象台」意象系统,是 Skyloom 的辨识度所在。设计理念详见 美学设计系统


目录


快速开始

npm install -g skyloom
sky

首次启动自动进入设置向导 —— 选 Provider → 输 API Key → 选模型,全部交互式完成。

  • API Key 持久化于 ~/.skyloom/config.yaml,更新不丢失
  • 随时 /setup 重新切换 Provider 或模型
  • 支持管道接入:cat err.log | sky -p "归类错误"

常用命令

| 命令 | 说明 | |------|------| | sky | 进入交互对话(全屏「立轴」水墨 TUI) | | sky --classic | 线性滚动界面(管道 / 窄终端自动回退) | | sky fog | 直接与指定 Agent 对话 | | sky task "写一个CLI" | 多 Agent DAG 编排 | | sky web | 启动 Web UI → http://localhost:3000 | | sky mcp | 启动 MCP Server(供 Claude Desktop 等调用) | | sky channels | 渠道接入向导(选软件 → 扫码进后台 → 填密钥 → 回调 URL 二维码) | | sky gateway | 启动渠道网关(飞书 / 企业微信 / QQ 机器人接入) | | sky apikey set <provider> <key> | 保存 API Key | | sky -p "问题" [--agent fog] [--json] | Headless 模式(CI / 管道 / 外部编排) |


六灵 — Agent 体系

Skyloom 内置六个专职 Agent,各自拥有独立的系统提示、工具集、技能集与矿物色标识:

| Agent | 符号 | 矿物色 | 色值 | 职责定位 | 核心技能 | |-------|------|--------|------|----------|----------| | Fog | ≋ | 松烟墨 | #4a4a44 | 探索洞察 — 调研、分析、信息提取 | web_research, code_analysis | | Rain | ⸽ | 石青 | #2a5c8a | 创造产出 — 代码生成、内容写作 | code_generator, content_writer | | Frost | ✱ | 石绿 | #3a7a6e | 精炼品质 — 代码审查、安全审计 | code_reviewer, security_auditor | | Snow | ❉ | 铅白 | #8a8a82 | 架构规划 — 任务分解、系统设计 | task_planner, arch_designer | | Dew | ∘ | 赭石 | #8b6914 | 可靠守护 — 运维、CI/CD、部署 | sys_operator, ci_cd_manager | | Fair | ☼ | 朱砂 | #b3342d | 情感陪伴 — 对话、自我进化 | emotional_companion, self_evolve |

Agent 之间可通过 delegate_to 工具相互委托子任务,也可通过事件总线异步协作。在多 Agent 编排中,雪(Snow) 担任规划者角色,将目标分解为 DAG 子任务后分派给各灵执行。


交互界面

立轴模式(默认)

sky 在真实终端中进入全屏立轴模式 —— 一座水墨气象台:

  • 顶部印章:随当前 Agent 切换矿物色
  • 天幕:气象粒子按灵的动势飘动(雾飘 · 雨落 · 霜结 · 雪降 · 露凝 · 晴升)
  • 远山剪影:随会话逐渐生长
  • 左栏:六灵常驻面板,多灵编排时亮起脉冲与 ✓/✗ 战绩
  • 右侧正文:真流式逐字「晕染」入场,差量重绘只刷新变化的行
  • 织谱/task 多灵编排时逐梭列出子任务与依赖,原位更新状态与耗时
┌─ 天空织机 Skyloom ──────────────────────────────────────── 霧 ─┐
│ ≋        ≋      ≋  气象粒子        ≋          ≋               │
│ ▁▂▃▅▃▂▁▁▂▄▂▁  远山随会话生长  ▁▁▂▃▂▁▁▁▂▄▃▂▁▁▁▂▃▅▃▂▁▁▁▂▃▂▁▁▁  │
│ ● 霧 fog ✓1   │  ❯ 帮我调研并起草一份方案                      │
│ ⸽ 雨 rain     │                                                │
│ · 霜 frost    │  ✦ 织谱 · 3 梭          ← /task 多灵织造       │
│ · 雪 snow     │  ✓ ① 霧 调研竞品现状 (3.2s)                    │
│ · 露 dew      │  ⸽ ② 雨 起草方案 ←①     ← 执行中,符号脉冲     │
│ · 晴 fair     │  · ③ 霜 审校精炼 ←②                            │
│ ╌╌╌╌╌╌╌╌╌╌╌╌╌ │    ⸙ web_search 检索中…                        │
│ 山色有无中    │                                                │
│ 織 1/3 梭     │                                                │
├ ≋ 织造 1/3 ·· ──────────────────── gpt-4o · $0.02 · ▰▰▱▱▱ 41% ┤
│ ≋ ❯ █                                                          │
└─ /help 命令 · Tab 补全 · PgUp 回看 · Ctrl-C 退出 ──────────────┘

技术要点:流式文本不直接写终端,而是落入虚拟块缓冲区,每帧在内存中合成后差量重绘。流式与动效互不干扰。CJK 宽度计算贯穿所有排版路径。

经典线性模式

sky --classic 或管道 / 窄终端环境自动回退至线性对话流:

  • 真实行编辑(←→ / Home·End / 退格 / 粘贴 / 中文均正确)
  • ↑↓ 历史、/ 命令 Tab 补全
  • 回复真流式逐字呈现,按终端宽度智能换行(中英文 / 长链接不溢出)
  • 每位灵以矿物色印章入场

Web UI

sky web
# → http://localhost:3000

宣纸质感、六矿物颜料、按 Agent 切换的气象粒子与印章汉字。⌘1-6 唤灵切换。回复经 SSE 真流式推送,工具调用呈现为「气象事件」。


命令与操作

Slash 命令

| 类别 | 命令 | 说明 | |------|------|------| | Agent 切换 | /fog /rain /frost /snow /dew /fair | 切换当前对话 Agent | | 配置 | /setup /apikey /model | 安装向导、设置 Key、切换模型 | | 信息 | /status /cost /memory /workspace /version | 查看系统状态 | | 会话 | /sessions · /resume <id> · /new | 会话列表、恢复、新建 | | 操作 | /compact /retry /clear /task <goal> | 压缩上下文、重试、编排 | | 权限 | /plan /auto /default /perm <模式> | 计划/自动/默认;/perm default\|auto\|accept\|strict\|bypass 切权限模式 | | 诊断 | /context /tools /trace /agents | Token 分布、工具统计、运行追踪、可派生子智能体清单 | | 版本控制 | /rewind [n] | 文件检查点回退(不依赖 git) | | 退出 | /quit /exit | 退出对话 |

输入宏

| 宏 | 说明 | 示例 | |----|------|------| | @文件路径 | 将文件内容注入上下文 | @src/main.ts 这个函数有bug | | !shell命令 | Shell 输出入上下文(不耗 LLM) | !git diff | | #内容 | 一句话追加到 SKY.md 项目记忆 | #项目用pnpm管理依赖 |


核心架构

智能路由与编排

Skyloom 的输入处理分三级,由规则引擎在 < 1ms 内完成分类(无需 LLM 调用):

| 模式 | 触发条件 | 执行路径 | |------|----------|----------| | direct | 短问候、单句事实问答 | 直接回复,不调用工具 | | single | 明确单步任务 | 单 Agent + 工具集 | | orchestrate | 多步骤、含枚举/序号、长文本 | 雪(Snow)分解为 DAG → 多 Agent 协作 |

对于常见工作流(代码审查、调研后写作、重构后测试等),9 种 Pipeline 模板会在匹配后直接跳过 LLM 拆解,节省 2-3k tokens 的规划开销。

三层记忆

┌─────────────────────────────────────────────────┐
│  Short-term — SQLite 持久化会话上下文             │
│  Working  — 内存级任务作用域状态                   │
│  Long-term — 持久化 KV 存储 + 语义检索             │
└─────────────────────────────────────────────────┘
  • Short-term:对话消息序列,SQLite 持久化,支持会话恢复与上下文压缩(/compact
  • Working:任务级临时状态(todo 清单、中间结果),存于内存,不怕上下文压缩丢失
  • Long-term:持久化事实存储,支持 remember_fact / recall_facts,通过 TF-IDF + Cosine 语义检索召回

附加能力:

  • 知识图谱:实体-关系三重存储(SQLite),自动从对话中提取,支持 2-hop 传递查询
  • 向量搜索:TF-IDF + Cosine,CJK 感知分词,零外部依赖
  • 持续学习:任务完成后自动记录审查,失败模式入库用于去重与自进化

工具系统

| 工具类别 | 工具 | 说明 | |----------|------|------| | 文件操作 | read_file write_file edit_file apply_patch delete_file copy_file move_file | 文件读写编辑,支持 offset/limit 分页;edit_file 强制唯一匹配 + replace_all 返回统一 diff;apply_patch 原子化多文件 search/replace(全量校验后再落盘) | | 搜索 | list_directory tree file_search code_search grep | 目录遍历、文件搜索、代码搜索 | | 诊断 | get_diagnostics | LSP 式诊断:TS/JS 经工作区 TypeScript 编译器 API 取真实类型错误(行:列),其他语言走配置的 checker | | Shell | run_bash bash_output list_bash kill_bash | 沙箱隔离执行,超时保护 + 输出限制;background=true 派后台长进程,增量读输出 / 列举 / 终止 | | 子智能体 | spawn_agent | 派生隔离上下文的子智能体独立完成聚焦任务,只回传最终报告(对标 Claude Code Task 工具) | | 网络 | http_get http_post web_search fetch_page | HTTP 请求 + 多引擎搜索(DDG/Bing/Baidu/Sogou 降级) | | Git | git_status git_diff git_log git_add git_commit git_checkout | Git 操作 | | 系统 | system_info system_diagnose list_processes list_installed_apps | 系统诊断 | | 电脑操作 | launch_app open_path kill_process install_software 等 10 个 | 跨平台桌面操作 | | Agent 间 | delegate_to | 跨 Agent 任务委托 | | 模型管理 | set_my_model | Agent 自主切换模型 | | 记忆 | remember_fact recall_facts | 长期记忆读写 | | 技能 | use_skill list_skills | 技能激活与管理 | | MCP | mcp_list_servers mcp_add_server mcp_remove_server | MCP 服务器管理 |

工具框架特性:

  • 重试与熔断:每个工具支持 maxRetries + retryDelay,内置 Circuit Breaker 模式
  • 结果缓存:LRU 缓存(128 条目),可配置 cacheable 标记
  • 超时保护:默认 30s,可按工具配置
  • 结果截断:超大工具结果自动头尾保留 + 中间截断(默认 12k 字符),提示精确重取

子智能体(spawn_agent)

对标 Claude Code 的 Task 工具 / opencode subagents:任一灵都能用 spawn_agent 派生一个隔离上下文的子智能体,让它独立完成一段聚焦、自洽的工作,只把最终报告回传主上下文 —— 主对话不被中间步骤污染。

  • 内置类型general-purpose(全工具,研究/多步执行)、explore(只读,广度搜索定位)
  • 自定义:在 .sky/agents/<name>.md.claude/agents/<name>.md 放定义文件,frontmatter 兼容 Claude Code(name / description / tools / model),正文即系统提示;工具名自动映射(Readread_file …)。/agents 查看全部
  • 隔离与安全:子智能体有独立的临时记忆(用完即删),可限定工具白名单,且永不持有 spawn_agent(无递归扇出)
  • 扫描路径~/.claude/agents~/.skyloom/agents.claude/agents.sky/agents(后者覆盖前者)

安全体系

Skyloom 的安全模型贯穿工具执行的全生命周期:

| 层级 | 机制 | 说明 | |------|------|------| | 危险分级 | 5 级 DangerLevel | SAFELOWMEDIUMHIGHCRITICAL,每工具静态映射 | | 红线拦截 | REDLINE_PATTERNS / REDLINE_COMMANDS | rm -rfformat C:sudo rm 等永不自动批准 | | 沙箱隔离 | sandbox.ts | 临时目录隔离、超时强制终止、输出大小限制(1MB)、执行前预检 | | SSRF 防护 | assertFetchAllowed | 阻止对私有/环回/链路本地地址的请求(DNS 解析后二次检查) | | 工作区围栏 | SKYLOOM_WORKSPACE_FENCE=1 | 可选:限制文件操作在项目根目录内 | | 输出脱敏 | filter.ts | API Key / 密码 / 私钥 / 邮箱 / 内网 IP / 数据库连接串自动替换 | | 审计日志 | 全链路 | 所有安全决策记录在案 | | Hooks | pre_tool / post_tool | 用户自定义 shell 钩子,pre_tool 非零退出可拦截工具调用 |

技能系统

17 个内置技能,运行时按 Agent 职责动态激活:

| 技能 | 适用 Agent | 说明 | |------|-----------|------| | web_research | 雾 | 多引擎网络搜索与信息整合 | | code_analysis | 雾 | 代码结构分析与理解 | | code_generator | 雨 | 代码生成与实现 | | content_writer | 雨 | 文档与内容创作 | | code_reviewer | 霜 | 代码审查与质量评估 | | security_auditor | 霜 | 安全漏洞审计 | | task_planner | 雪 | 任务分解与计划制定 | | arch_designer | 雪 | 系统架构设计 | | sys_operator | 露 | 系统运维操作 | | ci_cd_manager | 露 | CI/CD 流水线管理 | | emotional_companion | 晴 | 情感陪伴与对话 | | self_evolve | 晴 | 自我进化与 Prompt 优化 | | data_transformer | 雨/霜 | 数据格式转换 | | document_analysis | 雾 | 文档分析与提取 | | performance_checker | 霜 | 性能分析与检查 | | api_integrator | 雨 | API 集成与对接 | | workflow_designer | 雪 | 工作流设计与编排 |

Claude Code 技能迁移:将 skill 文件夹放入 .claude/skills/.sky/skills/,SKILL.md 同架构兼容(frontmatter name/description/allowed-tools,工具名自动映射),零拷贝迁移、改完即生效。

扫描路径:~/.claude/skills~/.skyloom/skills.claude/skills.sky/skills


工程化能力

项目记忆 SKY.md

三层加载,自动注入所有 Agent 的系统提示:

  1. ~/.skyloom/SKY.md — 用户级(跨项目通用)
  2. ./SKY.md — 项目级(兼容 CLAUDE.md / AGENTS.md
  3. ./SKY.local.md — 本地覆盖(不入版本控制)

/init 生成模板,#内容 快速追加。

验证闭环

任务写文件后自动运行配置的验证命令(测试 / lint / type-check),失败回灌 Agent 自动修复(默认 2 轮):

# ~/.skyloom/config.yaml
verify:
  commands: ["npm run -s type-check", "npm test -s"]
  max_fix_rounds: 2

也可在 SKY.md 的 ## Verify 代码块中定义。/verify 手动触发。

何时停止 —— 按"进展"而非"轮数"

长任务(大型重构、多文件改动)需要很多轮工具调用。Skyloom 不按轮次数砍断 —— 只要 Agent 在持续取得进展(有成功的工具调用或产出文本),它就一直干下去。停止由三层把关:

  1. 进度断路器:连续 max_no_progress_rounds(默认 6)轮"无进展"(既无成功工具、也无文本,纯空转)才停。
  2. LoopGuard:精确识别真正的死循环(同一工具重复、连续失败、搜索风暴、复读),在任意轮次立即停。
  3. 硬天花板:仅作极端失控的最后兜底(默认 1000,几乎碰不到)。
# ~/.skyloom/config.yaml
llm:
  max_no_progress_rounds: 6       # 连续 N 轮无进展才停(核心)
  max_tool_rounds_hard_cap: 1000  # 兜底天花板
  # max_tool_rounds_hard_cap: 0   # 设为 0 = 不限(完全交给进度断路器 + LoopGuard + Ctrl-C)

这与 OpenClaw 等顶级框架的做法一致:信任模型在干活时不打断,只在真正空转/死循环/失控时才停。 Ctrl-C 始终可随时中断并保留已产出内容。

计划模式

Shift+Tab/plan 进入:只读工具集 + 先出编号方案,批准后切回执行。/auto 免审批模式。

文件检查点

/rewind [n] — 每轮自动快照被修改的文件,一键回退 n 轮。不依赖 git(run_bash 副作用除外)。

自定义命令

.sky/commands/*.md(项目级)/ ~/.skyloom/commands/(用户级):

  • frontmatter 可指定 description / agent
  • 正文支持 $ARGUMENTS $1…$9 占位符
  • 子目录命名空间:git/commit.md/git:commit
  • 改完即生效

Hooks

hooks:
  session_start:
    - "echo session initialized"
  pre_tool:
    - matcher: "run_bash"
      command: "./scripts/guard.sh"   # 非零退出 = 拦截
  post_tool:
    - matcher: "write_file|edit_file"
      command: "npx prettier --write \"$SKY_FILE\""

环境变量:SKY_TOOLSKY_ARGSSKY_FILESKY_AGENT

模型配置

/model [id|unified <id>|reset|key <key>] — 统一默认 + 每灵独立覆盖(模型与 API Key 均可),即改即生效并持久化。Agent 也能用 set_my_model 工具自己换模型。

自进化

失败模式分析 → Prompt diff 生成 → Agent 自主应用改进。经验库去重,7 天滑动窗口。

可观测性

| 命令 | 说明 | |------|------| | /context | 按角色分解 token 占用 + 系统提示 / 工具 / 技能开销 | | /tools | 每工具调用次数 / 失败 / 缓存命中 / 平均耗时 / 熔断状态 | | /cost | 累计用量与费用(按模型、按 Agent 细分) |

MCP 双向桥

  • Client:连接外部 MCP Server(stdio / SSE 传输),扩展工具集。兼容 .mcp.json(Claude Code 同款 schema)
  • Serversky mcp 启动,将 Skyloom Agent 暴露为工具供 Claude Desktop / Zed / Continue 等调用

渠道网关 — 接入聊天软件

sky gateway 启动一个统一网关,把 飞书 / 企业微信 / QQ 的机器人消息桥接给 Skyloom Agent。架构借鉴 OpenClaw 的渠道模型,但精简为一套干净契约:

平台 → POST /webhook/<channel> → 适配器(验签+解密+标准化) → Agent.chatStream → 适配器回发

每个渠道自行处理签名校验与平台的 URL 验证握手,网关核心保持平台无关。回复在 ack webhook 后异步投递(三家平台都要求快速 200)。

最快上手:sky channels 配置向导(也可在对话里 /channels):选聊天软件 → 终端渲染二维码直达该平台的 bot 管理后台(手机扫码打开创建 bot)→ 按提示逐项填密钥(带"在哪找"提示)→ 自动存盘 → 再把回调 URL 也渲成二维码(扫了贴进后台事件配置)。配完运行 sky gateway 即可。

说明:飞书/企业微信/QQ 都是官方机器人 API,凭据需在各平台开发者后台创建(不存在个人微信那种"扫码登录")。所以二维码是"快捷直达后台 + 回调 URL"的便利,而非免凭据登录。

也可手动在 ~/.skyloom/config.yaml 配置(或用对应环境变量):

channels:
  feishu:                       # 飞书 / Lark
    appId: cli_xxx              # 或环境变量 FEISHU_APP_ID
    appSecret: { source: env, id: FEISHU_APP_SECRET }
    encryptKey: ""             # 可选(开启加密时)· FEISHU_ENCRYPT_KEY
    verificationToken: ""      # 可选 · FEISHU_VERIFICATION_TOKEN
    agent: fair                # 该渠道路由到哪个灵(默认 fair)
  wecom:                        # 企业微信
    corpId: ww_xxx             # WECOM_CORP_ID
    corpSecret: { source: env, id: WECOM_CORP_SECRET }
    token: xxx                 # WECOM_TOKEN
    encodingAesKey: xxx        # WECOM_AES_KEY(43 位)
    agentId: 1000002           # WECOM_AGENT_ID
  qq:                           # QQ 官方机器人(webhook 模式)
    appId: "102xxxxxx"         # QQ_BOT_APPID
    secret: { source: env, id: QQ_BOT_SECRET }

把平台后台的事件回调 URL 指向 http(s)://<你的域名>:8848/webhook/feishu(企业微信 /webhook/wecom、QQ /webhook/qq)。secretInput 支持字面量或 { source: env, id: 环境变量名 },与 OpenClaw 同构。/health 可查已启用渠道。

| 渠道 | 入站(收) | 鉴权/加密 | |------|----------|-----------| | 飞书 Feishu | 文本 + 媒体(图片/语音/视频/文件/表情/富文本 post) | verification token + 可选 AES-256-CBC 解密 + URL challenge | | 企业微信 WeCom | 文本 + 媒体(图片/语音/视频/文件/位置) | msg_signature(SHA1) + AES(PKCS7) + GET echostr 验证 | | QQ Bot | 文本 + 媒体(attachments) · 群/私聊/频道 @ | Ed25519 验签 + op=13 validation 握手 |

媒体消息:入站的图片/语音/文件等会被标准化为 [image: …] [file: …] 之类的可读描述拼进 prompt,Agent 即使不下载二进制也知道用户发了什么。

多模态读图(可选):配置一个视觉模型后,入站图片会被下载并送入视觉模型识别,识别结果(物体/文字/场景)拼进 prompt,Agent 真正"看懂"用户发的图。channels.<id>.visionModelllm.vision_model 指定模型(如 gpt-4o-mini / gemini-2.5-flash / qwen-vl-max),用对应 provider 的环境变量鉴权;未配置则跳过(只给描述行)。channels.<id>.vision: false 可单独关闭。

飞书卡片 + 流式:飞书默认以交互卡片回复,并在生成过程中逐步 patch 卡片内容(节流 ≥600ms),呈现打字机式流式效果。channels.feishu.renderMode: raw 可改回纯文本,streaming: false 可关流式(改为一次性发送)。

出站发图/文件:Agent 在回复里用 ![说明](路径或URL)(图片)或 [[file:路径或URL]] / [[image:src|说明]] 表达媒体,网关会自动上传并发送,同时从文本里剥离这些标记。src 可为本地文件路径或 http(s) 链接。飞书/企业微信支持本地与 URL(走素材上传 API);QQ 官方 API 只接受 URL(平台自行抓取)。

⚠️ 网关接收外部平台回调,默认绑定 0.0.0.0。请放在反向代理/HTTPS 之后,并妥善保管密钥(建议走环境变量 / secretInput)。


支持的 LLM Provider

9 家 Provider,统一接口,支持自动 fallback 链与成本追踪:

| Provider | 可调模型 | 上下文窗口 | |----------|----------|-----------| | OpenAI | gpt-4.1, gpt-4.1-mini, gpt-4o, gpt-4o-mini, o4-mini | 128K – 1M | | Anthropic | claude-sonnet-4-6, claude-opus-4-7, claude-haiku-4-5 | 200K | | DeepSeek | deepseek-chat, deepseek-reasoner, deepseek-v4-flash, deepseek-v4-pro | 64K – 128K | | Google | gemini-2.5-pro, gemini-2.5-flash | 1M | | Groq | llama-4-scout, llama-3.3-70b, mixtral-8x7b | 32K – 128K | | OpenRouter | gpt-4.1, claude-sonnet-4-6, gemini-2.5-flash, llama-4-maverick | 128K – 1M | | Mistral | mistral-large, mistral-small | 32K – 128K | | xAI | grok-4 | 128K | | Ollama | llama3, qwen2.5, deepseek-r1(本地) | 8K – 32K |

模型目录是单一事实源,含上下文窗口与成本数据,参见 config/models.yaml


项目结构

skyloom-ts/
├── src/
│   ├── cli/                  CLI 入口与交互层
│   │   ├── main.ts           命令注册 + 对话循环 (Commander)
│   │   ├── loom.ts           立轴全屏 TUI (差量重绘引擎)
│   │   ├── loom_chat.ts      立轴对话管理
│   │   ├── tui.ts            行编辑器 + 流式渲染 + CJK 宽度
│   │   ├── mode.ts           模式控制器
│   │   ├── input_macros.ts   @文件 !命令 #记忆 宏展开
│   │   └── commands_md.ts    自定义 .md 命令加载
│   ├── core/                 核心引擎 (44 模块)
│   │   ├── agent.ts          BaseAgent — LLM 推理循环 + 工具执行
│   │   ├── agent/
│   │   │   ├── task.ts       Task/TaskResult 领域模型
│   │   │   └── guard.ts      循环守卫(防无限工具调用)
│   │   ├── factory.ts        SystemContext — 统一启动 + 编排入口
│   │   ├── llm.ts            LLM 统一客户端(路由/重试/fallback/成本)
│   │   ├── memory.ts         三层记忆(SQLite + 内存 + 持久化 KV)
│   │   ├── bus.ts            异步事件总线(Agent 间通信)
│   │   ├── tool.ts           工具注册框架(重试/缓存/熔断/超时)
│   │   ├── tool_router.ts    工具智能选择(按上下文裁剪工具集)
│   │   ├── router.ts         复杂度路由(direct/single/orchestrate)
│   │   ├── pipelines.ts      9 种预定义 DAG 模板
│   │   ├── security.ts       5 级危险分级 + 红线拦截
│   │   ├── sandbox.ts        Shell 沙箱(隔离/超时/输出限制)
│   │   ├── filter.ts         输出脱敏(API Key/密码/PII)
│   │   ├── verify.ts         验证闭环(自动跑测试/lint)
│   │   ├── hooks.ts          生命周期钩子(pre/post_tool)
│   │   ├── checkpoint.ts     编排检查点(中断恢复)
│   │   ├── file_checkpoint.ts 文件快照(/rewind)
│   │   ├── skill.ts          技能注册与动态激活
│   │   ├── skymd.ts          SKY.md 三层加载
│   │   ├── mcp.ts            MCP Client(stdio/SSE 传输)
│   │   ├── mcp_server.ts     MCP Server(暴露 Agent 为工具)
│   │   ├── vector.ts         TF-IDF + Cosine 向量检索
│   │   ├── graph.ts          知识图谱(实体-关系三重存储)
│   │   ├── semantic.ts       字符 n-gram Jaccard 语义评分
│   │   ├── learn.ts          持续学习(任务审查 + 经验库)
│   │   ├── evolve.ts         自进化(失败分析 → Prompt 优化)
│   │   ├── longdoc.ts        长文档处理(滑动窗口 + 摘要链)
│   │   ├── circuit_breaker.ts 熔断器模式
│   │   ├── config.ts         配置管理(YAML 多层合并)
│   │   ├── catalog.ts        模型目录(单一事实源)
│   │   ├── estimate.ts       Token 估算
│   │   ├── arbitrate.ts      仲裁器
│   │   ├── cache.ts          LLM 缓存
│   │   ├── middleware.ts      中间件链
│   │   ├── profile.ts        性能分析
│   │   ├── theme.ts          Agent 主题(颜色/符号/诗句)
│   │   ├── icons.ts          Agent 图标
│   │   ├── workspace.ts      工作区管理
│   │   ├── schemas.ts        配置 Schema 校验
│   │   ├── model_config.ts   每灵模型配置
│   │   ├── constants.ts      全局常量
│   │   └── logger.ts         结构化日志
│   ├── agents/               6 个 Agent 定义
│   │   ├── fog.ts            雾 — 探索洞察
│   │   ├── rain.ts           雨 — 创造产出
│   │   ├── frost.ts          霜 — 精炼品质
│   │   ├── snow.ts           雪 — 架构规划
│   │   ├── dew.ts            露 — 可靠守护
│   │   └── fair.ts           晴 — 情感陪伴
│   ├── tools/                工具实现
│   │   ├── builtin.ts        内置工具(文件/搜索/网络/Git/Shell)
│   │   ├── computer.ts       电脑操作(10 个跨平台工具)
│   │   ├── delegate.ts       Agent 间委托
│   │   ├── model_tool.ts     模型自切换
│   │   └── todo.ts           任务清单工具
│   ├── skills/               技能加载器
│   │   └── loader.ts         SKILL.md 解析与注册
│   ├── plugins/              插件加载器
│   │   └── loader.ts         插件发现与注册
│   ├── web/                  Web 层
│   │   ├── server.ts         HTTP + SSE + 水墨气象台 UI
│   │   └── tts.ts            文本转语音
│   └── assets/               静态资源
├── config/
│   ├── default.yaml          默认配置
│   ├── providers.yaml        Provider 目录(base URL / env var)
│   ├── models.yaml           模型目录(上下文窗口 / 成本)
│   └── skills/               17 个内置技能 (SKILL.md)
├── tests/                    24 套件 · 240 Vitest 用例
├── docs/
│   ├── AESTHETIC_DESIGN.md   美学设计系统
│   └── OPTIMIZATION_PLAN.md  优化路线图
├── scripts/
│   ├── install.js            安装脚本
│   └── link.js               符号链接
├── package.json
├── tsconfig.json
└── vitest.config.ts

开发

git clone https://github.com/susurrune/skyloom-ts.git
cd skyloom-ts
npm install

npm run build         # tsc 编译
npm run dev           # watch 模式
npm test              # Vitest (24 套件 · 240 用例)
npm run test:coverage # 覆盖率报告
npm run type-check    # TypeScript 严格模式检查
npm run lint          # ESLint
npm run format        # Prettier 格式化

技术栈

| 层面 | 选型 | |------|------| | 语言 | TypeScript 5.4 (strict mode) | | 运行时 | Node.js ≥ 18 | | 包管理 | npm | | 测试 | Vitest 2.x + @vitest/coverage-v8 | | 代码规范 | ESLint 9 + @typescript-eslint | | 格式化 | Prettier 3.x | | 数据库 | sql.js (SQLite, WASM) | | HTTP | axios | | CLI | commander | | 终端渲染 | chalk + 自研差量重绘引擎 | | 配置 | yaml |

路径别名

"@skyloom/*": ["src/*"]
"@/*": ["src/*"]

路线图

Skyloom 正朝「顶级开源 Agent 框架」演进,对标 opencode 的架构与 Claude Code 的交互范式。完整规划见 优化计划


许可证

MIT License · v1.14.7 · 全功能迁移自 Python 原版