agent-tool 是一个面向 AI 编程智能体的 MCP(Model Context Protocol)工具服务器,以单一二进制文件分发,把约 40 个工具打包在一起,并按需通过紧凑 profile 暴露给智能体。它主要解决内置工具在缩进风格、文件编码、工具数量、逆向工程支持和网络访问方面的已知限制。
用途与解决的问题 内置在 AI 编程智能体(如 Claude Code、Cursor、Codex 等)中的工具存在若干限制:LLM 通常输出空格,而项目可能使用制表符缩进,内置 Edit 工具会原样写入空格,破坏缩进风格;编辑 EUC-KR、Shift-JIS 或 GB18030 文件时会静默转换为 UTF-8,破坏遗留项目;让智能体分别查找、安装和配置 Redis CLI、MySQL 客户端、SSH 客户端等工具繁琐且易错;内置工具无法反汇编二进制、检查 PE/ELF 头、查找函数边界或搜索交叉引用;在部分国家,政府级网络过滤会破坏普通 curl/wget 请求。agent-tool 通过面向智能体的工具解决这些问题,在保留项目约定的同时控制模型上下文规模。
主要能力 编码感知的文件工具:编辑时保留原文件编码,检测优先级为 BOM → .editorconfig charset → 无 BOM 的 UTF-16 → 有效 UTF-8 → chardet 自动检测 → 回退编码;支持 UTF-8、UTF-8 BOM、EUC-KR、Shift-JIS、ISO-8859-1、UTF-16(LE/BE,带或不带 BOM)等。对纯 ASCII 文件不会误报低置信度警告。行尾方面可检测 LF、CRLF、CR 及混合文件,edit 匹配多行 old_string 时兼容 CRLF 或 LF,插入文本遵循所在区域的换行风格。 智能缩进:自动把缩进转换为文件既有风格,读取 .editorconfig 的 indent_style 和 indent_size,回退到基于内容(前 100 行)的检测;当实际内容与 .editorconfig 矛盾时不会转换,以保护遗留文件。 令牌安全的目录列表:listdir 默认每页 500 条,超出时返回 next_cursor;可用 directories_only、files_only、name_pattern(如 A*)或 include 中的多个 OR 模式缩小结果;counts_only=true 时只返回匹配的文件/目录数量。 空闲内存释放:30 分钟无工具调用后,服务器将堆内存归还操作系统;已打开的 shell 和 ssh 会话不受影响,客户端可观察到的行为不变。 逆向工程支持:包含静态二进制分析(反汇编、使用 PDB/DWARF 类型反编译为 C、xref、函数检测)、DAP 调试器,以及 CheatEngine 风格的内存工具。 网络访问:默认使用 ECH(Encrypted Client Hello)和 DoH(DNS over HTTPS)绕过网络审查。 远程与系统工具:SSH/SFTP、MySQL、Redis、文件操作、HTTP 请求、进程内存等。
使用方式 从 Releases 下载对应操作系统的二进制文件,运行 agent-tool install(或 agent-tool install claude 指定智能体),重启 IDE/智能体即可。也可以让 AI 智能体自动完成下载、安装、重启流程。安装后可通过指令让智能体优先使用 agent-tool,例如在 CLAUDE.md / AGENTS.md 中添加说明,或通过 ~/.claude/settings.json 在权限层面禁用内置文件工具以强制使用。
Profile 与上下文控制 默认 core profile 只暴露 11 个 schema(含 toolbox),协议级测量显示序列化工具列表从约 74 KB(full)降至 15 KB。最小稳态上下文可用 --profile core-lite,其 5 个 schema 约 6.4 KB,仅暴露 read、write、edit、grep 和 toolbox。可用 toolbox(operation="describe", tool="ssh", compact=true, tool_operation="execute") 只加载单个操作的字段,再通过 toolbox(operation="call", tool="ssh", arguments={...}) 调用。网关不依赖动态工具列表刷新,因此适用于 Codex 等固定绑定客户端。可用 profile 包括 core-lite、core、coding、remote、analysis、full。
环境变量与连接配置 可设置 AGENT_TOOL_FALLBACK_ENCODING 和/或 AGENT_TOOL_PROFILE 避免重复 CLI 标志,优先级为 CLI 标志 > 环境变量 > 默认(UTF-8)。SSH 和 SFTP 支持 connection_profile 或会话级 connection_id,配置文件位于操作系统用户配置目录的 agent-tool/connections.json,可用 AGENT_TOOL_CONNECTION_PROFILE_FILE 覆盖位置。
安全与限制 SSRF 保护:云元数据 IP(169.254.x.x、fe80::/10)始终阻止;私有 IP 访问可按协议通过 set_config 配置。DLP:所有出站 HTTP 请求体会扫描敏感数据模式(PEM 私钥、AWS 访问密钥、GitHub/GitLab 令牌、Slack 令牌、.env 文件转储)并在传输前阻止。提供 Zip Slip、Zip Bomb 防护,符号链接默认跳过,文件大小默认上限 100MB。使用时应审查 AI 智能体的工具调用,尤其是 SSH 命令、外部 URL 的 HTTP 请求和数据库查询。
适用场景 适用于需要保持项目缩进与编码约定的遗留项目、需要逆向工程或二进制分析的开发任务、需要 SSH/SFTP/数据库等远程系统操作的场景,以及网络受限环境下需要 ECH/DoH 的智能体工作流。
其他信息 项目基于 MCP SDK(github.com/modelcontextprotocol/go-sdk),编码检测使用 saintfish/chardet 与 golang.org/x/text,以单一二进制跨平台分发。具体价格、收费模式、平台支持细节暂未提供。