skills-experimental/char-pool-interning/SKILL.md
# CharPool Interming Skill CharPool Interming - CharPool class + strings array + stringMap + ascii Int32Array fast-path + intern/get methods + Index 0 space + Index 1 empty spacer + shared pool across screens + blitRegion copy IDs + diffEach compare IDs。 ## 功能概述 从Claude Code的ink/screen.ts提取的CharPool interning模式,用于OpenClaw的字符池内存优化。 ## 核心机制 ### CharPool Class ```typescript export class CharPool { private strings: string[] = [' ', ''] // Index 0 = space, 1 = empty (spacer) private string
npx skillsauth add bianhaifeng789-hue/openclaw-config skills-experimental/char-pool-interningInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
CharPool Interming - CharPool class + strings array + stringMap + ascii Int32Array fast-path + intern/get methods + Index 0 space + Index 1 empty spacer + shared pool across screens + blitRegion copy IDs + diffEach compare IDs。
从Claude Code的ink/screen.ts提取的CharPool interning模式,用于OpenClaw的字符池内存优化。
export class CharPool {
private strings: string[] = [' ', ''] // Index 0 = space, 1 = empty (spacer)
private stringMap = new Map<string, number>([[' ', 0], ['', 1]])
private ascii: Int32Array = initCharAscii() // charCode → index, -1 = not interned
// strings array for storage
// stringMap for lookup
// ascii Int32Array for ASCII fast-path
}
private strings: string[] = [' ', ''] // Index 0 = space, 1 = empty (spacer)
// Index 0: space (default)
// Index 1: empty (spacer tail for wide chars)
# Pre-populated common chars
private stringMap = new Map<string, number>([[' ', 0], ['', 1]])
// Map for non-ASCII lookup
// string → index mapping
private ascii: Int32Array = initCharAscii() // charCode → index, -1 = not interned
intern(char: string): number {
// ASCII fast-path: direct array lookup instead of Map.get
if (char.length === 1) {
const code = char.charCodeAt(0)
if (code < 128) {
const cached = this.ascii[code]!
if (cached !== -1) return cached // Already interned
const index = this.strings.length
this.strings.push(char)
this.ascii[code] = index // Cache for future lookups
return index
}
}
// ... non-ASCII fallback
}
// Int32Array direct lookup
// ASCII: O(1) array access
# Faster than Map.get
intern(char: string): number {
// ASCII fast-path (see above)
// Non-ASCII: Map lookup
const existing = this.stringMap.get(char)
if (existing !== undefined) return existing // Already interned
const index = this.strings.length
this.strings.push(char)
this.stringMap.set(char, index)
return index
}
// Returns index (ID)
# Interned char ID
get(index: number): string {
return this.strings[index] ?? ' ' // Fallback to space
}
// Lookup by index
# Fallback to space if invalid
// Character string pool shared across all screens.
// With a shared pool, interned char IDs are valid across screens,
// so blitRegion can copy IDs directly (no re-interning) and
// diffEach can compare IDs as integers (no string lookup).
// Shared across all screens
// IDs valid across screens
# blitRegion: copy IDs directly
# diffEach: compare IDs as integers
// blitRegion can copy IDs directly (no re-interning)
// No string lookup needed
// Direct ID copy
# Memory efficiency
// diffEach can compare IDs as integers (no string lookup)
// Integer comparison faster than string comparison
// IDs as integers
# Fast diffing
{
"stringsCount": 150,
"asciiCached": 95,
"sharedPool": true
}
char.charCodeAt(0) < 128 → this.ascii[code] → O(1) lookup → no Map.get
# ASCII字符用Int32Array直接lookup
# O(1)数组访问
# 比Map.get更快
shared pool → IDs valid across screens → blitRegion copy IDs → diffEach compare IDs
# 共享池确保IDs跨screen有效
# blitRegion直接copy IDs
# diffEach整数比较
[' ', ''] → Index 0 space + Index 1 empty spacer → avoid interning common chars
# 预填充space和empty
# 避免频繁interning
# 常用字符预分配
get(invalid index) → ' ' fallback → safe default
# 无效index返回space
# 安全fallback
ink/screen.ts (1486 lines)business
IAA 日报飞书输出能力。 支持把固定 CSV 模板一键转换成: - 中文运营结论 - 飞书卡片 JSON - 飞书发送载荷 Use when: - 需要把 IAA 日报直接发到飞书 - 需要从 CSV 一键生成运营日报
data-ai
IAA日报分析模型 功能: - 渠道日报自动分析 - 小时级+日级ROI联动判断 - 按地区输出加量/降量/停投建议 - 按产品类型输出阈值 - 自动识别利润区/观察区/止损区 Use when: - 分析每天投放数据 - 生成运营日报结论 - 判断是否加量/降量/停投 - 对比美加澳/日韩表现 Keywords: - 日报模型, 投放日报, 加量, 降量, 停投, ROI日报, 分地区分析
data-ai
IAA固定日报分析模板 功能: - 固定字段模板(可直接贴每天数据) - 自动输出总盘结论 - 自动输出美加澳/日韩结论 - 自动给出加量/降量/停投建议 - 适配文件修复/清理两类产品 Use when: - 需要固定日报格式 - 每天复盘渠道表现 - 给运营团队出统一结论 Keywords: - 固定模板, 日报模板, ROI模板, IAA日报, 运营模板
development
# HyperlinkPool Pattern Skill HyperlinkPool Pattern - HyperlinkPool class + strings array + stringMap + Index 0 no hyperlink + intern(hyperlink) + get(id) + undefined handling + 5-minute reset + OSC8 hyperlink interning。 ## 功能概述 从Claude Code的ink/screen.ts提取的HyperlinkPool模式,用于OpenClaw的OSC8超链接池管理。 ## 核心机制 ### HyperlinkPool Class ```typescript export class HyperlinkPool { private strings: string[] = [''] // Index 0 = no hyperlink private stringMap = new Map<string, number>() // strings