Community编程与开发github.com

komilovsg/f-mode

针对编码代理的节约型工作模式——原始数据绝不进入上下文,仅返回结果。适用于运行测试、读取日志、查询数据库、检查大文件或 JSON、执行浏览器检查,或当用户提及“过滤优先”、“节省令牌”、“上下文快满了”、“输出太多”时。涵盖不隐藏失败的过滤、紧凑摘要、摘要验证以及何时委托子代理。

f-mode 是什么?

F-mode 是一种针对编码代理(如 Claude Code、Cursor、Codex 等)的“过滤优先”工作模式。其核心原则是:原始数据永远不进入上下文,只有处理后的结果才进入。这意味着将逻辑移动到数据端(通过 shell 管道、简短脚本或子代理),仅返回紧凑的摘要,从而节省大量令牌(token)并避免上下文被噪音污染。这对于运行测试、读取日志、查询数据库、检查大文件或 JSON、浏览器检查等场景极为有用。该技能提供了具体的过滤和聚合技巧(如使用 grep、jq、SQL 聚合)、确保不隐藏失败的方法、紧凑摘要的编写指南、摘要交叉验证的建议,以及何时委托子代理进行广泛调查的决策规则。此外,还强调了上下文卫生,包括清理无关上下文、禁用不需要的插件和技能以节省令牌。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/komilovsg/f-mode/tree/HEAD/skills/f-mode

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

F-mode — 过滤优先模式

原则:原始数据绝不进入上下文,只有结果才进入。 将逻辑移动到数据端(shell 管道、简短脚本、子代理),返回紧凑摘要。你阅读日志转储的每一个令牌,都是你无法用于推理的令牌——而过长且充满噪声的上下文不仅成本更高,还会让推理变得更糟。

1. 先过滤再聚合,再读取

不要这样做这样做
cat app.log`grep -c ERROR app.log; grep -E 'ERROR
读取 5 MB 的 JSONjq '.items | length', jq -r '.items[] | [.id,.status] | @tsv' | sort | uniq -c
SELECT * FROM ordersSELECT status, count(*) FROM orders GROUP BY 1
git loggit log --oneline -20, git log --format=%s origin/main..HEAD
滚动文件grep -n 'def handle' file.py,然后使用偏移量/限制读取

2. 过滤绝不能隐藏失败

看起来一切正常,但实际上已经截断的视图,比没有视图更糟糕。

  • 保留退出码:set -o pipefail,或 cmd > out.txt 2>&1; echo "exit=$?"; tail -20 out.txt。直接通过管道传给 tail 会丢失命令的退出码。
  • 除了 tail,还要 grep 失败标记:grep -cE 'FAIL|ERROR|Traceback|panic' out.txt。
  • 打印带分母的计数:通过 41/42,永远不要只写“OK”。
pytest -q --tb=short > /tmp/t.out 2>&1; echo "exit=$?"
grep -cE 'FAILED|ERROR' /tmp/t.out; tail -15 /tmp/t.out

3. 多个相似检查 → 一个脚本,一个表格

十个端点、二十个文件、三十行要验证:编写一个脚本循环并打印紧凑表格(名称 | 状态 | 详情)和总计。而不是十次工具调用和十个完整输出。

for u in / /api/health /api/items; do
  printf "%-14s %s\n" "$u" "$(curl -s -o /dev/null -w '%{http_code}' "localhost:8000$u")"
done

4. 检查摘要的含义,而非形式

看起来有效的输出仍然可能是错误的。与预期值或合理性总计进行比较:计数加起来等于输入大小、已知行存在、文件数匹配 ls | wc -l。如果摘要无法交叉验证,请明确说明。

5. 测试

安静模式、简短回溯、失败部分尾部:

  • pytest -q --tb=short
  • vitest run --reporter=dot, jest --silent
  • go test ./... 2>&1 | grep -E '^(FAIL|ok|---)'
  • cargo test -q

6. 浏览器检查

评估返回紧凑 JSON({title, errors: n, buttons: n, overflowX: bool})的脚本,而不是完整的 DOM 快照。仅当 DOM 结构本身是问题时才截取快照。截图用于视觉检查,而非阅读文本。

7. 广泛调查 → 子代理

大型搜索、日志取证、数据库转储:委托给子代理,它返回带有 file:line 引用的结论。其结果仍然是一个声明——在对它们采取行动之前,验证关键点。

8. 机密和个人数据

绝不要在摘要或诊断中打印机密或真实的 PII。进行掩码处理(postgres://***)或计数处理(发现电子邮件:12)。也要对捕获的异常消息中的连接字符串和密钥进行掩码处理。

9. 读取文件

  • 先 grep -n,然后只使用偏移量/限制读取相关范围。
  • 即将编辑的源代码应完整读取——部分读取会导致编辑错误。
  • 不要在编辑后立即重新读取文件以“验证”;编辑工具在失败时已经会报错。

10. 停止规则

相同的修复尝试两次失败 → 停止。从确切的错误行找出根本原因,或直接询问。不要进行第三次盲目重试。

11. 上下文卫生

  • 在不相关的任务之间清理上下文;压缩长会话。
  • 禁用你在此项目中不使用的插件、技能和 MCP 服务器:每个都会在每个请求中消耗提示令牌。
  • 根据实际使用数字(例如 /cost)来判断节省,而不是根据声称的百分比。

相关技能