我的 Claude Agent SDK 实践, 做了个 Anki 卡片自动生成工具,适合背一些无聊的面试八股 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
kkeep
V2EX    分享创造

我的 Claude Agent SDK 实践, 做了个 Anki 卡片自动生成工具,适合背一些无聊的面试八股

  •  
  •   kkeep 2025 年 12 月 20 日 1550 次点击
    这是一个创建于 33 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前在网上看见很多人说 anki 很好用,就想做点 anki 包来挂到淘宝上面出售,挣点钱。

    还搜索过站内 anki 制作的前辈, 有一个很不错的 https://www.anytoanki.com/ 原帖 https://v2ex.com/t/1153525 还有一个英语定制的 t/1115770 都很不错。

    最近面试又碰到一些面试八股的问题,我只好说这块儿忘了。刚好想了一下,可以用这个方式拿来练手做一个真正实际意义的垂直的 Agent 应用,而且 编程八股 + Anki 说不定有搞头?(不知道有没有人真的会买)

    最终成品

    网站 https://ankiany.starsou.com/

    能够生成某个主题下面常见知识的 anki 包,比如 "MySQL 面试" 用来应对需要机械背诵的面试八股就行了。

    技术实现

    请直接查看代码 https://github.com/alingse/ankiany

    项目基于 Claude Agent SDK 构建,核心是一个智能 Agent ,能够:

    • 自动分析主题,规划知识点分布
    • 必要时搜索网络获取最新资料
    • 智能生成 50+ 张不同题型的卡片(问答/填空/选择题)
    • 打包生成标准 .apkg 文件,支持直接导入 Anki

    claude 的 api 是使用的 GLM 4.6 一年的那个套餐( 5 小时内 120 次 prompt)

    可能有点慢, 晚点我试试接入小米的 mimo 看看( 14 天免费)

    搜索时用的 duckduckgo 但是常见知识点可能都触发不了

    开发体会

    整体项目用 gemini 写的, 完整的 vibe coding 记录 可以参考这个 https://github.com/alingse/ankiany/blob/main/.ai-cli-log/gemini-20251217-232123-anki-agent-api-key-discussion.txt#L43-L54 (这个是用 ai-cli-log 记录)

    > 我最近有个想法,我想做一个垂直领域的 agent 作为练手工具,我需要跟你讨论聊聊方案。我的最终目标 1. 网页版本/cli 版本 用户可以输入自己的想要的领域关键词+说明,就能自动得到一份 anki 的数据包。2. agent 可以完成这样的事情 a. 理解用户的领域 b. 利用知识库出题 c. 利用搜索获取网页信息 提取对应的知识 d. 将所有知识去重精炼 e. 安排恰当合适的题型 f. 将这些知识调用工具打包为 对应的数据包。 ---- 以上,我们先聊聊吧。先不要着急写代码。 

    我的体会

    • Gemini 真的很聪明, 好用,gemini-3-flash-preview 都足够好用
    • claude agent sdk 很好接入, 明确流程 SOP 制作 system-prompt + 特定的 tool 就做成一个 Agent
    • system-prompt 需要反复调试, 需要模仿人的思路来告诉他流程
    • 我行动的太晚了,要是 9 月份 开始就更好了
    • cli 版本的很简单,但是 web 版本的不简单
    • web 版本需要考虑页面/布局/按钮/触发效果, 还要考虑安全因素

    如果有朋友在使用过程中遇到问题,或者有改进建议,欢迎在评论区讨论

    (但是我自己也怀疑,宝贵的大脑存储有没有必要来训练这种面试八股呢?

    6 条回复    2026-01-05 23:27:05 +08:00
    sworld233
        1
    sworld233  
       2025 年 12 月 21 日   1
    试了下关键词 wireguard ,感觉牌组质量有点低,见下方:

    正面:如何在 WireGuard 中配置多个 DNS 服务器?
    背面:在 Interface 段中使用 DNS 参数,可以用逗号分隔多个 DNS 服务器地址。

    正面:WireGuard 生成的公钥文件默认名称是什么?
    背面:(选择题) public.key

    正面:WireGuard 配置备份的最佳实践是什么?
    背面:定期备份配置文件和私钥,使用版本控制管理配置变更,安全存储备份文件。

    提示词和生成过程中要不要参考下这个?《有效的学习:处理知识的 20 条规则》 https://www.yuque.com/supermemo/articles/20rules
    不过信息源质量的问题我想不到什么好的办法解决
    kkeep
        2
    kkeep  
    OP
       2025 年 12 月 21 日
    @sworld233 好的,我来研究下。
    kkeep
        3
    kkeep  
    OP
       2025 年 12 月 25 日   1
    @sworld233 我看了一下这个 rules, 让 gemini 补充了一个版本的 prompt ,有空可以看看,再试试。

    https://github.com/alingse/ankiany/blob/main/prompt.txt

    另外我觉得除非是很新的技术,大部分需要记忆/背诵的其实也就是常规知识,靠 AI 自己的内化的知识应该就够了。
    你觉得呢?

    另外在界面加了一个计时的功能。
    kkeep
        4
    kkeep  
    OP
    nbsp;  17 天前
    做了一些 UI 友好的更新。 渲染了 todos 还有 markdown 的输出

    https://imgur.com/a/cPlupMB
    kkeep
        5
    kkeep  
    OP
       17 天前
    kkeep
        6
    kkeep  
    OP
       17 天前
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2661 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 11:59 PVG 19:59 LAX 03:59 JFK 06:59
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86