我不会写代码,用 Claude Code 给自己搭了两个「AI 苦力」

14 阅读6分钟

我在写网文时发现,真正累的不是写,是写之外那两件破事:一是查资料,二是核对前后矛盾

这两件事有个共同点:又累又蠢,但必须有人干。 于是我想,能不能让 AI 干?

我不会写代码,就把需求丢给 Claude Code,让它给我造工具。最后造出来两个 PowerShell 脚本,双击就能跑。下面是全过程,包括踩的坑——坑比工具本身有意思。

一、先想清楚:谁干活,谁把关

一开始我想的是「让 AI 帮我查资料」,很快发现这句话太糊,得拆。

拆完是这样的分工:

  • 脏活累活(把几十个网页、几百章正文全部读一遍,初步判断哪些相关)交给 MiniMax。因为量大、便宜,我那边正好有额度。
  • 把关(这些初筛结果到底对不对)留给我自己和 Claude。

所以工具的名字我直接叫它「MiniMax 苦力」。它的定位从第一天就定死了:只做初筛,结果一律需要核对,绝不当最终答案。

这个定位后来救了我。因为大模型会一本正经地编,尤其是「这段内容跟你要找的相关吗」这种主观判断,它给你的答案永远说得头头是道。所以我让 Claude Code 在输出里强行塞了一个字段:

{"hit": true, "relevance": 0-100, "points": [...], "quotes": ["支撑用的原文片段"], "summary": "..."}

quotes 是原文片段。模型说「这里有你要的设定」,就必须把原话贴出来。 贴不出来,我就知道它在编。这一条比什么提示词都管用。

系统提示词里也写死了一句:只依据给定内容,不要补充你自己的知识。

二、工具一:找资料的「苦力」

最后成品是三种模式:

  1. 网搜:给个关键词 → 搜索 → 抓正文 → 逐条让模型判断相关性、抽要点
  2. 指定网址:跳过搜索,直接抓这几个链接
  3. 本地文件:扫我自己电脑里的稿子文件夹(.txt/.md/.docx),大文件自动切段

跑完吐两个文件:一个 JSONL(全量明细),一个 Markdown(命中的候选清单,给我人工核对)。跑完自动弹出来。

因为我不会用命令行,还让它包了个 .bat,双击就是个菜单,问我「搜什么」「要几条」,文件夹能直接拖进窗口。

三、工具二:查前后矛盾的「审校」

这个更粗暴:把连续章节按 4 万字一批塞给模型,只让它干一件事——找前后对不上的地方

提示词里我把「不该干的事」全堵死了:

不要评价文笔、不要给润色建议、不要复述剧情。

因为一开始不堵,它就开始夸我写得好、给我改句子。我要的不是这个,我要的是「第 8 章说他左手断了,第 15 章他用左手拔剑」。

约束的维度写得很细:人物设定、能力武力、称呼名字、数值、时间线、地点、生死状态、物品归属、事件因果。写细了以后,命中率明显变高。

四、踩的坑(这部分才是重点)

1. AI 凭记忆写 API,是错的

第一版跑起来直接报错。Claude Code 是凭记忆写的接口地址和参数,而记忆里的东西不一定对得上现在的文档。

后来我们老老实实去实测了一遍,把确认过的东西钉在注释里:

.接口(已实测确认,非凭记忆)
  base=https://api.minimaxi.com ; POST /v1/text/chatcompletion_v2
  模型 MiniMax-Text-01 ; 成功判据 base_resp.status_code==0

教训:凡是涉及第三方接口,别信模型的记忆,让它去查、或者你自己贴文档给它。

2. 中文乱码,而且是「一半乱码」

读本地稿子的时候,一堆 �。稿子是从各处攒的,有 UTF-8 有 GBK,编码乱七八糟。

第一版的处理很粗暴:发现坏字节就整篇按 GBK 解。结果好好的 UTF-8 文件因为一个坏字节被整篇解成乱码,更惨。

最后改成按比例判断:

powershell

$u = [Text.Encoding]::UTF8.GetString($bytes)
$repl = ([regex]::Matches($u, [char]0xFFFD)).Count
# 只有替换符多到离谱(疑似整篇 GBK)才整体按 GBK 解
if ($repl -gt [Math]::Max(8, [int]($u.Length * 0.05))) {
    return [Text.Encoding]::GetEncoding(936).GetString($bytes)
}

3. 网页抓不到正文

很多页面直接抓 HTML 只能拿到几十个字——内容是 JS 渲染出来的。

解决办法是加了个兜底:正文不足 300 字,就调无头浏览器(Edge/Chrome)--dump-dom 拿渲染后的页面。

然后又踩了一个特别阴间的坑:PowerShell 5.1 的 Start-Process -ArgumentList 不会给含空格的参数自动加引号,导致浏览器启动参数被截断,抓回来永远是空。最后所有参数都得保证不含空格,注释里专门写了一行警告。

4. DuckDuckGo 会限流

搜勤了就被挡。这个没法根治,只能识别出来告诉我一声:

[被限流] DuckDuckGo 暂时挡住了(搜得太频繁)。等 10~30 分钟再试。

这也是我现在最大的不稳定来源:这工具「有时能用有时不能用」,八成就是它。

5. 说好只输出 JSON,它偏要包个代码块

提示词写得明明白白「不要用代码块包裹」,模型照样时不时给你包一层代码块围栏(三个反引号加 json)。所以解析这块只能防御性地写:先剥代码块,再正则抠出第一个 {...},抠不出来就记为「未解析出 JSON」,把原文留在日志里。

6. 零散的小坑

  • PS 5.1 下 param 默认值里 $PSScriptRoot 可能是空的,脚本目录得另外稳健地取一次
  • 控制台中文乱码,.bat 里加 chcp 65001
  • 脚本默认不让跑,得 -ExecutionPolicy Bypass
  • 无头浏览器的临时目录要一次一个、跑完清理,不然会打架
  • API 偶发超时,退避重试 3 次;但只要拿到了业务错误码就别重试了,重试也是白搭

五、一个外行的几点体会

1. 别一句话丢过去。 「帮我做个查资料的工具」这种需求,出来的东西一定不是你要的。得说清楚:输入是什么、输出是什么、给谁看、跑完存哪。我是来回改了很多轮才收敛的。

2. 把「不要做什么」也写进去。 光说「找矛盾」,它会顺手夸你文笔;补一句「不要评价文笔、不要复述剧情」,输出立刻干净了。

3. 报错原样复制回去。 我看不懂报错,但我能复制。粘回去说「跑不起来,报这个」,基本都能修。看不懂不影响你把问题递出去,这是外行最重要的一项技能。

4. 让工具自己说人话。 出问题时打印「被限流」「没搜到」「未解析出 JSON」,比甩一堆红字栈有用一百倍——因为我看得懂,也知道该把哪句话贴回去问。

5. 最重要的:别让 AI 当最终裁判。 初筛给你,原文给你,最后拍板的是人。我在输出的 Markdown 顶部强制加了一行警告:

⚠️ 以下为初筛候选,可能有误/有遗漏,需人工或 Claude 核对。原文片段是核对依据。

最后

这两个工具都不完美。搜索会被限流,有些网页照样抓不动,模型也会漏。但对我来说,它把「翻二十个标签页查设定」和「回头重读三十章找矛盾」这两件最耗命的事,变成了「双击、等几分钟、核对一份清单」。

【这里可以补一句你自己的真实感受:比如省了多少时间、或者哪次它真的揪出了一个你没发现的矛盾】

我还是不会写代码。但我发现,不会写代码,不代表不能拥有为自己定制的工具——你需要的是把问题说清楚,剩下的交给 AI,然后老老实实陪它一起踩坑。