docstrata

agent
Security Audit
Warn
Health Warn
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Pass
  • Code scan — Scanned 4 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

为任意项目沉淀四层结构文档(wiki · 需求 · 知识 · 开发结论),让人和 coding agent 各取所需。自动探索上下文,只问真实缺口,兼容 Claude Code、Cursor、Codex、OpenCode、Gemini CLI 等 coding agent 工具

README.md

docstrata

License Agent Skills Claude Code

English | 中文

按知识性质分层,为任意项目生成和维护文档。Agent Skill,兼容 Claude Code、Cursor 等主流工具。


定位

  • 分层生成:prd(产品主张)/ requirements(需求决策)/ knowledge(领域材料)/ wiki(业务全景)/ dev(开发结论)
  • 开箱即用:一条命令,工具自行探索项目,只在信息有缺口时提问
  • 增量更新:已有文档则 diff 更新,保留人工修改,不覆盖
  • 收缩维护:compact 把随迭代膨胀的层收回有界,长期记忆不腐化
  • 兼容主流:Claude Code、Cursor、Gemini CLI、Codex、OpenCode 等 Agent Skills 标准工具

背景

人与 agent 结对编程的综合效率依然最高。 工具的意义是提速这个小闭环:让人说清需求、做出决策,agent 专注执行,各司其职。但现有工具各有短板:

  • spec 框架(speckit、BMAD、Superpower 等):把需求分析、任务规划、代码生成全部编排进来,追求一键全自动。框架本身过重,理解和上手成本高;大型任务跑半小时出来的不是想要的结果,沉没成本大;小型任务准备一堆文档,负担大于收益。
  • plan 模式:处理"这次任务怎么做",执行规划会话内有效。细化过多会约束 agent 的发挥,且决策留在会话里,下次从头来过。
  • grill-with-docs(Matt Pocock):对照已有领域模型逐一审问计划,澄清术语、记录决策,跨会话持久有效。但信息管理散,没有区分谁看什么、什么性质的内容放哪里。

docstrata 在 grill-with-docs 的基础上,把信息按性质分层管理,让文档对人、对 agent 都有独立的阅读和检索价值。框架只做该做的事:澄清需求、记录决策,其他交给模型。

为什么要分层

项目文档服务三类读者:开发者、业务管理侧、coding agent。三者对文档的形式需求完全不同,却往往被混进同一份 README,或根本没有对应的地方存放:

问题 docstrata 的解法
产品定位/路线无处沉淀,决策时无依据 prd — 对内产品主张,grilling 卡住时消歧
技术文档面向开发者,业务侧缺系统全景 wiki — 所有人都能读的业务全景
需求意图散落,设计决策缺留痕 requirements — 固化需求共识与架构决策
领域材料分散,缺统一检索 knowledge — 整理原始材料为可检索索引
实践经验没有沉淀,coding agent 读不到 dev + INDEX.md — 记录推断与结论,提供统一入口
文档靠人工维护,随迭代失真过期 自动探索上下文,缺口才提问;增量更新,保留人工修改
长期项目文档只增不减、越积越臃肿 compact — 手动收缩,先压再拆、归档不删、硬事实保真

这四类知识的信息性质不同,混在一起写会相互污染。典型的漂移场景:requirements 和 dev 混写后,新的 agent 会话会把已确定的架构决策当作开放问题重新讨论,无谓地重跑 grill,甚至推翻之前的结论。分层解决的正是这个问题。

CoALA(Sumers et al., Princeton/CMU, TMLR 2024)研究 AI agent 长期记忆架构,把长期记忆分成三类,为四层划分提供了理论依据:

CoALA 长期记忆 对应层 本质
Episodic requirements 事件与决策的留痕
Semantic wiki · knowledge 领域知识
Procedural dev 操作经验

prd 层是这之上的前瞻产品意图(要做成什么),不属 CoALA 记忆三类,是当下主张——区别于 requirements 记录的已发生事实。

INDEX.md 是各层的检索入口,服务 coding agent 的 working memory 装填,本身不是那一层。

和 AGENTS.md 的区别

AGENTS.md / CLAUDE.md 的定位是行为约束:告诉 agent 每次该怎么干活,每次会话全量加载,每次都消耗 context token。

docstrata 产出的是知识层:通过 INDEX.md 按需加载,用到哪层读哪层,不用的不付 token。两者不是替代关系:行为约束仍然需要,docstrata 做的是行为约束之外的知识沉淀。把所有内容塞进 AGENTS.md 既难维护,也意味着每次会话都为用不到的内容付出 context 代价。


怎么运作

每层走同一个五步循环:

步骤 做什么
EXPLORE 读项目多源信息:代码结构、现有文档、git 历史、开发日志
MAP 把信息映射到该层的信息维度,标置信度(high / medium / low / missing)
GRILL 只对 low / missing 维度提问;一次一个,附推荐答案,代码能回答的不问人
GENERATE 按固定骨架生成;已有文档则增量更新,保留人工修改
STAMP 更新 last-verified 时间戳,输出信息健康诊断

GRILL 的核心逻辑:每层预先声明一份信息维度集合(completeness contract),缺口决定问什么:

问题 = 契约维度 − 已探索到的信息

有完整需求文档和开发日志的项目,GRILL 往往整层跳过。提问模式来自 grill-with-docs(Matt Pocock)。

生成时内建信息批判,处理多源信息的质量问题:

  • 来源排序:运行代码 > 测试 > git 历史 > 文档;多源矛盾不静默选一个
  • 认知标注:事实与推断分开标,标注格式 [事实] / [推断] / [待确认]
  • LLM 偏向:遇到非标实现,记录项目实际行为,不"纠正"成标准做法

长期迭代下层文档会膨胀,compact 手动收缩(先压:丢 code/git 可复原项 + 去重 + 按主题归并;再拆;归档不删、硬事实逐字保真),是生成之外的维护操作。

生成的文件固定放在 docs/,随 git 提交:

docs/
├── prd.md                # 产品主张(前瞻 intent,对内)
├── wiki.md
├── requirements.md
├── knowledge/
│   ├── knowledge.md      # 整理后的索引
│   └── raw/              # 原始材料(不改动)
├── dev.md
└── INDEX.md              # coding agent 的检索入口

安装

npx skills add linhai0872/docstrata

兼容支持 Agent Skills 标准 的工具:Claude Code、Cursor、Gemini CLI、Codex、OpenCode 等。


使用

/docstrata prd             # 产品主张 → docs/prd.md
/docstrata requirements    # 需求共识 → docs/requirements.md
/docstrata knowledge       # 业务材料索引 → docs/knowledge/knowledge.md
/docstrata wiki            # 业务全景 → docs/wiki.md
/docstrata dev             # 开发结论 → docs/dev.md
/docstrata index           # coding agent 检索入口 → docs/INDEX.md
/docstrata compact         # 收缩膨胀的层(可带层名,如 /docstrata compact dev)
/docstrata all             # 按依赖顺序全部生成

支持任意项目类型,工具自行判断,无需声明。/docstrata all 会跳过无实质价值的层:没有业务材料就跳过 knowledge,功能一目了然的小项目 requirements 也可以不单独成文。


评测

改了 skill 之后,怎么知道文档质量有没有真的变好?靠主观感觉容易自欺欺人。eval/ 让 LLM 替你读生成的文档、按固定标准打分——改前改后各跑一次,对比分数,是真改进还是噪声一目了然。

流程:改某层生成规范 → 对测试项目重新生成文档 → 打分 → 与上一轮对比。

打分分三档,按需选用:

需要什么 用途
结构门 无,纯 Python 检查骨架有没有缺段落,秒出结果,适合 CI
单 LLM 打分 一个 API key 一个 LLM 读文档评分,日常迭代用
多 LLM 合议 多个 API key 多家 LLM 独立打分取中位数,结果更可靠,发版前用

打分标准:文档覆不覆盖该层的核心维度、有没有把推断误标成事实、受众是否适配等,共 5 项,每项 0–3 分,归一化后 ≥ 0.7 算通过。

docstrata 用自身文档作为测试案例——先用工具生成,再用 eval 打分,自己验自己。详见 eval/README.md


设计文档

本项目的文档用自身的分层结构写成:

文档 内容
产品主张 docstrata 自身的定位、价值原则、功能范围与 roadmap
需求共识与设计决策 全部架构决策,含 CoALA 理论映射
业务全景 一页读懂 docstrata
开发推断与实践结论 实测迭代记录、被否定的方案
Completeness Contract 方法论 GRILL 机制的第一性原理
信息批判准则 来源排序、矛盾处理、事实/推断标注
评测闭环 skill 迭代后验证质量的开发工具(结构门 / 单 judge / ensemble 三档)

Reviews (0)

No results found