本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:
- 我的帖子已经打上 开源推广 标签: 是
- 我的开源项目完整开源,无未开源部分: 是
- 我的开源项目已链接认可 LINUX DO 社区: 是
- 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是
- 以上选择我承诺是永久有效的,接受社区和佬友监督: 是
以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出
为 Codex 添加五个模型能使用的原生工具,通过 MCP 的方式向模型暴露。macOS、Linux、Windows 的 CLI 和 App 均支持。
- read工具(目前支持一切常规编码文本文件,pdf文字或图片模式读取,后续会添加office读取)
- glob工具:用于查找文件
- grep工具:查找文件内容
- bash前后台终端工具(windows使用git bash,mac linux使用系统bash)
- 一个小巧的replace工具,用于匹配词的批量替换,比如将某文档某个函数名批量替换为另一个
五大工具完全避免codex将注意力放在各种终端各种命令拼写上。这会显著提高模型完成任务速度和准确性。对于Windows用户,这意味着可以永久不再受powershell折磨。
安装方法
windos用户需要安装git:Git - Install for Windows
全局安装(需要node.js:Node.js — Download Node.js® ):
npm install --global fastctx如遇404,无法找到包,或无法更新,运行(本次安装强制使用官方源安装):
npm install --global fastctx --registry=https://registry.npmjs.org/之后终端直接输入
fastctx进入控制终端。存在自动更新检查

FastCtx 解决什么问题
要理解本项目做了什么,需要理解codex本身是如何和电脑系统进行交互的
下列以read和grep为例
1. read:读取文件
原生 Codex 读取一个 GBK 文件的第 120~159 行,可能需要临时构造:
$offset = 120
$limit = 40
$line = $offset
$bytes = [IO.File]::ReadAllBytes('V:\repo\docs\legacy.txt')
$text = [Text.Encoding]::GetEncoding(936).GetString($bytes)
$text -split "\r?\n" |
Select-Object -Skip ($offset - 1) -First $limit |
ForEach-Object { "{0}\`t{1}" -f $line++, $_ }这里的代码页、分页、行号和“是否还有后续”都要由模型自己处理。
在FastCtx下
{
"file_path": "V:/repo/docs/legacy.txt",
"encoding": "gbk",
"offset": 120,
"limit": 40
}工具调用结束后返回
文件文本
(Partial: lines 120-159 of 512 shown. Continue with offset=160.)这能清晰的看出二者区别,让模型进行结构化的函数调用是一定比手动更加清晰,结果更明确。5.6sol是一个被codex拖累的模型,大量的注意力会放在命令拼写上而不是任务本身。
2. grep:搜索文件内容
原生 PowerShell 搜索整个项目:
Get-ChildItem -LiteralPath 'V:\repo' -Recurse -File -Force |
Where-Object { $_.FullName -notmatch '[\\/]\.git[\\/]' } |
Select-String -Pattern '^TODO$' -Context 1,1Select-String 本身支持逐行正则搜索,但目录遍历规则需要模型自己拼接。
FastCtx 调用:
{
"pattern": "^TODO$",
"path": "V:/repo",
"output_mode": "content",
"context": 1
}配置介绍
- fastctx是一个mcp,他通过TUI进行安装,TUI可进行配置,更新检查,查看运行终端等操作。但模型调用环境随codex自动启动和终止,无需一直开着TUI。

详情见TUI选项和描述
需要注意的是
- 输出档位是config.toml中的控制全局工具单次输出的最高长度。设置太高会导致上下文被快速占满,太低会导致模型产生太多读取次数。如果不知道这些什么意思,输出部分保持全默认
- 扩展工具部分:bash终端启用后模型会使用我们提供的终端替代codex原始终端,windos强烈建议开启,linux和mac用户,如果需要我们提供的新功能,也可以开启
终端工具
fastctx提供这几个工具
| 工具 | 用途 |
|---|---|
run | 前台执行 Bash 命令 |
run_background | 启动后台 Bash 任务 |
job_output | 增量读取后台任务输出 |
job_kill | 终止后台任务的整个进程树 |
job_list | 找回运行中及已留存的终态任务 |
run命令是前台终端,这是模型一次工具调用,模型会被挂起直到终端结束。存在timeout,但模型会自行选择前台还是后台终端。run_background是启动一次后台终端,后台终端会运行在独立的和codex解耦的fastctx内核中,不和模型会话状态绑定,模型不会被挂起阻塞。- 模型能随时读取后台终端最新输出。终端内容会存储,
任务存储上限即配置:所有会话后台终端输出内容在磁盘中总空间预算。若超出会自动从最老的进行清理(不影响运行中终端) - 后台终端无超时参数只要电脑不关机,进程不崩溃就会一直运行。这么做是为了避免长训练之类的终端任务被误杀。模型可手动终止,用户这边可以在TUI的任务界面看到具体信息。
- 假如电脑意外重启,同一个会话下模型也可凭终端id查看输出

仓库地址

GitHub - yc-duan/fastctx: Fast, context-efficient repository tools for AI…
Fast, context-efficient repository tools for AI agents (MCP)