AyanbekDos/kurultai

GitHub: AyanbekDos/kurultai

零依赖的 Python CLI 工具,编排多个竞争性 AI 模型家族以红队攻击、辩论、锦标赛等方式多角度压力测试用户的想法,并借助 Claude Code 进行裁决。

Stars: 0 | Forks: 0

# Kurultai **一个由相互竞争的 AI 模型组成的委员会来攻击你的想法——然后 Claude Code 会阅读记录,并指出它们都没看到的问题。** 零依赖(纯 Python 标准库,一个文件夹,任何 `python3` 即可运行)。支持五大家族模型(Grok、GPT、GLM、Kimi、Claude),并行查询,每个模型都通过提供商后备阶梯进行访问。评审步骤无需额外 API 调用:它直接在你已经打开的 Claude Code 对话中运行。 ## 事实胜于雄辩 在这个代码库公开之前,它自己的发布文章被提交给了委员会。五位攻击者,十五次绝杀,五次被评为致命: ``` +------------------------------------------------+ | KURULTAI VERDICT · redteam · 5 voices | | kill-shots: 15 · max: 5/5 (rival) | | severity: 5/5 x5 · 4/5 x6 · 3/5 x4 | | top: Title + first sentence is pure self-c... | | survival: draft DOA - rewritten as evidence | +------------------------------------------------+ ``` Grok:*“纯粹是自吹自擂的噱头。”* Kimi:*“你把一个落地页带到了 workshop 里。”* Sonnet 发现草稿的示例输出看起来*“像是精心挑选且干净得不自然。”* 根据它们的裁决,这篇文章从头进行了重写。 完整的记录位于 [`examples/launch-post-redteam.md`](examples/launch-post-redteam.md) - 模型输出未经编辑;评审部分、卡片的存活行和一段介绍说明是由主席(Claude Code)添加的,这是设计好的工作流。其运行统计表的提供商列显示了运行中期的阶梯重路由(带有 `http 503` 后备说明的原始控制台日志在[它旁边](examples/launch-post-redteam-console.txt))。攻击者总成本:$0.04。 额外实验:一个全新的独立 Claude Fable 5 会话获得了与委员会相同的攻击简报。双方都没有完胜——独立会话发现了委员会漏掉的 4 次攻击,委员会发现了独立会话漏掉的 3 次攻击。记分牌、注意事项和两份原始输出:[`examples/solo-fable5-vs-council.md`](examples/solo-fable5-vs-council.md)。 ## 快速开始 一个 key 就足够了(仅靠 OpenRouter 就能覆盖所有默认模型;仅靠 Perplexity 只能覆盖部分面板——它是一个用于提供 ground 和后备的阶梯): ``` cd kurultai # after git clone / download export OPENROUTER_API_KEY=sk-or-... # or put it in .env (see .env.example) python3 council.py doctor # who's alive python3 council.py "should I extract this into a library or keep it in the app?" ``` 一个简单的参数意味着 **redteam**——默认模式:五种视角(逻辑学家、怀有敌意的竞争对手、运营商、用户拥护者、混沌代理人)用带有严重性评级的绝杀攻击你的想法,并且每个都必须提出能化解其最严重攻击的最小修复方案。排名前列的攻击会打印到终端;完整的记录会以 `.md` + `.json` 格式存入 `runs/` 目录中。 ## 评审步骤 该脚本故意**不**调用评审模型。每份记录都以一个结构化的裁决模板结束: 在 [Claude Code](https://claude.com/claude-code) 中打开记录,它会在对话中填补裁决——无需额外 API 调用;综合分析在你已经付费的订阅上运行。一个内置的 skill (`.claude/skills/kurultai/`) 使其一步到位:输入问题,Claude 召集委员会、等待、评审。该模板是纯 markdown,因此任何功能强大的对话都可以作为主席。 ## 这只是另一个 LLM 包装器吗? 部分是的——它调用了模型。编排才是核心论点: - 由单个模型模拟的 Persona 共享该模型的先验假设;而相互竞争的模型**家族**才是真正的意见不合。(在示例记录中,GPT 和 Grok 在不同的依据上各自给出了 5/5 不同的致命一击。) - 数据是由**代码**从解析后的输出中计算出来的,而不是由一个扮演所有角色的模型叙述出来的:严重性分布、辩论中的置信度中位数、锦标赛中的对决计数。 - 辩论轮次是匿名的,并且通过轮换以防止锚定;锦标赛对决交替展示顺序,从而使位置偏差相互抵消。 - 一个挂掉的提供商永远不会终止一次运行:基于模型的阶梯 `自定义 endpoint -> Perplexity -> OpenRouter`,在 429/5xx 错误时进行重试,并且 `resume` 会向静默的模型重新提问以生成新版本(记录是只追加的,原件永远不会被触碰)。 如果模型家族的多样性对你的问题来说不重要,那么单模型 Persona 模拟确实更便宜。这个工具是针对那些模型多样性确实重要的情况的。 ## 其他四种模式 ``` python3 council.py debate "ship a free tier?" decision 2 # anonymous argument, N rounds, # confidence median tallied by code python3 council.py fusion question.md quality # independent panel + web grounding (Sonar) python3 council.py tournament options.md # 2-6 options fight pairwise duels, panel votes python3 council.py delphi "how many users churn in month 1?" 2 # Delphi-method numeric estimates ``` 服务命令:`doctor`(哪些提供商存活)、`resume runs/.json`(仅重新询问静默的模型)、`stats`(每个提供商挽救调用的频率)、`voices`(声音、预设、阶梯)。 ## 成本透明 攻击者需要消耗真实的 API 费用。每份记录都包含一张针对每种声音的表格:使用的提供商、时间、输入/输出 token、预估价格(费率可在 `forge.json` 中编辑)。典型运行成本:redteam 几美分,5 种声音 2 轮的辩论几十美分。评审步骤不会在你的现有订阅基础上增加任何成本。 ## 安装详情 Keys 从环境变量中读取,然后是当前目录下的 `.env` 文件,接着是 `council.py` 旁边的 `.env` 文件(参见 [`.env.example`](.env.example)): - `OPENROUTER_API_KEY` - 推荐;是每个默认模型的安全网 - `PERPLEXITY_API_KEY` - 可选;是第二梯队 + `fusion` 的网络 ground - `FORGE_CUSTOM_BASE_URL` + `FORGE_CUSTOM_API_KEY` - 可选的第一梯队:任何兼容 OpenAI 的 endpoint(你的 proxy、vLLM、LiteLLM、Ollama 的兼容 API) 位于 `council.py` 旁边的可选 `forge.json` 文件可以覆盖所有内容:语言(`en`/`ru` - 所有 prompt、persona 和评审模板均内置双语支持)、自定义 voices 和 presets、为你自己的模型配置的阶梯、价格、并发度。示例: ``` { "lang": "en", "voices": { "pirate": { "model": "grok-4.3", "temp": 0.9, "role": {"en": "Pirate"}, "story": {"en": "You are a pirate. Argue accordingly."} } }, "presets": { "crew": { "voices": ["pirate", "critic", "humanist"], "rounds": 2 } }, "ladder": { "my-model": [["custom", "my-model-id"]] } } ``` 要求 Python 3.8+。Windows:可在 `py -3` / WSL 下运行;当输出不是 TTY 时,颜色会自动禁用。 ## 结构剖析 ``` council.py CLI entry (bare argument = redteam) forgecore/ config.py keys, forge.json overlay, i18n strings, prices providers.py raw HTTP, the provider ladder, retries, doctor voices.py personas, presets, prompts, judge templates (en/ru) engine.py parallel rounds, transcripts, resume, stats modes.py redteam / debate / fusion / tournament / delphi tests/ pure-logic unit tests, no network: python3 -m unittest discover -s tests examples/ the launch-post red-team run: input, transcript, console log runs/ your transcripts (append-only, gitignored) ``` ## 许可证 MIT。详见 [LICENSE](LICENSE)。
标签:DLL 劫持, 人工智能, 大语言模型, 思维导图/头脑风暴, 文本分析, 文档结构分析, 用户模式Hook绕过, 自动化辩论/评估, 逆向工具