Dicklesworthstone/franken_node
GitHub: Dicklesworthstone/franken_node
一个内置信任控制、迁移自动驾驶和确定性事件重放能力的JavaScript/TypeScript运行时平台,用于高安全性扩展生态的治理与运维。
Stars: 14 | Forks: 2
# franken_node





`franken_node` 是一个用于扩展密集型系统的信任原生 (trust-native) JavaScript/TypeScript 运行时平台;它结合了 Node/Bun 的迁移速度与确定性安全控制和可重放操作。
```
curl -fsSL https://raw.githubusercontent.com/Dicklesworthstone/franken_node/main/install.sh | bash
```
## TL;DR (内容提要)
### 问题所在
Node/Bun 让快速扩展开发变得简单,但生产环境安全和事件处理大多依赖外部工具和策略拼凑。
### 解决方案
`franken_node` 将信任、迁移、兼容性和事件重放作为一等运行时行为。您保留了 JS/TS 的开发速度,并为高风险扩展生态系统获得了确定性的控制面。
### 为什么使用 franken_node?
| 能力 | 您将获得什么 |
|---|---|
| 兼容性预言机 | 跨 Node、Bun 和 franken_node 的持续锁步检查,附带差异回执 |
| 迁移自动驾驶 | 审计 -> 重写 -> 验证 -> 推出流水线,附带置信度评分 |
| 信任卡 (Trust cards) | 每个扩展的来源、行为风险、撤销状态和策略姿态 |
| 撤销优先执行 | 高风险操作依赖于最新的信任状态,而非尽力而为的检查 |
| 确定性事件重放 | 高严重性事件通过签名包重放,支持反事实模拟 |
| 集群隔离控制 | 快速的遏制与释放工作流,附带收敛遥测 |
| 验证器工具包 | 用于安全和基准声明的独立验证 |
## 快速示例
```
# 1) 安装
curl -fsSL https://raw.githubusercontent.com/Dicklesworthstone/franken_node/main/install.sh | bash
# 2) 初始化 policy 和 workspace 元数据
franken-node init --profile balanced
# 3) 审计 Node/Bun 代码库
franken-node migrate audit ./my-app --format json --out migration-audit.json
# 4) 应用推荐的 rewrite 并生成 rollback artifact
franken-node migrate rewrite ./my-app --apply --emit-rollback ./rollback-plan.json
# 5) 针对 Node 和 Bun 进行 lockstep 行为验证
franken-node verify lockstep ./my-app --runtimes node,bun,franken-node
# 6) 检查 extension 信任状态
franken-node trust card npm:@example/plugin
# 7) 在严格的 policy 控制下运行
franken-node run ./my-app --policy strict
# 8) 重放 high-severity incident bundle
franken-node incident replay --bundle ./incidents/INC-2026-0007.fnbundle
```
## 章程
参阅 [产品章程](docs/PRODUCT_CHARTER.md) 了解范围边界、治理模型和决策规则。章程定义了 franken_node 是什么、不是什么,以及方向变更如何获得授权。
## 设计哲学
1. 兼容性是切入点,而非终点。
平台首先追求实际的迁移结果,然后通过信任原生行为超越基准运行时。
2. 安全控制必须是可操作的,而非装饰性的。
策略门控、撤销检查和隔离路径是具有可衡量行为的运行时默认设置。
3. 声明需要证据。
基准、弹性和安全声明映射到可复现的工件和验证器工作流。
4. 确定性驱动事件质量。
重放和取证依赖于稳定的事件排序、稳定的 schema 和明确的控制契约。
5. 性能优化必须保留语义。
只有在提供一致性证据且尾部延迟影响有限的情况下,才接受优化。
## 对比
| 领域 | franken_node | Node.js | Bun |
|---|---|---|---|
| 扩展信任卡 | 内置 | 外部工具 | 外部工具 |
| 撤销感知执行门控 | 内置 | 非原生 | 非原生 |
| 确定性事件重放包 | 内置 | 非原生 | 非原生 |
| 兼容性差异回执 | 内置 | 不适用 | 不适用 |
| 迁移自动驾驶流水线 | 内置 | 外部脚本 | 外部脚本 |
| 集群隔离控制平面 | 内置 | 外部平台 | 外部平台 |
| 用于公开声明的验证器 SDK | 内置 | 非原生 | 非原生 |
## 安装
### 选项 1:一行安装器
```
curl -fsSL https://raw.githubusercontent.com/Dicklesworthstone/franken_node/main/install.sh | bash
```
### 选项 2:Cargo
```
cargo install frankenengine-node
```
### 选项 3:Homebrew
```
brew tap dicklesworthstone/tap
brew install franken-node
```
### 选项 4:从源码构建
```
git clone https://github.com/Dicklesworthstone/franken_node.git
cd franken_node
cargo build --release -p frankenengine-node
./target/release/franken-node --version
```
## 快速开始
1. 创建默认配置:
```
franken-node init --profile balanced
```
2. 审计现有项目:
```
franken-node migrate audit ./my-app --out migration-audit.json
```
3. 在推出前验证兼容性:
```
franken-node verify lockstep ./my-app --runtimes node,bun,franken-node
```
4. 以策略治理模式运行:
```
franken-node run ./my-app --policy strict
```
5. 检查信任状态和事件:
```
franken-node trust list --risk high
franken-node incident list --severity high
```
## 命令参考
| 命令 | 用途 | 示例 |
|---|---|---|
| `franken-node init` | 引导配置、策略配置文件和工作区元数据 | `franken-node init --profile strict` |
| `franken-node run` | 在策略治理的运行时控制下运行应用 | `franken-node run ./my-app --policy balanced` |
| `franken-node migrate audit` | 清点迁移风险并生成发现报告 | `franken-node migrate audit ./my-app --format json` |
| `franken-node migrate rewrite` | 应用迁移转换并生成回滚工件 | `franken-node migrate rewrite ./my-app --apply` |
| `franken-node migrate validate` | 通过一致性检查验证转换后的项目 | `franken-node migrate validate ./my-app` |
| `franken-node verify lockstep` | 比较不同运行时的行为 | `franken-node verify lockstep ./my-app --runtimes node,bun,franken-node` |
| `franken-node trust card` | 显示单个扩展的信任配置文件 | `franken-node trust card npm:@example/plugin` |
| `franken-node trust list` | 根据风险/状态过滤器列出扩展 | `franken-node trust list --risk high --revoked false` |
| `franken-node trust revoke` | 撤销工件或发布者信任 | `franken-node trust revoke npm:@example/plugin@2.4.1` |
| `franken-node trust quarantine` | 在集群范围内隔离可疑工件 | `franken-node trust quarantine --artifact sha256:...` |
| `franken-node fleet status` | 显示跨节点的策略和隔离状态 | `franken-node fleet status --zone prod-us-east` |
| `franken-node fleet release` | 解除隔离/撤销控制并生成回执 | `franken-node fleet release --incident INC-2026-0007` |
| `franken-node incident bundle` | 导出确定性事件包 | `franken-node incident bundle --id INC-2026-0007` |
| `franken-node incident replay` | 在本地重放事件时间线 | `franken-node incident replay --bundle ./INC-2026-0007.fnbundle` |
| `franken-node incident counterfactual` | 模拟替代策略操作 | `franken-node incident counterfactual --bundle ./INC-2026-0007.fnbundle --policy strict` |
| `franken-node registry publish` | 发布签名扩展工件 | `franken-node registry publish ./dist/plugin.fnext` |
| `franken-node registry search` | 使用信任过滤器查询扩展注册表 | `franken-node registry search auth --min-assurance 3` |
| `franken-node bench run` | 运行基准测试套件并生成签名报告 | `franken-node bench run --scenario secure-extension-heavy` |
| `franken-node doctor` | 诊断环境和策略设置(可选含实时策略激活遥测) | `franken-node doctor --verbose --policy-activation-input ./fixtures/policy_activation/doctor_policy_activation_pass.json` |
## 配置
示例 `franken_node.toml`:
```
# Runtime 配置文件:strict | balanced | legacy-risky
profile = "balanced"
[compatibility]
# 用于迁移和 runtime dispatch 的 API compatibility 模式
mode = "balanced"
# Divergence receipt 始终记录在 production 配置文件中
emit_divergence_receipts = true
[migration]
# 启用自动 rewrite 建议
autofix = true
# 在 rollout 阶段转换前要求 lockstep 验证
require_lockstep_validation = true
[trust]
# 按 action class 划分的 Revocation freshness 要求
risky_requires_fresh_revocation = true
dangerous_requires_fresh_revocation = true
# Quarantine 默认值
quarantine_on_high_risk = true
[replay]
# 持久化 high-severity replay artifacts
persist_high_severity = true
# Deterministic bundle 导出格式版本
bundle_version = "v1"
[registry]
# 强制执行 signature 和 provenance gate
require_signatures = true
require_provenance = true
minimum_assurance_level = 3
[fleet]
# 用于 quarantine/release 操作的 Fleet convergence 超时
convergence_timeout_seconds = 120
[observability]
# 用于自动化的 Stable metrics namespace
namespace = "franken_node"
emit_structured_audit_events = true
```
## 架构
```
+--------------------------------------+
| franken_node |
| compatibility + migration + trust UX |
+-------------------+------------------+
|
+-----------------+-----------------+
| |
+---------v---------+ +---------v---------+
| asupersync | | frankentui |
| control semantics | | operator surfaces |
+---------+---------+ +-------------------+
|
+---------------+-------------------+
| |
+--v----------------+ +-----------v-----------+
| franken_engine | | fastapi_rust |
| runtime internals | | control-plane API |
+--+----------------+ +-----------+-----------+
| |
+---------------+-------------------+
|
+------v-------+
| frankensqlite|
| audit/replay |
+--------------+
```
## 故障排除
| 症状 | 原因 | 修复方法 |
|---|---|---|
| `lockstep validation failed` | 跨运行时的行为差异 | 运行 `franken-node verify lockstep --emit-fixtures` 并检查生成的差异固件 |
| `revocation frontier stale` | 本地信任状态早于策略要求 | 运行 `franken-node trust sync --force` 并重试高风险操作 |
| `artifact rejected: missing attestation` | 注册表策略要求来源证明 | 使用来源元数据重建工件并在发布前重新签名 |
| `quarantine not converged` | 一个或多个节点未及时应用控制操作 | 运行 `franken-node fleet status --verbose`,然后执行 `franken-node fleet reconcile` |
| `incident replay nondeterministic` | 包组件丢失或损坏 | 使用 `franken-node incident bundle --verify` 重新导出,并确保签名包完整性通过 |
## 限制
- 如果策略明确启用,旧版模式可能会运行不安全的兼容性行为。
- 严格的信任配置可能会阻止来源元数据较弱的扩展。
- 迁移重写首先针对高价值模式;小众框架宏可能需要手动编辑。
- 集群范围的控制依赖于健康的控制平面连接和正确的时钟同步。
- 反事实模拟取决于事件窗口内可用遥测数据的完整性。
## 常见问题
### 它是 Node 或 Bun 的直接替代品吗?
对于许多高价值工作负载,是的。对于边缘兼容性情况,在生产推出之前使用锁步验证和差异回执。
### franken_node 需要完全重写现有项目吗?
不需要。迁移自动驾驶旨在进行增量审计和转换,然后验证每个推出步骤。
### 我可以在没有集中式集群控制的情况下运行 franken_node 吗?
可以。本地模式适用于单节点使用。集群功能在配置控制平面服务时激活。
### 确定性重放包括什么?
重放包包括时间线事件、策略决策、信任工件以及重现高严重性事件所需的引用。
### 这对供应链风险有何帮助?
该平台将签名工件、来源检查、撤销新鲜度门控、信任卡和隔离控制作为运行时默认设置结合在一起。
### 我必须使用严格模式吗?
不。大多数团队使用 `balanced`,高保障环境使用 `strict`,`legacy-risky` 仅用于受限的迁移窗口。
## 关于贡献
*关于贡献:* 请不要误解,但我不接受任何项目的对外贡献。我根本没有精力去审查任何东西,而且这东西上挂的是我的名字,我要对它造成的任何问题负责;因此,从我的角度来看,风险回报是高度不对称的。我还得担心其他的“利益相关者”,这对于我主要为自己免费制作的工具来说似乎是不明智的。欢迎提交问题,如果你想说明提议的修复方案,甚至可以提交 PR,但请知道我不会直接合并它们。相反,我会通过 `gh` 让 Claude 或 Codex 审查提交,并独立决定是否以及如何解决它们。特别欢迎错误报告。如果这冒犯了您,我很抱歉,但我想避免浪费时间并伤害感情。我理解这与寻求社区贡献的流行开源精神不一致,但这是我能以这种速度前进并保持理智的唯一方法。
## 许可证
MIT。见 `LICENSE`。标签:Bun兼容, DevSecOps, DNS 反向解析, JavaScript运行时, Lerna, Node.js替代, Python安全, Rust引擎, TypeScript平台, 上游代理, 事件重放, 事故响应, 代码溯源, 兼容性测试, 反向仿真, 可视化界面, 安全沙箱, 审计追踪, 扩展安全管理, 数据可视化, 版本锁定, 特权管理, 确定性执行, 端点防护, 策略执行, 行为监控, 迁移自动化, 运行时保护, 通知系统, 通知系统, 隔离环境, 零信任架构