
Cordonix 0.0.5 发布:新增原生手机工具与 Windows 进程查询
作者:麦壳饼2026-11-02 20:47Cordonix0.0.5已发布。Cordonix(简称cdx)是面向AI编程代理的原生本地工具运行时,使用C11实现,通过MCPstdio服务和JSON命令行接口提供本地程序执行、内存文件工作区、严格编码处理、目录与路径查询,以及外部Git/ripgrep的结构化适配。本次正式版本于2026年11月2日发布,增加Windows原生手机工具和只读进程查询,并支持MicrosoftStore、便携版PowerShell7的已保存脚本执行。下面介绍新版本包含的完整能力。原样参数执行与任务进程管理execute_program将可执行程序、参数数组、工作目录、标准输入、超时和预期退出码放在独立字段中。参数通过原生argv传递,空格、引号、中文和$()等内容保持字面值,无需先拼成Shell命令字符串。执行结果分别提供进程状态、退出码、标准输出和标准错误,支持输出大小限制、取消和超时。调用方可以为子进程覆盖环境变量:普通值用于设置,null用于删除,空字符串保留空值,父进程环境不变。Windows使用JobObject,在恢复已挂起的根进程之前完成归属设置;Linux使用本次创建的进程组管理任务
正文
Cordonix 0.0.5 已发布。Cordonix(简称 cdx)是面向 AI 编程代理的原生本地工具运行时,使用 C11 实现,通过 MCP stdio 服务和 JSON 命令行接口提供本地程序执行、内存文件工作区、严格编码处理、目录与路径查询,以及外部 Git/ripgrep 的结构化适配。
本次正式版本于 2026 年 11 月 2 日发布,增加 Windows 原生手机工具和只读进程查询,并支持 Microsoft Store、便携版 PowerShell 7 的已保存脚本执行。下面介绍新版本包含的完整能力。
原样参数执行与任务进程管理
execute_program 将可执行程序、参数数组、工作目录、标准输入、超时和预期退出码放在独立字段中。参数通过原生 argv 传递,空格、引号、中文和 $() 等内容保持字面值,无需先拼成 Shell 命令字符串。
执行结果分别提供进程状态、退出码、标准输出和标准错误,支持输出大小限制、取消和超时。调用方可以为子进程覆盖环境变量:普通值用于设置,null 用于删除,空字符串保留空值,父进程环境不变。
Windows 使用 Job Object,在恢复已挂起的根进程之前完成归属设置;Linux 使用本次创建的进程组管理任务。根进程退出后仍会回收该任务所属的剩余进程,并返回清理观察结果。Linux 主动脱离进程组的程序不在这一保证范围。持续运行的浏览器、守护进程和服务需要使用各自的生命周期管理入口。
输出解码与程序是否执行成功分别报告。已知旧编码输出可以显式选择 CP936/GBK;解码失败时保留原始 Base64 字节,方便读取失败原因,避免因显示错误而误判执行结果。
先在内存处理文件,再显式提交
Cordonix 提供持续会话内的文件工作区:
workspace_open
-> workspace_read / workspace_search
-> workspace_edit / workspace_convert_encoding
-> workspace_status
-> workspace_commit
-> workspace_close
workspace_open 将文件及其编码、换行和 SHA-256 载入会话。之后的读取、搜索和编辑使用当前内存版本,可以连续完成多次操作。
workspace_edit 根据预期 SHA-256、原始文本和精确匹配次数执行替换,默认仅预演。显式设置 dry_run=false 才修改内存。匹配次数不符合预期或 SHA 已过期时拒绝编辑。
workspace_status 查询当前内存版本和脏状态;workspace_commit 才重新读取磁盘文件标识及 SHA,核对版本后通过同目录临时文件完成单文件提交。外部修改造成冲突时保留磁盘原内容。关闭脏文档需要先提交,或明确丢弃;会话结束不会隐式写盘。
一个会话最多保留 16 份文档,每份文档受 8 MiB 文件大小上限约束。编译器、Git 等外部程序读取磁盘,所以应在外部构建前显式提交。多次独立 CLI 请求不共享内存文档,连续工作区操作应放在同一个 MCP 会话中。
严格编码、BOM 与换行处理
文件工具支持 UTF-8、UTF-8 BOM、UTF-16LE/BE,以及显式声明的 CP936/GBK,保留原有 BOM 和 LF、CRLF、CR 等换行信息。自动模式只识别 BOM 或严格 UTF-8,旧 GBK 文件需要明确指定编码。
workspace_convert_encoding 在内存中预演或执行无损转码,再由显式提交写回磁盘。目标编码无法表示新增字符时返回错误,不静默丢字节或替换成问号。
verify_encoding 对新读取的磁盘字节执行批量验证:严格解码、文本无 NUL,并检查重新编码后的字节是否完全一致。一次可验证 1~32 个显式路径,支持预期条目数和允许目录范围,保留逐项通过、失败、未运行以及整批取消、超时等结果。该操作只读,不输出文件正文。
文件操作明确区分内存已修改、实际写盘、磁盘冲突和编码错误,便于代理根据真实状态继续处理。
文件读取、创建、目录与路径
read_file 每次读取新的磁盘快照;workspace_read 读取当前内存版本,包括尚未提交的修改。两者都支持按行范围、末尾 N 行和完整原文读取,保留换行并返回 SHA、编码、来源和分页信息。末尾或完整读取超出预算时返回明确的输出上限结果,不将半份文本当作完整原文。
create_file 按声明编码创建新文本文件,支持空文件,保留传入正文与换行。父目录必须存在;目标已是文件、目录或链接时拒绝覆盖。同目录临时写入、刷新和发布的结果通过 written_to_disk、cleanup_complete 等字段表达。
list_directory 只列直接子项,支持隐藏项和结果数量限制,返回名称、类型、文件大小及属性。resolve_path 规范化绝对字面路径中的分隔符与点路径,核对目录项存在并返回类型,保留链接名称。路径工具不展开通配符或执行表达式。
Git 与 ripgrep 的结构化适配
git_status 调用实际安装的 Git,解析 porcelain v2 NUL 记录,返回分支、普通修改、重命名、冲突和未跟踪文件。重命名前后的路径分别保存;路径中的空格、引号和换行不会依靠显示转义猜测。遇到非法 UTF-8 路径时返回编码错误并保留原始 Base64。
search_text 调用实际安装的 ripgrep,支持多个模式、根目录、glob 和每文件匹配上限,默认按字面文本匹配。结果解析自 rg 的 JSON,保留文本或 Base64 字节字段,退出码 1 明确表示 no_match。
两个适配器均提供超时、取消、条目数和输出预算。Git、ripgrep 仍需单独安装;搜索时的可选编码转换由 rg 处理,严格编码检查使用 verify_encoding。
新增 Windows 只读进程查询
query_processes 直接使用 Windows 原生接口,可按程序名和命令行字面片段筛选有界进程快照,返回 PID、父 PID、可执行文件路径、尽力读取的原始命令行和精确创建 FILETIME。
权限不足、进程已退出、部分枚举、超时、取消和输出上限都有明确结果;不可访问的字段可以为空。该工具用于观察,不会自动终止进程。Linux 上返回 not_supported。
新增实验性 Windows 原生手机工具
phone 使用 Windows 系统蓝牙接口,以 C11 实现设备、消息、联系人和电话操作,无需 .NET 桥接程序。它包含以下能力:
功能 操作与用途 设备与配对 adapters 查询电脑蓝牙名称,devices 读取缓存设备,discover 有界发现;pair、unpair 完成配对及删除配对,并回读 Windows 状态 连接管理 connect、disconnect、connection_status 管理当前会话所属的 HFP 连接,带连接租期、健康检查和退出清理 短信与验证码 MAP sms_list 读取收件箱分页元数据,sms_read 读取指定短信,read_code 提取唯一验证码,sms_send 发送短信;正文及验证码读取前核对收件箱快照 SHA 联系人与通话记录 PBAP contacts、call_history 按 offset/limit 读取联系人及最近通话页,保留原始 vCard、SHA 和可用的预览结果 电话控制 HFP call_status 查询状态,dial、answer、hangup 提供拨号、接听和挂断 有时限等待 wait_sms 检查收件箱变化,wait_call 等待来电;均支持取消和请求截止时间 应用通知 app_notifications 使用 ANCS BLE/GATT 接收当前等待窗口内的已有、新增、更新或移除事件,并保留部分接收结果
短信发送、电话控制、配对和连接变更默认预演,实际执行需要明确提交。结果未知的外部操作不会自动重复发送。配对或连接成功不代表短信、联系人和通知权限已全部开放,访问结果仍取决于设备支持和手机授权。
ANCS 本次修复了经典蓝牙与 LE 地址不同时的设备定位、分片 UTF-8 解析,以及大量已有通知回放时的队列处理。首次服务发现遇到链路不可达时,最多在第一次尝试后重试 5 次,间隔 500 毫秒,支持取消并共用原请求总时限;结果提供实际尝试与重试次数。
cdx --phone-ui 打开中文原生窗口,提供电脑蓝牙名称、搜索、置顶配对确认、连接状态、按功能检查访问结果、iPhone 授权说明、分页预览和可取消的等待。窗口支持随显示器调整的 DPI、系统字体、浅色/深色与高对比度主题。
手机工具目前仅在 Windows 提供,仍属实验性功能。已实现的接口与真机验收覆盖并不相同:现有设备测试覆盖了部分配对、连接、短信发送、拨号/挂断、联系人/最近通话分页及 ANCS 通知;接听、来电/来信等待、私人短信正文与验证码读取尚未完成全部真机验收。电脑端双向通话音频未实现,ANCS 不提供历史通知同步或永久后台订阅。
19 个 MCP 工具一览
工具 能力 tool_info 版本、平台、构建信息及文档加载/提交计数 execute_program 原样 argv、本地程序执行、环境覆盖与任务回收 query_processes Windows 只读进程快照 phone 实验性 Windows 原生手机操作 read_file 新磁盘快照的行范围、末尾或完整读取 create_file 严格编码创建新文件,拒绝覆盖 list_directory 有界直接子项枚举 resolve_path 已存在绝对路径规范化与类型查询 verify_encoding 批量严格解码、无 NUL 和字节往返验证 workspace_open 载入文件及编码、换行、SHA workspace_read 读取当前内存版本 workspace_search 搜索内存中的字面文本 workspace_edit 校验 SHA 与匹配次数的精确替换 workspace_convert_encoding 显式无损内存转码 workspace_status 查询当前内存版本与脏状态 workspace_commit 核对磁盘版本后提交单个文件 workspace_close 释放文档并显式处理未提交内容 git_status 解析 Git 分支与文件状态 search_text 解析 ripgrep 文本搜索结果
同一套 JSON 请求可通过 cdx --request 使用;cdx --mcp 提供持续 stdio 会话。MCP 工具提供可读中文标题,支持有界执行和取消。tool_info 的计数反映会话逻辑操作,不是物理磁盘 I/O 或模型 token 的性能测量。
平台、安装与升级
正式发行提供 Windows x64 ZIP 和 Linux x64 tar.gz,包含校验和、清单、SPDX 文件与 Sigstore 证明文件。当前 Linux 包基于 Ubuntu 24.04、动态链接 glibc,其他发行版需实际验证;目前不提供 ARM64、macOS 或 musl/Alpine 二进制。
原生可执行文件运行时不依赖 Python 或 PowerShell。Windows 安装、更新和稳定启动脚本使用 PowerShell 7;Linux 安装流程需要 Python 3.9+ 标准库及 GNU timeout。
安装器支持 GitHub 优先、Gitee 回退,核对 SHA-256 和实际程序版本,通过后才切换当前入口,保留旧版本以便回滚。用户可显式启用每小时检查:Windows 使用当前用户计划任务,Linux 使用 systemd 用户 timer。自动检查受用户会话条件约束,可单独停用。
已有 MCP 会话继续运行原来的进程;升级后重新连接会话,再用 tool_info 确认实际加载版本。0.0.5 允许使用 Microsoft Store、MSI 或便携安装的 PowerShell 7 执行已保存脚本,仍要求 -File 和实际绝对脚本路径。
项目当前处于开发 MVP 阶段。文件提交以单文件为单位,不提供跨文件事务;Linux 文件提交当前不保留 ACL 与扩展属性。Windows 手机操作和进程枚举在 Linux 上明确返回 not_supported。这些边界与下载、安装、客户端实际加载的状态分别说明。
项目与下载
Cordonix 使用 Apache License 2.0 开源。
- 项目源码:https://gitee.com/IoTSharp/Cordonix
- 正式发行与下载:https://github.com/IoTSharp/Cordonix/releases/tag/v0.0.5
- Gitee 发行入口:https://gitee.com/IoTSharp/Cordonix/releases
- 完整变更:https://github.com/IoTSharp/Cordonix/blob/v0.0.5/CHANGELOG.md
- 完整使用说明:https://github.com/IoTSharp/Cordonix/blob/v0.0.5/README.zh-CN.md
- 安装与更新:https://github.com/IoTSharp/Cordonix/blob/v0.0.5/docs/install-update.md
- 手机接口说明:https://github.com/IoTSharp/Cordonix/blob/v0.0.5/docs/phone-native.md