
如何编写一个Agent Skillapk-reverse的渐进披露与门禁程序设计哲学【免费下载链接】apk-reverseSuitable for Android APK reverse engineering analysis项目地址: https://gitcode.com/gh_mirrors/ap/apk-reverseapk-reverse 是一个用于 Android APK 逆向分析的Agent SkillAI 代理技能AI 代理激活后读取 SKILL.md 这份带门禁的操作手册按需加载 references 详细资料直接运行 scripts 参数化脚本完成从识别加壳、脱壳、dex 补丁到重签名验证的完整工作流。本文以它为样本拆解编写 Agent Skill 的两个核心设计哲学——渐进披露与门禁程序设计给所有想写自己技能库的人一套可复用的方法。一、先弄懂Agent Skill写给AI的操作手册不是教程常见的误区是把技能写成教程。README.zh-CN.md 开宗明义它是一个skill不是 tutorial——它写给 agentClaude Code、Codex 或任何支持 Agent Skills 格式的运行环境在工作过程中加载所以按渐进披露progressive disclosure来组织一份简短、面向决策的入口文件SKILL.md只在某一步真正需要时才加载的详细references/可直接运行的参数化scripts/。一个技能就三样东西skills/apk-reverse/ ├── SKILL.md # 入口技能激活时整体加载 ├── references/ # 详细资料一个文件一个主题按需加载 └── scripts/ # 工具脚本被执行而不是被阅读SKILL.md顶部的 YAML frontmatter 是技能的名片name决定安装名description决定 agent 会不会加载这个技能。所以它的描述把触发条件写得很密——APK 样本、smali/dex 补丁、Frida hook、重打包、去广告、重签名……命中任务描述时才会被激活见 SKILL.md frontmatter。二、渐进披露怎么做把知识切成三层渐进披露的核心矛盾是agent 只会读它被加载的内容而被加载的内容都在消耗注意力。把所有文档塞进SKILL.md等于每次激活都倾倒几百行查表数据入口文件太薄agent 需要资料时又找不到。apk-reverse 用三层结构化解它第 1 层SKILL.md只留一跳可达的内容这个文件每次激活都整体加载所以只保留两类必须一跳可达的内容症状索引54 行看到什么症状 → 先加载哪个文件和G1–G4 四道门禁及通过标准。SKILL.md 的解释很精辟失败时你不是在选文件而是在认失败——那一刻若需要两跳查表停止信号就会被跳过。第 2 层routing.md清单层所有我知道该查、于是去查的资料被搬进 references/routing.md43 个 reference 文件各自何时加载、53 个脚本各自做什么一次加载拿全整个清单。而这两张大表被刻意从入口文件移除——那是已经决定做什么之前没人需要的查表数据。第 3 层references/*.md一个文件一个主题只在某一步真正需要时才加载且每个文件都有可导航性要求超过 100 行的文件必须在开头一屏内有目录或何时加载/本文件回答什么的说明——否则读者无法从顶部判断要不要读下去不可略读的长文等于永远不会被加载的文。还有一个隐形第 4 层是 scripts能运行的就不要读。比如 doctor.py 一条命令就报告这台机器有哪些工具、每个脚本能否运行、缺什么、装它要多久——比让 agent 读一页环境要求更高效。一个值得学习的细节证据目录evidence/ 与 evals/随技能一起分发这样一份不含完整仓库的已安装副本也能回答这条路线验证过没有、证据有多强——证据跟着结论走而不是留在仓库里。三、门禁程序设计让规则无法被跳过整个项目最重要的一句话解释了为什么要设计门禁观察到的失败模式不是无知——而是模型把整份文档读完、表示认同然后照样从第一性原理重新推理一遍。所以 SKILL.md 被刻意写成带门禁的 procedure而不是建议。四个设计点值得逐一拆解① 规则必须可执行可以考虑做 X会被 agent 读成可选在任务压力下一定被跳过。因此正文规则全是祈使句R1–R4 覆盖规则与当前计划冲突时它们优先直到被证据推翻、G1–G4 门禁、以及两击规则——同一形态的尝试失败两次就停止、回到分类不许再试第三个变体。② 门禁必须带通过标准Gates 一节 开篇就定义每道门禁都是一个动作加一条通过标准我理解这个思路不算通过。例如 G1 要求动手前把交付物写成一句可检验的话G4 要求先跑一次未修改原件的对照运行并记录失败。原文说得很直白跳过门禁不是捷径而是工作被重做一遍的通道。③ 症状就是停止信号症状索引的每一行都是一个已经付过代价的失败。规则是任何一行匹配就在下一条命令之前加载对应文件而不是在又试几次之后。绕过已知症状继续推理就是同一批小时数被花两次的方式。④ done必须被扣住完成有六项定义而日志干净不在其中。少于六项全部成立就只是一个检查点必须按检查点汇报并说明还差什么——这是针对 AI 的防早退设计过早宣布完成会在用户以为问题解决时终止调查。⑤ 每条绝对规则都配一条验证命令不可协商约束表里每行都有第三列 The check输入只读用先哈希原件 apk_diff.py验证补丁是否外科手术用 dex_classdiff.py 验证。规则由此从自我判断变成可运行的命令——我合规了吗变成一条命令而不是一个自觉。四、守门人用检查脚本维护门禁本身三层渐进披露解决agent 读什么仓库根目录的一组检查脚本则解决技能不腐化。每个脚本对应一类具体失效模式门禁脚本防住什么check_repo.py结构不一致frontmatter 不是合法 YAML、脚本--help崩溃、路径无法解析、reference 无人可达check_refs.py交叉引用断链文件.md §某节的承诺指向被改名的标题——文字链接不会像缺失文件那样大声失败check_routing.py清单漂移SKILL.md 与 routing.md 的表不一致或新文件没进清单——从目录漂移的清单比没有清单更糟因为它读起来是完整的check_commands.py文档与代码漂移静态解析每个脚本的 argparse 参数表逐一核对文档里的命令。它真实抓到过 bug文档长期写的--live --pkg参数脚本实际是--live PKG见 check_commands.py 注释check_budget.py膨胀按行数和 token 双口径测 SKILL.md软 13000 / 硬 16000 token检查索引行长度、长文件是否有可导航开头build_scripts.py机器残留不该进仓库的绝对路径、凭据两个细节尤其值得品味一致性有天然反压力膨胀没有。坏路径会大声失败、总有人修而每次给技能加内容只多一行索引仓库里没有任何东西会注意到。所以预算门禁存在而且量的是 token 不是行数——150 行索引还是 150 行模型要读的东西。更深的教训写在源码注释里早期 token 估算常数偏小导致门禁在不同机器上得出不同结论装了 tokenization 库是 ok没装是警告。结论是一个答案取决于环境的门禁不是门禁——常数被重新校准到与真实 tokenizer 对齐check_budget.py 常量区。运行时也有门禁。上面的检查面向维护者doctor.py 和 preflight.py 面向 agent 开工前前者报告能力闭包这台机器到底能不能重签名并且被允许报 BLOCKED——一份对真正无法签名的机器说 BLOCKED 的报告才是目的偏乐观的能力结论比没有结论更糟因为它会被用来判断某个结论是否站得住。五、新手实战写出自己Agent Skill的6个步骤把 apk-reverse 的经验压缩一下可以照抄这六步先写 description再写正文。frontmatter 描述是 agent 决定是否加载你的唯一广告把触发词文件类型、任务名词、常见搭配写密集。入口文件只留一跳查找。SKILL.md 里只留失败时立刻要加载哪个文件和门禁一切查表资料下沉到 routing 层。规则写成门禁不写成建议。每个门禁 动作 通过标准 最好有验证命令全文不出现可以考虑。一个主题一个文件 可导航开头。长文件第一屏放何时加载/本文件回答什么。能运行就写成脚本。参数化、机器可读输出--json、明确退出码doctor 的退出码 3 至少一项能力受阻。给技能配维护门禁并接入 CI。最少两个脚本一个管路径与引用一致性一个管入口文件预算让技能自己防自己腐化。六、延伸阅读与核心文件导航 想动手研究按这个顺序看带门禁的完整入口文件SKILL.md其中 症状索引L154-L217 是一跳查找的最佳范本按需清单层references/routing.md防膨胀预算门禁check_budget.py文档 vs 代码漂移检查check_commands.py失败目录自称这个技能最有价值的文件references/pitfalls.md测试层约定tests/README.md中文总览README.zh-CN.md⚠️ 最后提醒本项目只适用于你自有、被明确授权分析或 CTF 沙箱内的目标。而它给每条结论标注强度observed / inferred / unverified的证据哲学对你编写任何技能文档都是通用的——无标签的猜测不该被当作事实传播。【免费下载链接】apk-reverseSuitable for Android APK reverse engineering analysis项目地址: https://gitcode.com/gh_mirrors/ap/apk-reverse创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考