skills-experimental/file-read-cache/SKILL.md
In-memory file content cache with mtime-based invalidation. 1000 entries max. Encoding detection. Cache statistics. Reduce redundant reads. Use when [file read cache] is needed.
npx skillsauth add bianhaifeng789-hue/openclaw-config file-read-cacheInstall 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.
mtime-based 文件内容缓存,减少重复读取。
场景:
Claude Code 方案:fileReadCache.ts + mtime OpenClaw 飞书适配:文件缓存 + mtime invalidation
type CachedFileData = {
content: string
encoding: BufferEncoding
mtime: number
}
class FileReadCache {
private cache = new Map<string, CachedFileData>()
private readonly maxCacheSize = 1000
readFile(filePath: string): { content: string; encoding: BufferEncoding }
clear(): void
invalidate(filePath: string): void
getStats(): { size: number; entries: string[] }
}
function readFile(filePath: string): { content: string; encoding: BufferEncoding } {
const fs = getFsImplementation()
// Get file stats
const stats = fs.statSync(filePath)
const mtime = stats.mtimeMs
// Check cache
const cachedData = cache.get(filePath)
if (cachedData && cachedData.mtime === mtime) {
// Cache hit - return cached
return { content: cachedData.content, encoding: cachedData.encoding }
}
// Cache miss - read file
const encoding = detectFileEncoding(filePath)
const content = fs.readFileSync(filePath, { encoding })
// Update cache
cache.set(filePath, { content, encoding, mtime })
// Evict if too large
if (cache.size > maxCacheSize) {
const firstKey = cache.keys().next().value
cache.delete(firstKey)
}
return { content, encoding }
}
{
"config": {"wide_screen_mode": true},
"elements": [
{
"tag": "div",
"text": {
"tag": "lark_md",
"content": "**📄 File Read Cache Statistics**\n\n---\n\n**缓存信息**:\n\n| 属性 | 值 |\n|------|------|\n| **缓存大小** | 250 entries |\n| **最大容量** | 1000 entries |\n| **命中率** | 85% |\n\n---\n\n**缓存文件**:\n• MEMORY.md ✓\n• USER.md ✓\n• HEARTBEAT.md ✓\n• ...(共 250 个)\n\n---\n\n**性能提升**:\n• IO 减少:85%\n• 平均读取时间:0.5ms → 0.01ms"
}
}
]
}
File Read Cache:
1. 获取 file stats(mtime)
2. 检查 cache(key = filePath)
3. mtime 匹配 → hit,返回 cached
4. mtime 不匹配 → miss,读取文件
5. 更新 cache
6. 超过容量 → evict oldest
function invalidate(filePath: string): void {
cache.delete(filePath)
}
function clear(): void {
cache.clear()
}
// memory/file-read-cache-state.json
{
"stats": {
"totalReads": 0,
"cacheHits": 0,
"cacheMisses": 0,
"hitRate": 0
},
"config": {
"maxCacheSize": 1000
},
"current": {
"size": 0,
"entries": []
},
"lastUpdate": "2026-04-12T00:18:00Z",
"notes": "File Read Cache Skill 创建完成。等待 file-edit 触发。"
}
| Claude Code | OpenClaw 飞书场景 | |-------------|------------------| | fileReadCache.ts | Skill + 状态文件 | | mtime-based | 同样 mtime | | maxCacheSize 1000 | 同样 1000 | | encoding detection | 同样 encoding |
此 Skill 在 FileEditTool 操作时自动使用。
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