
DeepNoodle 发布 decide 决策模型 CLI,可批量分析大型代码库
来源标题:Show HN: Decide – decision model CLI for analyzing large codebases with Jev
DeepNoodle 推出命令行工具 decide,通过决策模型对代码库中的每个函数、队列中的工单或 PR 中的变更逐一做出判断。该工具内置 12 个模板,支持从 shell、CI、Go 代码或 Claude Code 调用,并可拆分 Go、Python、JavaScript、TypeScript 和 Java 代码按函数分析。在 diff 场景下,它只询问发生变更的函数。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
大规模的主观判断。
在代码库中找出有漏洞的函数,在队列中找出紧急工单,在 pull request 中找出有风险的改动。decide 会针对每一项向决策模型提问,你可以从 shell、CI、Go 代码或 Claude Code 中调用它。
$ brew install deepnoodle-ai/tap/decide $ go install github.com/deepnoodle-ai/decide/cmd/decide@latest $ go get github.com/deepnoodle-ai/decide
/plugin marketplace add deepnoodle-ai/decide> /plugin install decide@decide 快速上手 →看看 decide 能做什么
自动化流程里的那些小判断。
每条流水线里都有一些主观判断:数量多到人处理不过来,又模糊到无法用规则表达。下面这些判断,decide 开箱即可完成。
决策模型的 API 只接收一段文本和一个问题。decide 负责提供问题、把你的数据拆成条目,并给你的脚本一个可以据此行动的结果。
十二个内置模板,每个模板是一组问题,措辞经过调优,并带有 flag 阈值。你也可以用几行 JSON 写出自己的模板。
decide 会把 Go、Python、JavaScript、TypeScript 和 Java 代码拆分成函数,并把每个函数连同它的 import 一起发送。对于 diff,它只询问发生改动的函数。
你可以指向 JSONL、CSV、Markdown、diff,或一个装满图片或 PDF 的文件夹。每条记录、每个章节、每个 hunk 或每个文件都会得到自己的答案,较长的内容会分段判定。
每个答案都会被保留。再次运行时,decide 只询问发生变化的内容,因此对代码库的第二遍处理几乎不产生成本。
被标记的答案可以让进程以退出码 2 结束。结果可输出为 JSON、CSV、Markdown 报告或 GitHub annotations,中断的运行可以从上次停止的地方继续。
在你自己的程序中发起带类型的问题,获得经过校验的答案,支持重试、用于测试的假服务器,以及 gate、rank、funnel 等模式。
decide 插件里有两个 skill。decide 会给每个函数打分,Claude 只读取得分最高的那几个。
decide 用 security 模板给每个函数打分。Claude 读取得分最高的最多 15 个函数及其调用方,并报告哪些是真正的问题。
给它一个修复 commit 或 pull request。Claude 会针对这个错误写一个问题,decide 向每个函数提出该问题,然后 Claude 读取最匹配的结果。
可以,而且对于写作或推理,你应该这么做。至于对每一项给出是或否,决策模型是更合适的工具。
LLM 是一个 token 一个 token 地写回复,而你要等它全部写完。决策模型什么都不写。它只返回一个答案。
用 LLM 时,你要为 prompt 付费,还要为它写回的每一个 token 付费。在这里,你只为 prompt 付费。
问 LLM 它有多确定,它会打出一个数字,通常还很自信。决策模型经过训练,使其概率与它实际正确的频率相匹配。
1 Jev 仅对输入计费(TypeSafe)。gemini-decision-1 每百万输入 token 收费 $0.10,不产生输出 token(Google)。OpenAI 的 Decisions API 和 Cloudflare 按各自的条款计费。作为规模参照,OpenAI 列出的 chat 模型输出最低标准价格为每百万 token $0.40,对应 gpt-5-nano(OpenAI)。
每个答案都附带一个概率。对模型有把握的答案采取行动,其余的交给人工处理。
e, err := decide.Eval(ctx, client, issue, decide.Noul("Is this ready to work on?")) if err != nil { return err switch p := e.Answer.Noul; { case p >= 0.9: assign(issue) // allow case p <= 0.1: sendBack(issue) // reject default: route(issue, gate.Review) // a person decides
= 0.9allow in betweena person decides <= 0.1reject
在切换之前,先用你自己的条目测试一下。
在你已经标注过的条目上运行并比较。概率是模型的判断,不是证据,所以阈值也要根据它来设定。
这四个都能读文本和代码。其中三个能读图片,Gemini 还能读音频、视频和 PDF。默认使用 Jev;用一个 flag 即可切换。
CloudflareClef · Workers AI clefclef-flash text images audio video PDF OpenAILuna gpt-6-luna text images audio video PDF GoogleGemini gemini-decision-1 text images audio video PDF
自带密钥。decide 只把你所询问的内容发送给该提供商,不会发往别处。密钥与切换方法见 Providers。
no 轮到你了。问它点什么。
安装它、设置密钥,并把它放到你的脚本发起调用的地方。
$ brew install deepnoodle-ai/tap/decide 快速上手 →阅读源码
Apache 2.0 开源。LICENSE · CONTRIBUTING.md decide 采用 Apache 2.0 许可。由 Deep Noodle 制作,经过了非常艰难的思考。
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。