()
| 2808 | # ============================================================ |
| 2809 | |
| 2810 | def _main_impl(): |
| 2811 | parser = argparse.ArgumentParser( |
| 2812 | prog="k", |
| 2813 | description="知识库 CLI - 提供内置工具做不到的结构化查询", |
| 2814 | ) |
| 2815 | parser.add_argument( |
| 2816 | "--json", action="store_true", |
| 2817 | help="输出 JSON 格式(给 LLM/脚本用)", |
| 2818 | ) |
| 2819 | parser.add_argument( |
| 2820 | "--workspace", dest="workspace", default=None, |
| 2821 | help="指定工作区名称(在 workspaces/ 下查找)。" |
| 2822 | "默认会自动选择第一个存在的 workspace;如果没有则报错并提示运行 `k.py new-workspace <name>` 创建。", |
| 2823 | ) |
| 2824 | |
| 2825 | # 共享 parent:让 --json 在子命令后面也能用 |
| 2826 | common = argparse.ArgumentParser(add_help=False) |
| 2827 | common.add_argument( |
| 2828 | "--json", action="store_true", dest="json_sub", |
| 2829 | help="输出 JSON 格式(给 LLM/脚本用)", |
| 2830 | ) |
| 2831 | |
| 2832 | sub = parser.add_subparsers(dest="cmd", required=True) |
| 2833 | |
| 2834 | p_search = sub.add_parser("search", help="跨 wiki 关键词搜索", parents=[common]) |
| 2835 | p_search.add_argument("query") |
| 2836 | p_search.add_argument("--limit", type=int, default=20) |
| 2837 | |
| 2838 | p_list = sub.add_parser("list-pages", help="按 frontmatter 字段过滤页面", parents=[common]) |
| 2839 | p_list.add_argument("--type", dest="filter_type") |
| 2840 | p_list.add_argument("--status", dest="filter_status") |
| 2841 | p_list.add_argument("--confidence", dest="filter_conf") |
| 2842 | p_list.add_argument("--tag", dest="filter_tag") |
| 2843 | p_list.add_argument("--modified-by", dest="filter_by") |
| 2844 | |
| 2845 | sub.add_parser("list-orphans", help="找无入链的孤儿页面", parents=[common]) |
| 2846 | sub.add_parser("list-conflicts", help="找带冲突标注的页面", parents=[common]) |
| 2847 | sub.add_parser("list-to-update", help="找带 #to-be-updated 的页面", parents=[common]) |
| 2848 | |
| 2849 | p_back = sub.add_parser("backlinks", help="查询某页的反向链接", parents=[common]) |
| 2850 | p_back.add_argument("path", help="目标页面路径,相对项目根") |
| 2851 | |
| 2852 | p_out = sub.add_parser("outlinks", help="查询某页的出向链接", parents=[common]) |
| 2853 | p_out.add_argument("path", help="源页面路径,相对项目根") |
| 2854 | |
| 2855 | sub.add_parser("health", help="综合健康度报告", parents=[common]) |
| 2856 | |
| 2857 | p_val = sub.add_parser("validate-frontmatter", help="校验 frontmatter", parents=[common]) |
| 2858 | p_val.add_argument("path", help="要校验的文件路径") |
| 2859 | |
| 2860 | p_outline = sub.add_parser("outline", help="显示文档章节大纲(含 preview / agent_summary)", parents=[common]) |
| 2861 | p_outline.add_argument("path", help="md 文件路径(相对项目根)") |
| 2862 | |
| 2863 | p_rs = sub.add_parser("read-section", help="按 anchor 或标题读取整个 H 段", parents=[common]) |
| 2864 | p_rs.add_argument("path", help="md 文件路径") |
| 2865 | p_rs.add_argument("anchor_or_title", help="anchor(如 h-2-3-abc123,可加 ^ 前缀)或标题文本") |
| 2866 | |
| 2867 | p_rb = sub.add_parser("read-block", help="按 anchor 读取单个块(^p-/^t-/^c-/^f-)", parents=[common]) |
no test coverage detected