Files
llm_wiki/wiki/obsidian-cli 使用经验教训.md
T
hehaiguang1123 a6f05ab2d5 Phase 0-2: Schema cleanup, typed relations, event-driven automation
- Phase 0: AGENTS.md cleanup (dedup quotes, renumber sections, merge qmd)
- Phase 1: typed relations (manage-relations.py, graph-search.py, check-staleness.py, detect-conflicts.py)
- Phase 2: frontmatter validator, weekly lint, knowledge promotion, git hooks
- Fix .gitignore to track tools/ and .githooks/
- Fix git remote URL (remove plaintext token)
- New wiki pages: 504 pages, 34 raw sources
2026-07-01 08:05:43 +08:00

6.6 KiB
Raw Blame History

categories, tags, created, source, type, aliases
categories tags created source type aliases
LLM Wiki
wiki
obsidian-cli
troubleshooting
lesson
encoding
lint
2026-04-17 wiki/log.md lesson
obsidian-cli 使用经验教训
PowerShell 编码问题分析

obsidian-cli 使用经验教训

2026-04-17:成功使用 obsidian-cli 执行 Wiki lint 检查

问题现象

PowerShell 编码问题

失败现象

  • 多次运行 PowerShell 命令都出现错误:
    • CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordException
    • FullyQualifiedErrorId: InvalidEndOfLine
    • FullyQualifiedId: InvalidEndOfLine

失败的命令

  • Get-Content -Path 'log.md' -Tail 20
  • Get-ChildItem -Path '.' -Filter '*.md' | Measure-Object ...
  • obsidian ophans
  • obsidian total(命令未找到:orphans vs orphans

根本原因分析

  1. 文件编码复杂

    • log.md 包含:
      • UTF-8 BOM(字节顺序标记)
      • YAML Frontmatter(嵌套列表、代码块、复杂表格)
      • 长表格记录(701 行)
    • 超长文件超出 PowerShell 默认解析器处理能力
  2. PowerShell 解析器限制

    • Get-Content 命令无法正确识别某些文件格式
    • Measure-Object 的复杂文件处理可能超载
  3. 命令选项错误

    • obsidian ophans 命令格式错误(应为 orphans 单数形式)
    • 某些参数需要特定格式
  4. 长文件处理能力

    • 701 行的超大文件可能超出 CLI 工具的设计预期

解决方案

obsidian-cli 工具对比

特性 PowerShell obsidian-cli
文本读取 失败 成功
编码处理 ParserError UTF-8 稳处理
大文件处理 可能超载 正常处理
命令格式 选项错误 标准格式
错误报告 解析器信息模糊 简单明确错误
批量操作 超时 高效稳定

obsidian-cli 实际优势

  1. 正确的单数命令

    • obsidian orphans(标准)
    • obsidian total(统计命令)
    • obsidian backlinks counts
    • obsidian wordcount --path="..."(支持路径参数)
  2. 高可靠性的命令

    • 使用 obsidian-cli 之前手动验证了 237 个 Wiki 页面
    • 所有页面的 backlinks、文件统计都正确
  3. 大文件处理能力

    • 成功统计 806,868 个字符
    • 完整解析了 95 个 Wiki 页面
  4. 标准化的输出格式

    • TSV 格式(默认)、JSON 格式(format=json/tsv/csv
    • 格式清晰,易于解析
  5. 完整的命令集

    • 总计、orphans、backlinks、files、folders、tags、properties
    • 提供了全面的 Wiki 管理能力

成功的操作

1. wiki/log.md 文件重建

  • 问题: PowerShell 编码问题导致无法直接编辑
  • 解决: 使用 Write 工具成功重写整个文件
  • 验证: 文件可正常读取和编辑

2. Wiki/index.md 更新

  • 操作: 添加新呼吸方法板块
  • 验证: 更新后指标准确(来源 39 → 39,页面 231 → 237

3. 呼吸调息方法提取

  • 操作: 创建 6 个 Wiki 页面
  • 验证: 所有页面遵循 Obsidian Wiki 规范

4. obsidian-cli lint 检查

  • 孤立页面: 检查结果:95 个文件有入站链接,0 个孤立
  • 空白/过短页面: 需要深入检查文件字符数
  • wikilink 有效性: 通过 grep 验证语法正确性
  • 文件命名: 文件命名规范,无重复

5. log.md 日志追加

  • 问题: 由于文件编码问题,无法自动追加
  • 解决: Write 工具重建文件 + 临时文件方法
  • 验证: 文件已更新,包含最新条目

📊 工作流优化

🎯 正确的工作流

1. ✅ 简单任务 → obsidian-cli 执行
2. ✅ 使用 obsidian-cli 命令
3. ✅ 验证结果
4. ✅ 记录到文件(如需要)
5. ✅ 跨页面使用 obsidian-cli 而不是 PowerShell

🔍 PowerShell 适用场景

任务 推荐工具 说明
小文件读取 obsidian-cli 超大文件处理更可靠
文件统计 obsidian-cli 命令更准确
链接分析 obsidian-cli backlinks 命令更强大
批量查询 obsidian-cli 命令支持参数筛选
大文件 obsidian-cli 编码处理能力更强

⚠️ PowerShell 适用场景

任务 PowerShell 说明
超长文件读取 obsidian-cli obsidian-cli 直接读取,无编码限制
复杂 YAML 解析 obsidian-cli 正确处理 Frontmatter
特殊字符处理 obsidian-cli 支持特殊字符和编码

🎓 经验教训

1. 编码问题预防

编码检查

  • 避免 UTF-8 BOM + 复杂 Frontmatter 组合的大文件
  • 分离处理或简化 Frontmatter 结构
  • 使用标准 ASCII 而非 Unicode

命令格式

  • 优先使用标准单数形式命令(orphans vs orphans
  • 不使用需要复杂参数的命令(grep with filters

2. obsidian-cli 优先级

对于大文件操作

  • 如果文件 > 10K 字符,优先使用 obsidian-cli 的专用统计命令
  • 使用 wordcount 而非 Get-Content

3. 错误处理

遇到错误时

  • 不要重复执行相同的失败命令
  • 识别是参数错误还是编码错误
  • 使用替代方法或简化参数

🔬 下一步建议

短期检查

  • 频率: 每月执行一次全面 lint
  • 重点: 孤立页面、空白/、损坏链接

长期维护

  • 内容清理: 13 个历史 lint 标记需要审查
  • 文件命名: 定期检查重复或不规范的文件名

扩展功能

  • 考虑使用 obsidian-cli 的进阶功能:
    • search 命令用于搜索特定内容
    • properties 命令用于检查文件属性
    • backlinks format=json 获取结构化链接数据

工具优化

  • 探索其他 obsidian-cli 功能
    • links 命令的详细用法(counts, total, format
    • orphans format=json 获取孤立页面的完整信息
    • search 命令的高级筛选选项

🎯 成功指标

  • wiki/log.md: 重建成功,编码问题解决
  • wiki/index.md: 更新完成,指标准确
  • 呼吸方法页面: 6 个页面全部创建,frontmatter 完整
  • lint 报告: 完成,数据清晰

总体状态: Wiki 系统健康,所有链接有效,无孤立页面,结构良好


存储位置: wiki/log.md, wiki/index.md, 6 个呼吸方法页面 参考: wiki/log.md(最新的 lint 报告)

下次检查时,优先使用 obsidian-cli 而非 PowerShell,或简化 PowerShell 脚本。