Token导航 LogoToken导航TokenDH.com
开发执行命令github未标认证来源可访问许可证需确认审计提醒

fast-edit快速编辑

Agent Skill

fast-edit 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

539

周安装

22

GitHub Stars

23

下载量

174
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:fast-edit(快速编辑)
来源仓库:https://github.com/includewudi/fast-edit
仓库路径:skills/fast-edit
安装命令:
npx skills add https://github.com/includewudi/fast-edit --skill fast-edit
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/includewudi/fast-edit --skill fast-edit

简介

用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息。

  • 适合围绕仓库状态、代码变更或协作事项进行整理和分析。
  • 支持行号定位编辑、自动备份与回滚,提供分段写入安全策略。
  • 安装前建议确认权限范围、维护状态及是否会触发命令执行或文件读写。
  • fast-edit 属于开发类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Fast Edit

行号定位的文件编辑工具。绕过 LSP 等待、权限弹窗、历史数据库。自动备份 + 验证/回滚,编辑出错可一键恢复。

按需加载子文档:本文档包含核心决策树和安全守则。详细用法见 skills/ 子文档,仅在需要时加载。

我需要做什么?(决策树)

任务类型
  │
  ├─ 编辑已有文件
  │    ├─ 单处小改 → replace(先 show 确认行号!见 §安全守则1)
  │    ├─ 多处编辑 / 含特殊字符 → batch --stdin(见 §安全守则4)
  │    ├─ Python 符号级编辑 → outline + apply(见 skills/outline-apply.md)
  │    └─ 编辑后 → verify + lsp_diagnostics(见 §验证三连)
  │
  ├─ 保存用户粘贴的代码
  │    ├─ 首选: save-pasted(零 token,见 §安全守则2)
  │    ├─ 降级: paste --stdin(save-pasted 失败时)
  │    └─ 特殊字符多: paste --stdin --base64
  │
  ├─ 从零创建新文件(见 §守则3)
  │    │  ⚠️ 默认策略:任何犹豫 → 直接走分段写入
  │    │
  │    ├─ 步骤1: 预估行数
  │    │    ├─ ≤120 行 → 单段 cat > file << 'EOF'
  │    │    └─ >120 行 / 不确定 → 必须分段(继续步骤2)
  │    │
  │    ├─ 步骤2(可选优化,5秒内决定):
  │    │    同一模板重复≥5次 + ≤80行Python可表达?
  │    │    YES → fast-generate --stdin(见 skills/large-file.md)
  │    │    NO / 不确定 → 分段写入(禁止回头重新评估)
  │    │
  │    └─ 分段写入(DEFAULT,见 skills/large-file.md):
  │         每段 ≤120 行,MUST 用 << 'EOF' 引号 heredoc
  │         第1段: cat > file << 'EOF'(覆写)
  │         后续段: cat >> file << 'EOF'(追加)
  │         写完: wc -l FILE 校验行数
  │         失败: rm file → 从头重写,MUST NOT 续写半成品
  │
  ├─ 编辑出错,需要恢复
  │    ├─ 刚编辑的文件 → restore(一键回滚)
  │    └─ 之前 session 写的大文件 → recover(见 skills/recover.md)
  │
  └─ 多语言编辑(Go/PHP/TS/JSX/Vue/Java)
       → 检查 §安全守则4 的危险字符触发器
       → 详细矩阵见 skills/shell-safety.md

⚠️ 安全守则(内联,必读)

守则 1: replace 前必须确认行号

绝对不要凭记忆 replace。 行号会因为之前的编辑而偏移,AI 数行号容易 off-by-one。
replace/delete 操作
  │
  ├─ 第1步: fe show FILE START END
  │    确认首行和末行内容是否匹配你要替换的目标
  │    ⚠️ 重点检查 END 行 — off-by-one 最常发生在末行
  │
  ├─ 第2步: 确认行号正确后,再执行 replace
  │    fe replace FILE START END "content\n"
  │
  └─ 第3步: 检查返回的 warnings 字段
       如果有 warnings,立即检查并修复

常见 off-by-one 错误模式:

错误后果预防
END 少了1行目标的最后一行残留,与新内容重复show 确认 END 行内容
END 多了1行多删了下一行代码show 确认 END+1 行不是你要保留的
START 偏移替换了错误的起始位置show 确认 START 行内容

反面案例:

# ❌ 错误:凭记忆 replace,END 少1行
fe replace file.dart 74 78 "new widget code\n"
# 结果:第79行残留了旧代码,与新代码重复 → 编译错误

# ✅ 正确:先 show 确认
fe show file.dart 74 80    # 看清楚79行是什么
fe replace file.dart 74 79 "new widget code\n"  # 确认后再替换

守则 2: save-pasted 优先级

用户粘贴代码需要保存时,始终优先尝试 save-pasted。 零 token 输出、零 shell 转义问题。仅当不可用时才降级。
用户粘贴了代码,要求保存到文件
  │
  ├─ 首选: save-pasted FILE [--extract]
  │    零 token、零转义、自动从本地存储提取
  │    150+ 行时强烈推荐(echo/heredoc 可能截断)
  │
  ├─ 降级: paste FILE --stdin (< 150 行、save-pasted 失败时)
  │    echo '内容' | fe paste FILE --stdin
  │
  └─ 特殊字符多: paste FILE --stdin --base64
       含 $、反引号、引号嵌套时用 base64 编码

守则 3: 大文件生成(硬性限制 + 零犹豫决策)

你的单次 token 输出上限约 120 行。这是硬性物理限制,任何工具都无法绕过。 fast-generate 的代码本身也是你的 token 输出。generate 代码 MUST ≤80 行。 任何犹豫 → 直接走分段写入。禁止反复评估。
AI 需要生成新文件
  │
  │  ⚠️ DEFAULT:任何犹豫 → 直接走分段写入
  │
  ├─ Q1: 预估行数
  │    ├─ ≤120 行 → 单段 cat > file << 'EOF',结束
  │    └─ >120 行 / 不确定 → MUST 分段(继续 Q2)
  │
  ├─ Q2(可选优化,5秒内决定,MUST NOT 超时):
  │    "结构化" 判定:同一模板重复≥5次 + 变量可枚举 + ≤80行Python可表达?
  │    ⚠️ markdown / 文档 / 含代码块 = 默认非结构化
  │    YES → fast-generate --stdin(见 skills/large-file.md)
  │    NO / 不确定 → 分段写入(MUST NOT 回头重新评估)
  │
  └─ 分段写入:
       每段 ≤120 行
       第1段: cat > file << 'EOF'(覆写)
       后续段: cat >> file << 'EOF'(追加)
       ⚠️ MUST 用引号 heredoc << 'EOF'(防 $ ` 展开)
       ⚠️ 每段末尾 MUST 有换行;EOF 标记 MUST 顶格不缩进
       写完: wc -l FILE 校验行数
       中途失败: rm file → 从头重写,MUST NOT 续写半成品

强制检查清单:

  • 预估行数了吗?(不确定 = 按 >120 行处理 → 分段)
  • "结构化" 判定 5 秒内完成了吗?(超时 = 分段写入)
  • generate 代码是否 ≤80 行?(超过 = 你写不完,必须拆分)
  • 是否用了引号 heredoc << 'EOF'?(无引号 = $ 和 ` 会被展开)
  • 写完后 wc -l 校验了吗?
  • 生成含 {} 的代码?f-string 中非变量花括号 MUST 双写 {{ }}

详细用法及示例见 skills/large-file.md

守则 4: 危险字符触发器

代码包含以下任一字符时 → 必须 batch --stdin,禁止 CLI replace

触发字符影响语言风险
\n \t 字面量Go, Java, TS, JSXshell 展开为真换行/Tab
$variablePHP, Bashshell 变量展开
反引号 ` ``Go, TS/JSX/Vueshell 命令执行
模板字面量 ` ${var} `TS, JSX, Vue$ + ` `` 双重危险
<tag> / >JSX, Vue, Java 泛型shell 重定向
\ 命名空间PHP需四重转义
""" 三引号Python引号嵌套
`A \B` 联合类型TypeScriptshell pipe

安全管道模式(必须用 heredoc,禁止 python -c):

# ✅ 正确:heredoc 避免反引号被 shell 执行
python3 - <<'PY' | fe fast-batch --stdin
import json, sys
spec = {'file': 'f.go', 'edits': [{'action': 'replace-lines', 'start': 10, 'end': 12, 'content': 'code\n'}]}
json.dump(spec, sys.stdout)
PY

# ❌ 禁止:python -c "...`...`..." — shell 会先执行反引号内容
# python3 -c "json.dump({'content': '`date`'}, sys.stdout)"  ← 反引号被执行!

详细语言矩阵见 skills/shell-safety.md

守则 5: action ≠ type

⚠️ Batch JSON 的字段名是 "action" 不是 "type"! 写成 "type": "replace"报错 'action'(KeyError),不会静默忽略。

正确写法:

  • "action": "replace-lines" / "action": "insert-after" / "action": "delete-lines"

命令速查

# ✅ 优先用 fe() 函数封装(❌ 不要用变量赋值,zsh 下会 command not found)
fe() { python3 "/path/to/fast-edit/fast_edit.py" "$@"; }

# 所有命令支持 fast-* 前缀避免 shell 内置命令冲突
# 如: fast-write, fast-paste, fast-batch, fast-verify

# ── 结构化编辑 (Python AST) ──
fe outline FILE.py                     # 查看文件符号结构 (JSON)
fe outline FILE.py --format tree       # 查看文件符号结构 (树形)
fe apply spec.json --dry-run           # 预览符号级编辑
fe apply spec.json --apply             # 执行符号级编辑
echo '{...}' | fe apply --stdin --dry-run   # stdin 输入 (预览)
echo '{...}' | fe apply --stdin --apply     # stdin 输入 (执行)

# ── 编辑命令 ──
fe show FILE START END                # 预览行
fe replace FILE START END "content\n" # 替换行
fe insert FILE LINE "content\n"       # 插入(LINE=0 表示开头)
fe delete FILE START END              # 删除行

# ── 批量编辑 (JSON) ──
fe fast-batch spec.json
echo '{"file":"a.py","edits":[...]}' | fe fast-batch --stdin

# ── 粘贴保存 ──
fe fast-paste FILE                    # 从剪贴板
fe fast-paste FILE --stdin            # 从 stdin
fe fast-paste FILE --stdin --extract  # 提取 ```...``` 代码块
fe fast-paste FILE --stdin --base64   # stdin 内容是 base64 编码

# ── 批量写文件 ──
fe fast-write spec.json
echo '{"files":[...]}' | fe fast-write --stdin
# ⚠️ --stdin 管道传 JSON 时,echo 中的 \n 会被 shell 解释为真换行,导致 JSON 无效
# 推荐用 heredoc << 'EOF' 构造 JSON(禁止 python3 -c,反引号会被 shell 执行)

# ── 代码生成写文件(推荐用于批量生成 200+ 行) ──
echo 'python_code' | fe fast-generate --stdin -o output.json   # 单文件
echo 'python_code' | fe fast-generate --stdin                   # 多文件(stdout=JSON)
fe fast-generate script.py -o output.json                       # 脚本文件模式
fe fast-generate script.py -o out.json --timeout 60             # 自定义超时
fe fast-generate --stdin -o out.json --no-validate              # 跳过 JSON 验证
fe fast-generate --stdin -o out.php                              # 单文件模式

# ── 验证/回滚 ──
fe verify FILE                        # 对比当前文件与备份的差异
fe verify FILE --context 3            # 显示更多上下文行
fe restore FILE                       # 回滚到最近备份
fe backups FILE                       # 列出所有备份
fe verify-syntax FILE                 # 语言感知语法检查

# ── 其他 ──
fe check FILE                         # Python 类型检查
fe check FILE --checker mypy
fe save-pasted FILE                   # 自动找最近的大粘贴 (>=20行)
fe save-pasted FILE --min-lines 50    # 自定义行数阈值
fe save-pasted FILE --msg-id msg_xxx  # 指定消息 ID
fe save-pasted FILE --extract         # 提取 ```...``` 代码块
fe save-pasted FILE --nth 2           # 第2个最近的大粘贴
fe recover FILE --list               # [OpenCode 专属] 列出最近对 FILE 的所有写操作
fe recover FILE                       # [OpenCode 专属] 恢复最近一次写操作的内容
fe recover FILE --nth 3              # [OpenCode 专属] 恢复第3次最近的写操作
fe recover FILE --session ses_xxx    # 从指定 session 恢复
fe recover FILE -o /tmp/out.py       # 输出到指定文件

fe help

使用场景表

场景命令
大文件 (100+ 行) 小改动replace / batch
同文件多处编辑batch
用户粘贴代码,保存文件(首选)save-pasted
用户粘贴代码,save-pasted 不可用时paste --stdin
用户粘贴含特殊字符的代码paste --stdin --base64
用户粘贴多份代码,保存多文件write --stdin
从剪贴板保存paste
编辑后检查是否改对了verify
编辑改坏了,一键回滚restore
编辑后语法检查(多语言)verify-syntax
编辑后类型检查lsp_diagnostics (推荐) 或 check
AI 从零生成大文件(有重复模板≥5次)fast-generate --stdin(generate 代码 ≤80 行)
AI 从零生成大文件(默认方式,>120行)分段 heredoc(cat > / cat >>
AI 写了大文件但有小错,想恢复重编辑recover [OpenCode 专属]
Python 文件查看符号结构outline / outline --format tree
Python 符号级替换/删除/插入apply (spec.json \--stdin)

Batch JSON 格式

{
  "file": "/path/to/file.py",
  "edits": [
    {"action": "replace-lines", "start": 10, "end": 12, "content": "new\n"},
    {"action": "insert-after", "line": 25, "content": "# comment\n"},
    {"action": "delete-lines", "start": 40, "end": 42}
  ]
}

多文件: {"files": [{"file": "a.py", "edits": [...]},...]}


replace/batch 自动 warnings

Warning含义常见原因
DUPLICATE_LINE替换内容的最后一行与紧邻的下一行完全相同END 行号少了1(off-by-one),旧代码残留
BRACKET_BALANCE替换前后 (){}[] 括号平衡发生变化替换内容缺少闭合括号,或多包含了开括号

收到 warnings 后必须:

  1. DUPLICATE_LINE → 检查是否 END 需要 +1,用 show 确认后重新 replace
  2. BRACKET_BALANCE → 检查替换内容的括号是否完整闭合
  3. 如果是误报(故意的不平衡替换)→ 忽略即可

验证三连(每次编辑后)

fe verify FILE              # 1. 对比差异
lsp_diagnostics(file)       # 2. 类型检查(首选)
fe verify-syntax FILE       # 3. 语法检查(备选,参考信号)

回滚: fe restore FILE(回滚前自动保存当前状态)


何时打开子文档

子文档打开时机
skills/shell-safety.md编辑 Go/PHP/TS/JSX/Vue/Java 代码时
skills/large-file.md需要创建 >120 行新文件时
skills/workflows.md需要完整工作流示例(粘贴、生成、验证)时
skills/recover.md需要从 OpenCode session 恢复文件时
skills/formats.md需要查看命令返回 JSON 格式时
skills/outline-apply.md需要 Python 符号级编辑时
skills/api.md需要查看命令详细参数和选项时
skills/configuration.md需要配置路径、平台相关设置时
skills/timer.md用户配置了 debug-timer: true
skills/development.md需要开发/贡献 fast-edit 本身时

文件结构

fast-edit/
├── fast_edit.py   # CLI 入口
├── core.py        # 文件 I/O
├── edit.py        # 编辑操作(自动备份)
├── paste.py       # 粘贴/写入
├── pasted.py      # OpenCode 存储提取
├── generate.py    # 代码生成写文件(fast-generate)
├── recover.py     # OpenCode Session 存储恢复(recover, OpenCode 专属)
├── outline.py     # Python AST 符号提取(outline)
├── apply.py       # 符号定位编辑(apply)
├── check.py       # Python 类型检查
├── verify.py      # 验证/备份/回滚/语法检查
├── timer.py       # 端到端计时(timer start/stop)
├── opencode-tools/  # OpenCode 自定义工具覆盖层(edit.ts, write.ts)
└── skill.md       # 本文档

性能对比

场景Edit 工具fast-edit
500行文件 3处编辑~15s (3次调用)<0.1s (batch)
AI Token 输出old+new 字符串仅行号+内容
LSP 等待每次 0-5s0

编辑后验证

推荐:编辑完成后调用 lsp_diagnostics 检查类型错误:

lsp_diagnostics(filePath="/path/to/edited_file.py")

备选:如果 LSP 不可用:

方式优点缺点
lsp_diagnostics快(LSP 热启动)、支持所有语言需要 LSP 服务运行
fe verify-syntax多语言语法检查(Go/Py/Rust/C/TS/Java)仅检查语法,不检查类型
fe verify查看编辑前后差异,确认改对了需要先有备份
fe checkPython 类型检查仅支持 Python

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

37.8%
按下载量换算66

Claude

29.93%
按下载量换算52

Cursor

18.39%
按下载量换算32

Gemini CLI

9.68%
按下载量换算17

安全审计

Gen Agent Trust Hub

可疑

Socket

通过

Snyk

可疑

权限和风险

执行命令

安装流程涉及命令执行,可能通过 npx skills add https://github.com/includewudi/fast-edit --skill fast-edit 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills