BaseHalf
全部文章

先把模糊问题摊开在画布上,再给问题起名字

一句含糊的抱怨还不是问题。先把碎片摊到 BaseHalf 画布上,用眼睛分组,只有该留下的证据才写入 upstream,再把起好名字的问题选给 Claude Code 或 Codex。

同事说「onboarding 感觉坏了」。你手里还没有一个值得拿去问 Claude Code 或 Codex 的问题。如果把这句话直接贴进 Agent Area,你会得到一段流畅的诊断,内容多半是模型对 onboarding 的既有想象。便宜的功夫在更前面:把你真正有的碎片倒上画布,看看哪些该坐在一起,然后才给问题起名字。

这是比较选项之前的那一步。你还没有选项,只有一团雾。

抱怨还不是问题

假设 Slack 里就这一句:onboarding 感觉坏了。周围其实已经有些边角料,但没有哪条算简报:

  • 有两个人提到,欢迎页过后就离开了。
  • 另有人说,接受了邀请,却始终看不到共享文件夹。
  • 一个猜测:欢迎页文案让人看不懂。
  • 另一个猜测:新工作区的默认权限写错了。
  • 一条支持回复:「我昨天加入的,项目列表是空的。」
  • 一段首次运行的日志摘录,再加上欢迎页截图。

这些并不指向同一个原因。把它们当成一个「onboarding 问题」,会掩盖你其实可能在看两种失败。

把碎片倒成卡片

用 BaseHalf 打开项目文件夹。建短笔记,别急着写成调查报告:

  • complaint.md:原话、是谁说的,此外什么都不写。
  • symptom-welcome-bounce.md:有人在第一屏之后离开。
  • symptom-empty-project-list.md:接受邀请后,共享文件夹一直不出现。
  • guess-welcome-copy.md:也许是文案不清楚。
  • guess-default-acl.md:也许新成员没有拿到默认项目的访问权。
  • evidence-support-quote.md:支持回复原句,照实抄上。
  • evidence-firstrun.log:日志摘录自成一个文件。
  • screenshot-welcome.png:截图,作为普通文件待在画布上。
  • constraints.md:这周动不了的东西(不重写欢迎流程、不加新的身份提供方)。
  • whose-problem.md:新成员的问题,不是已经有工作区的管理员的问题。

每张卡片短到能挪。目的是看见零件,不是先写完调查。

像白板上的纸条,或自己用手画的思维导图那样拖开。原话放上面。症状一区,猜测一区,证据靠近它可能解释的症状,约束和「这是谁的问题」放到边上。然后把真正像的东西聚在一起。首次使用时的困惑(欢迎页跳出、文案猜测、欢迎页截图、首次运行日志)会漂向一边。更靠后的权限失败(空项目列表、ACL 猜测、支持回复)会漂向另一边。

这套摆法是给你看的。卡片位置和尺寸写在 .bh/ 下,通常不进 git,所以你可以一边改分组,一边不用把一个直觉变成合并冲突。

BaseHalf 画布上按相关性靠近摆放的碎片卡片。

簇不是连接

板子一旦看起来像图,三种动作很容易混在一起。

动作它是什么它用来干什么
空间分组卡片坐在哪、有多大,一般记在 .bh/ 下让眼睛发现:两个症状也许不是同一个问题
Upstream 连接文件里的纯文本列表:Markdown frontmatter 的 upstream:,或 .bh/mirror/.../upstream.yaml该留下、并流入另一则笔记的上下文
选中你为这次提问高亮的卡片或段落此刻 Claude Code 或 Codex 在 Agent Area 里该看到的东西

视觉组织是座位。它不是语义关系,不是自动生成的思维导图,也不是画布替你建好的知识图谱。BaseHalf 不会给卡片自动分簇、给分组贴标签,或替你找出真正的问题。你自己挪,直到形状出现。

只有 A 确实该持续喂给 B 的时候才连线。比如,一旦有了 question-empty-project-list.md,如果支持回复和那截日志下周还该跟着这个问题走,就把 evidence-support-quote.md 和 evidence-firstrun.log 连进去。不要因为卡片碰巧坐在同一个角落,就给它们统统连线。坐在一起是直觉。一条线是在声称:上下文从这里流到那里。

先给问题起名字,再问那一簇

挪过几轮,雾常常会裂开。「onboarding 感觉坏了」底下至少藏着两个问得出口的问题:

  1. 为什么有人在欢迎页就离开?
  2. 为什么新成员接受了邀请,项目列表仍是空的?

这是不同的问法,证据也不同。挑那簇已经清楚到能起名字的。写一则终于成问题的短笔记,比如 question-empty-project-list.md:「新成员加入后看不到共享文件夹。邀请和默认 ACL 路径上,什么会导致空的项目列表?」

如果支持回复和 ACL 猜测应该一直贴着这个问题,现在就画上这些 upstream 连接。然后选中这则问题卡,加上属于它的证据和约束,不要把欢迎页那一簇也选上,也不要捎上剩下的猜测。选中内容进入 Agent Area,Claude Code 或 Codex 看到的是你为这次提问挑中的那一块。板上其余部分可以继续给你看,而不必倒进 prompt。

选中已经成问题的那一簇,让 Agent Area 只看到这一块。

有了回答之后留什么

留下让下一小时更好想的东西:起好名字的问题、真正起作用的证据,也许还有一段短结论,写在同一则笔记里或旁边。如果它们该继续同行,再用 upstream 连上。

另一簇先搁着,等到你准备好给它起名字。没站得住的猜测可以删,也可以不理。别因为板子看起来整齐,就把每一个空间分组升级成永久连接。整齐堆着的剩余直觉,仍然是剩余直觉,只不过被写进了文件。

边界

画布不会替你发现真正的问题。它只是让碎片足够可见,好让你别再把它们当成同一件事。碎片写错了(支持回复说的是另一个产品表面,或日志来自一次成功的运行),你会给一个整齐的错误问题起好名字,模型也会流畅地回答它。空间分组是一种看的办法;它不是分析,也不是自动聚类出来的真相地图。

先把雾摊开。用眼睛分组。只有该留下的上下文才写进 upstream。给问题起名字,选中那一簇,然后再问。