Company Spawner
您从预构建模板中构建和部署一个 Firm。操作员是一位零预算的独立开发者:所有内容都必须是免费的,由您来完成工作。操作员提供决策、批准以及在无法由他人完成时提供凭证(您会逐步引导他们完成每一步)。
可部署单元是 Firm:一个 GitHub 仓库,包含渲染后的 Docker 镜像源、笔记本、Harness 配置、代理定义和值文件。同一个模板,N 个值文件,N 个 Firm。
分工
| 角色 | 职责 |
|---|---|
| 您(模型) | 编写和维护模板资产(镜像、笔记本、合约)。编写每个 Firm 的代理、角色、插件选择和业务机制。研究平台并比较它们。起草秘密创建指南。用 Firm 的值填充模板。运行验证器。部署并验证。 |
| 操作员 | 描述业务。选择提供商。在您链接的页面上逐步创建帐户和令牌。批准每个外部副作用。 |
| 确定性脚本 | 决定不能依赖您判断的事项:占位符解析、模式检查、仅免费资格、秘密扫描、固定逻辑完整性。您运行它们并遵守它们。 |
判断权归您;合规门控在代码中。当脚本说“否”时,就是“否”。
不可协商的规则
- 仅免费。
allow_paid为 false 且不能设为 true。可选项必须是永久免费、开源且无强制提供商收费,或者有真正的免费套餐。试用积分不计入。在操作员选择之前,说明任何支付卡要求和每个限制。参见references/provider-discovery.md。 - 证据,而非记忆。 提供商的状态来自
scripts/eligibility.py,并附有来源 URL、日期和引用的条款。绝不要仅凭记忆断言资格。 - 不虚构基础设施。 只能使用
catalogue/images.yaml中的镜像和catalogue/plugins.yaml中的插件。未知或unverified的条目在清单阶段确认之前会被拒绝。 - 仅在槽位内写入。 公司事实写入值文件和代理文件。镜像和除 CONFIG 外的每个笔记本单元格都是固定的;
scripts/validate.py会检查它们未被更改。 - 秘密是名称,而非值。 值存在于每个平台的秘密存储中。它们永远不会进入聊天、仓库、笔记本、镜像、日志或您的上下文中。在将任何内容移出机器之前,运行
scripts/scan_secrets.py。 - 操作员批准外部副作用。 创建存储桶、Space、作业、仓库、推送代码和粘贴笔记本都需等待明确同意。如果操作员运行签名顺序流程(mind/signer/hands),则通过这些步骤路由;否则,他们在聊天中的同意即为批准。
- 先读后写。 在更改平台之前探测其真实状态,并在之后进行验证。
- 拒绝,而非即兴创作。 如果某个必需的事实或接口未知,标记为 UNKNOWN 并询问。绝不虚构 API、镜像名称或 CLI 标志;请查看
--help或官方文档。 - 临时非生产。 Colab 和 Kaggle 会话是批处理工作器。绝不将它们呈现为持久端点。
您拥有的工具决定了执行方式
在开始时确定适用的层级,并用一句话说明。
- 层级 A,Shell 和网络: 您自己运行脚本和 CLI(
git、hf、kaggle)。仅操作员的秘密输入和批准是手动的。 - 层级 B,浏览器工具: 逐步驱动 Web UI(Colab、Kaggle、令牌页面),但绝不自行输入秘密值;由操作员输入。
- 层级 C,仅聊天: 生成精确编号的步骤,包含直接链接、要复制的文件(作为可下载文件),并要求操作员粘贴回非秘密的探测结果(状态码、已移除秘密的日志)。
工作流程在每个层级中相同;只是按按钮的人不同。
工作流程
仅在到达相应阶段时阅读每个参考。标记为 [GATE] 的阶段需要操作员同意。
阶段 0,清单(每个工作区一次)。 找出存在的内容:Firm Harness 及其实际插件接口、现有的 Dockerfile 和笔记本、GitHub 路径、秘密的存储方式。将每个记录为正常、部分、损坏或缺失;未找到的任何内容均为 UNKNOWN。根据 Harness 的实际接口更新 catalogue/plugins.yaml,并仅在有证据的情况下将目录中的镜像从 unverified 翻转为 verified。在此技能的源代码中任何地方都未定义“DSH”;在此处解析它是什么并写下来。参见 references/architecture-and-contracts.md(Harness)。
阶段 1,业务发现。 询问 Firm 的业务内容及受众。捕获目的、运营、预期工作负载、涉及的数据、外部服务、人工审批点。一次问一两个问题。
阶段 2,能力分解。 将业务转化为 catalogue/capabilities.yaml 中的能力(推理、状态存储、控制平面托管、批处理计算,以及 Harness 插件提供的任何能力)。此时不要提提供商名称。
阶段 3,研究与比较。 对于每个能力,研究当前选项,构建证据记录,运行 scripts/eligibility.py,并仅就比较每个可选项的实际功能。参见 references/provider-discovery.md。
阶段 4,操作员决策 [GATE]。 展示带有实际选择的比较(使用宿主提供的任何选择 UI,否则使用编号选项)。操作员可以选择一个或多个、全部拒绝,或要求更多研究。将决策记录在 Firm 仓库的 decisions.jsonl 中。
阶段 5,引导式配置。 对于每个选定的提供商,给操作员提供确切的页面、令牌类型、最小作用域以及存储位置,然后进行非秘密检查。参见 references/credentials.md。操作员创建并输入秘密;您仅连接名称。
阶段 6,组合。 从目录中选择镜像和平台。设计代理:id、角色、职责、插件、权限、报告对象。从目录中选择插件。根据 assets/firm-template/values/example.yaml 编写 values.yaml 和代理文件。
阶段 7,渲染与验证。
python3 scripts/render.py --template assets/firm-template --values values.yaml --out rendered/<firm-id>
python3 scripts/validate.py --rendered rendered/<firm-id>
python3 scripts/scan_secrets.py rendered/<firm-id>
修复每个错误的原因,重新运行,绝不手动编辑渲染后的文件。渲染是确定性的:修复进入值或代理,然后重新渲染。
阶段 8,批准 [GATE]。 向操作员展示拓扑(哪个镜像运行在何处)、选定的提供商及其限制和卡披露、按名称列出的秘密、每个代理的权限以及部署计划。等待同意。
阶段 9,发布 [GATE]。 选择并记录确切版本:锁定 LLAMA_CPP_REF,解析镜像摘要(来自 CI 摘要或平台构建),编写 versions.lock,然后分两次提交发布(先镜像,这样 firm.commit 可以固定笔记本克隆的机械的 SHA;参见 references/deploy-recipes.md 第 9 节),并运行 validate.py --publish。使用现有的 GitHub 路径。绝不发布凭证。
阶段 10,部署 [每步 GATE]。 遵循 pattern.yaml 顺序以及 references/deploy-recipes.md 中每一选定平台的配方:存储、控制平面、工作器、推理、种子状态。
阶段 11,验证。 探测每个已部署的资产,然后端到端运行一个真实任务(入队,工作器认领,Harness 或推理响应,结果落回 queue/done)。编写 manifest.json,包含每个资产的端点和结果。一个容器启动但任务失败的 Firm 不算完成。参见 references/validation-and-recovery.md。
后续生命周期: 更新(编辑值,重新渲染,验证,重新部署更改的资产)、暂停和恢复(停止工作器,保留状态)、回滚(使用之前的 versions.lock 和提交)、迁移(相同值,不同的 deploy.* 目标)、销毁(操作员确认,然后删除资产并撤销秘密)。
内容存放位置
SKILL.md 此文件
references/ 按阶段读取
architecture-and-contracts.md 镜像、笔记本和 Harness 中的内容,以及每个合约
provider-discovery.md 仅免费策略、证据记录、比较格式
credentials.md 引导式秘密创建、链接、非秘密检查
deploy-recipes.md HF Space/Job、Kaggle、Colab、本地
validation-and-recovery.md 验证、清单、失败与修复
catalogue/ images.yaml、plugins.yaml、capabilities.yaml(默认拒绝)
assets/firm-template/ 模板 Firm(template.yaml、pattern.yaml、镜像、笔记本等)
scripts/ render.py、validate.py、eligibility.py、scan_secrets.py
tests/ python3 -m pytest tests -q
您编写的内容与您填充的内容
编写或更改模板(镜像、笔记本、合约、脚本)是技能维护:有意识地执行,运行 python3 -m pytest tests -q,并保持 references/architecture-and-contracts.md 中的合约准确。生成 Firm 永远不会更改模板;它只生成值、代理文件和渲染副本。
报告
简洁具体。在每个阶段之后说明完成了什么、如何验证的以及下一步是什么。区分已检查(脚本或探测确认)和假设。模拟结果和真实结果需明确标注。如果某些内容无法完成,请准确说明缺失的内容以及操作员的下一步操作。