# Lark Sediment

> 把当前会话里值得长期保留、跨会话/跨人有用的经验（bug 根因与决定性证据、决策与取舍理由、可复用的排查/验证方法、踩坑与环境结论）沉淀进飞书云文档知识库「字节vc」。当用户说「沉淀」「沉淀一下」「沉淀到飞书/云文档」「记录到飞书」「归档到知识库」「同步到 lark 文档」，或一段排查/决策收尾时触发。技能会自动在知识库中定位最合适的位置、先去重再决定追加或新建子文档，自主选定后直接写入、事后汇报（不打断用户等确认）。凡本会话有实质工作节点（编码、排查、验证、CR、有结论的调研），B 线四问叙事语料（发现/解决/反思/总结，转正/述职取材）必产：harness 需求场景写入需求子文档，非 harness 会话写入台账；MR 合入、需求或排查收尾时也应主动触发本技能。不用于本地 memory / 仓库 docs（那是本地层），不用于纯代码提交。

- Skill: `ceilf6/lark-sediment` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ceilf6/lark-sediment`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ceilf6/lark-sediment/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ceilf6 (https://skillmd.com/u/ceilf6)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ceilf6/lark-sediment

---


# lark-sediment

把一次会话里「代码 / commit / git 历史里看不出来，但下次或别人还会用到」的经验，沉淀进飞书知识库根「字节vc」。

定位：**跨会话 / 跨人 / 跨机的共享层**。和本地 `~/.claude/.../memory/`（本机个人快速召回）、仓库 `docs/`（项目稳定知识）、`reflect`（技能自我改进）**互补，不重复**——同一条经验不要同时往多处灌。反向检索用 `lark-recall`。

## 触发方式

- 用户说：沉淀 / 沉淀一下 / 沉淀到飞书 / 记录到云文档 / 归档到知识库 / 同步到 lark
- 一段较完整的 bug 排查、方案决策、真机/环境验证、MR 合入或任务收尾后，**应主动建议沉淀**——B 线素材尤其依赖这一步，漏一次收尾就少一段答辩语料

## 配置：知识库根

- `ROOT_NODE_TOKEN` = `L0GCwiCS6iK3aWkJPRycmWWtnrd`（标题「字节vc」）
- `ROOT_SPACE_ID` = `7658115519924686035`
- 顶层分类（可按需新增，延续编号习惯）：`00-规范！` / `01-业务` / `02-需求`（内含 `02-1-测试、在线验证`）/ `公司平台能力` / `环境配置` / `名词` / `AI报销` / `editor 业务串讲`

> 改根：编辑本节。`lark-recall` 有同一份配置，改根需两处同步。
> lark-cli 的机械用法（鉴权、字段、风险级别）见 `lark-cli skills read lark-wiki` 和 `lark-cli skills read lark-doc`；本技能只管「沉淀什么 / 放哪 / 怎么去重」。

## 两条沉淀线

本技能有两条并行、互不影响的线；harness 需求场景下（`meta.wiki_url` 可取）两线产物**同批追加到同一篇需求子文档**（02-需求下 harness 建的那篇）。

- **A 线：技术知识**（即下文第 1–7 步，规则不变）——precision 优先，答不清门槛两问就不沉淀。跨需求通用经验按第 3/4 步定位、去重后落知识库分类，仍是 A 线自身行为。
- **B 线：叙事语料**（转正/述职/面试的产出语料，字段对齐 report-writer-bytedance 的 WorkEvent schema）——completeness 优先，**不依赖 harness 场景**。触发判据：本会话存在任一**实质工作节点**——方案取舍、编码/修复、排查定位、验证（真机/上线/数据）、CR 攻防、以结论收尾的调研。有 → 必产一条四问叙事节，不做价值筛选，唯一标准是如实覆盖本轮关键节点；拿不准 → 也产（漏产 = 答辩缺素材，错产只是多一小节）。仅纯问答/闲聊、无任何结论的中途会话可跳过，且第 7 步汇报必须写「B 线跳过 + 一句理由」。B 线不走第 3 步定位、不走第 4 步去重，落点按序判定：
  1. harness 需求上下文（`meta.wiki_url` 可取）→ 该需求子文档；增量对照 `sediment.md` 台账与文档内已有叙事节，只写上次收尾之后的新节点；
  2. 其余一切 → `02-需求` 下《叙事语料台账（非 harness 会话）》（doc `B9pCdai4cowE2vxkH8IcKEyEn1e`，node `LzeHw6cuSil75dkcIPMcpJ1Enhb`）追加一节，节标题「日期 · 主题」；追加前先看文档内已有节，同一工作不重复记。

B 线模板（追加为需求子文档的一节）：

```markdown
## 叙事语料（YYYY-MM-DD · 第 N 次收尾）
- **重点工作线**：本节素材归属的答辩重点工作线名（候选清单与拍板状态见《Byteintern 转正答辩》文档「重点工作线候选」节；流程/协作类素材不属任何技术线时写「线外」）
- **发现问题**：需求来源与要解决的问题（1-2 句）
- **解决问题**：2–4 个关键节点，每个写「决策 + 为什么 + 如何验证 + 量化影响（有数据必带）」（方案取舍、CR 攻防都算节点）；节点属 AI&agent 应用实例或有可公开 github 锚点时句尾标「〔agent实例〕」「〔github〕」——答辩材料官方鼓励项，材料期靠标记检索
- **反思问题**：踩坑、书面不采纳的理由、重来会怎么做；末尾加一句个人成长——本轮从不会到会了什么（材料三问之三，无则如实写「无」）
- **总结问题**：可 SOP 化的方法（有则写触发场景+步骤；无则一句话结果）
- **评分维度证据**：固定六行，每行「标签：本轮最强的一条事实（可回链）」，标签依次为 任务完成度 / 任务完成质量 / 自我驱动性 / 发展潜力 / 串讲素材（系统理解与对负责方向的思考）/ 字节范（命中的字节范条目名＋事实）；某标签本轮无事实就如实写「无」，不编造
```

B 线写法红线：价值恰在决策过程，保留它——但只留关键节点、不写流水账；禁空话反思；事实可回链（MR、CR 轮次、commit）。

**B 线行文强制走 human-writing skill 全量规则，动笔前先加载**。这批语料最终要在答辩现场被人念出来，AI 腔等于素材作废。模板的字段名、加粗标签与其后的冒号属结构，human-writing 的禁令只管字段值里的行文。四问各节按人说话的方式写：给动作、数字、时间、原话与后果，不给姿势；判断直接从正面下，不用「不是A而是B」及其变形抬价。

> 评分标签的出处与档位判据（IMP 八档四维模型、答辩四大能力项、串讲 For 转正硬项）沉淀在知识库「公司平台能力」下的《Byteintern 转正答辩：评分链条、评分标准与文档索引》（doc `O6hIdmX8moYJ8YxSeUlcaY6tnJ2`，node `ITrLwEsXbiXtkakPs3ccEexxnYd`），内含官方政策文档索引；标签体系若要改，先对照该文档再动。HR 下发的答辩材料官方框架（2026-08-28：材料三问「做了什么/价值在哪/成长了什么」＋四段结构＋鼓励 github/agent 实例＋答辩前 48h 表单提交、飞书文档 L3+）与重点工作线候选清单也在该文档——模板里「重点工作线 / 〔agent实例〕〔github〕 / 字节范」四个采集标记即对齐它。

## 第 1 步：筛出值得沉淀的（准入门槛）

只沉淀同时满足「代码/commit 里看不出来」+「下次或别人还会用到」的：

- **Bug 根因与决定性证据**——尤其现象与根因不一致、易被误判的
- **决策与取舍理由**——为什么选 A 不选 B（写 WHY，不写 WHAT/HOW）
- **可复用的排查/验证方法**——如真机 adb/CDP 探针、某接口的判别手法
- **踩坑 / 前置条件 / 环境结论**

排除：易逝的过程对话；纯代码实现（代码即真相）；本会话已沉淀过的；只对本机个人成立的（→ 走本地 memory）。

**门槛（两问都要能答）**：① 没有它，下次会犯什么具体错？② 能省下一次完整排查（>10min）或避免多大的错？答不清 → 不沉淀。

## 第 2 步：整理成一篇 / 一节

结构：一句话结论 → 背景与目标 → 现象 → 证据 → 根因/结论 → 决策理由 → 待办与相关链接。

- 写 WHY 与不变量，删实现复述和过程流水账。
- 相对日期转绝对日期（如「今天」「上周」写成 YYYY-MM-DD）。
- **A 线行文**：检索型文档保留冒号、破折号与结构化清单，不套 human-writing 的散文形态；反 AI 腔四条照旧生效——材料关（列不出具体材料就写短，不把同一件事换四种说法灌字数）、禁翻案腔、禁名词化与黑话（赋能/抓手/闭环/拉通/底层逻辑/降本增效）、禁洞察路标（「值得注意的是」「更微妙的是」）。
- 先落到 scratchpad 的 `.md`，便于 `--content -` 管道写入与复核；写完跑 `python3 ~/.claude/skills/human-writing/scripts/check_prose.py <稿件.md>`。**两线同一判读口径**：摘要行的翻案句 / 翻案腔变形 / 同构排比 / 名词化 / 黑话 / 硬停词 / 模型路标 / 抒情词 / 洞察路标要全 0；冒号与破折号逐处判断，字段名、配置项、代码与 URL 放行，「核心是：」这类提示性用法改掉。命中项若落在「引用禁令清单本身」的行上（稿子在讲这些词被禁），是自指误报，不改。脚本装在别处或 python3 缺失时跳过，不阻塞沉淀。

## 第 3 步：定位（懒式自顶向下，不要全量遍历）

1. 列根 `L0GC` 的直接子节点，判断内容属于哪个顶层分类；
2. 顺该分支逐层下钻到最贴合的父节点（`has_child=false` 即叶子，可在其下建子文档）；
3. 分类实在不匹配 → 在合适层级新建分类节点（延续 `NN-名称` 编号习惯）。

```bash
lark-cli wiki +node-list --space-id 7658115519924686035 \
  --parent-node-token <parent_node_token> \
  --jq '.data.nodes[] | "\(.node_token)  has_child=\(.has_child)  \(.title)"'
# 根节点用 --parent-node-token L0GCwiCS6iK3aWkJPRycmWWtnrd
```

## 第 4 步：去重（先搜后写）

```bash
lark-cli docs +search --query "<主题关键词>"
```

- 命中同主题文档 → 优先**追加一节**到该文档，而不是新建；
- 没有相近文档 → 在第 3 步选定的父节点下**新建子文档**。

## 第 5 步：自主决策，不打断用户

**不要停下来等用户确认**。对三件事自行选出最合适的方案并直接进入写入：**目标位置**（第 3 步定位结果里最贴合的父节点）、**追加还是新建**（按第 4 步去重结论）、**内容**（第 2 步整理稿）。拿不准时选更保守的一边（宁可新建小文档、不硬塞进不贴合的旧文档；宁可放上层分类、不新造分类），然后在第 7 步把决策连同理由一并汇报，由用户事后纠偏——写错位置可移动节点，写错内容可编辑或用 `docs +history-revert` 回滚，都不是不可逆操作。

仍需停下来问的仅两种情况：内容涉及疑似敏感信息（个人隐私、密钥、未公开事故定级），或第 1 步准入门槛本身答不清。

## 第 6 步：写入

```bash
# 新建子文档
lark-cli wiki +node-create --space-id 7658115519924686035 \
  --parent-node-token <parent_node_token> --obj-type docx --title "<标题>"
# → 记下返回的 node_token / obj_token / url

# 写入或追加内容（obj_token 或 node_token 均可作 --doc）
cat <content>.md | lark-cli docs +update --doc <doc_token> \
  --command append --doc-format markdown --content -

# 校验
lark-cli docs +fetch --doc <doc_token> --doc-format markdown --jq '.data.document.content' | head
```

**禁止删除既有内容**：任何情况下不得让文档已有文字消失（`overwrite`、`block_delete`、以及会吞掉原文的 `str_replace` 都不行）。结论过时了就两条路：① 就地打删除线——用 `str_replace` 把原句替换为 `<del>原句</del>（指向更正的一句话）`，原文必须完整保留在删除线内；② 文末 `append` 更正块。沉淀文档要保留决策演进痕迹，被推翻的结论划掉但可考。

## 第 7 步：回链与汇报

- 给用户汇报：写到了哪（父节点 → 文档标题）、新建还是追加、为何选这里（一句话）、文档 URL——这是事后纠偏的入口，不可省略；
- B 线单独一行：叙事节标题与所在需求子文档（无需求上下文时写「B 线未产出」）；
- 在相关文档之间补「关联」链接（新文档指向旧的排查/需求文档，反之亦可）；
- 可选：在本地 `~/.claude/projects/<proj>/memory/` 加一条指针（标题 + 一句 hook + 飞书 URL），让本地 memory 指向这条共享沉淀。

## 备注

- 一次只沉淀本会话**新增且真正过门槛**的内容，别把整段对话倒进去。
- 不 impersonate 真实的人/组织，不建可能误导的记录。
- 若一次涉及多主题，拆成多篇/多节分别定位，别硬塞进一处。

