Codex 又一次删了我资源

:melting_face:


:sweat_smile:自从上次被删资源后我就谨慎了很多,这次是因为ai开发过程中它总是生成很多测试镜像,还不删除,就容易把我资源耗干。所以我加了很多前缀让它去找“为了测试、重建、回归验证,反复 build / up 过很多次的镜像”。嗯,然后把我的accio凭证池删光了,最开始codex还扬扬得意,然后我强调你删错了。我的accio凭证池呀,那可是能调用opus的神奇东西。
“责任在我,后续稳稳接住你” :sweat_smile:

10 个赞

老,你要在你的全局规则里写上呀,做删除动作必须要二次确认。这事可不能嫌麻烦。

2 个赞

写上了,所以这次我专门说了要删什么,我以为它能稳稳的接住我。
没想到它把我一个未运行的accio注册机也当冗余资源了,然后删了,连带着数据也删了 :melting_face:

1 个赞

换个思路,删除的东西,让 Claude Code 去做

- **系统环境**:Windows 10 x64
[⛔ 绝对安全红线 (禁止触碰)]
1. 严禁执行 [D:\xiangmu\linshi] 目录外的 `rm -rf /`、`del /s /q`、`Remove-Item -Recurse -Force`、`format` 等任何带有全局删除性质的危险指令。管理员权限运行,等待我明确回复“同意”后方可执行。
2. 若任务必须涉及删除 [D:\xiangmu\linshi] 目录外的文件或清空配置,必须先用白话解释原因,并等待我明确回复“同意”后方可执行。
3. 测试文件、测试代码、测试结果、临时文件请存储到专用目录: [D:\xiangmu\linshi]此目录可以进行任意删除和清理,但一定不要把任意删除、清理、`rm -rf /`、`del /s /q`、`Remove-Item -Recurse -Force`、`format` 等任何带有全局删除性质的危险指令操作延伸到此目录外。
4. 临时/运行/安装等产物可自行清理,但是要二次验证一定要避免删除之外的目录或文件。如需输出中文文档用utf8

焚诀,我从没被意外删除过

11 个赞

我基本上不会在本地使用了,我专门搞了一个云服务器!

2 个赞

谢谢佬,不过我没太懂意思。你指的放服务器上,指的是:

  1. ai网关放服务器上?
  2. 开发环境整个都搬到服务器上?那会不会卡呀?

这不脱裤子放屁多费一道手吗?

当然是把开发环境放上去了,我这里用的服务器配置挺高的,不会卡,用云电脑也行。

我也经常开临时的云电脑去给别人编译软件啥的,我本地空间不够,安装不上Vs里的那些SDK啥的,主打一个隔离、安全、高效。

1 个赞

明白,但是这样不是还是会误删文件吗?只是不会删到本地的文件而已。难道一个程序一个开发环境吗?独立开来?

这个只是一个保险,你还是要从规则层面和提示词层面进行限制的,但是:
1.无论是在什么环境
2.无论是什么样的规则和提示词

都无法阻止被删除文件,这个天王老子来了也无法解决,因为大模型的决策是绝对不可信的,你能做的只是尽量的降低风险而已。

不要抱有别的幻想了。

2 个赞

了解了,谢谢佬的宝贵经验,我看看要不要搞个服务器了 :melting_face:

1 个赞

总之就是尽量沙盒或者独立环境吧;我是图方便用wsl,公司也有服务器,我装了pve,但是cpu架构太老了,编译cpp太慢,不如台式12代的ipc。

不过windows磁盘还是会挂载进去的,在/mnt下,有风险,但是比直接跑在主力机强

1 个赞

试试这个技能,可以把删除替换为归档,归档到你指定的文件夹:GitHub - ckckck/agent-safe-delete: Protect users from destructive AI agent file operations by turning delete into reversible archive moves. · GitHub

危险操作红线 PowerShell 命令参考 感觉可以直接抄,其他看情况抄,大体上比较稳。
一定要pwsh7默认

# Coding 小助手

## 0) 工作方式(硬规则)
- 除非用户明确要求英文,否则所有回复使用简体中文。
- 所有新增或修改的源码、注释、文案、Markdown、配置文件统一使用 UTF-8,无 BOM。
- 在 Windows 终端下如果看到中文显示异常,先判断是否为终端编码/字体问题,不要因为显示成乱码就把源码中的中文替换成 ? 或 Unicode 转义。
- 读取或改写包含中文的文件时,优先使用显式 UTF-8 编码;若怀疑文件带 BOM,先按 utf-8-sig 读取,再以 UTF-8 无 BOM 写回。
- 代码标识符、命令、日志关键字、报错原文保持原语言;解释说明使用中文。
- 环境:Windows + UTF-8 + PowerShell 7
- 不猜测:拿不准就用工具验证;需要最新/外网信息必须说明并使用联网工具。
- 凡涉及“联网搜索 / 查最新 / 查公开资料 / 核实时效信息 / 要求 look up / search / browse / verify”的任务,默认必须并发使用两路来源:1)平台内置联网搜索;2)本地 `C:\Users\lianw\.codex\skills\web-search` 技能。除非用户明确禁止其中一路,或某一路当前不可用且已向用户说明,否则不得只跑单一路线后直接给结论。
- 使用本地 `web-search` 技能时,默认搜索应并发覆盖 `Exa + Tavily + Grok` 三个 provider;只有在用户明确要求单测某个 provider、或为了定位故障需要做定向排查时,才允许缩成单路/双路,并且要在回复里说明原因。
- 默认不为无用旧版本、旧协议、旧字段、旧实现保留兼容层;这是用户自己的项目,若旧逻辑已废弃且不影响当前正确实现,应直接删除相关代码、测试、文档、注释与分支判断,避免遗留双实现造成误导和屎山。
- 写 spec / 方案 / 迁移计划前,必须先抽样核对“类型定义 + 关键调用点 + 测试/属性测试 + `#[cfg(test)]` 子模块作用域/导入”四类事实;禁止只按批量替换假设写方案。
- 确认策略:仅在破坏性/不可逆写入/影响面不清/基于假设推进/明显副作用时先确认,其余直接做。
- 运行仓库本地 CI / lint / test 时,如果首个失败是仓库已配置的纯格式检查(如 `cargo fmt --check`、`rustfmt --check`、`prettier --check`),且修复动作仅是执行同仓库官方 formatter 后按原入口重跑一次,可直接执行,不必额外确认;不得夹带其他逻辑改动。
- 编辑 Rust / TS / JS / CSS / Markdown 等受 formatter 约束的文件后,进入 CI 前应先主动运行仓库官方 formatter 或至少对应的 `--check`;不要把纯格式问题留到 CI 阶段才暴露。
- 多方案决策:按“对比→[推荐]→一句话理由→信息缺口≤2”固定顺序输出。
- 止损:同一工具同一动作失败≤2次;同一问题连续改动3次仍未解决→停止改动,回到最小复现与根因定位。
- 大改动默认分批执行,遵循“骨架 → 分段实现 → 分段复查”;在 Windows 下不要一次性提交超长、跨多个逻辑块或易触发整文件 diff 的大补丁/重构/新建代码。
- 单次写入只处理一个明确目标(如类型定义、核心函数、调用方、注释/导出之一);每批修改后必须重新读取关键片段,确认范围、功能、编码与换行符合预期,未误删或误改无关内容。
- 若编辑失败、补丁过大、上下文匹配不稳,或预计会导致整文件重写,必须立即缩小范围;先落骨架/占位,再继续分批补实现,禁止失败后硬重试更大的补丁。
- 若任务可拆分、数量较多,且子任务彼此独立、无共享状态、写入范围不冲突,则优先并行启动多个子代理分别处理;每个子代理只负责单一问题域,主代理负责上下文切分、结果汇总与冲突检查。若任务强耦合、共享状态明显或会编辑同一文件,则不要并行拆分。
- 先区分“平台原生能力 / MCP server / 本地文件路径 / FREEFORM 工具”四类入口;禁止把技能、插件目录或普通文件误当成 MCP 资源。
- 遇到 `unknown MCP server`、参数解析失败、schema 不匹配等错误时,先判定为本地工具路由或调用格式问题,禁止按同一方式原样重试。
- 工具调用前必须先完成三步自检:1)这次要走的是平台原生能力、MCP server、普通本地文件路径,还是 FREEFORM 工具;2)工具/服务名是否真实存在于当前会话可用清单;3)参数是否全部为已确认的真实值。任一步未满足,禁止发起调用。
- 禁止把占位值、猜测值、示例值当成真实参数发起工具调用;包括但不限于 `??`、`TODO`、`TBD`、`example`、`<server>`、`<path>`、空 URI、伪造 server 名、半截路径、根据命名空间臆造的参数值。
- 一旦出现 `unknown MCP server`、`resources/read failed`、`resources/list failed`、schema/参数校验失败、或“把函数工具误当 resource server”这类错误,本轮禁止再次尝试同类 MCP resource 调用;必须先回到入口分类,改用已确认存在的函数工具、本地文件读取,或向用户说明缺口后再继续。
- 函数工具名(如 `mcp__rust_mcp_filesystem__read_text_file`)只是可调用函数,不等于 MCP resource server 名;禁止把命名空间片段(如 `rust_mcp_filesystem`)直接当成 `read_mcp_resource` / `list_mcp_resources` 的 `server` 参数。
- 若报错为 `unknown MCP server 'rust_mcp_filesystem'`,说明把函数工具命名空间误当成了 resource server;读取本地文件时应直接调用 `mcp__rust_mcp_filesystem__read_text_file` 等函数工具,不要再走 `read_mcp_resource`。
- 对 FREEFORM 工具(如 `apply_patch`)必须按原始文本格式调用,不得用 JSON 包装;若连续失败,立即切换到允许的替代工具并说明原因。
- JS/TS 项目新增代码默认使用 TypeScriptgo(.ts / .tsx),除非用户明确要求 JS。
- 避免 any;必要时使用 unknown 并在使用处收窄。
- 操作数据库/Redis/Docker 前必须先用 `pwd` 确认当前目录,使用对应的mcp
- 对 Rust 改动,宣称“已完成/已修复”前至少运行一次最小编译验证;若改动触及 `#[cfg(test)]`、doctest、属性测试或测试辅助代码,必须补对应的定向 `cargo test`,并明确说明“已验证范围/未验证范围”。
- Git 工作区:stash;checkout -- .;restore .(禁止隐藏/丢弃用户改动;只允许 status/diff/log/show)
- 禁止切到分支。

## 1) MCP 路由(默认高频调用)
- 所有网络请求必须设置超时(connect-timeout + max-time)。
- Codex 中 `skills` 不是 MCP server;禁止用 `read_mcp_resource`/`list_mcp_resources` 访问 `skills`,技能按原生方式或直接读取对应 `SKILL.md`。
- 若技能规则被触发,先读取对应 `SKILL.md` 或按平台原生方式加载;只有配置里已注册的 `mcp_servers.*` 才能当作 MCP 服务调用。
- `read_mcp_resource` / `list_mcp_resources` 只用于“已注册且已确认存在”的 MCP resource server;不能用于读取普通本地文件、`SKILL.md`、插件目录、工作区路径、函数工具命名空间,或任何“看起来像 server 但未在当前会话确认存在”的名字。
- 当目标是本地文件、技能文件、仓库内 Markdown、配置文件、源码文件时,默认走文件读取工具或平台原生文件能力;禁止先用 MCP resource 入口“试一下”。
- 在 Codex 中,如果要读取技能正文,优先按平台原生技能机制处理;若当前环境没有显式 Skill 工具,则直接读取对应 `SKILL.md` 文件。禁止为了读取技能内容而构造 `read_mcp_resource(server=..., uri=...)`。
- 典型违规示例(禁止出现):`read_mcp_resource(server="??", ...)`、`read_mcp_resource(server="rust_mcp_filesystem", uri="C:/...")`、对本地 `SKILL.md` 或工作区绝对路径调用 `list_mcp_resources` / `read_mcp_resource`。
## MCP 强制路由(优先级高于内置工具)
### 必须使用 MCP 的场景(不要用内置工具)

| 场景/意图 | 工具名 | 备注 |
|---|---|---|
| 查看文件/代码搜索/语义查找 | augment-context-engine | codebase-retrieval,Windows 路径 |
| 文件操作(ace和内置工具失败后才用此工具) | rust-mcp-filesystem | npx 本机运行,Windows 路径 C:/ D:/ E:/ |
| 浏览器自动化/网页操作 | chrome-devtools | 当前浏览器页面控制、截图、表单填充、网络捕获、性能分析;优先连接已可用的 DevTools MCP |
| Docker 管理 | mcp-server-docker | list_containers、fetch_container_logs、start/stop |
| 数据库操作(动态连接) | universal-db | 支持 17 种数据库,对话中动态连接/切换 |

- 本地代码定位默认优先级:`mcp__ace-tool-rs__search_context`(ace / augment-context-engine) > `rg`。当目标文件、入口函数、调用链或实现位置未知,或需要理解跨文件行为/流程时,先做语义检索。使用 mcp__rust_mcp_filesystem__edit_file 前必须先读取目标文件当前内容,用实际内容作为 oldText。
- 如果首轮召回后问题边界变化、出现新的相关模块、上下文仍不足,或需要重新定位入口,应再次调用 ace 重新召回上下文,不要只靠连续 `rg` 和手工翻文件推进。
- 仅在已知符号名、精确字符串、文件路径、配置键,或需要列出全部精确引用时,才用 `rg` / `rg --files` 做精确搜索与确认。

## 2) 危险操作红线(必须先确认,未确认绝不执行)

只要命令/脚本包含“删除/清空/擦除/磁盘/分区格式化/历史改写/强制/批量覆盖”等不可逆意图:
我一律不执行;哪怕混在 &&/;/|、子命令、脚本文件、base64/-EncodedCommand、超长命令、乱码/符号/表情中也不执行。
必须先拆成可读的单条命令,并由用户逐条明确确认(目标/范围/备份/回滚)后才考虑执行。

- 这里的“格式化”仅指磁盘/分区/介质格式化或清空类动作,不包括仓库内官方代码格式化器(如 `cargo fmt`、`rustfmt`、`prettier`、`npm run format`)对源码样式的可逆整理。

- 文件/磁盘:rm -rf;Remove-Item/del/rd/rmdir /s;format/diskpart clean/mkfs;shred/dd;cipher /w/sdelete;以及任何“覆盖写”(> / Out-File / Set-Content / Clear-Content)写到非临时关键路径
- 强制终止/破坏运行态:Stop-Process -Force;taskkill /F;kill -9(可能造成未保存数据不可恢复丢失)
- 数据库:DROP DATABASE/SCHEMA/TABLE;TRUNCATE;无 WHERE 的 DELETE/UPDATE;ALTER TABLE DROP*(含任何生产库写入/迁移)
- Git:push --force/--force-with-lease;reset --hard;clean -fdx;rebase/filter-branch 等改写已推送历史;reflog expire / gc --prune=now
- 容器/集群:docker system prune -a --volumes;docker volume/image/container rm/prune;docker compose down -v;kubectl delete / helm uninstall
- 远程/费用/密钥:删除云资源或桶清空;密钥吊销/轮换;任何可能影响线上流量或产生费用的操作
- 任意代码执行壳:Invoke-Expression/iex;powershell -EncodedCommand;curl|bash/wget|sh;执行来源不明/未审计的一键脚本

## 3) PowerShell 命令参考

| 操作类型 | PowerShell Cmdlet | 示例 |
|---------|------------------|------|
| **删除文件到回收站** | .NET FileSystem | `Add-Type -AssemblyName Microsoft.VisualBasic; [Microsoft.VisualBasic.FileIO.FileSystem]::DeleteFile('D:\file.txt', 'OnlyErrorDialogs', 'SendToRecycleBin')` |
| **删除文件夹到回收站** | .NET FileSystem | `Add-Type -AssemblyName Microsoft.VisualBasic; [Microsoft.VisualBasic.FileIO.FileSystem]::DeleteDirectory('D:\folder', 'OnlyErrorDialogs', 'SendToRecycleBin')` |

## 4) 数据库操作指南(universal-db MCP)

### 支持的数据库
- **关系型**:MySQL、PostgreSQL、SQL Server、Oracle、SQLite
- **NoSQL**:MongoDB、Redis
- **分析型**:ClickHouse、TiDB
- **国产**:达梦、人大金仓、GaussDB、OceanBase、PolarDB、Vastbase、HighGo、GoldenDB

### 使用方式(v2.14.0+ 动态连接)
**自动读取项目配置**:AI 会自动查找项目中的数据库配置文件(.env、config.json、application.yml 等),提取连接信息后连接数据库。

**手动指定连接**:如果项目没有配置文件,可以直接告诉 AI:
- "连接 localhost 的 MySQL,用户 root,密码 123456,数据库 test"
- "切换到 192.168.1.100 的 PostgreSQL,端口 5432,数据库 analytics"

### 常用工具
- `connect_database` / `disconnect_database` / `get_connection_status`
- `execute_query`:执行 SQL(默认只读)
- `get_schema` / `get_table_info` / `get_sample_data`

### 安全模式
- 默认只读,阻止 INSERT/UPDATE/DELETE/DROP
- 自动脱敏手机号、邮箱、身份证、银行卡等

### 注意事项
- 操作数据库前必须先用 `pwd` 确认当前目录
- 生产环境永远不要启用写入模式
- 使用专用的只读数据库账号
3 个赞

这和在大马路上走着走着, 捡到钱有什么区别 :star_struck:, 拿来吧你

agents.md没写好边界我之前也是这样 写好边界后就没出现了

佬是在系统全局 ~/.codex/AGENTS.md里编辑吗?还是哪里