skills-experimental/context-utils/SKILL.md
Context window utilities. MODEL_CONTEXT_WINDOW_DEFAULT (200k) + COMPACT_MAX_OUTPUT_TOKENS (20k) + is1mContextDisabled + has1mContext + modelSupports1M + getContextWindowForModel + calculateContextPercentages + getModelMaxOutputTokens + CAPPED_DEFAULT_MAX_TOKENS (8k) + ESCALATED_MAX_TOKENS (64k). Use when [context utils] is needed.
npx skillsauth add bianhaifeng789-hue/openclaw-config context-utilsInstall 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.
Context Utils 上下文窗口工具。
场景:
Claude Code 方案:context.ts + 220+ lines OpenClaw 飞书适配:Context utils + Context management
// Model context window size (200k tokens default)
export const MODEL_CONTEXT_WINDOW_DEFAULT = 200_000
// Maximum output tokens for compact operations
export const COMPACT_MAX_OUTPUT_TOKENS = 20_000
// Default max output tokens
const MAX_OUTPUT_TOKENS_DEFAULT = 32_000
const MAX_OUTPUT_TOKENS_UPPER_LIMIT = 64_000
// Capped default for slot-reservation
export const CAPPED_DEFAULT_MAX_TOKENS = 8_000
export const ESCALATED_MAX_TOKENS = 64_000
export function is1mContextDisabled(): boolean {
return isEnvTruthy(process.env.CLAUDE_CODE_DISABLE_1M_CONTEXT)
}
export function has1mContext(model: string): boolean {
if (is1mContextDisabled()) return false
return /\[1m\]/i.test(model)
}
export function modelSupports1M(model: string): boolean {
if (is1mContextDisabled()) return false
const canonical = getCanonicalName(model)
return canonical.includes('claude-sonnet-4') || canonical.includes('opus-4-6')
}
export function getContextWindowForModel(
model: string,
betas?: string[],
): number {
// Env override (ant-only)
if (
process.env.USER_TYPE === 'ant' &&
process.env.CLAUDE_CODE_MAX_CONTEXT_TOKENS
) {
const override = parseInt(process.env.CLAUDE_CODE_MAX_CONTEXT_TOKENS, 10)
if (!isNaN(override) && override > 0) return override
}
// [1m] suffix
if (has1mContext(model)) return 1_000_000
// Model capabilities
const cap = getModelCapability(model)
if (cap?.max_input_tokens && cap.max_input_tokens >= 100_000) {
if (
cap.max_input_tokens > MODEL_CONTEXT_WINDOW_DEFAULT &&
is1mContextDisabled()
) {
return MODEL_CONTEXT_WINDOW_DEFAULT
}
return cap.max_input_tokens
}
// Betas + Coral reef exp
if (betas?.includes(CONTEXT_1M_BETA_HEADER) && modelSupports1M(model)) {
return 1_000_000
}
if (getSonnet1mExpTreatmentEnabled(model)) return 1_000_000
// Ant model
if (process.env.USER_TYPE === 'ant') {
const antModel = resolveAntModel(model)
if (antModel?.contextWindow) return antModel.contextWindow
}
return MODEL_CONTEXT_WINDOW_DEFAULT
}
export function calculateContextPercentages(
currentUsage: {
input_tokens: number
cache_creation_input_tokens: number
cache_read_input_tokens: number
} | null,
contextWindowSize: number,
): { used: number | null; remaining: number | null } {
if (!currentUsage) return { used: null, remaining: null }
const totalInputTokens =
currentUsage.input_tokens +
currentUsage.cache_creation_input_tokens +
currentUsage.cache_read_input_tokens
const usedPercentage = Math.round(
(totalInputTokens / contextWindowSize) * 100,
)
const clampedUsed = Math.min(100, Math.max(0, usedPercentage))
return {
used: clampedUsed,
remaining: 100 - clampedUsed,
}
}
{
"config": {"wide_screen_mode": true},
"elements": [
{
"tag": "div",
"text": {
"tag": "lark_md",
"content": "**📐 Context Utils**\n\n---\n\n**Constants**:\n• MODEL_CONTEXT_WINDOW_DEFAULT = 200k\n• COMPACT_MAX_OUTPUT_TOKENS = 20k\n• CAPPED_DEFAULT_MAX_TOKENS = 8k\n• ESCALATED_MAX_TOKENS = 64k\n\n---\n\n**Functions**:\n• is1mContextDisabled()\n• has1mContext(model)\n• modelSupports1M(model)\n• getContextWindowForModel()\n• calculateContextPercentages()\n\n---\n\n**1M Context**:\n• [1m] suffix detection\n• Sonnet-4 + Opus-4-6\n• Coral reef experiment"
}
}
]
}
// memory/context-utils-state.json
{
"stats": {
"defaultContextWindow": 200000,
"1mEnabled": false
},
"lastUpdate": "2026-04-12T11:26:00Z",
"notes": "Context Utils Skill 创建完成。"
}
| Claude Code | OpenClaw 飞书场景 | |-------------|------------------| | context.ts (220+ lines) | Skill + Context | | getContextWindowForModel() | Get window | | 1M context | 1M support | | calculateContextPercentages() | Percentages |
此 Skill 在 context calculation 时自动运行。
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