EOS:把工程纪律变成可以运行的系统
EOS(Engineering Operating System)不是项目管理模板,也不是一组漂亮的提示词。它是一套放在仓库里的、本地优先的工程工作流系统:让人、工具与 Agent 在同一套可验证的状态、证据和门禁上工作。
它的真正问题不是“怎样让 Agent 写更多代码”,而是:当决策由概率性系统参与时,我们如何知道它为什么可以继续,以及它什么时候必须停下来?
一台没有云端依赖的工程机器
EOS 的核心 CLI 位于 .github/eos/eos.mjs,零外部依赖、跨平台、可离线运行。它不要求团队先购买一套 SaaS,也不把治理权交给一个远端仪表板。
仓库里的 .eos/ 保存项目声明、工作流配置、门禁定义、证据、交接包、release manifest 和 append-only ledger;.github/ 则承载 agents、prompts、instructions、skills、hooks 与 EOS CLI。工程规则因此跟着代码走,能够被复制、审查、分支和恢复。
它真正管理的是三种状态
EOS 不用一个含糊的“项目状态”覆盖所有事情,而是把状态拆成三个 scope:
- Product baseline:项目是否完成发现、需求、PRD、UX 与架构基线;
- Change / story:一项功能、缺陷修复、Spike、热修复或治理变更走到哪里;
- Release:这一组已验证的变更是否可以作为一个有明确边界的发布候选。
.eos/local/active-work.json 只保存当前机器的关注范围,不保存 gate 结果,也不拥有任何权威性。真正的状态由仓库中的 artifacts、evidence、ledger 与 workflow policy 推导出来,因此不会因为某个人忘记更新 prose summary 就悄悄漂移。
十一道门,不是十一句口号
标准工作流从 G0 activation 开始,经过 discovery、requirements、PRD、UX、architecture、story、verification、release、telemetry,最后进入 iteration。每个 gate 都有机器可执行的检查;不适用必须被记录为 NOT_APPLICABLE,而不是静默跳过。
证据还会被检查新鲜度和绑定关系:代码树、配置、测试结果与 release manifest 变化后,旧证据不能继续冒充当前结论。next 给出唯一的推荐下一步,resume 恢复当前阻塞点,check 执行并记录门禁,transition 拒绝不合法的状态跃迁。
EOS 还把异常路径纳入模型:SPIKE 默认不可合并;HOTFIX 可以在有记录、会过期的 waiver 下暂时绕过部分门禁,但 verification 永远不可豁免;waiver 必须有风险负责人、补偿控制和期限。
四道本地防线
- 规则层:十类 instructions 按技术栈与工作场景分层,避免一条巨大 prompt 统治所有文件;
- Agent 与路由层:agent-map 将动作交给明确的 primary agent 或 prompt;
- Hooks 与验证器层:危险操作阻断、秘密扫描、配置校验、文档一致性与项目门禁在本地执行;
- 证据与账本层:gate evidence、transition event、release manifest 与 handoff 形成可追溯链条。
这四层不是为了制造流程感,而是为了让“我记得已经做过了”不再等同于“系统可以证明已经做过了”。
确定性软件与 Agentic 软件,不能用同一把尺子
EOS 明确分开两条路径:
- 对传统 SaaS,重点是 API / REST、RBAC、多租户、数据库状态、可靠性与可观测性;
- 对 Agentic / LLM 产品,重点增加 prompt-as-artifact、工具白名单、评测集、G-EVAL、模型成本与 token 追踪、认知重试和 LLM observability。
这不是把 Agent 当成更聪明的 CRUD。EOS 承认它的概率性,并用评测、证据和边界约束它,而不是用一句“模型应该理解”掩盖不确定性。
provider adapter 的克制
EOS 可以通过 provider adapter 向外部权威询问,例如 GitHub governance 或 attestation,但外部系统不是本地状态的主人。适配器的意义是补充证据,而不是把工程判断黑箱化。
同样,EOS 的能力边界也写在文档里:它能提供本地规则、命令、状态推导、门禁和交接上下文;它不能替团队完成组织级 branch protection、CODEOWNERS、审批基线或真实生产权限配置。哪些事情没有被验证,必须诚实地留在“没有被验证”里。
为什么它属于绯金书房
绯金书房保存的不只是完成品,也保存我们如何让复杂事情重新获得秩序。EOS 是 niaodian 目前最完整的一次回答:
不让 Agent 的流畅掩盖证据的缺席;不让流程的完整掩盖判断的缺席;不让一次成功掩盖系统无法恢复的事实。
它是一套可以复制到下一个项目的工程骨架,也是一种我们希望长期坚持的工作伦理。
从哪里开始
如果你想实际使用 EOS,可以从公开仓库的 README、Quickstart 和 User Manual 开始。模板支持固定 release tag 复用,也可以通过 node .github/eos/eos.mjs next 进入日常循环。
访问 niaodian/eos GitHub 仓库
EOS: turning engineering discipline into a runnable system
EOS, the Engineering Operating System, is neither a project-management template nor a collection of attractive prompts. It is a local-first engineering workflow system kept in the repository, so people, tools, and Agents can work from the same verifiable state, evidence, and gates.
Its real question is not “How do we make an Agent write more code?” It is: when a probabilistic system participates in a decision, how do we know why it may continue, and when it must stop?
An engineering machine without a cloud dependency
The core CLI lives in .github/eos/eos.mjs: zero external dependencies, cross-platform, and able to run offline. A team does not need to buy a SaaS product first or hand governance to a remote dashboard.
The .eos/ directory keeps project declarations, workflow configuration, gate definitions, evidence, handoff packages, release manifests, and an append-only ledger. The .github/ directory carries agents, prompts, instructions, skills, hooks, and the EOS CLI. Rules travel with the code and can be copied, reviewed, branched, and recovered.
Three states, not one vague status
EOS separates three scopes:
- Product baseline: whether discovery, requirements, PRD, UX, and architecture have been established;
- Change / story: where a feature, defect fix, spike, hotfix, or governance change stands;
- Release: whether a verified group of changes can become a release candidate with a clear boundary.
The real state is derived from artifacts, evidence, the ledger, and workflow policy. It cannot quietly drift because someone forgot to update a prose summary.
Eleven gates, not eleven slogans
The standard workflow begins with G0 activation and passes through discovery, requirements, PRD, UX, architecture, story, verification, release, telemetry, and iteration. Each gate has a machine-executable check. If a gate does not apply, that must be recorded as NOT_APPLICABLE, never silently skipped.
Evidence is checked for freshness and binding. When the tree, configuration, tests, or release manifest changes, old evidence cannot continue to impersonate a current conclusion. next recommends one next step, resume restores the current blocker, check records a gate, and transition rejects an illegal state change.
Four local defenses
- Rules: instructions are layered by stack and work context instead of being one enormous prompt;
- Agents and routing: agent-map sends each action to a clear primary agent or prompt;
- Hooks and validators: dangerous operations, secrets, configuration, documentation, and project gates are checked locally;
- Evidence and ledger: gate evidence, transition events, release manifests, and handoffs form a traceable chain.
The purpose is not process theatre. It is to stop “I remember doing it” from being confused with “the system can prove it happened.”
Deterministic software and Agentic software need different measures
For conventional SaaS, EOS focuses on APIs, RBAC, multi-tenancy, database state, reliability, and observability. For Agentic and LLM products, it adds prompt-as-artifact, tool allowlists, evaluation sets, G-EVAL, model-cost and token tracking, cognitive retry, and LLM observability.
EOS does not treat an Agent as a clever CRUD layer. It accepts probability and constrains it with evaluation, evidence, and boundaries—not with the wish that a model should simply understand.
Why it belongs in the Everlight House
The Everlight House preserves not only finished things, but how complexity was given back its order. EOS is niaodian’s fullest answer so far:
Do not let an Agent’s fluency hide missing evidence; do not let a complete process hide missing judgment; do not let one success hide the fact that a system cannot recover.
It is an engineering skeleton that can be copied into the next project, and a work ethic we hope to keep for the long term.
Where to begin
Start with the public repository’s README, Quickstart, and User Manual. Templates support reuse by fixed release tag, and node .github/eos/eos.mjs next enters the daily loop.
Visit the niaodian/eos GitHub repository