researchkit
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chineseresearchkit
researchkit
Research a "which should I use / which approach" question and land a recommendation. researchkit enumerates the credible options, investigates each against primary sources (official docs, source code, specs, first-party APIs, maintainer benchmarks, not blog hearsay), compares them on the constraints that actually matter, and picks one with a cited, dated rationale. It is decision research: the goal is a choice you can act on, not a neutral pile of notes.
It front-runs planning. Answer "Drizzle or Prisma?", "which queue for this workload?", "REST or gRPC here?" first, then turn the chosen direction into a plan. If you use plankit, researchkit is the step before it.
针对“我应该用哪个/哪种方案”的问题展开研究,并给出明确推荐。researchkit会列举可靠选项,对照一手来源(官方文档、源代码、规范、官方API、维护者发布的基准测试,而非博客传闻)逐一调研,基于真正关键的约束条件进行对比,并结合带有引用和日期的理由选出最优选项。这是决策研究:目标是给出可落地的选择,而非中立的笔记堆砌。
它是规划的前置步骤。先回答“选Drizzle还是Prisma?”“这个工作负载用哪个队列?”“这里用REST还是gRPC?”这类问题,再把选定的方向转化为规划。如果你使用plankit,researchkit就是它的前置步骤。
When this fires
触发场景
Any "which one / which approach" question where the answer isn't obvious and the stakes justify looking: "compare X and Y", "which should I use", "evaluate options for Z", "what's the best library/tool/service for …", "should we use X or Y", "research X before we build", "/researchkit".
Three things it deliberately is not:
- Not a neutral note-taker. It always ends in a recommendation. If there's genuinely nothing to compare (one credible option survives), it degrades to a cited explainer of that option, but it never dumps opinion-free notes as the deliverable.
- Not repo grounding. Reading this codebase to reuse existing patterns is planning work, not researchkit's job. researchkit investigates the external landscape: tools, libraries, services, approaches.
- Not implementation. researchkit reads and cites; it never builds. See Never build to find out. This is the boundary users most often see it cross, and crossing it is always a bug.
任何答案不明显、且值得深入研究的“选哪个/哪种方案”类问题:比如“对比X和Y”“我应该用哪个”“评估Z的可选方案”“……的最佳库/工具/服务是什么”“我们应该用X还是Y”“开发前先研究X”,或是输入/researchkit命令。
它明确不具备以下三种特性:
- 不是中立的笔记记录工具:最终一定会给出推荐。如果确实没有可对比的选项(只剩一个可靠选项),它会退化为对该选项的带引用说明文档,但绝不会仅交付无观点的笔记。
- 不针对代码库适配:阅读当前代码库以复用现有模式属于规划工作,并非researchkit的职责。researchkit调研的是外部领域:工具、库、服务、方案。
- 不负责实现:researchkit仅进行阅读和引用,绝不进行开发。详见绝不通过开发验证。这是用户最常看到它越界的边界,一旦越界就是bug。
Never build to find out
绝不通过开发验证
researchkit's deliverable is a cited argument, not a working artifact. It never writes, runs, or scaffolds code to test a hypothesis: no spike, no prototype, no benchmark harness, no throwaway repo, no to see what happens, not even a "quick" one. This holds however tempting the shortcut looks and however much it would sharpen the recommendation.
npm installThe failure mode is specific and worth naming, because it feels helpful from the inside: research turns up a claim the docs don't settle, building a small test looks like the fastest way to settle it, and twenty minutes later the user is reading about a prototype they never asked for. The user asked which option to pick. Handing back an implementation instead answers a question they didn't ask, spends their time and tokens without consent, and buries the comparison they wanted.
So: surface the hypotheses and the evidence, then stop and let the user choose. If a spike is genuinely the only way forward, say that in Open questions ("settling this needs a spike: <what it would measure>") and wait. Building one is a separate, explicitly requested job: prototypekit's when it's installed, and otherwise a throwaway the user asks for by name. It is never researchkit's, and it is not the build step's either, because that one needs a settled intent and ships production code.
researchkit的交付物是带有引用的论证,而非可运行的产物。它绝不编写、运行或搭建代码来验证假设:不做探索性开发(spike)、不做原型、不做基准测试工具、不创建临时代码库、不执行查看效果,哪怕是“快速”尝试也不行。无论捷径看起来多诱人、对推荐的帮助多大,这条规则都适用。
npm install这种失效模式很明确,值得强调——因为从内部看似乎是在提供帮助:研究中发现文档无法证实的说法,搭建一个小测试看起来是最快的验证方式,二十分钟后用户看到的却是他们从未要求的原型。用户问的是该选哪个选项,而交付实现回答的是他们没问的问题,未经许可就消耗了他们的时间和资源,还掩盖了他们想要的对比内容。
所以:列出假设和证据,然后停止并让用户选择。如果探索性开发确实是唯一的前进方式,就在“未解决问题”中说明(“验证这一点需要进行探索性开发:<需测量的内容>”)并等待。开发工作是单独的、需明确请求的任务:如果安装了prototypekit,就由它负责;否则需用户明确命名要求临时开发。这绝不是researchkit的工作,也不属于正式开发步骤,因为正式开发需要明确的目标并交付生产代码。
Procedure
流程
1. Frame the decision
1. 明确决策框架
Pin down what's actually being chosen and the constraints that decide it: the stack it plugs into, scale, budget, team familiarity, must-have features, hard constraints. If the ask is a bare one-liner, ask a couple of scoping questions first; the constraints are what turn a generic comparison into a real recommendation.
确定实际要选择的内容以及决定选择的约束条件:适配的技术栈、规模、预算、团队熟悉度、必备功能、硬性约束。如果用户的请求只是简单一句话,先问几个范围界定问题;约束条件是将通用对比转化为真实推荐的关键。
2. Find the credible options
2. 筛选可靠选项
Enumerate the real contenders, the ones a knowledgeable engineer would actually weigh. Don't pad the field with strawmen to look thorough. If only one option genuinely survives the constraints, say so and switch to explainer mode for that one.
列举真正的候选选项,也就是资深工程师实际会考虑的选项。不要为了显得全面而加入稻草人选项。如果只有一个选项真正符合约束条件,直接说明并切换到该选项的说明模式。
3. Investigate against primary sources
3. 基于一手来源调研
Use whatever web search/fetch tools the host exposes to read the authoritative origin for each load-bearing claim (official docs, the source, the spec, the first-party API, a maintainer-published benchmark) over secondary interpretation. For every source, note its version and date, and flag when the evidence may be stale (a benchmark from an old major version, a doc that predates a rewrite). Trace each claim back to where it's actually established.
No web access? Say so plainly, then give a best-effort comparison from knowledge with an explicit staleness warning, and never fabricate a citation. A missing source is stated as missing, not invented.
A claim the sources won't settle (a performance number for your exact workload, whether two libraries actually interop, whether an API does what its docs imply) is not a cue to go test it. Mark it unverified, carry it into Open questions, and let the reader decide whether it's worth a spike. prototypekit is where that spike belongs when it's installed. Unresolved is a legitimate research finding; a surprise prototype is not.
使用宿主提供的任何网页搜索/获取工具,读取每个关键论断的权威来源(官方文档、源代码、规范、官方API、维护者发布的基准测试),而非二手解读。对于每个来源,记录其版本和日期,并标记证据可能过时的情况(旧大版本的基准测试、重写前的文档)。将每个论断追溯到其实际确立的来源。
没有网页访问权限? 直接说明情况,然后基于现有知识给出尽力而为的对比,并明确标记过时警告,绝不编造引用。缺失的来源要如实说明,而非杜撰。
来源无法证实的论断(针对你特定工作负载的性能数据、两个库是否真的兼容、API是否如其文档所述工作)不是进行测试的信号。标记为未验证,纳入“未解决问题”,让读者决定是否值得进行探索性开发。如果安装了prototypekit,这类探索性开发就由它负责。未解决是合理的研究结果;意外的原型则不是。
4. Compare
4. 对比分析
Lay the options against the constraints that matter (from Frame the decision), not a generic feature grid. Each load-bearing claim in the comparison carries its source. Keep it to the axes that actually move the decision.
根据明确决策框架中的关键约束条件对选项进行对比,而非通用功能网格。对比中的每个关键论断都需附带来源。只保留真正影响决策的维度。
5. Recommend
5. 给出推荐
Pick one. Give a one-line why, and state the condition under which you'd pick differently ("Drizzle, for its lighter runtime and no codegen; choose Prisma if you need its migration tooling and admin GUI"). Give a recommendation the reader can accept, reject, or redirect, not a shrug.
选定一个选项。用一句话说明理由,并指出选择其他选项的条件(“选Drizzle,因为它运行时更轻量且无需代码生成;如果需要迁移工具和管理GUI,选择Prisma”)。给出读者可以接受、拒绝或调整的推荐,而非含糊其辞。
6. Hand off
6. 交接
Write this section in the procedural register: one instruction per sentence, active voice, present tense, no metaphor.
Print the recommendation, then offer the next steps without starting either:
- Save it? Offer to write the artifact to , using a short lowercase kebab-case subject slug and the artifact's ISO creation date (for example,
docs/research/research-<slug>-YYYY-MM-DD.md). Keep that date stable on later edits and update the same artifact in place. For a genuine same-day collision between distinct reports, make the slug more specific; only as a last resort insert a sequence immediately before the date (research-auth-providers-2026-07-23.md). Follow any established research/notes/RFC location or naming scheme the repository already uses. Default is inline-only; write the file only if the user wants a durable record.research-auth-providers-02-2026-07-23.md - Plan it? If the user works with plankit, offer to turn the chosen direction into a plan. Leftover uncertainties become the "open questions" that plankit and grillkit pick up. This nudge is optional, so don't assume plankit is installed.
此部分采用流程化表述:每句一个指令,主动语态,现在时,无比喻。
输出推荐内容,然后提供下一步选项但不主动执行:
- 保存结果? 提议将研究成果写入,其中slug为简短的小写短横线命名主题,YYYY-MM-DD为成果创建的ISO日期(例如
docs/research/research-<slug>-YYYY-MM-DD.md)。后续编辑时保持该日期不变,更新同一文件。如果同一天内有不同报告重名,可细化slug;万不得已时才在日期前插入序号(research-auth-providers-2026-07-23.md)。遵循代码库中已有的研究/笔记/RFC存储位置或命名规范。默认仅在会话内显示;仅当用户需要持久记录时才写入文件。research-auth-providers-02-2026-07-23.md - 生成规划? 如果用户使用plankit,提议将选定方向转化为规划。剩余的不确定性将成为plankit和grillkit处理的“未解决问题”。此提示为可选,不要默认假设已安装plankit。
Artifact format
成果格式
Print inline by default; write to a file only when asked. Either way, the shape:
markdown
undefined默认在会话内输出;仅当用户要求时才写入文件。无论哪种方式,格式如下:
markdown
undefinedResearch: <the question>
研究:<问题内容>
Recommendation
推荐
<the pick>: <one-line why>. Choose <alternative> instead if <condition>.
<选定选项>:<一句话理由>。若<条件>,则选择<替代选项>。
Options compared
对比选项
| Option | <constraint A> | <constraint B> | Fit |
|---|---|---|---|
| ... | ... | ... | ... |
| 选项 | <约束条件A> | <约束条件B> | 适配度 |
|---|---|---|---|
| ... | ... | ... | ... |
Evidence (primary sources)
证据(一手来源)
- <load-bearing claim> → <source URL> (<version/date>), ⚠ note if stale
- ...
- <关键论断> → <来源URL>(<版本/日期>),⚠ 若过时则标注
- ...
Open questions
未解决问题
Unresolved or thin spots to settle when planning, including any claim that would need a spike to settle, named but not acted on. Those hand off cleanly to prototypekit when it's installed.
Scale it to the decision. A two-way library pick is a short block; an architecture choice earns more. Drop any section that would be filler.规划阶段需解决的未明确或证据不足的问题,包括任何需要通过探索性开发验证的论断(仅列出不执行)。如果安装了prototypekit,这些问题将无缝交接给它处理。
根据决策规模调整内容。二选一的库选择只需简短内容;架构选择则需要更详细的内容。删除任何无实质内容的章节。Notes
注意事项
- Execution. Run synchronously in-session by default. Dispatch a background agent only if the host supports background agents and the user explicitly asks ("research this in the background"); otherwise degrade to sync silently, and never block on a capability that may not exist.
- Tools. deliberately withholds shell and file-editing tools, so a host that honors it can't run a spike even if the model talks itself into wanting one. Hosts that ignore the field are bound by Never build to find out instead. The prose is the real rule, the tool list is the backstop.
allowed-tools - Evidence over recall. The whole reason this beats asking the model directly is primary-source discipline. A recommendation with no traceable evidence is a guess wearing a table, so cite the load-bearing claims or mark them unverified.
- Freshness matters most in fast-moving areas. For tooling/libraries where the landscape shifts, the version/date of each source is part of the finding, not decoration.
- No filesystem or shell (e.g. a browser-based agent)? Printing inline is already the default, so nothing changes; just skip the save-to-file offer.
- 执行方式:默认在会话内同步运行。仅当宿主支持后台Agent 且用户明确要求(“在后台研究这个问题”)时,才调度后台Agent;否则自动降级为同步运行,绝不依赖可能不存在的功能。
- 工具限制:刻意屏蔽了shell和文件编辑工具,因此遵循此配置的宿主即使模型想要进行探索性开发也无法执行。忽略此配置的宿主需遵守绝不通过开发验证规则。文字规则是核心,工具列表是兜底。
allowed-tools - 证据优先于记忆:researchkit优于直接询问模型的核心原因是对一手来源的严谨性。无溯源证据的推荐只是披着表格的猜测,因此需为关键论断添加引用或标记为未验证。
- 时效性在快速变化领域至关重要:对于技术栈和库快速迭代的领域,每个来源的版本和日期是研究结果的一部分,而非装饰。
- 无文件系统或shell权限(例如基于浏览器的Agent)?默认已采用会话内输出,因此无需更改;只需跳过保存到文件的提议。