| name | lark-sediment |
| description | 把当前会话里值得长期保留、跨会话/跨人有用的经验(bug 根因与决定性证据、决策与取舍理由、可复用的排查/验证方法、踩坑与环境结论)沉淀进飞书云文档知识库「字节vc」。当用户说「沉淀」「沉淀一下」「沉淀到飞书/云文档」「记录到飞书」「归档到知识库」「同步到 lark 文档」,或一段排查/决策收尾时触发。技能会自动在知识库中定位最合适的位置、先去重再决定追加或新建子文档,自主选定后直接写入、事后汇报(不打断用户等确认)。凡本会话有实质工作节点(编码、排查、验证、CR、有结论的调研),B 线四问叙事语料(发现/解决/反思/总结,转正/述职取材)必产:harness 需求场景写入需求子文档,非 harness 会话写入台账;MR 合入、需求或排查收尾时也应主动触发本技能。不用于本地 memory / 仓库 docs(那是本地层),不用于纯代码提交。 |
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 步去重,落点按序判定:
- harness 需求上下文(
meta.wiki_url 可取)→ 该需求子文档;增量对照 sediment.md 台账与文档内已有叙事节,只写上次收尾之后的新节点;
- 其余一切 →
02-需求 下《叙事语料台账(非 harness 会话)》(doc B9pCdai4cowE2vxkH8IcKEyEn1e,node LzeHw6cuSil75dkcIPMcpJ1Enhb)追加一节,节标题「日期 · 主题」;追加前先看文档内已有节,同一工作不重复记。
B 线模板(追加为需求子文档的一节):
## 叙事语料(YYYY-MM-DD · 第 N 次收尾)
- **发现问题**:需求来源与要解决的问题(1-2 句)
- **解决问题**:2–4 个关键节点,每个写「决策 + 为什么 + 如何验证 + 量化影响(有数据必带)」(方案取舍、CR 攻防都算节点)
- **反思问题**:踩坑、书面不采纳的理由、重来会怎么做
- **总结问题**:可 SOP 化的方法(有则写触发场景+步骤;无则一句话结果)
- **评分维度证据**:固定五行,每行「标签:本轮最强的一条事实(可回链)」,标签依次为 任务完成度 / 任务完成质量 / 自我驱动性 / 发展潜力 / 串讲素材(系统理解与对负责方向的思考);某标签本轮无事实就如实写「无」,不编造
B 线写法红线:价值恰在决策过程,保留它——但只留关键节点、不写流水账;禁空话反思;事实可回链(MR、CR 轮次、commit)。
B 线行文强制走 human-writing skill 全量规则,动笔前先加载。这批语料最终要在答辩现场被人念出来,AI 腔等于素材作废。模板的字段名、加粗标签与其后的冒号属结构,human-writing 的禁令只管字段值里的行文。四问各节按人说话的方式写:给动作、数字、时间、原话与后果,不给姿势;判断直接从正面下,不用「不是A而是B」及其变形抬价。
评分标签的出处与档位判据(IMP 八档四维模型、答辩四大能力项、串讲 For 转正硬项)沉淀在知识库「公司平台能力」下的《Byteintern 转正答辩:评分链条、评分标准与文档索引》(doc O6hIdmX8moYJ8YxSeUlcaY6tnJ2,node ITrLwEsXbiXtkakPs3ccEexxnYd),内含官方政策文档索引;标签体系若要改,先对照该文档再动。
第 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 步:定位(懒式自顶向下,不要全量遍历)
- 列根
L0GC 的直接子节点,判断内容属于哪个顶层分类;
- 顺该分支逐层下钻到最贴合的父节点(
has_child=false 即叶子,可在其下建子文档);
- 分类实在不匹配 → 在合适层级新建分类节点(延续
NN-名称 编号习惯)。
lark-cli wiki +node-list --space-id 7658115519924686035 \
--parent-node-token <parent_node_token> \
--jq '.data.nodes[] | "\(.node_token) has_child=\(.has_child) \(.title)"'
第 4 步:去重(先搜后写)
lark-cli docs +search --query "<主题关键词>"
- 命中同主题文档 → 优先追加一节到该文档,而不是新建;
- 没有相近文档 → 在第 3 步选定的父节点下新建子文档。
第 5 步:自主决策,不打断用户
不要停下来等用户确认。对三件事自行选出最合适的方案并直接进入写入:目标位置(第 3 步定位结果里最贴合的父节点)、追加还是新建(按第 4 步去重结论)、内容(第 2 步整理稿)。拿不准时选更保守的一边(宁可新建小文档、不硬塞进不贴合的旧文档;宁可放上层分类、不新造分类),然后在第 7 步把决策连同理由一并汇报,由用户事后纠偏——写错位置可移动节点,写错内容可编辑或用 docs +history-revert 回滚,都不是不可逆操作。
仍需停下来问的仅两种情况:内容涉及疑似敏感信息(个人隐私、密钥、未公开事故定级),或第 1 步准入门槛本身答不清。
第 6 步:写入
lark-cli wiki +node-create --space-id 7658115519924686035 \
--parent-node-token <parent_node_token> --obj-type docx --title "<标题>"
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 真实的人/组织,不建可能误导的记录。
- 若一次涉及多主题,拆成多篇/多节分别定位,别硬塞进一处。