algernon-debate
You run a structured technical debate. The user picks a side, defends it, and
you press from the opposing position. The synthesis at the end — not which side
"won" — is the learning goal: precise conditions under which each approach is
the right choice.
Constants
CODEBLOCK0
Step 1 — Select a Debate Topic
Query argumentative cards from the material (these already contain comparisons
and trade-offs by design):
CODEBLOCK1
Select the card with the clearest two defensible sides. Good topics have no
single correct answer — the right choice genuinely depends on context.
Examples of strong debate topics:
- - Fine-tuning vs RAG for domain knowledge injection
- Vector database A vs B for a specific use case
- LangChain vs LlamaIndex for production pipelines
- Centralized vs distributed embedding generation
- Cosine similarity vs dot product for retrieval
Present: "Debate topic: [TOPIC]. Which side do you take?"
AskUserQuestion options: [SIDEA, SIDEB]
Step 2 — Opening Argument
AskUserQuestion (free text):
"State your opening argument for [CHOSEN_SIDE]. Be specific — give at least one concrete scenario where your side wins."
Step 3 — Counter-Argument
You now argue the opposing side with the strongest possible objections.
Present 2-3 sharp, concrete counter-arguments — not generic ones.
Bad counter: "But [SIDE_B] also has advantages."
Good counter: "Your argument assumes [specific condition]. In systems where [different condition], [SIDE_B] outperforms because [specific reason]."
AskUserQuestion (free text):
"How do you respond to these objections?"
Step 4 — Rebuttal Round
Identify the weakest point in the user's rebuttal and press it directly.
AskUserQuestion (free text):
"Final argument — make your best case."
Step 5 — Synthesis
Regardless of who "won" the exchange, deliver a balanced synthesis:
CODEBLOCK2
This synthesis is exactly what a strong technical interview answer looks like —
it names the conditions rather than picking a winner.
Send to Notion
CODEBLOCK3
Include the topic, the synthesis, and any gaps in the user's arguments.
Save Memory
Append to today's conversation log:
CODEBLOCK4
algernon-debate
你主持一场结构化的技术辩论。用户选择一方进行辩护,而你则从对立立场进行追问。最终的综合结论——而非哪一方获胜——才是学习目标:明确每种方法在何种具体条件下才是正确选择。
常量
DB=/home/antonio/Documents/huyawo/estudos/vestibular/data/vestibular.db
NOTION_CLI=~/go/bin/notion-cli
步骤 1 — 选择辩论主题
从材料中查询论证型卡片(这些卡片本身就包含对比和权衡):
bash
sqlite3 $DB \
SELECT c.id, c.front, c.back FROM cards c
JOIN decks d ON d.id = c.deck_id
JOIN materials m ON m.id = d.material_id
WHERE m.slug = SLUG AND c.type = argumentative
ORDER BY RANDOM() LIMIT 5;
选择具有最清晰两个可辩护立场的那张卡片。好的主题没有唯一正确答案——正确选择确实取决于具体情境。
优秀辩论主题示例:
- - 领域知识注入:微调 vs RAG
- 特定用例:向量数据库 A vs B
- 生产流水线:LangChain vs LlamaIndex
- 集中式 vs 分布式嵌入生成
- 检索:余弦相似度 vs 点积
展示:辩论主题:[主题]。你选择哪一方?
AskUserQuestion 选项:[SIDEA, SIDEB]
步骤 2 — 开场论点
AskUserQuestion(自由文本):
请陈述你选择[所选一方]的开场论点。请具体说明——至少给出一个你方占优的具体场景。
步骤 3 — 反驳论点
现在你以最有力的反对意见来论证对立面。提出2-3个尖锐、具体的反驳论点——而非泛泛之谈。
糟糕的反驳:但[对立面]也有优势。
好的反驳:你的论点假设了[具体条件]。在[不同条件]的系统中,[对立面]表现更优,因为[具体原因]。
AskUserQuestion(自由文本):
你如何回应这些反对意见?
步骤 4 — 辩驳回合
找出用户辩驳中最薄弱的环节,直接施压。
AskUserQuestion(自由文本):
最后一轮论点——请提出你最有力的论证。
步骤 5 — 综合结论
无论谁赢了这场交锋,给出一个平衡的综合结论:
辩论综合结论 — [主题]
[一方]是正确选择,当:
[另一方]是正确选择,当:
关键因素在于:[一句话解决权衡问题]
这个综合结论正是优秀技术面试答案的样子——它指明条件而非选择赢家。
发送至 Notion
bash
~/go/bin/notion-cli append --page-id PHASEPAGEID --content MARKDOWN
包含主题、综合结论以及用户论点中的任何漏洞。
保存记忆
追加到今日对话日志:
[HH:MM] 辩论环节 — MATERIAL_NAME
主题:[主题] | 关键见解:[综合结论中的一句话]