Skip to content

docs(c29): add chapter 32 — Buddy 人格 - #64

Merged
luyao618 merged 8 commits into
mainfrom
agent/cc-dev/yao-128-c29
May 27, 2026
Merged

docs(c29): add chapter 32 — Buddy 人格#64
luyao618 merged 8 commits into
mainfrom
agent/cc-dev/yao-128-c29

Conversation

@luyao618

Copy link
Copy Markdown
Owner

摘要

新章 C29 落地 docs/32-Buddy-人格.md,剖析 buddy/ 子系统六个文件与七处接入点。源码冻结在 290fdc9481a70612bc5823aa4ed225c52c52aad3

§0.1.1 (YAO-99) 说明

issue 描述里要求 frontmatter 加 新增章节: yes,但 spec §0.1.1 (YAO-99) 已显式禁止章节文件出现任何 frontmatter,新章身份改由 scripts/check-code-ratio.tsNEW_CHAPTER_FILES 路径集判定(C-5 强制)。本 PR 遵循 spec,无 frontmatter;该路径已在 §9.3.1 与 NEW_CHAPTER_FILES 登记(PR #56 已合)。

§0.5.1.1 风格双亲实证段

双亲 1:docs/03-状态管理.md

段 A(开篇钩子,260 字):
Claude Code 面临一个独特的状态管理难题:它既是一个 React 应用,又不完全是。终端 UI 用 Ink(React for CLI)渲染,组件需要响应式的状态更新。但核心业务逻辑 —— API 调用、工具执行、Agent 编排 —— 运行在 React 树之外。一次工具调用的结果需要同时:1) 更新 React 组件(显示在终端 UI 上)2) 被非 React 的 query.ts 对话循环读取 3) 被 Agent 子系统使用(可能运行在隔离的上下文中)。如果用 Redux/Zustand 这类库?太重了。React 内置的 useState/useReducer?无法从 React 树外部访问。模块级全局变量?无法触发 React 重渲染。Claude Code 的答案是:三层状态架构 + 一个 35 行的自研 Store

段 B("为什么 X 值得单独一篇?" 标题 + 设问—矛盾—答案"四段律",整 200+ 字):

为什么状态管理值得单独一篇? … 在深入代码之前,先建立全局认知。Claude Code 的状态分布在三个层次,各有明确的职责边界… (mermaid + 表格交替)。

借鉴:开篇"为什么…值得单独一篇?"标题 + "三问一答"结构 + 加粗段落收束答案 + 后续按编号章节展开。

双亲 2:docs/22-设计系统.md

段 A(情境钩子,220 字):
当你用 console.log 输出几行文字时,不需要设计系统。但当你的终端应用有流式输出、多工具并行进度条、权限确认对话框、Tab 切换面板、模糊搜索选择器、dark/light 主题切换时,情况就完全不同了。Claude Code 面对的正是这样的复杂度。它的 UI 不是静态的信息打印,而是一个高度动态的交互界面。在第 21 篇中我们看到了 forked Ink 框架如何在终端中运行 React;本篇则关注在这个框架之上,团队如何构建了一套可复用的组件化设计系统

段 B(三问展开,210 字):
这套设计系统回答三个核心问题:1) 颜色从哪来? — 6 套主题 × 80+ 语义化颜色 token 的主题系统 2) 组件怎么组合? — 15 个设计系统组件 + 1 个颜色工具函数的职责划分 3) 工具 UI 怎么统一? — Tool 接口中 10 个 render/查询方法构成的 UI 协议。

借鉴:场景对比开局 + 把核心问题列成 2–5 条编号清单 + 每节末尾用粗体短语收束 + 全章按"先全景再分块"组织。

本章 §为什么 Buddy 值得单独一篇? 用同样的"五问—粗体加粗收束—编号 §一..§六 展开"骨架。

CI 自检(本地)

结果
C-3 code-ratio 21.8% (OK,阈 25%)
C-4 section-titles 9 标题全合规
C-5 no-frontmatter OK
C-6 no-spec-jargon OK
no-fuzzy OK
check-source-commits OK(冻结 290fdc94)

验证

  • bun scripts/check-code-ratio.ts --files docs/32-Buddy-人格.md → 21.8%
  • bun scripts/lint-section-titles.ts --files docs/32-Buddy-人格.md → 9 个标题全部合规
  • bun scripts/check-no-frontmatter-in-chapters.ts --files docs/32-Buddy-人格.md → OK
  • bun scripts/lint-no-spec-jargon-in-prose.ts --files docs/32-Buddy-人格.md → OK
  • bun scripts/lint-no-fuzzy-quantifiers.ts --files docs/32-Buddy-人格.md → OK
  • bun scripts/check-source-commits.ts --files docs/32-Buddy-人格.md → 全部指向 290fdc94

注意

只提 PR,不要 merge。等 OC-R 评审。

Yao Lu and others added 8 commits May 27, 2026 11:08
New chapter docs/32-Buddy-人格.md covering the buddy/ subsystem
(companion, types, sprites, CompanionSprite, prompt,
useBuddyNotification) plus its seven integration points in REPL /
PromptInput / config / attachments / messages / commands.

Source frozen at 290fdc9481a70612bc5823aa4ed225c52c52aad3.
Per spec §0.1.1 (YAO-99) no frontmatter; new-chapter identity by
NEW_CHAPTER_FILES path-set in scripts/check-code-ratio.ts.

CI gates locally:
- C-3 code-ratio: 21.8%
- C-4 section-titles: 9 headings OK
- C-5 no-frontmatter: OK
- C-6 no-spec-jargon: OK
- no-fuzzy: OK
- check-source-commits: OK (frozen at 290fdc94)

Co-authored-by: multica-agent <github@multica.ai>
- Align Companion data model with buddy/types.ts:100-124
  (eye not eyes, hat:Hat not nullable, add shiny, name+personality)
- Rewrite stat algorithm per buddy/companion.ts:53-81
  (RARITY_FLOOR=5/15/25/35/50, peak/dump/normal three branches,
  while-retry to avoid collision)
- Fix hat selection: common→'none' hard rule, non-common picks from
  HATS (which includes 'none'); no 18% probability
- Fix sprite hat rendering: only replace line 0 when blank; no unshift
  when occupied by smoke/antenna
- Rewrite prompt section: getCompanionIntroAttachment returns
  Attachment[] not null; dedup checks by name not type;
  companionIntroText includes by-name addressing exception
- Fix teaser/live gating: local date not UTC, April 2026 with
  getDate()<=7; no companionMuted check; notification is rainbow /buddy

Co-authored-by: multica-agent <github@multica.ai>
…R round 2

Co-authored-by: multica-agent <github@multica.ai>
…er OC-R round 3

Co-authored-by: multica-agent <github@multica.ai>
…r OC-R round 4

Co-authored-by: multica-agent <github@multica.ai>
- 章节内 H1 标题从「Buddy 人格」改为「Buddy 宠物」(按尧哥反馈)
- 整体重写为更通俗易懂、深入浅出的叙述:
  - 开篇五个问题清单口语化、加场景化引子
  - 每节先抛问题/场景再上代码,避免直接进结构罗列
  - 拆开 §三 中过密的源码引用,散文 + 行内 code 并重
  - §四/§六 加入「为什么」式连接句,弱化「四道闸」纯列表感
  - §五 prompt 节叙事化,强调 system prompt 与 attachment 体系的差别
- 保留全部源码事实点与 file:line 锚点不变
- 文件名维持 docs/32-Buddy-人格.md(spec §9.3.1 已登记,不动)

CI 本地全绿:C-3 22.9% / C-4 / no-fuzzy / no-spec-jargon / no-frontmatter / source-commits 通过。

Co-authored-by: multica-agent <github@multica.ai>
按尧哥反馈把章节文件名也对齐到「宠物」。同步更新 scripts/check-code-ratio.ts
NEW_CHAPTER_FILES 与 V2-REVISION-SPEC.md §9.3.1 章节索引中的 path。

Co-authored-by: multica-agent <github@multica.ai>
@luyao618
luyao618 merged commit 0ca16f6 into main May 27, 2026
1 check passed
@luyao618
luyao618 deleted the agent/cc-dev/yao-128-c29 branch June 3, 2026 08:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant