关于 defuddle
用于管理外部内容捕获边界的 Defuddle 技能,面向需要将本地文件保存在 Obsidian vault 中的用户。它可生成不执行网络请求的 URL 计划,并将现有文件以原始字节形式存档;不会运行提取器或清理 HTML。
主要功能
- 01生成惰性 HTTPS URL 计划
- 02检查网络出口与依赖状态
- 03将本地文件保存为原始字节
- 04通过审核计划捕获文件
- 05区分捕获与 wiki 导入
适用场景
- 01排队等待处理网页 URL
- 02将现有 HTML 或 Markdown 存入 vault
- 03审核捕获操作及其变更路径
- 04保留已清理文本及已知来源信息
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ agricidaniel/ claude-obsidian --skill defuddle安装后在 Claude Code 中输入/defuddle确认已加载。
详细介绍
Defuddle
将 Defuddle 视为可选的外部提取器。此软件包支持惰性 URL 计划和文件系统捕获;不附带强制执行的网络清理器。 清理、原始捕获和 Wiki 导入是独立操作。
从此技能自身的位置解析已安装的产品根目录,绝不能从所选知识库或进程工作目录解析:
PRODUCT_ROOT=/absolute/path/to/installed/claude-obsidian
CORE="$PRODUCT_ROOT/scripts/claude-obsidian.py"
test -f "$CORE"
此文件中的每个 ../wiki/references/ 链接都以相同方式解析,相对于 $PRODUCT_ROOT 下此技能自身的目录,绝不能相对于所选知识库的 wiki/ 目录。
可以在单独安装的 kepano/obsidian-skills 参考中检查上游标志,但不得以此覆盖本软件包的隐私和事务边界。
惰性 URL 计划
仅接受 HTTPS URL。拒绝凭据、片段、控制字符、敏感查询参数,以及非公开主机或 IP 地址。绝不要将 URL 插入 shell 字符串。构造计划时使用一个 argv 元素:
python3 "$CORE" capture external-plan url "HTTPS_URL"
python3 "$CORE" contracts --verify --capability defuddle --vault "$VAULT"
该计划不会执行网络请求。报告规范化主机、所需的网络出口、重定向策略、可选依赖项和 execute: false。
available 状态表示未找到可执行文件。configured 状态表示已发现可执行文件,但没有随附的行为验证器。
指出手动可执行文件及其报告的原因;绝不要仅仅因为找到了它就运行它。绝不要将 configured 重新标记为 verified。
为何在此处停止执行
在提交
556d74e8c8fd68c49912d4b11a4ae9ec04d7b2b5
(于 2026-10-17 检查)中检查的上游 CLI 会跟随重定向并启用异步提取。
即使只解析本地 HTML 文件,也可能请求其他资源或使用第三方回退机制。检查 argv 或获取用户对初始 URL 的同意,都无法证明每个最终目标仍在获批范围内。
在此工作流中,不要对 URL 或本地 HTML 运行裸 CLI。 不要悄悄改用浏览器、抓取器、代理、Cookie 或其他运行器。 未来可运行的适配器必须在 DNS 解析后以及每次重定向时强制执行获批目标、禁用不受控的异步/回退流量、限制代理行为,并限制字节数、时间和子进程输出。它必须保留原始和最终定位符、准确版本、获批主机、捕获哈希和模式。 在提供执行功能前,行为测试必须证明这些限制有效。即使使用了强制执行适配器,仍需针对每个目标分别征得同意。
不要安装工具,也不要声称进行了清理、提取质量良好或节省了令牌。将 URL 留在队列中,或接受已存在的本地文件。本地文件可以按字节保留,而不渲染 HTML 或运行其中的脚本。
可审查的文件系统捕获
当用户要求保留现有的本地 HTML 或 Markdown 文件时,先将其放入所选知识库的 inbox/。使用固定时间戳和操作 ID 预览并应用文件系统计划:
python3 "$CORE" capture plan --vault "$VAULT" "$VAULT/inbox/source.md"
python3 "$CORE" capture apply --vault "$VAULT" "$VAULT/inbox/source.md" \
--generated-at "$GENERATED_AT" --operation-id "$OPERATION_ID"
# Set APPROVAL_SHA256 to the reviewed approved_plan_sha256 from the dry run.
python3 "$CORE" capture apply --vault "$VAULT" "$VAULT/inbox/source.md" \
--generated-at "$GENERATED_AT" --operation-id "$OPERATION_ID" \
--approved-plan-sha256 "$APPROVAL_SHA256" --apply
此操作会将源字节保存在仅可创建的 .raw/captured/ 存储中。它不会清理 HTML、验证源元数据或合成页面。检查实际结果并记录提取限制。如果提供的是已清理文本,则保留其已知的提取器/版本和定位符,不要臆造缺失字段。
报告操作 ID 和准确的更改路径。重复的相同负载不会执行任何操作;绝不要覆盖不可变的原始状态。
自定义捕获草案请参阅 operation-transactions.md。
如果未要求保留,则仅临时读取或分析。仅在用户分别要求时才调用 wiki-ingest。