mcpField
D
defuddle

defuddle

github.com/agricidaniel生产力16.0k434 次安装1 周前更新
代码仓库

关于 defuddle

用于管理外部内容捕获边界的 Defuddle 技能,面向需要将本地文件保存在 Obsidian vault 中的用户。它可生成不执行网络请求的 URL 计划,并将现有文件以原始字节形式存档;不会运行提取器或清理 HTML。

主要功能

  1. 01生成惰性 HTTPS URL 计划
  2. 02检查网络出口与依赖状态
  3. 03将本地文件保存为原始字节
  4. 04通过审核计划捕获文件
  5. 05区分捕获与 wiki 导入

适用场景

  1. 01排队等待处理网页 URL
  2. 02将现有 HTML 或 Markdown 存入 vault
  3. 03审核捕获操作及其变更路径
  4. 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。

评论

支持 Markdown