agy-plugin-codex — 在 Codex 里使用 Antigravity
- TypeScript
- Node.js
- MCP
- Codex Plugin
- Antigravity CLI
- Vitest
这是一个含 MCP server 与 vendored Skill 的 Codex plugin,是 opencode-plugin-codex 与 grok-plugin-codex 的 sibling。agy adapter 依据测量过的 runtime contract 编写:docs/AGY-RUNTIME-CONTRACT.md 的每项行为主张都有对应 probe 命令,而非按别的 CLI 类比。独立项目,与 Google 或 OpenAI 无隶属关系。
项目概览
角色 独立开发者 — Codex plugin 打包、测量过的 agy runtime contract、MCP tool surface、工作树隔离、typed refusals、测试
场景
agy 忽略进程 cwd,而且只是“被告知”--add-dir 指向的那个目录 — 它跳过权限提示运行,并不被限制在该目录内;即使 --add-dir 指向不存在的目录,agy 仍可能返回 SUCCESS,并在错误位置执行任务。它不能分开读写权限,且自报 outcome 与 exit code 独立。
产品策略
plugin 在 spawn 前验证工作树,无法解析就返回 typed refusal。read-only review 获得一次性工作树副本,只有 resultComplete 才表示任务完成;exit code 仍作为失败分类依据记录,但不用于判断任务是否完成。
成果与当前阶段
公开 v0.1.0 · 附公开 probe 的测量 agy runtime contract · 文件系统隔离的 read-only reviews · restart-safe 后台 jobs
我的工作
- MCP tools:agy_check、agy_run、agy_continue、agy_rescue、agy_review、agy_adversarial_review、agy_conversations、agy_status、agy_result、agy_cancel
- 隔离警告:以 readonly_run_wrote_files 点名一次性副本内的写入,并以 tree_changed_during_readonly_run 验证真实工作树
- conversation_not_found 护栏:未知的 agy conversation id 可能静默开启新对话
- 统一 typed-error envelope,涵盖 workspace_unavailable、workspace_out_of_bounds、mirror_failed、private_path_blocked 等边界失败
- state 权限、剥离 CODEX_* 环境变量、~/.codex prompt guard,并明示 agy prompt 可被同一用户的 ps 进程看见
技术证据
- docs/AGY-RUNTIME-CONTRACT.md 记录每项主张的 probe 命令;修改文档前先重新测量
- live smoke 用 sentinel 文件证明 --add-dir 到达指定工作树,并在 read-only review 后检查 git status
- CI 覆盖 ubuntu-latest 与 macos-latest,因 detached workers 与进程组信号在两个系统不同
- 测试双向保持 vendored Skill 与源代码行为一致;toolCallCount === 0 的 verdict 仍只是意见,不是 review