Files
company-kb/CONVENTIONS.md
yangqianqian 84f7950589 Initial commit: company-kb framework
- 完整的知识库框架(P0-P5 路线图)
- 12篇治理文档
- 工具脚本(kb-init.sh, kb-lint-fm.py, feishu-sync.py, kb-bot)
- 7个 Claude 命令
- 示例项目和测试项目(wanniu-l1)
- 契约文件(meta/kb-contract.yaml)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-16 18:24:39 +08:00

7.2 KiB
Executable File
Raw Permalink Blame History

CONVENTIONS · 录入宪法

本文是知识库的录入规范。type 集、字段必填矩阵、enum 取值的唯一机器可读真相源是 meta/kb-contract.yaml——本文只做人读镜像与规约说明,不复述契约细节。任何冲突以契约文件为准。 铁律:能让 AI 自动做的绝不让人做丢资料是唯一强人工入口AI 永不擅自有损操作AI 永不编造,无据即报 Gap。 规则归属与修改(谁能改本规范/契约/命令、怎么改)见 docs/12-治理与规则维护.md:物料全员录入,规则改动全员可提 PR、合入需 review。


1. Frontmatter Schema人读镜像

每个知识页顶部是一段 YAML frontmatter。字段的必填性由 meta/kb-contract.yaml 的必填矩阵判定,kb-lint-fm.py 运行时读契约校验。下表为人读镜像:

字段 必填 类型 说明 / AI 自动化
type 唯一硬必填 string 取值见 kb-contract.yaml 已激活 type缺失只报不猜
status (默认 seed enum seed/developing/mature;新建即 seedAI 可自动填默认
created date 内容产生时间AI 从源推导或填今天
ingested date 汇入时间;AI 自动 = 今天
source 外部摄入页 enum 飞书文档/飞书群/微信群/本地/NAS/会议/人工沉淀/AI编译;采集器自动填
source_link 外部摄入页 string 原始链接/绝对路径;采集器自动填
title 建议 string AI 自动 = H1 或文件名回填(实际免手写)
description 可选 string ≤120 字摘要,供导航
tags 可选 list kebab-case
timestamp 可选 date 信息最后有效期(判断过时)
author 可选 string 内容产生人
related 可选 list [[slug]] wikilink 强边
resource metric string 底层资源稳定链接

派生必填规则写进契约lint 据此判定):

  • type ∈ {doc, decision, conversation}source 为外部渠道 → source + source_link 升为必填。
  • projects/*/_index.mdtype: project)豁免溯源字段。
  • 顶层 README.md/CONVENTIONS.md/docs/*/assets/* 免 frontmatter仓库脚手架非知识页
  • 人工必填压到最少:绝大多数场景人只需拍板 type(采集器常可推断),其余由 CC 自动补齐。

注意:不设 updated 字段——最后修改时间查 git log

完整示例projects/_example/decisions/ 下一页):

---
type: decision
title: "客户 A 报价采用阶梯定价而非一口价"
description: 因客户预算分期到位,改用阶梯定价锁定长期合作,牺牲首单毛利。
tags: [报价, 客户-A, 定价策略]
timestamp: 2026-06-20
source: 飞书群
source_link: https://company.feishu.cn/im/xxxx?msg=99231
author: 张三
created: 2026-06-20
ingested: 2026-06-24
status: mature
related:
  - "[[project-clientA]]"
---

# 客户 A 报价采用阶梯定价而非一口价

## 背景 / 决策 / 参与人·时间 / 溯源
原始讨论见 source_link。

2. Type 体系(引用契约)

唯一真相源 = meta/kb-contract.yaml。核心集封闭;扩展 = 改契约 + 一次 PR轻量登记

核心 4 typeDay-1 激活,首个闭环即用):project / decision / conversation / doc。 预留 type登记后按需激活entity / concept / question / runbook / metric

lint 白名单 = 契约中「已激活 type」的并集激活即放行。定义与目录归属见 docs/04-架构.md 与契约文件本身,此处不复述。

扩展流程:新增 type = 在 kb-contract.yamltypes 数组登记(含 active/reserved 标记 + 必填规则)→ 建对应目录 → 一次 PR。禁止在脚本里硬编码 type。


3. 命名与路径规约

  • 项目代号英文或拼音kebab-case禁纯中文目录名CC 会把中文编码为 - 导致 ID 碰撞)。例:projects/clientA/projects/power-bid/
  • 文件名kebab-case语义化无空格。例stepped-pricing-decision.md
  • 项目门户:每个项目目录必有 _index.mdtype: project)作为导航锚点。
  • 附件:原始二进制/图片放各项目 assets/,免 frontmatter。
  • 目录布局必须与 docs/04-架构.md 一致,kb-init.sh 据此建骨架。

  • [[slug]] 建立页间强边,写入 frontmatter 的 related 字段或正文。
  • slug 用目标文件名(不含 .md)或项目代号,例 [[project-clientA]]
  • 强边related:语义强关联(同一决策链、同一客户、上下游依赖)。
  • 正文内引用其他页用行内 [[slug]]Obsidian 图谱据此渲染。
  • AI 录入时自动建 wikilink:识别页面提及的已有实体/项目/决策并挂链。

5. 摄入规则

  1. Delta Check 去重:录入前对内容算 hash比对 meta/ingest-manifest.json 台账,已存在则跳过或提示合并,不重复落盘。
  2. 落原文:外部文档原文进 projects/*/docs/(或 assets/frontmatter 记 source + source_link
  3. 抽关键发现AI 从原文抽要点,写成合规知识页(decision/conversation 等)。
  4. frontmatter 自动补齐AI 自动填 titleH1/文件名回填)、ingested(今天)、statusseed)、可推导的 created/source
  5. 矛盾不静默覆盖:新内容与已有页冲突时,MVP 用简单标注挂起(正文加矛盾标记),交人拍板;不做自动 status 降级状态机
  6. 凭据不入库feishu-pull.py 等采集器的凭据走环境变量。
  7. MVP 一次录入产出结构化 markdown,不做 8-15 页 wiki 编译P4 才编译)。

6. Lint 规则

tools/kb-lint-fm.pyPyYAML 解析 frontmattermeta/kb-contract.yaml 判定,退出码非 0 供 CC 判定。检查项:

检查项 级别 AI 处置
type 缺失或不在已激活白名单 阻断 报错,不猜
派生必填字段缺失(如外部页缺 source_link 阻断 报错;可推导则自动补
status 不在 enum 阻断 报错;缺失自动填 seed
source 不在 enum 阻断 报错
title 缺失 提示 自动 = H1/文件名回填
死链(related 指向不存在页) 提示 建 stub 或标注
孤立页(无任何入链/出链) 提示 提议加 wikilink
过时(timestamp 超期) 提示 交人/AI 判断

安全项 AI 自动修:补可推导字段、建 stub、加 wikilink。 有损项挂起交人:删页、解决矛盾、合并、改 type。

维护保持轻量提示,不做周度 cron 强制门禁;靠 Git PR review + CC 提示 + /kb-check 按需运行。


附:写页 checklist人只需第 1 条)

  1. 丢资料 + 一句说明 + 对 AI 抽的要点点头(唯一强人工动作)。
  2. 填 frontmatter → AI 自动补齐。
  3. 建 wikilink → AI 自动挂链。
  4. 跑 lint/kb-check 或提交前 CC 自动跑。