mirror of
https://github.com/tradecatlabs/vibe-coding-cn.git
synced 2026-11-02 11:26:32 +00:00
feat: faqi - 来源限定实现初审与158资源分流 (#113)
* feat: faqi - 声明来源初审维护依赖 * feat: faqi - 落盘来源限定实现初审与资源分流 以唯一本体及原资源YAML为语义和事实源,新增19个实现选区初审、13入口、158原ID分流与只读清单。 补来源用途、入口归属、严格输入、生成所有权及宽表预算验证;父仓库来源绑定已发布的同树修订。 Docs sync: 根README/AGENTS及metadata/scripts/tools所属文档、Make目标同步。 验证:相关5组通过;功法协议7组与总表4组通过;本轮make test一次exit2,既有Mathing镜像360/355及digest不符。 不新增本体节点、功法评级、独立批准、运行/效果/许可事实;不执行被审程序。
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
### 允许的操作
|
||||
- 读取、修改顶层文档:`README.md`、`AGENTS.md`、`CONTRIBUTING.md` 等
|
||||
- 读取、修改 `docs/`、`prompts/`、`skills/`、`tools/config/`、`tools/external/` 下的文档与代码
|
||||
- 执行 `make lint`、`make check-links`、`make check-details`、`make check-doc-structure`、`make check-directory-docs`、`make check-metadata`、`make check-gongfa`、`make test-gongfa`、`make sync-gongfa-catalog`、`make check-gongfa-catalog`、`make test-gongfa-catalog`、`make check-ai-citation`、`make check-research-raw`、`make check-source-facts`、`make check-wiki`、`make fetch-research-raw`、`make sync-doc-toc`、prompts-library 转换工具
|
||||
- 执行 `make lint`、`make check-links`、`make check-details`、`make check-doc-structure`、`make check-directory-docs`、`make check-metadata`、`make check-gongfa`、`make test-gongfa`、`make sync-gongfa-catalog`、`make check-gongfa-catalog`、`make test-gongfa-catalog`、`make sync-faqi-catalog`、`make check-faqi-catalog`、`make test-faqi-catalog`、`make check-ai-citation`、`make check-research-raw`、`make check-source-facts`、`make check-wiki`、`make fetch-research-raw`、`make sync-doc-toc`、prompts-library 转换工具
|
||||
- 新增/修改提示词、技能、文档
|
||||
- 提交符合规范的 commit
|
||||
|
||||
@@ -74,6 +74,9 @@ git push origin develop
|
||||
| `make sync-gongfa-catalog` | 从当前登记与仓内候选历史快照重建同一总表 | Python3.10+、scripts/requirements-gongfa.txt |
|
||||
| `make check-gongfa-catalog` | 只读校验总表来源SHA、覆盖及Markdown/Excel一致性 | 同上;不写原文或评级 |
|
||||
| `make test-gongfa-catalog` | 验证总表维护行为并保存隔离工件 | 同上;不证明功法效果 |
|
||||
| `make sync-faqi-catalog` | 重建法器来源初审与资源分流的只读清单 | Python3.10+、Git、scripts/requirements-faqi.txt、固定submodule |
|
||||
| `make check-faqi-catalog` | 只读校验法器JSON、来源Git/SHA、覆盖与清单一致性 | 同上;不执行工具或批准效果 |
|
||||
| `make test-faqi-catalog` | 验证法器维护消费与拒绝行为,保留隔离工件 | 同上;不证明身份语义、许可或能力 |
|
||||
| `make check-ai-citation` | 校验 llms 与 AI 引用语料路径、锚点和规范仓库身份 | Python 3 |
|
||||
| `make check-external-resources` | 校验本地外部资源注册表字段、分类统计、ID 与链接形态 | Python 3、PyYAML |
|
||||
| `make check-research-raw` | 校验研究域 raw 原始事实层、Git 工作树、来源清单和核心材料文件 | Python 3、Git |
|
||||
@@ -86,7 +89,8 @@ git push origin develop
|
||||
| `cd tools/prompts-library && python3 main.py` | 提示词格式转换 | `pip install -r tools/prompts-library/requirements.txt` |
|
||||
|
||||
### Python 依赖来源
|
||||
- 功法检查独立依赖:`scripts/requirements-gongfa.txt`;在现有虚拟环境安装,其他脚本最低版本不变。
|
||||
- 功法检查独立依赖:`scripts/requirements-gongfa.txt`;在现有虚拟环境安装。
|
||||
- 法器维护独立依赖:`scripts/requirements-faqi.txt`;Python3.10+,复用jsonschema、PyYAML、tabulate及测试用markdown-it-py;其他脚本最低版本不变。
|
||||
- prompts-library 主入口依赖:`tools/prompts-library/requirements.txt`
|
||||
- prompts-library Google API / JSONL 辅助脚本依赖:`tools/prompts-library/scripts/requirements.txt`
|
||||
|
||||
@@ -203,6 +207,7 @@ git push origin develop
|
||||
├── tools/ # 工具、本地配置与外部仓库
|
||||
│ ├── README.md # tools 目录说明
|
||||
│ ├── AGENTS.md # tools 目录规则
|
||||
│ ├── faqi-catalog.md # 法器初审的只读生成消费者
|
||||
│ ├── config/ # 工具与开发配置(含 Codex CLI)
|
||||
│ ├── prompts-library/ # Excel ↔ Markdown 互转工具
|
||||
│ ├── chat-vault/ # AI 聊天记录保存工具
|
||||
@@ -220,6 +225,8 @@ git push origin develop
|
||||
│ ├── taxonomy.yml # 分类体系
|
||||
│ ├── glossary.yml # 术语表
|
||||
│ ├── redirects.yml # 重命名/迁移映射
|
||||
│ ├── faqi.json # 来源限定初审与资源逐ID分流
|
||||
│ ├── faqi.schema.json # 初审声明边界,不复制类型树
|
||||
│ └── gongfa/ # 功法登记、冻结来源、评级历史与单一总表(Markdown/Excel)
|
||||
│
|
||||
├── .github/ # GitHub 配置
|
||||
@@ -251,6 +258,9 @@ git push origin develop
|
||||
- `scripts/check-doc-structure.py` - docs README 标准块顺序、目录入口和重复锚点检查脚本,供 `make check-doc-structure` 与 CI 使用
|
||||
- `scripts/check-directory-docs.py` - 仓库自有目录 README/AGENTS 覆盖检查脚本,供 `make check-directory-docs` 与 CI 使用
|
||||
- `scripts/check-metadata.py` - metadata 路径与锚点检查脚本,供 `make check-metadata` 与 CI 使用
|
||||
- `metadata/faqi.json` / `faqi.schema.json` - 法器来源限定初审与字段契约,引用已有类型;不承接资源原事实、第二本体树、账户/部署/运行或品级。
|
||||
- `tools/faqi-catalog.md` - 从初审JSON与原资源YAML生成的只读清单;源码初审不等于完整包语义、独立审查、许可或效果证明。
|
||||
- `scripts/sync-faqi-catalog.py` / `test-faqi-catalog.py` - 离线校验来源、入口、覆盖与视图,保留隔离工件;不执行被审程序或联网补证。
|
||||
- `metadata/gongfa/registry.json` - 活跃功法登记、等级、规则、来源、内容版本、人工初评及正式评级历史的唯一可编辑数据源;类型语义仍归本体主文;新范围追加批次
|
||||
- `metadata/gongfa/catalog.md` / `catalog.xlsx` - 同一全部功法总表的两种生成视图,聚合当前登记与已分类候选历史材料;不手改、不自动注册/去重/评级
|
||||
- `metadata/gongfa/catalog-sources.json` - 仅索引仓内不可变候选快照的路径/SHA/范围;历史材料不是第二可编辑登记,不依赖个人目录或临时工件
|
||||
@@ -399,7 +409,7 @@ make test
|
||||
3. **Documentation Standard**: 用户文档使用中文;代码/文件名使用英文
|
||||
4. **Skills**: 每个技能有独立的 `SKILL.md`
|
||||
5. **Quality Gates**: `make test` 执行 Markdown lint、本地相对链接/锚点检查、折叠块结构检查、docs 结构检查、metadata 路径检查、AI 引用一致性检查、外部源事实镜像检查与现代企业架构 starter kit 检查;三个 `research/vibe-*` 目录按源事实镜像边界维护,仓库级格式检查跳过镜像内容。
|
||||
功法登记/总表检查和相关测试纳入本地`make test`;GitHub Actions选定目标未改,不冒称新增远端覆盖。
|
||||
功法登记/总表与法器初审检查、相关测试纳入本地`make test`;GitHub Actions选定目标未改,不冒称新增远端覆盖。
|
||||
|
||||
## Development Workflow
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
.PHONY: help lint check-links check-details check-doc-structure check-directory-docs check-metadata check-gongfa test-gongfa check-ai-citation check-external-resources check-research-raw check-source-facts check-wiki fetch-research-raw sync-doc-toc build test clean clean-deps
|
||||
|
||||
.PHONY: sync-gongfa-catalog check-gongfa-catalog test-gongfa-catalog
|
||||
.PHONY: sync-faqi-catalog check-faqi-catalog test-faqi-catalog
|
||||
|
||||
MARKDOWNLINT = npx --yes markdownlint-cli@0.48.0
|
||||
|
||||
@@ -22,6 +23,9 @@ help:
|
||||
@echo " sync-gongfa-catalog - 从当前登记与仓内候选快照重建唯一总表"
|
||||
@echo " check-gongfa-catalog - 只读校验总表覆盖、源摘要与Markdown/Excel一致性"
|
||||
@echo " test-gongfa-catalog - 验证总表维护行为并保留隔离工件"
|
||||
@echo " sync-faqi-catalog - 重建法器来源初审与资源分流的只读清单"
|
||||
@echo " check-faqi-catalog - 校验法器JSON、Git/SHA、覆盖与只读清单"
|
||||
@echo " test-faqi-catalog - 验证法器清单维护并保留隔离工件"
|
||||
@echo " check-ai-citation - Check AI citation paths, anchors, and repository identity"
|
||||
@echo " check-external-resources - Check local external resources registry"
|
||||
@echo " check-research-raw - Check research raw fact snapshots and repository clones"
|
||||
@@ -76,6 +80,15 @@ check-gongfa-catalog:
|
||||
test-gongfa-catalog:
|
||||
@python3 scripts/test-gongfa-catalog.py
|
||||
|
||||
sync-faqi-catalog:
|
||||
@python3 scripts/sync-faqi-catalog.py --write
|
||||
|
||||
check-faqi-catalog:
|
||||
@python3 scripts/sync-faqi-catalog.py --check
|
||||
|
||||
test-faqi-catalog:
|
||||
@python3 scripts/test-faqi-catalog.py
|
||||
|
||||
check-ai-citation:
|
||||
@echo "Checking AI citation paths, anchors, and repository identity..."
|
||||
@python3 scripts/check-ai-citation.py
|
||||
@@ -108,7 +121,7 @@ sync-doc-toc:
|
||||
build:
|
||||
@echo "No build step: this repository is a documentation and knowledge-base project."
|
||||
|
||||
test: lint check-links check-details check-doc-structure check-directory-docs check-metadata check-gongfa test-gongfa check-gongfa-catalog test-gongfa-catalog check-ai-citation check-external-resources check-research-raw check-source-facts
|
||||
test: lint check-links check-details check-doc-structure check-directory-docs check-metadata check-gongfa test-gongfa check-gongfa-catalog test-gongfa-catalog check-faqi-catalog test-faqi-catalog check-ai-citation check-external-resources check-research-raw check-source-facts
|
||||
@echo "Quality gates complete."
|
||||
|
||||
clean: clean-deps
|
||||
|
||||
@@ -58,6 +58,7 @@
|
||||
|
||||
逐条身份、内容版本、冻结来源与已有意见查看[功法登记](metadata/gongfa/README.md)及上方总表。
|
||||
文集归并不等于全部内容已经逐条登记;已有初评也不等于正式效果验证。
|
||||
程序内容及外部资源所指的初审见[法器清单](tools/faqi-catalog.md);源码核定不等于运行、许可或效果验证。
|
||||
|
||||
</details>
|
||||
|
||||
@@ -406,8 +407,11 @@ pip install -r tools/prompts-library/scripts/requirements.txt
|
||||
│ ├── auto-tmux/ # tmux 自动化脚本、pane 巡检、救援与多终端协作
|
||||
│ └── claude-official-skills/ # Claude 官方 skills 软链接入口
|
||||
├── tools/ # 辅助工具、外部仓库与工具配置
|
||||
│ └── faqi-catalog.md # 法器来源初审与外部资源分流的只读视图
|
||||
├── scripts/ # 自动化脚本
|
||||
├── metadata/ # 机器可读索引与限定子域数据
|
||||
│ ├── faqi.json # 法器来源限定初审,不含品级或运行批准
|
||||
│ ├── faqi.schema.json # 初审字段契约,复用唯一BFO树
|
||||
│ └── gongfa/ # 功法登记、来源快照与单一总表(Markdown/Excel)
|
||||
├── assets/ # 静态资产、外部资源注册表与 AI 引用资产
|
||||
│
|
||||
|
||||
@@ -23,10 +23,21 @@
|
||||
- 候选来源保留旧编者意见并明确未登记;不同限定内容和同名条目不自动合并或继承品级。
|
||||
- 更新后运行`make sync-gongfa-catalog`、`make check-gongfa-catalog`及`make test-gongfa-catalog`,不手改生成视图。
|
||||
|
||||
## 法器来源初审
|
||||
|
||||
- `faqi.json`唯一拥有来源限定实现初审、选区用途与资源逐ID分流;字段契约为`faqi.schema.json`,不是正式身份/效果或运行登记。
|
||||
- 类型只引用唯一本体;原资源ID、名称、地址、状态、验证状态和风险仍归`assets/external-resources/`分类YAML,不复制为第二登记。
|
||||
- 程序内容与Skill规约、配置、模型、载体、副本、地址、账号、部署及一次运行按真实所指区分,不按目录/后缀、同名、多入口机械合并或新增身份。
|
||||
- 来源用途是人工初审标注,Schema/后缀/SHA不能证明语义正确;独立审查、运行、效果、许可与品级声明固定未批准。
|
||||
- 固定来源修订、原字节SHA与一基半开选区;新内容/版本重新核身份,不继承旧能力,不覆盖旧Git来源事实。
|
||||
- `tools/faqi-catalog.md`只读生成;运行`make sync-faqi-catalog`、`make check-faqi-catalog`、`make test-faqi-catalog`,保留真实工件。
|
||||
|
||||
## 验证
|
||||
|
||||
```bash
|
||||
make check-metadata
|
||||
make check-faqi-catalog
|
||||
make test-faqi-catalog
|
||||
make check-gongfa
|
||||
make test-gongfa
|
||||
make test
|
||||
|
||||
+10
-1
@@ -8,17 +8,26 @@
|
||||
- `taxonomy.yml`:知识库分类、阅读路径和关键文档入口。
|
||||
- `glossary.yml`:项目术语表。
|
||||
- `redirects.yml`:已经不存在的历史路径到当前入口的映射,供维护和 AI 上下文使用。
|
||||
- [faqi.json](faqi.json):来源限定的法器实现初审及外部资源逐ID分流的唯一可编辑判定;原资源事实仍归分类YAML。
|
||||
- [faqi.schema.json](faqi.schema.json):首批程序内容初审的字段与声明边界,不复制本体父链或维护能力、许可、品级。
|
||||
- [法器清单](../tools/faqi-catalog.md):上述初审与原资源事实的生成视图;不手改,不把候选自动晋升为已核程序。
|
||||
- [gongfa/](gongfa/README.md):功法JSON核心、限定内容、四阶十二级、人工分类/初评、冻结来源与正式评级历史。
|
||||
- [功法总表](gongfa/catalog.md)/[Excel完整视图](gongfa/catalog.xlsx):当前登记与已分类来源候选的同一总视图;聚合数量由生成器维护,不复制分批表。
|
||||
|
||||
## 使用
|
||||
|
||||
功法检查需要Python3.10+及`python3 -m pip install -r scripts/requirements-gongfa.txt`;其他脚本依赖不变。
|
||||
功法检查需要Python3.10+及`python3 -m pip install -r scripts/requirements-gongfa.txt`。
|
||||
法器维护需要Python3.10+、Git与`scripts/requirements-faqi.txt`;submodule须按父仓库固定指针初始化。
|
||||
更新法器来源或实现内容须核身份/版本,保留旧Git修订及旧记录,不把同名、副本、声明版本或源码变化自动当能力升级。
|
||||
独立语义、运行、效果和许可批准不在此初审格式内;未经相应证据,不修改声明边界。
|
||||
|
||||
修改目录、锚点、阅读路径或关键入口后,必须同步更新本目录,并运行:
|
||||
|
||||
```bash
|
||||
make check-metadata
|
||||
make sync-faqi-catalog
|
||||
make check-faqi-catalog
|
||||
make test-faqi-catalog
|
||||
make check-gongfa
|
||||
make test-gongfa
|
||||
make sync-gongfa-catalog
|
||||
|
||||
+1219
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,92 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"title": "法器来源限定初审与资源分流",
|
||||
"description": "只引用唯一BFO树。记录程序内容而非运行/效果/许可批准;外部条目ID引用原YAML,不复制资源事实。",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["format_version", "kind", "reviewed_at", "source_revision", "ontology", "limits", "sources", "objects", "local_entries", "external_sources", "external_reviews", "resource_notes", "local_resource_links", "relations", "references"],
|
||||
"properties": {
|
||||
"format_version": {"const": 1},
|
||||
"kind": {"const": "faqi-initial-source-review"},
|
||||
"reviewed_at": {"type": "string", "maxLength": 40},
|
||||
"source_revision": {"$ref": "#/$defs/revision"},
|
||||
"ontology": {
|
||||
"type": "object", "additionalProperties": false, "required": ["path", "sha256"],
|
||||
"properties": {"path": {"const": "docs/gongfa/cultivation-ontology-taxonomy.md"}, "sha256": {"$ref": "#/$defs/sha256"}}
|
||||
},
|
||||
"limits": {
|
||||
"type": "object", "additionalProperties": false,
|
||||
"required": ["independent_review", "runtime_verified", "effectiveness_verified", "license_approved", "grades_assigned"],
|
||||
"properties": {"independent_review": {"const": false}, "runtime_verified": {"const": false}, "effectiveness_verified": {"const": false}, "license_approved": {"const": false}, "grades_assigned": {"const": false}}
|
||||
},
|
||||
"sources": {"type": "array", "minItems": 1, "maxItems": 128, "items": {"$ref": "#/$defs/source"}},
|
||||
"objects": {"type": "array", "minItems": 1, "maxItems": 512, "items": {"$ref": "#/$defs/tool"}},
|
||||
"local_entries": {"type": "array", "minItems": 1, "maxItems": 128, "items": {"$ref": "#/$defs/local"}},
|
||||
"external_sources": {
|
||||
"type": "array", "minItems": 3, "maxItems": 3,
|
||||
"items": {"type": "object", "additionalProperties": false, "required": ["path", "sha256"], "properties": {
|
||||
"path": {"enum": ["assets/external-resources/tools-platforms.yml", "assets/external-resources/repo-rules-scaffolds.yml", "assets/external-resources/network-payment-services.yml"]},
|
||||
"sha256": {"$ref": "#/$defs/sha256"}
|
||||
}}
|
||||
},
|
||||
"external_reviews": {
|
||||
"type": "array", "minItems": 1, "maxItems": 7,
|
||||
"items": {"type": "object", "additionalProperties": false, "required": ["decision", "rationale", "resource_ids"], "properties": {
|
||||
"decision": {"enum": ["software_candidate", "hosted_entry_candidate", "excluded_content", "excluded_model", "pending_identity", "related_local_source", "restricted_service_pending"]},
|
||||
"rationale": {"$ref": "#/$defs/text"},
|
||||
"resource_ids": {"type": "array", "minItems": 1, "maxItems": 4096, "uniqueItems": true, "items": {"$ref": "#/$defs/id"}}
|
||||
}}
|
||||
},
|
||||
"resource_notes": {"type": "object", "maxProperties": 4096, "propertyNames": {"$ref": "#/$defs/id"}, "additionalProperties": {"$ref": "#/$defs/text"}},
|
||||
"local_resource_links": {"type": "object", "maxProperties": 4096, "propertyNames": {"$ref": "#/$defs/id"}, "additionalProperties": {"$ref": "#/$defs/id"}},
|
||||
"relations": {
|
||||
"type": "array", "maxItems": 512,
|
||||
"items": {"type": "object", "additionalProperties": false, "required": ["subject", "predicate", "target_label", "related_object_id", "evidence", "boundary"], "properties": {
|
||||
"subject": {"$ref": "#/$defs/id"}, "predicate": {"const": "requires"}, "target_label": {"$ref": "#/$defs/text"},
|
||||
"related_object_id": {"type": ["string", "null"]}, "evidence": {"$ref": "#/$defs/id"}, "boundary": {"$ref": "#/$defs/text"}
|
||||
}}
|
||||
},
|
||||
"references": {
|
||||
"type": "array", "maxItems": 128,
|
||||
"items": {"type": "object", "additionalProperties": false, "required": ["path", "state", "target", "related_object_id", "boundary"], "properties": {
|
||||
"path": {"$ref": "#/$defs/path"}, "state": {"enum": ["symlink", "empty-placeholder"]},
|
||||
"target": {"type": ["string", "null"]}, "related_object_id": {"type": ["string", "null"]}, "boundary": {"$ref": "#/$defs/text"}
|
||||
}}
|
||||
}
|
||||
},
|
||||
"$defs": {
|
||||
"id": {"type": "string", "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._-]{0,127}$"},
|
||||
"sha256": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
|
||||
"revision": {"type": "string", "pattern": "^[a-f0-9]{40}$"},
|
||||
"text": {"type": "string", "minLength": 1, "maxLength": 2400, "pattern": "^[^\u0000-\u001f\u007f]+$"},
|
||||
"path": {"type": "string", "minLength": 1, "maxLength": 240, "pattern": "^[A-Za-z0-9_./ -]+$"},
|
||||
"ids": {"type": "array", "maxItems": 128, "uniqueItems": true, "items": {"$ref": "#/$defs/id"}},
|
||||
"source": {
|
||||
"type": "object", "additionalProperties": false, "required": ["id", "purpose", "path", "repository", "revision", "sha256", "lines", "selection_sha256"],
|
||||
"properties": {
|
||||
"id": {"$ref": "#/$defs/id"},
|
||||
"purpose": {"enum": ["implementation", "support"], "description": "选区的人工初审用途,不凭后缀推断程序。支持来源未自动获准充当主实现。"},
|
||||
"path": {"$ref": "#/$defs/path"},
|
||||
"repository": {"enum": [".", "tools/external/tmux", "tools/external/.tmux", "tools/external/Skill_Seekers-development", "tools/external/claude-official-skills"]},
|
||||
"revision": {"$ref": "#/$defs/revision"}, "sha256": {"$ref": "#/$defs/sha256"},
|
||||
"lines": {"type": "array", "minItems": 2, "maxItems": 2, "items": {"type": "integer", "minimum": 1, "maximum": 100000}},
|
||||
"selection_sha256": {"$ref": "#/$defs/sha256"}
|
||||
}
|
||||
},
|
||||
"tool": {
|
||||
"type": "object", "additionalProperties": false, "required": ["id", "name", "type_id", "implementation", "support", "boundary", "declared_version"],
|
||||
"properties": {
|
||||
"id": {"$ref": "#/$defs/id"}, "name": {"$ref": "#/$defs/text"}, "type_id": {"const": "software-artifact"},
|
||||
"implementation": {"$ref": "#/$defs/id"}, "support": {"$ref": "#/$defs/ids"}, "boundary": {"$ref": "#/$defs/text"},
|
||||
"declared_version": {"type": ["string", "null"], "maxLength": 80}
|
||||
}
|
||||
},
|
||||
"local": {
|
||||
"type": "object", "additionalProperties": false, "required": ["path", "objects", "sources", "boundary", "pending"],
|
||||
"properties": {
|
||||
"path": {"$ref": "#/$defs/path"}, "objects": {"$ref": "#/$defs/ids"}, "sources": {"$ref": "#/$defs/ids"},
|
||||
"boundary": {"$ref": "#/$defs/text"}, "pending": {"type": "array", "maxItems": 32, "items": {"$ref": "#/$defs/text"}}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -32,6 +32,15 @@
|
||||
- `test-gongfa-catalog.py`保留输入、命令/日志和结果;检查来源绑定/表示一致性,不证明效果或独立语义批准。
|
||||
- 注册库仍唯一拥有活跃登记/正式评级;候选历史快照只作来源事实,迁移入库后才考虑退役该来源视图。
|
||||
|
||||
## 法器初审维护
|
||||
|
||||
- `sync-faqi-catalog.py`复用jsonschema/PyYAML/tabulate,读取初审JSON与原资源YAML,只维护`tools/faqi-catalog.md`;不自动分类、联网、执行工具或写原登记。
|
||||
- 字段、来源用途、入口/身份与输出边界变化先补真实行为测试;初审不是独立语义、许可证、部署/运行或效果证明,不套功法品级。
|
||||
- 固定Git/submodule修订、完整字节SHA与一基半开选区;来源/输入/输出软链接、未知字段、漏/重资源、越界/超限与并行漂移非零失败。
|
||||
- 生成标记、输入/目标前后复核与单文件原子替换只保护本工具输出,不声称多文件事务或跨写者强CAS;失败保留工件,不清理别人文件。
|
||||
- `test-faqi-catalog.py`复用MarkdownIt消费真实Markdown,独立字面量和失败输入核原样文字、安全隔离与所有权;不mock核心或运行被审工具。
|
||||
- 依赖独立声明于`requirements-faqi.txt`;本地`make test`纳入维护验证,CI选定目标未改,不冒称远端覆盖。
|
||||
|
||||
## 验证
|
||||
|
||||
```bash
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
- `sync-gongfa-catalog.py`:当前登记+仓内冻结候选的单一总表生成与只读检查,不改品级、主登记或功法身份。
|
||||
- `test-gongfa-catalog.py`:总表覆盖、版本/纠正范围、离线可移植性、Excel文本安全与陈旧视图的行为测试。
|
||||
- `requirements-gongfa.txt`:功法检查和总表脚本的独立依赖清单,Python3.10+,不影响其他脚本。
|
||||
- `sync-faqi-catalog.py`:法器来源初审JSON、固定Git/SHA/选区、身份/入口及资源覆盖校验与只读清单生成,不推断类型或执行被审工具。
|
||||
- `test-faqi-catalog.py`:真实CLI消费与拒绝行为、代码表保真/注入隔离、重复生成及输出所有权验证;保留输入、退出码和JUnit。
|
||||
- `requirements-faqi.txt`:法器维护与测试的固定依赖,复用已安装成熟库,不安装被审工具依赖。
|
||||
- `check-ai-citation.py`:`llms.txt` 与 AI 引用语料的路径、锚点和规范仓库身份检查脚本。
|
||||
- `check-external-resources.py`:本地外部资源注册表字段、分类统计、ID 与链接形态检查脚本。
|
||||
- `check-research-raw.py`:研究域 raw 原始事实层、Git 工作树、来源清单和核心材料文件检查脚本。
|
||||
@@ -56,3 +59,35 @@ make test-gongfa-catalog
|
||||
`test-gongfa-catalog.py --artifacts /tmp/新的目录`保留隔离输入、CLI命令/日志及结果,拒绝覆盖已有证据目录。
|
||||
候选快照记录之前的编者意见,不作为第二可编辑登记;正文、分类、品级或选区更新必须另存来源版本。
|
||||
内容新版本不继承旧初评;显式纠正链选有效意见,不同情境仍并列保留,不按最新时间或最高档裁决。
|
||||
|
||||
## 法器来源初审清单
|
||||
|
||||
```bash
|
||||
python3 -m pip install -r scripts/requirements-faqi.txt
|
||||
make sync-faqi-catalog
|
||||
make check-faqi-catalog
|
||||
make test-faqi-catalog
|
||||
```
|
||||
|
||||
维护需Python3.10+、Git及按当前父仓库固定指针初始化的submodule;集成测试使用Linux/WSL的`resource`限制异常宽表内存。
|
||||
字段判定只编辑[metadata/faqi.json](../metadata/faqi.json),原名称、ID、风险和验证状态只读自原资源YAML;
|
||||
类型只引用本体,输出[tools/faqi-catalog.md](../tools/faqi-catalog.md)不承接正文或第二本体树。
|
||||
|
||||
依赖来源及最低/固定版本:
|
||||
|
||||
- [jsonschema 4.26.0](https://pypi.org/project/jsonschema/4.26.0/):复用Draft2020-12字段校验,不自研Schema解释器。
|
||||
- [PyYAML 6.0.3](https://pypi.org/project/PyYAML/6.0.3/):安全读取原资源YAML,拒重复键和别名展开。
|
||||
- [tabulate 0.9.0](https://pypi.org/project/tabulate/0.9.0/):生成可复制的psql原样代码表。
|
||||
- [markdown-it-py 3.0.0](https://pypi.org/project/markdown-it-py/3.0.0/):测试用真实Markdown解析验证转义边界,不mock维护核心。
|
||||
|
||||
默认/`--check`只读;`--write`仅写带生成标记的视图,先校验全部来源、上限与输入/目标摘要,再单文件原子替换。
|
||||
文件/生成视图输入上限2 MiB,最多128来源、512实现、每分类4096资源行;固定Git命令预算20秒。
|
||||
格式化前保守核代码表列宽×行数预算,不让一条长名称扩大整表、耗尽内存后才拒绝;不截断原文。
|
||||
原文选区按一基半开区间和原UTF-8字节SHA核,不清洗或执行HTML/代码/提示词。
|
||||
首批父仓库修订绑定已发布主线的历史提交,不依赖本地未推送提交;历史Git对象须可读,浅克隆不保证来源可回放。
|
||||
重复内容身份、入口错配、缺失资源ID、越界/凭据/日志/数据库来源、未知字段与NaN均非零失败。
|
||||
路径/来源/指针变更先重新核证;并行修改采用前后摘要及指针复核,不声称多文件事务或跨写者强CAS。
|
||||
|
||||
`test-faqi-catalog.py --artifacts /tmp/新的目录`保存真实输入、命令/退出码、日志、result.json和JUnit,拒绝覆盖已有证据目录。
|
||||
仅此初审与维护测试纳入本地`make test`;GitHub Actions选定目标未改,不声称远端运行了法器测试。
|
||||
程序源码存在、Schema及消费通过不证明语义真、效果、安全、许可证或独立审查;不按功法十二级给法器赋级。
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# 法器离线初审与只读视图;复用现有成熟依赖,不安装/运行被审工具。
|
||||
jsonschema==4.26.0
|
||||
PyYAML==6.0.3
|
||||
tabulate==0.9.0
|
||||
# 测试复用真实Markdown解析器,验证代码表保真与注入隔离。
|
||||
markdown-it-py==3.0.0
|
||||
@@ -0,0 +1,383 @@
|
||||
#!/usr/bin/env python3
|
||||
"""校验来源限定的法器初审,生成单一只读视图;不推断类别或执行被审工具。"""
|
||||
import argparse
|
||||
import configparser
|
||||
import datetime
|
||||
import hashlib
|
||||
import html
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path, PurePosixPath
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
from urllib.parse import quote, urlsplit
|
||||
|
||||
import jsonschema
|
||||
from tabulate import tabulate
|
||||
import yaml
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
MARKER = "<!-- generated: sync-faqi-catalog.py -->"
|
||||
MAX_BYTES = 2 * 1024 * 1024
|
||||
DECISIONS = {
|
||||
"software_candidate": "软件实现候选",
|
||||
"hosted_entry_candidate": "托管入口候选",
|
||||
"excluded_content": "排除:资料/规约内容",
|
||||
"excluded_model": "排除:模型名称所指",
|
||||
"pending_identity": "待核:对象身份",
|
||||
"related_local_source": "关联已审本地来源",
|
||||
"restricted_service_pending": "待核:受限服务所指",
|
||||
}
|
||||
|
||||
|
||||
class ContractError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
def require(condition, message):
|
||||
if not condition:
|
||||
raise ContractError(message)
|
||||
|
||||
|
||||
def digest(raw):
|
||||
return hashlib.sha256(raw).hexdigest()
|
||||
|
||||
|
||||
def bounded_read(path):
|
||||
require(path.is_file(), f"输入文件不存在:{path}")
|
||||
with path.open("rb") as stream:
|
||||
raw = stream.read(MAX_BYTES + 1)
|
||||
require(len(raw) <= MAX_BYTES, f"输入超过2 MiB:{path}")
|
||||
return raw
|
||||
|
||||
|
||||
def unique_pairs(pairs):
|
||||
result = {}
|
||||
for key, value in pairs:
|
||||
require(key not in result, "JSON含重复键")
|
||||
result[key] = value
|
||||
return result
|
||||
|
||||
|
||||
def invalid_constant(_):
|
||||
raise ContractError("不是严格JSON数值")
|
||||
|
||||
|
||||
def load_json(raw):
|
||||
return json.loads(raw.decode("utf-8"), object_pairs_hook=unique_pairs, parse_constant=invalid_constant)
|
||||
|
||||
|
||||
def safe_path(root, value, *, alias=False):
|
||||
parts = PurePosixPath(value)
|
||||
require(not parts.is_absolute() and ".." not in parts.parts and "\\" not in value,
|
||||
"来源路径越界")
|
||||
require(parts.as_posix() == value and parts.parts, "来源路径不是规范相对路径")
|
||||
lowered = [p.lower() for p in parts.parts]
|
||||
require(not any(p in {".git", ".history", ".venv", "output", "logs", "node_modules"} or
|
||||
p.startswith(".env") or p in {"auth.json", "credentials.json", "credentials.toml"} or
|
||||
p.endswith((".db", ".sqlite", ".sqlite3", ".pem", ".key")) for p in lowered),
|
||||
"拒绝凭据、历史、日志或数据库来源")
|
||||
path = root / value
|
||||
for parent in [path, *path.parents]:
|
||||
if parent == root:
|
||||
break
|
||||
require(not parent.is_symlink() or (alias and parent == path), "来源含未授权软链接")
|
||||
require(path.resolve().is_relative_to(root), "来源软链接越界")
|
||||
return path
|
||||
|
||||
|
||||
def git_output(repository, *args):
|
||||
process = subprocess.run(["git", "--no-replace-objects", "-C", str(repository), *args],
|
||||
capture_output=True, timeout=20)
|
||||
require(process.returncode == 0, "固定Git来源不可读取;请核对修订与submodule初始化")
|
||||
return process.stdout
|
||||
|
||||
|
||||
def git_blob(repository, revision, path):
|
||||
spec = revision + ":" + path
|
||||
size = int(git_output(repository, "cat-file", "-s", spec).strip())
|
||||
require(size <= MAX_BYTES, "Git来源超过2 MiB")
|
||||
return git_output(repository, "show", spec)
|
||||
|
||||
|
||||
class UniqueYamlLoader(yaml.SafeLoader):
|
||||
def compose_node(self, parent, index):
|
||||
require(not self.check_event(yaml.AliasEvent), "资源YAML不接受别名展开")
|
||||
return super().compose_node(parent, index)
|
||||
|
||||
def construct_mapping(self, node, deep=False):
|
||||
result = {}
|
||||
for key_node, value_node in node.value:
|
||||
key = self.construct_object(key_node, deep=deep)
|
||||
require(isinstance(key, str) and key not in result, "资源YAML含非文本或重复键")
|
||||
result[key] = self.construct_object(value_node, deep=deep)
|
||||
return result
|
||||
|
||||
|
||||
def indexed(items, key, label):
|
||||
values = {item[key]: item for item in items}
|
||||
require(len(values) == len(items), f"{label}重复")
|
||||
return values
|
||||
|
||||
|
||||
def validate(root, input_path):
|
||||
raw = bounded_read(input_path)
|
||||
data = load_json(raw)
|
||||
schema_path = safe_path(root, "metadata/faqi.schema.json")
|
||||
schema_raw = bounded_read(schema_path)
|
||||
schema = load_json(schema_raw)
|
||||
validator = jsonschema.Draft202012Validator(schema)
|
||||
errors = list(validator.iter_errors(data))
|
||||
require(not errors, "法器JSON不符合Schema,定位:" + ("/".join(map(str, errors[0].absolute_path)) if errors else ""))
|
||||
time = datetime.datetime.fromisoformat(data["reviewed_at"])
|
||||
require(time.tzinfo is not None, "初审时间须含时区")
|
||||
bindings = {input_path: digest(raw), schema_path: digest(schema_raw)}
|
||||
ontology_path = safe_path(root, data["ontology"]["path"])
|
||||
ontology_raw = bounded_read(ontology_path)
|
||||
require(digest(ontology_raw) == data["ontology"]["sha256"], "本体来源SHA不符,不能静默沿用初审")
|
||||
bindings[ontology_path] = digest(ontology_raw)
|
||||
ontology = ontology_raw.decode("utf-8")
|
||||
type_ids = set(re.findall(r"^\| `([^`]+)` \|", ontology, re.MULTILINE))
|
||||
sources = indexed(data["sources"], "id", "来源ID")
|
||||
objects = indexed(data["objects"], "id", "法器实现ID")
|
||||
footprints = set()
|
||||
for source in sources.values():
|
||||
path = safe_path(root, source["path"])
|
||||
require(source["path"].startswith(("tools/", "skills/")), "实现/说明来源不属于批准工具范围")
|
||||
require(path.suffix in {".py", ".sh", ".c", ".lua", ".html", ".md", ".toml", ".conf"} or path.name == "README",
|
||||
"来源不是公开代码、配置或说明")
|
||||
repository = root if source["repository"] == "." else safe_path(root, source["repository"])
|
||||
require(path.is_relative_to(repository), "来源文件不属于声明仓库")
|
||||
relative = path.relative_to(repository).as_posix()
|
||||
if repository == root:
|
||||
require(source["revision"] == data["source_revision"], "父仓库来源修订错配")
|
||||
else:
|
||||
tree = git_output(root, "ls-tree", data["source_revision"], "--", source["repository"]).decode().split()
|
||||
require(len(tree) >= 3 and tree[0] == "160000" and tree[2] == source["revision"], "submodule来源与父仓库指针错配")
|
||||
require(git_output(repository, "rev-parse", "HEAD").decode().strip() == source["revision"], "submodule工作树修订漂移")
|
||||
body = git_blob(repository, source["revision"], relative)
|
||||
current = bounded_read(path)
|
||||
require(body == current and digest(body) == source["sha256"], f"来源文件/SHA漂移:{source['id']}")
|
||||
lines = body.decode("utf-8").splitlines(keepends=True)
|
||||
start, end = source["lines"]
|
||||
require(1 <= start < end <= len(lines) + 1, f"来源半开选区越界:{source['id']}")
|
||||
selected = "".join(lines[start - 1:end - 1]).encode("utf-8")
|
||||
require(digest(selected) == source["selection_sha256"], f"选区SHA不符:{source['id']}")
|
||||
bindings[path] = digest(current)
|
||||
for obj in objects.values():
|
||||
require(obj["type_id"] in type_ids, "引用了不存在的本体类")
|
||||
require(obj["implementation"] in sources and set(obj["support"]) <= sources.keys(), "法器引用了未知来源")
|
||||
source = sources[obj["implementation"]]
|
||||
require(source["purpose"] == "implementation", "实现来源未被初审标注为程序实现选区")
|
||||
# 首批以独立程序/脚本/页面内容为单位;CLI/MCP和副本不据入口重复登记。
|
||||
footprint = source["sha256"]
|
||||
require(footprint not in footprints, "同一程序内容被复制为多个身份")
|
||||
footprints.add(footprint)
|
||||
local = indexed(data["local_entries"], "path", "本地入口")
|
||||
covered = set()
|
||||
for entry in local.values():
|
||||
require(safe_path(root, entry["path"]).is_dir(), "本地入口不是现存目录")
|
||||
require(set(entry["objects"]) <= objects.keys() and set(entry["sources"]) <= sources.keys(), "本地入口引用未知对象/来源")
|
||||
for oid in entry["objects"]:
|
||||
require(sources[objects[oid]["implementation"]]["path"].startswith(entry["path"] + "/"), "实现与本地入口所指错配")
|
||||
covered.update(entry["objects"])
|
||||
require(covered == objects.keys(), "法器实现未被本地入口覆盖")
|
||||
resources = {}
|
||||
external_sources = indexed(data["external_sources"], "path", "外部来源")
|
||||
for value in external_sources.values():
|
||||
path = safe_path(root, value["path"])
|
||||
body = bounded_read(path)
|
||||
require(digest(body) == value["sha256"], "外部资源源SHA漂移;必须按新原文重审")
|
||||
content = yaml.load(body.decode("utf-8"), Loader=UniqueYamlLoader)
|
||||
require(isinstance(content, dict) and isinstance(content.get("resources"), list), "资源来源形态错误")
|
||||
require(len(content["resources"]) <= 4096, "资源数量超过4096")
|
||||
for index, row in enumerate(content["resources"]):
|
||||
require(isinstance(row, dict) and isinstance(row.get("id"), str), "资源行缺少ID")
|
||||
require(row["id"] not in resources, "原资源ID重复")
|
||||
resources[row["id"]] = {"row": row, "defaults": content.get("defaults", {}), "source": value["path"], "selector": f"/resources/{index}"}
|
||||
bindings[path] = digest(body)
|
||||
decisions = {}
|
||||
for review in data["external_reviews"]:
|
||||
for rid in review["resource_ids"]:
|
||||
require(rid not in decisions, "同一外部资源被多次分流")
|
||||
decisions[rid] = review
|
||||
require(decisions.keys() == resources.keys(), "外部资源覆盖缺失或含未批准新增ID")
|
||||
require(set(data["resource_notes"]) <= resources.keys(), "附注引用未知资源")
|
||||
related = {rid for rid, review in decisions.items() if review["decision"] == "related_local_source"}
|
||||
require(data["local_resource_links"].keys() == related, "本地来源关联缺失或范围扩大")
|
||||
modules_path = safe_path(root, ".gitmodules")
|
||||
module_bytes = bounded_read(modules_path)
|
||||
require(module_bytes == git_blob(root, data["source_revision"], ".gitmodules"), "submodule注册文件漂移")
|
||||
bindings[modules_path] = digest(module_bytes)
|
||||
config = configparser.RawConfigParser(); config.read_string(module_bytes.decode("utf-8"))
|
||||
module_urls = {config[s]["path"]: config[s]["url"] for s in config.sections()}
|
||||
for rid, oid in data["local_resource_links"].items():
|
||||
require(oid in objects, "来源关联引用未知法器")
|
||||
source = sources[objects[oid]["implementation"]]
|
||||
require(source["repository"] in module_urls, "来源关联不是已绑定的submodule")
|
||||
url = resources[rid]["row"].get("link", {}).get("url", "")
|
||||
def repo_url(value):
|
||||
parsed = urlsplit(value)
|
||||
require(parsed.scheme == "https" and parsed.hostname == "github.com" and not parsed.username and not parsed.query and not parsed.fragment,
|
||||
"来源关联不是规范GitHub仓库地址")
|
||||
return parsed.path.rstrip("/").removesuffix(".git").lower()
|
||||
require(repo_url(url) == repo_url(module_urls[source["repository"]]), "资源行与本地仓库不是同一来源")
|
||||
for relation in data["relations"]:
|
||||
require(relation["subject"] in objects and relation["evidence"] in sources, "依赖关系缺对象/来源")
|
||||
require(relation["related_object_id"] is None or relation["related_object_id"] in objects, "依赖参照未知对象")
|
||||
require("`requires`" in ontology, "依赖谓词不在本体现有关系词表")
|
||||
indexed(data["references"], "path", "引用入口")
|
||||
for reference in data["references"]:
|
||||
path = safe_path(root, reference["path"], alias=True)
|
||||
original = git_blob(root, data["source_revision"], reference["path"])
|
||||
if reference["state"] == "empty-placeholder":
|
||||
require(not path.is_symlink() and bounded_read(path) == original == b"" and reference["target"] is None and reference["related_object_id"] is None,
|
||||
"空占位文件被伪称来源链接")
|
||||
bindings[path] = digest(b"")
|
||||
else:
|
||||
require(path.is_symlink() and os.readlink(path) == reference["target"] and original.decode("utf-8") == reference["target"], "软链接状态或目标漂移")
|
||||
require(reference["related_object_id"] is None or reference["related_object_id"] in objects, "引用入口关联未知对象")
|
||||
# 符号链接绑定的是路径,不是目录内容或另一件软件身份。
|
||||
return data, sources, objects, resources, decisions, bindings
|
||||
|
||||
|
||||
def text(value):
|
||||
escaped = html.escape(str(value), quote=False)
|
||||
return escaped.replace("`", "`").replace("[", "[").replace("]", "]").replace("|", "|")
|
||||
|
||||
|
||||
def table(rows, headers):
|
||||
# 固定宽度表会把一个长名称扩散到每行;先用UTF-8字节做保守预算,避免格式化后才发现膨胀。
|
||||
widths = [len(str(h).encode("utf-8")) for h in headers]
|
||||
height = 5
|
||||
for row in rows:
|
||||
height += max([1, *[len(str(value).splitlines()) for value in row]])
|
||||
for index, value in enumerate(row):
|
||||
widths[index] = max(widths[index], len(str(value).encode("utf-8")))
|
||||
require((sum(widths) + 3 * len(headers) + 1) * height + 20 <= MAX_BYTES,
|
||||
"代码表列宽与行数超过2 MiB预算,不能静默截断")
|
||||
# 原生代码表会隔离HTML/Markdown;在这里转义会把 >= 等原文字面改坏。
|
||||
return "```text\n" + tabulate(rows, headers=headers, tablefmt="psql", disable_numparse=True) + "\n```\n"
|
||||
|
||||
|
||||
def render(data, sources, objects, resources, decisions):
|
||||
out = [MARKER, "# 法器清单与资源初审", "",
|
||||
"来源限定的静态初审,不是效果、可用性、许可证或独立语义批准。仅修改[法器初审数据](../metadata/faqi.json),不手改此视图。",
|
||||
"类型与关系复用[唯一本体](../docs/gongfa/cultivation-ontology-taxonomy.md#唯一分类树),不维护第二主树,不套功法四阶十二级。", "",
|
||||
"## 总体概览", "", f"初审时间:{data['reviewed_at']};父仓库来源修订:`{data['source_revision']}`。",
|
||||
f"本地入口 {len(data['local_entries'])} 个,来源限定法器实现初审 {len(objects)} 条,外部资源逐行分流 {len(resources)} 条;不是按目录或资源行计算独立产品数。",
|
||||
"程序源码修订和下表声明版本不等于已核发布版、已安装版本或已部署入口;同内容副本、多入口不重复登记。", "",
|
||||
table([[DECISIONS[r['decision']], len(r['resource_ids'])] for r in data['external_reviews']], ["外部分流状态", "资源行数"]),
|
||||
"## 本地来源限定法器", "",
|
||||
"以下记录只指选定来源的程序指令内容;不同内容实现是否属于同一产品/派生版本,仍须另有演化证据。用途不作为主父。", "",
|
||||
table([[o['id'], o['name'], o['type_id'], o['implementation']] for o in objects.values()], ["实现ID", "名称", "已有类型ID", "实现来源ID"])]
|
||||
for obj in objects.values():
|
||||
source = sources[obj['implementation']]
|
||||
out += [f"### {obj['id']}", "", f"{text(obj['name'])}:{text(obj['boundary'])}",
|
||||
f"实现来源 `{source['id']}`,佐证来源 `{', '.join(obj['support'])}`;声明版本:{text(obj['declared_version'] or '未核/无明确发布版本声明')}。", ""]
|
||||
out += [f"## {len(data['local_entries'])}个本地入口的分离结果", ""]
|
||||
for entry in data['local_entries']:
|
||||
out += [f"### {text(entry['path'])}", "", f"纳入实现:`{', '.join(entry['objects']) or '无'}`。{text(entry['boundary'])}",
|
||||
f"佐证来源:`{', '.join(entry['sources'])}`。"]
|
||||
out += [f"- 待核:{text(p)}" for p in entry['pending']]
|
||||
out += [""]
|
||||
out += ["## 静态依赖与引用入口", "",
|
||||
"`requires`只记录源码/说明声明的依赖;相关本地实现ID是源码参照,不证明运行时加载了该版本,更不证明实际使用、符合协议或已获权限。", "",
|
||||
table([[r['subject'], r['predicate'], r['target_label'], r['related_object_id'] or '未知', r['evidence']] for r in data['relations']], ["主体实现", "谓词", "依赖所指", "相关来源实现", "证据ID"])]
|
||||
for r in data['relations']:
|
||||
out += [f"- `{r['subject']}`:{text(r['boundary'])}"]
|
||||
out += [""]
|
||||
for r in data['references']:
|
||||
out += [f"- `{r['path']}`:`{r['state']}`;目标 `{r['target'] or '无'}`。{text(r['boundary'])}"]
|
||||
out += ["", f"## {len(resources)}条外部资源逐行分流", "",
|
||||
"名称、原ID、状态、验证状态与风险只读自原YAML。`active`与`imported-unverified`不证明可用、许可或推荐。",
|
||||
"未核远端实现/版本的候选不登记为本地法器;模型名称所指与聊天平台分开。资料排除仅针对当前条目所指,不断言整个仓库没有程序。",
|
||||
"同名或同网址只产生重复入口核查线索,不自动合并软件身份;网络/金融分流不授权开户、交易、账户读取或实际网络操作。", ""]
|
||||
for group in data['external_reviews']:
|
||||
out += [f"### {DECISIONS[group['decision']]}", "", text(group['rationale']), ""]
|
||||
rows = []
|
||||
for rid in group['resource_ids']:
|
||||
source = resources[rid]; row = source['row']
|
||||
rows.append([rid, row['name'], row['status'], row.get('verification_status', source['defaults'].get('verification_status', 'unknown')), ', '.join(row.get('risk_flags', [])) or '无'])
|
||||
out += [table(rows, ["原资源ID", "名称", "原状态", "原验证状态", "原风险标记"])]
|
||||
for rid in group['resource_ids']:
|
||||
source = resources[rid]
|
||||
details = data['resource_notes'].get(rid, '')
|
||||
related = data['local_resource_links'].get(rid)
|
||||
if related:
|
||||
details += f" 对应本地来源参照 {related};不把未版本化的仓库URL等同该固定源码版本。"
|
||||
out += [f"- `{rid}`:[原始资源行](../{source['source']}) `{source['selector']}`。{text(details)}"]
|
||||
out += [""]
|
||||
out += ["## 来源与选区", "", "选区是一基半开区间 `[start,end)`;SHA-256对应固定Git blob的完整字节与选区原字节,不归一化或复制源码。",
|
||||
"校验还核当前文件字节及submodule指针;源码存在和指针匹配不等于完整仓库语义、许可证或能力已审。", ""]
|
||||
for source in sources.values():
|
||||
out += [f"### {source['id']}", "", f"[来源文件](../{quote(source['path'], safe='/.-_')}):`{source['path']}`。",
|
||||
f"- 初审用途:`{source['purpose']}`(人工标注,不是自动语义批准)。",
|
||||
f"- 仓库:`{source['repository']}`;Git修订:`{source['revision']}`。",
|
||||
f"- 完整文件SHA-256:`{source['sha256']}`。",
|
||||
f"- 选区:`[{source['lines'][0]},{source['lines'][1]})`;SHA-256:`{source['selection_sha256']}`。", ""]
|
||||
out += ["## 维护与未完成事项", "", "```bash", "make sync-faqi-catalog", "make check-faqi-catalog", "make test-faqi-catalog", "```", "",
|
||||
"检查复用jsonschema/PyYAML,表格复用tabulate;来源、ID、选区、范围或只读视图漂移均失败,不联网补证或静默升级。",
|
||||
"此初审不维护等级、账户、设备、部署或运行证据。独立语义审查、运行/效果/许可核验、产品同一/版本演化及未逐模块展开的复合包仍待核。", ""]
|
||||
return "\n".join(out).encode("utf-8")
|
||||
|
||||
|
||||
def unchanged(bindings, root, data):
|
||||
for path, expected in bindings.items():
|
||||
require(digest(bounded_read(path)) == expected, "输入被并行修改;不提交旧视图")
|
||||
for ref in data["references"]:
|
||||
path = safe_path(root, ref["path"], alias=True)
|
||||
if ref["state"] == "symlink":
|
||||
require(path.is_symlink() and os.readlink(path) == ref["target"], "来源链接被并行修改")
|
||||
repositories = {s["repository"]: s["revision"] for s in data["sources"] if s["repository"] != "."}
|
||||
for repository, revision in repositories.items():
|
||||
index = git_output(root, "ls-files", "--stage", "--", repository).decode().split()
|
||||
require(len(index) >= 3 and index[0] == "160000" and index[1] == revision, "当前submodule索引指针漂移")
|
||||
require(git_output(root / repository, "rev-parse", "HEAD").decode().strip() == revision, "submodule修订被并行修改")
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="法器初审来源校验与只读视图维护,不执行被审程序")
|
||||
parser.add_argument("--root", type=Path, default=ROOT)
|
||||
parser.add_argument("--input", type=Path)
|
||||
parser.add_argument("--view", type=Path)
|
||||
mode = parser.add_mutually_exclusive_group()
|
||||
mode.add_argument("--check", action="store_true")
|
||||
mode.add_argument("--write", action="store_true")
|
||||
args = parser.parse_args()
|
||||
root = args.root.resolve()
|
||||
input_path = args.input.absolute() if args.input else root / "metadata/faqi.json"
|
||||
view = args.view.absolute() if args.view else root / "tools/faqi-catalog.md"
|
||||
try:
|
||||
require(not input_path.is_symlink() and input_path.parent.resolve() == input_path.parent and
|
||||
not view.is_symlink() and view.parent.resolve() == view.parent, "输入/输出含软链接")
|
||||
data, sources, objects, resources, decisions, bindings = validate(root, input_path)
|
||||
rendered = render(data, sources, objects, resources, decisions)
|
||||
require(len(rendered) <= MAX_BYTES, "生成视图超过2 MiB")
|
||||
before = bounded_read(view) if view.exists() else None
|
||||
unchanged(bindings, root, data)
|
||||
if args.write:
|
||||
require(before is None or before.startswith(MARKER.encode()), "拒绝覆盖非本工具生成的文件")
|
||||
view.parent.mkdir(parents=True, exist_ok=True)
|
||||
with tempfile.NamedTemporaryFile(dir=view.parent, prefix=".faqi-catalog-", suffix=".tmp", delete=False) as stream:
|
||||
temporary = Path(stream.name); stream.write(rendered); stream.flush(); os.fsync(stream.fileno())
|
||||
unchanged(bindings, root, data)
|
||||
require(not view.is_symlink() and (bounded_read(view) if view.exists() else None) == before, "目标被并行修改;保留临时文件,不覆盖")
|
||||
os.replace(temporary, view)
|
||||
else:
|
||||
require(before == rendered, "法器视图缺失/陈旧或手改;运行make sync-faqi-catalog")
|
||||
unchanged(bindings, root, data)
|
||||
print(json.dumps({"status": "valid-initial-source-review", "objects": len(objects), "local_entries": len(data['local_entries']),
|
||||
"external_resources": len(resources), "view_sha256": digest(rendered), **data['limits']}, ensure_ascii=False))
|
||||
return 0
|
||||
except (ContractError, OSError, ValueError, KeyError, TypeError, RecursionError, subprocess.TimeoutExpired, yaml.YAMLError, jsonschema.exceptions.SchemaError) as error:
|
||||
# 不回显输入对象或Git异常中的潜在敏感值;错误只定位契约位置。
|
||||
message = str(error) if isinstance(error, ContractError) else type(error).__name__
|
||||
print("FAQI_CATALOG_ERRORS\n" + message, file=sys.stderr)
|
||||
return 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
@@ -0,0 +1,237 @@
|
||||
#!/usr/bin/env python3
|
||||
"""以真实离线CLI消费首批法器清单;保留输入、输出和JUnit,不执行被审工具。"""
|
||||
import argparse
|
||||
import copy
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
import resource
|
||||
from pathlib import Path
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
from markdown_it import MarkdownIt
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
ARTIFACTS = None
|
||||
|
||||
|
||||
class FaqiCatalogTest(unittest.TestCase):
|
||||
def invoke(self, label, *args, memory_limit=None):
|
||||
command = [sys.executable, str(ROOT / "scripts/sync-faqi-catalog.py"), *map(str, args)]
|
||||
def bound_memory():
|
||||
resource.setrlimit(resource.RLIMIT_AS, (memory_limit, memory_limit))
|
||||
result = subprocess.run(command, cwd=ROOT, capture_output=True, timeout=45,
|
||||
preexec_fn=bound_memory if memory_limit else None)
|
||||
(ARTIFACTS / (label + ".json")).write_text(json.dumps({
|
||||
"command": command, "exit_code": result.returncode,
|
||||
"stdout": result.stdout.decode(), "stderr": result.stderr.decode(),
|
||||
}, ensure_ascii=False, indent=2), encoding="utf-8")
|
||||
return result
|
||||
|
||||
def input_copy(self, label, data):
|
||||
path = ARTIFACTS / (label + "-input.json")
|
||||
path.write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
|
||||
return path
|
||||
|
||||
def test_current_source_review_is_consumable(self):
|
||||
result = self.invoke("current", "--check")
|
||||
self.assertEqual(0, result.returncode, result.stderr.decode())
|
||||
report = json.loads(result.stdout)
|
||||
self.assertEqual((19, 13, 158), (
|
||||
report["objects"], report["local_entries"], report["external_resources"]))
|
||||
self.assertFalse(report["independent_review"])
|
||||
self.assertFalse(report["runtime_verified"])
|
||||
data = json.loads((ROOT / "metadata/faqi.json").read_text(encoding="utf-8"))
|
||||
# 首批父仓库来源必须在已发布主线可达,不能依赖仅本地存在的提交。
|
||||
published = subprocess.run(["git", "merge-base", "--is-ancestor", data["source_revision"], "refs/remotes/origin/develop"], cwd=ROOT, capture_output=True, timeout=20)
|
||||
self.assertEqual(0, published.returncode, "父仓库来源不在已发布主线历史可达")
|
||||
objects = {o["id"]: o for o in data["objects"]}
|
||||
purposes = {s["id"]: s.get("purpose") for s in data["sources"]}
|
||||
# 用途来自实际读过的实现/说明选区,而非由对象引用反推。
|
||||
self.assertEqual("support", purposes["S01"])
|
||||
for sid in ("S02", "S04", "S06", "S08", "S09", "S10", "S12", "S16", "S18", "S21", "S23", "S25", "S26", "S27", "S28", "S29", "S32", "S34", "S36"):
|
||||
self.assertEqual("implementation", purposes[sid])
|
||||
# 期望来自实现选区与本体:可执行配置不是CLI本体,技能说明不是脚本。
|
||||
for name in ("faqi-tmux", "faqi-oh-my-tmux", "faqi-my-nvim-lua",
|
||||
"faqi-codex-config-installer", "faqi-auto-tmux"):
|
||||
self.assertEqual("software-artifact", objects[name]["type_id"])
|
||||
self.assertNotIn("faqi-codex-cli", objects)
|
||||
decisions = {rid: r["decision"] for r in data["external_reviews"] for rid in r["resource_ids"]}
|
||||
self.assertEqual("excluded_model", decisions["tools-platforms-claude-opus-4-6-f751380c"])
|
||||
self.assertEqual("excluded_content", decisions["tools-platforms-prompt-jsonl-8e9b2066"])
|
||||
self.assertEqual("pending_identity", decisions["tools-platforms-zsh-d6d24951"])
|
||||
self.assertEqual("restricted_service_pending", decisions["network-payment-services-bybit-81d32c91"])
|
||||
self.assertEqual("related_local_source", decisions["repo-rules-scaffolds-tmux-9f36981a"])
|
||||
aliases = {a["path"]: a for a in data["references"]}
|
||||
for path in ("skills/auto-tmux/assets/tmux-src", "skills/auto-tmux/assets/oh-my-tmux"):
|
||||
self.assertEqual("empty-placeholder", aliases[path]["state"])
|
||||
self.assertIsNone(aliases[path]["related_object_id"])
|
||||
|
||||
def test_rejects_unsupported_identity_and_source_claims_without_writing(self):
|
||||
original = json.loads((ROOT / "metadata/faqi.json").read_text(encoding="utf-8"))
|
||||
changed = copy.deepcopy(original)
|
||||
changed["objects"].append({**changed["objects"][0], "id": "faqi-duplicate-cli-mcp"})
|
||||
cases = [("same-content-two-identities", changed)]
|
||||
changed = copy.deepcopy(original); changed["objects"][0]["type_id"] = "model-artifact"
|
||||
cases.append(("model-as-tool", changed))
|
||||
changed = copy.deepcopy(original); changed["limits"]["runtime_verified"] = True
|
||||
cases.append(("invented-runtime", changed))
|
||||
changed = copy.deepcopy(original); changed["sources"][0]["sha256"] = "0" * 64
|
||||
cases.append(("source-drift", changed))
|
||||
changed = copy.deepcopy(original); changed["sources"][0]["lines"] = [1, 999999]
|
||||
cases.append(("selection-overrun", changed))
|
||||
changed = copy.deepcopy(original); changed["sources"][0]["path"] = "../../outside.py"
|
||||
cases.append(("path-escape", changed))
|
||||
changed = copy.deepcopy(original); changed["sources"][0]["path"] = "tools/config/.codex/auth.json"
|
||||
cases.append(("credential-source", changed))
|
||||
changed = copy.deepcopy(original); changed["external_reviews"][0]["resource_ids"].pop()
|
||||
cases.append(("missing-resource", changed))
|
||||
changed = copy.deepcopy(original); changed["objects"][0]["grade"] = "天阶高级"
|
||||
cases.append(("grade-injection", changed))
|
||||
changed = copy.deepcopy(original); changed["objects"][0]["implementation"] = changed["sources"][0]["id"]
|
||||
cases.append(("description-as-implementation", changed))
|
||||
changed = copy.deepcopy(original)
|
||||
changed["local_entries"][0]["objects"], changed["local_entries"][1]["objects"] = changed["local_entries"][1]["objects"], changed["local_entries"][0]["objects"]
|
||||
cases.append(("wrong-entry-identity", changed))
|
||||
changed = copy.deepcopy(original); changed["sources"][1]["purpose"] = "support"
|
||||
cases.append(("unsupported-source-purpose", changed))
|
||||
changed = copy.deepcopy(original); changed["sources"][1]["selection_sha256"] = "0" * 64
|
||||
cases.append(("selection-drift", changed))
|
||||
changed = copy.deepcopy(original); changed["objects"][0]["name"] = "程序\n```\n<script>"
|
||||
cases.append(("control-character-injection", changed))
|
||||
changed = copy.deepcopy(original); changed["references"][2]["state"] = "symlink"
|
||||
cases.append(("placeholder-as-link", changed))
|
||||
for label, data in cases:
|
||||
with self.subTest(label=label):
|
||||
view = ARTIFACTS / (label + ".md")
|
||||
result = self.invoke(label, "--input", self.input_copy(label, data), "--view", view, "--write")
|
||||
self.assertNotEqual(0, result.returncode)
|
||||
self.assertIn("FAQI_CATALOG_ERRORS", result.stderr.decode())
|
||||
self.assertFalse(view.exists())
|
||||
|
||||
def test_repeatable_view_escaping_and_ownership(self):
|
||||
data = json.loads((ROOT / "metadata/faqi.json").read_text(encoding="utf-8"))
|
||||
data["objects"][0]["name"] = '<script>unexpected</script> ``` [link](javascript:void(0)) |'
|
||||
input_path = self.input_copy("escaped", data)
|
||||
view = ARTIFACTS / "safe-view.md"
|
||||
self.assertEqual(0, self.invoke("write-first", "--input", input_path, "--view", view, "--write").returncode)
|
||||
first = view.read_bytes()
|
||||
parser = MarkdownIt("commonmark")
|
||||
markup = parser.render(first.decode())
|
||||
self.assertNotIn("<script>", markup)
|
||||
self.assertNotIn('href="javascript:', markup)
|
||||
tables = "\n".join(t.content for t in parser.parse(first.decode()) if t.type == "fence")
|
||||
# psql代码表是原样文本:HTML转义不能把依赖版本和原名称改成字面实体。
|
||||
self.assertIn("tmux>=2.6及awk/perl/grep/sed", tables)
|
||||
self.assertIn(data["objects"][0]["name"], tables)
|
||||
self.assertEqual(0, self.invoke("write-repeat", "--input", input_path, "--view", view, "--write").returncode)
|
||||
self.assertEqual(first, view.read_bytes())
|
||||
self.assertEqual(0, self.invoke("check-repeat", "--input", input_path, "--view", view, "--check").returncode)
|
||||
view.write_bytes(first + b"\nmanual-drift\n")
|
||||
self.assertNotEqual(0, self.invoke("stale-view", "--input", input_path, "--view", view, "--check").returncode)
|
||||
plain = ARTIFACTS / "not-owned.md"; plain.write_text("必须保留的人工文档\n", encoding="utf-8")
|
||||
self.assertNotEqual(0, self.invoke("reject-non-owned", "--input", input_path, "--view", plain, "--write").returncode)
|
||||
self.assertEqual("必须保留的人工文档\n", plain.read_text(encoding="utf-8"))
|
||||
link = ARTIFACTS / "symlink.md"; link.symlink_to(plain)
|
||||
self.assertNotEqual(0, self.invoke("reject-output-link", "--input", input_path, "--view", link, "--write").returncode)
|
||||
self.assertEqual("必须保留的人工文档\n", plain.read_text(encoding="utf-8"))
|
||||
alias = ARTIFACTS / "input-parent-alias"; alias.symlink_to(ARTIFACTS, target_is_directory=True)
|
||||
forbidden = ARTIFACTS / "parent-link-view.md"
|
||||
result = self.invoke("reject-input-parent-link", "--input", alias / input_path.name, "--view", forbidden, "--write")
|
||||
self.assertNotEqual(0, result.returncode)
|
||||
self.assertFalse(forbidden.exists())
|
||||
|
||||
def test_wide_resource_table_fails_within_budget_without_writing(self):
|
||||
# 真实隔离Git/YAML输入;一条长名称使列宽×行数放大,不能先耗尽内存再检查输出。
|
||||
root = ARTIFACTS / "wide-table-fixture"; root.mkdir()
|
||||
(root / "metadata").mkdir(); (root / "tools/fixture").mkdir(parents=True)
|
||||
(root / "docs/gongfa").mkdir(parents=True)
|
||||
(root / "assets/external-resources").mkdir(parents=True)
|
||||
for path in ("metadata/faqi.schema.json", "docs/gongfa/cultivation-ontology-taxonomy.md"):
|
||||
(root / path).write_bytes((ROOT / path).read_bytes())
|
||||
body = b"def identity(value):\n return value\n"
|
||||
(root / "tools/fixture/main.py").write_bytes(body)
|
||||
(root / ".gitmodules").write_bytes(b"")
|
||||
for index, command in enumerate((
|
||||
["git", "init", "--quiet", str(root)],
|
||||
["git", "-C", str(root), "add", ".gitmodules", "tools/fixture/main.py"],
|
||||
["git", "-C", str(root), "-c", "user.name=tradecatlabs", "-c", "user.email=288998340+tradecatlabs@users.noreply.github.com", "commit", "--quiet", "--no-gpg-sign", "-m", "test: isolated source fixture"],
|
||||
)):
|
||||
result = subprocess.run(command, capture_output=True, timeout=20, env={**os.environ, "GIT_AUTHOR_DATE": "2026-10-09T00:00:00+00:00", "GIT_COMMITTER_DATE": "2026-10-09T00:00:00+00:00"})
|
||||
(ARTIFACTS / f"fixture-git-{index}.json").write_text(json.dumps({"command": command, "exit_code": result.returncode, "stdout": result.stdout.decode(), "stderr": result.stderr.decode()}, ensure_ascii=False), encoding="utf-8")
|
||||
self.assertEqual(0, result.returncode, result.stderr.decode())
|
||||
revision = subprocess.check_output(["git", "-C", str(root), "rev-parse", "HEAD"], timeout=20).decode().strip()
|
||||
data = json.loads((ROOT / "metadata/faqi.json").read_text(encoding="utf-8"))
|
||||
data["source_revision"] = revision
|
||||
source = {"id": "S01", "purpose": "implementation", "path": "tools/fixture/main.py", "repository": ".", "revision": revision, "sha256": hashlib.sha256(body).hexdigest(), "lines": [1, 3], "selection_sha256": hashlib.sha256(body).hexdigest()}
|
||||
data["sources"] = [source]
|
||||
data["objects"] = [{**data["objects"][0], "id": "faqi-fixture", "implementation": "S01", "support": []}]
|
||||
data["local_entries"] = [{"path": "tools/fixture", "objects": ["faqi-fixture"], "sources": ["S01"], "boundary": "隔离来源形态夹具,不证明工具能力", "pending": []}]
|
||||
ids = []
|
||||
for file_index, source in enumerate(data["external_sources"]):
|
||||
rows = []
|
||||
for index in range(512 if file_index == 0 else 1):
|
||||
rid = f"fixture-{file_index}-{index}"; ids.append(rid)
|
||||
name = "x" * (512 * 1024) if file_index == index == 0 else "短名称"
|
||||
rows.append({"id": rid, "name": name, "status": "active"})
|
||||
raw = json.dumps({"defaults": {"verification_status": "imported-unverified"}, "resources": rows}, ensure_ascii=False).encode()
|
||||
self.assertLess(len(raw), 2 * 1024 * 1024)
|
||||
(root / source["path"]).write_bytes(raw); source["sha256"] = hashlib.sha256(raw).hexdigest()
|
||||
data["external_reviews"] = [{"decision": "software_candidate", "rationale": "隔离资源宽表夹具,不作语义初审", "resource_ids": ids}]
|
||||
data["resource_notes"] = {}; data["local_resource_links"] = {}; data["references"] = []; data["relations"] = []
|
||||
view = ARTIFACTS / "budget-view.md"
|
||||
result = self.invoke("wide-table-budget", "--root", root, "--input", self.input_copy("wide-table", data), "--view", view, "--write", memory_limit=192 * 1024 * 1024)
|
||||
self.assertNotEqual(0, result.returncode)
|
||||
self.assertIn("FAQI_CATALOG_ERRORS", result.stderr.decode())
|
||||
self.assertFalse(view.exists())
|
||||
|
||||
def test_strict_json(self):
|
||||
original = (ROOT / "metadata/faqi.json").read_text(encoding="utf-8")
|
||||
for label, text in (
|
||||
("duplicate-json-key", original.replace('{', '{"format_version": 1,', 1)),
|
||||
("non-json-number", original.replace('"format_version": 1', '"format_version": NaN', 1)),
|
||||
("oversized-json", original + " " * (2 * 1024 * 1024 + 1)),
|
||||
("non-json-infinity", original.replace('"format_version": 1', '"format_version": Infinity', 1)),
|
||||
):
|
||||
with self.subTest(label=label):
|
||||
path = ARTIFACTS / (label + "-input.json"); path.write_text(text, encoding="utf-8")
|
||||
result = self.invoke(label, "--input", path, "--check")
|
||||
self.assertNotEqual(0, result.returncode)
|
||||
self.assertIn("FAQI_CATALOG_ERRORS", result.stderr.decode())
|
||||
|
||||
|
||||
def main():
|
||||
global ARTIFACTS
|
||||
parser = argparse.ArgumentParser(description="法器初审清单离线CLI行为验证,保留隔离工件")
|
||||
parser.add_argument("--artifacts", type=Path)
|
||||
parser.add_argument("--current-only", action="store_true")
|
||||
args = parser.parse_args()
|
||||
if args.artifacts:
|
||||
ARTIFACTS = args.artifacts.resolve(); ARTIFACTS.mkdir(parents=True, exist_ok=False)
|
||||
else:
|
||||
ARTIFACTS = Path(tempfile.mkdtemp(prefix="faqi-catalog-test-"))
|
||||
suite = unittest.TestSuite([FaqiCatalogTest("test_current_source_review_is_consumable")]) if args.current_only else unittest.defaultTestLoader.loadTestsFromTestCase(FaqiCatalogTest)
|
||||
test_ids = [test.id() for test in suite]
|
||||
result = unittest.TextTestRunner(verbosity=2).run(suite)
|
||||
summary = {"tests": result.testsRun, "failures": len(result.failures), "errors": len(result.errors),
|
||||
"passed": result.wasSuccessful(), "independent_review": False, "reviewed_tools_executed": False,
|
||||
"artifact_directory": str(ARTIFACTS)}
|
||||
(ARTIFACTS / "result.json").write_text(json.dumps(summary, ensure_ascii=False, indent=2), encoding="utf-8")
|
||||
junit = ET.Element("testsuite", name="faqi-catalog", tests=str(result.testsRun), failures=str(len(result.failures)), errors=str(len(result.errors)))
|
||||
for test_id in test_ids:
|
||||
case = ET.SubElement(junit, "testcase", name=test_id)
|
||||
for kind, issues in (("failure", result.failures), ("error", result.errors)):
|
||||
for test, trace in issues:
|
||||
if test.id() == test_id or test.id().startswith(test_id + " "):
|
||||
ET.SubElement(case, kind).text = trace
|
||||
ET.ElementTree(junit).write(ARTIFACTS / "junit.xml", encoding="utf-8", xml_declaration=True)
|
||||
print(json.dumps(summary, ensure_ascii=False))
|
||||
return 0 if result.wasSuccessful() else 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
@@ -8,6 +8,7 @@
|
||||
- `tools/prompts-library/`:提示词 Excel、Markdown、JSONL 转换工具。
|
||||
- `tools/chat-vault/`:AI 聊天记录保存工具。
|
||||
- `tools/external/`:第三方工具、外部仓库和 Git submodule。
|
||||
- `faqi-catalog.md`:法器来源限定初审与资源分流的只读生成清单;数据归`metadata/faqi.json`,资源原事实与类型仍归各自唯一所有者。
|
||||
|
||||
## 约束
|
||||
|
||||
@@ -15,3 +16,5 @@
|
||||
- 不在工具配置中提交真实密钥、Token 或个人凭证。
|
||||
- 修改工具行为时,同步更新对应 README、AGENTS 和根目录命令说明。
|
||||
- 外部源码目录除非任务明确要求,否则不要顺手格式化或批量替换。
|
||||
- 法器清单不手改;按`make sync-faqi-catalog`生成,随后`make check-faqi-catalog`与`make test-faqi-catalog`验证,不搬移源码或执行被审程序。
|
||||
- 初审不是工具品级、完整包语义、运行/效果、许可或独立身份批准;文件/入口/副本/版本/产品关系分别核,不按名称或目录计独立法器。
|
||||
|
||||
@@ -8,3 +8,17 @@
|
||||
- `tools/chat-vault/`:AI 聊天记录保存工具。
|
||||
- `tools/external/`:外部仓库、第三方工具与 submodule。
|
||||
- `tools/config/`:Codex 等工具配置。
|
||||
- [faqi-catalog.md](faqi-catalog.md):法器来源限定初审及外部资源分流的只读清单;来源与判定归[metadata/faqi.json](../metadata/faqi.json),类型归唯一本体,原资源字段仍归资源YAML。
|
||||
|
||||
## 法器清单维护
|
||||
|
||||
```bash
|
||||
make sync-faqi-catalog
|
||||
make check-faqi-catalog
|
||||
make test-faqi-catalog
|
||||
```
|
||||
|
||||
不搬移源码、Skill或配置;按程序指令内容、方法/规约、模型、载体、地址及运行实际所指分离。
|
||||
脚本、Lua或嵌入shell的配置可具有程序所指,不因所在目录或后缀一律排除;纯配置、Skill说明与软件实现不强行合并。
|
||||
清单只证明所列固定来源的初审记录,不证明独立产品数、运行正确、许可证、可用性或效果,法器不套功法品级。
|
||||
新增来源/内容变化先核身份与版本;视图仅由维护脚本生成,不把临时报告或个人目录作为长期数据源。
|
||||
|
||||
@@ -0,0 +1,965 @@
|
||||
<!-- generated: sync-faqi-catalog.py -->
|
||||
# 法器清单与资源初审
|
||||
|
||||
来源限定的静态初审,不是效果、可用性、许可证或独立语义批准。仅修改[法器初审数据](../metadata/faqi.json),不手改此视图。
|
||||
类型与关系复用[唯一本体](../docs/gongfa/cultivation-ontology-taxonomy.md#唯一分类树),不维护第二主树,不套功法四阶十二级。
|
||||
|
||||
## 总体概览
|
||||
|
||||
初审时间:2026-10-09T07:15:02.009544+00:00;父仓库来源修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
本地入口 13 个,来源限定法器实现初审 19 条,外部资源逐行分流 158 条;不是按目录或资源行计算独立产品数。
|
||||
程序源码修订和下表声明版本不等于已核发布版、已安装版本或已部署入口;同内容副本、多入口不重复登记。
|
||||
|
||||
```text
|
||||
+---------------------+------------+
|
||||
| 外部分流状态 | 资源行数 |
|
||||
|---------------------+------------|
|
||||
| 软件实现候选 | 67 |
|
||||
| 托管入口候选 | 22 |
|
||||
| 排除:资料/规约内容 | 38 |
|
||||
| 排除:模型名称所指 | 4 |
|
||||
| 待核:对象身份 | 22 |
|
||||
| 关联已审本地来源 | 2 |
|
||||
| 待核:受限服务所指 | 3 |
|
||||
+---------------------+------------+
|
||||
```
|
||||
|
||||
## 本地来源限定法器
|
||||
|
||||
以下记录只指选定来源的程序指令内容;不同内容实现是否属于同一产品/派生版本,仍须另有演化证据。用途不作为主父。
|
||||
|
||||
```text
|
||||
+-----------------------------+-----------------------------------+-------------------+--------------+
|
||||
| 实现ID | 名称 | 已有类型ID | 实现来源ID |
|
||||
|-----------------------------+-----------------------------------+-------------------+--------------|
|
||||
| faqi-prompt-converter | 提示词格式转换程序 | software-artifact | S02 |
|
||||
| faqi-chat-vault | Chat Vault同步与查询程序 | software-artifact | S04 |
|
||||
| faqi-codex-config-installer | Codex配置安装与恢复脚本 | software-artifact | S06 |
|
||||
| faqi-auto-skill-create | auto-skill模板生成脚本 | software-artifact | S08 |
|
||||
| faqi-auto-skill-validate | auto-skill结构校验脚本 | software-artifact | S09 |
|
||||
| faqi-skill-seekers-adapter | Skill Seekers本地运行适配脚本 | software-artifact | S10 |
|
||||
| faqi-auto-tmux | auto-tmux命令封装程序 | software-artifact | S12 |
|
||||
| faqi-skill-seekers | Skill Seekers程序 | software-artifact | S16 |
|
||||
| faqi-oh-my-tmux | oh-my-tmux可执行配置程序 | software-artifact | S18 |
|
||||
| faqi-tmux | tmux终端复用程序 | software-artifact | S21 |
|
||||
| faqi-claude-skill-init | 官方Skill初始化脚本 | software-artifact | S23 |
|
||||
| faqi-html-epub-css | EPUB CSS清理网页程序 | software-artifact | S25 |
|
||||
| faqi-html-markdown-text | Markdown预览与文本导出网页程序 | software-artifact | S26 |
|
||||
| faqi-html-task-card | 任务卡片PNG导出网页程序 | software-artifact | S27 |
|
||||
| faqi-html-xhs-card | 小红书内容卡片PNG导出网页程序 | software-artifact | S28 |
|
||||
| faqi-html-markdown-sync-png | Markdown同步预览与PNG导出网页程序 | software-artifact | S29 |
|
||||
| faqi-my-nvim-lua | my-nvim的LazyVim引导配置程序 | software-artifact | S32 |
|
||||
| faqi-mc-player-transfer | Minecraft基岩版角色迁移程序 | software-artifact | S34 |
|
||||
| faqi-xhs-zip-pdf | 小红书图片ZIP转PDF程序 | software-artifact | S36 |
|
||||
+-----------------------------+-----------------------------------+-------------------+--------------+
|
||||
```
|
||||
|
||||
### faqi-prompt-converter
|
||||
|
||||
提示词格式转换程序:指main.py及其转换实现所表达的程序内容;Excel、Markdown和JSONL是输入/输出,不随转换模式复制工具身份。未验证转换正确性。
|
||||
实现来源 `S02`,佐证来源 `S01`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
### faqi-chat-vault
|
||||
|
||||
Chat Vault同步与查询程序:所指为同步/查询/导出程序,不是数据库、会话、消息或一次同步;模块顶层会ensure_venv,import和--help也不能视为无副作用,未启动或读取聊天数据。
|
||||
实现来源 `S04`,佐证来源 `S03`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
### faqi-codex-config-installer
|
||||
|
||||
Codex配置安装与恢复脚本:纳入安装脚本的程序指令;不是Codex CLI实现,不包含账号授权,safe/power配置、全局指令文本另作规约内容。备份/覆盖能力尚未运行验证。
|
||||
实现来源 `S06`,佐证来源 `S05`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
### faqi-auto-skill-create
|
||||
|
||||
auto-skill模板生成脚本:指渲染Skill模板与建立目录的程序,不是生成出的Skill内容或整个元技能。--force可覆盖目标,未执行。
|
||||
实现来源 `S08`,佐证来源 `S07`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
### faqi-auto-skill-validate
|
||||
|
||||
auto-skill结构校验脚本:指frontmatter和结构校验程序;成功结构检查不证明Skill语义、执行正确或效果。
|
||||
实现来源 `S09`,佐证来源 `S07`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
### faqi-skill-seekers-adapter
|
||||
|
||||
Skill Seekers本地运行适配脚本:设置venv/PYTHONPATH并exec上游CLI的本地适配程序。指令内容不同于上游核心,不能把封装当同一副本,也不因同一用途合并其他生成脚本。
|
||||
实现来源 `S10`,佐证来源 `S07`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
### faqi-auto-tmux
|
||||
|
||||
auto-tmux命令封装程序:指统一操控脚本,不是SKILL.md、tmux二进制、session/pane或某次操作;支持多命令不增加身份。未发送按键、创建会话或读取pane。
|
||||
实现来源 `S12`,佐证来源 `S11`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
### faqi-skill-seekers
|
||||
|
||||
Skill Seekers程序:指固定submodule修订的软件实现;多个CLI入口及可选MCP模块不机械复制产品身份。3.5.1仅为pyproject源码声明,不是已核发布或运行版。
|
||||
实现来源 `S16`,佐证来源 `S14, S15`;声明版本:3.5.1(仅源码声明)。
|
||||
|
||||
### faqi-oh-my-tmux
|
||||
|
||||
oh-my-tmux可执行配置程序:配置文件含run、cut|sh调用链及可执行shell指令,按实际程序内容归software-artifact,不能仅因.conf后缀归纯规约;不是tmux本身。
|
||||
实现来源 `S18`,佐证来源 `S17, S19`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
### faqi-tmux
|
||||
|
||||
tmux终端复用程序:指固定源码修订的程序内容,不是物理终端、pane、socket地址或一次会话。Git describe的邻近tag不作为已核发布版本。
|
||||
实现来源 `S21`,佐证来源 `S20`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
### faqi-claude-skill-init
|
||||
|
||||
官方Skill初始化脚本:只纳入skill-creator下生成目录/模板的独立Python程序,不把官方Skill集合、自然语言方法、模板或其他全部辅助脚本称作同一程序。
|
||||
实现来源 `S23`,佐证来源 `S22`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
### faqi-html-epub-css
|
||||
|
||||
EPUB CSS清理网页程序:HTML内JavaScript负责读取、改写CSS和重新打包;是浏览器程序内容,不是纯文章。需JSZip等外部脚本,未启动浏览器或处理书籍。
|
||||
实现来源 `S25`,佐证来源 `S24`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
### faqi-html-markdown-text
|
||||
|
||||
Markdown预览与文本导出网页程序:指marked驱动的预览/复制/文本导出实现;源码sanitize:false且innerHTML,不能把预览声明当安全处理不可信Markdown的证据。
|
||||
实现来源 `S26`,佐证来源 `S24`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
### faqi-html-task-card
|
||||
|
||||
任务卡片PNG导出网页程序:指html2canvas驱动的任务卡片导出实现;卡片内容、导出图片和一次生成过程不等于程序。
|
||||
实现来源 `S27`,佐证来源 `S24`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
### faqi-html-xhs-card
|
||||
|
||||
小红书内容卡片PNG导出网页程序:指可编辑内容卡片的PNG导出实现;不是图文资料或抓取客户端,未核依赖/CDN可用性。
|
||||
实现来源 `S28`,佐证来源 `S24`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
### faqi-html-markdown-sync-png
|
||||
|
||||
Markdown同步预览与PNG导出网页程序:文件名带1.0,但实际title与指令所指为Markdown同步预览/调整宽度/PNG导出;不凭文件名当小红书产品版本。与其他页面内容不同,产品同一/前驱关系未批准。
|
||||
实现来源 `S29`,佐证来源 `S24`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
### faqi-my-nvim-lua
|
||||
|
||||
my-nvim的LazyVim引导配置程序:Lua含git clone、异常分支、setup等可执行指令,不是纯参数表;是Neovim/LazyVim配置程序,不是Neovim实现。README v0.11.5指宿主Neovim,不作为配置版本。
|
||||
实现来源 `S32`,佐证来源 `S30, S31`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
### faqi-mc-player-transfer
|
||||
|
||||
Minecraft基岩版角色迁移程序:extract/import是同一程序的两种任务;存档、角色数据和一次迁移不是程序。涉及读写存档,未运行,不把备份提示当恢复成功证据。
|
||||
实现来源 `S34`,佐证来源 `S33`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
### faqi-xhs-zip-pdf
|
||||
|
||||
小红书图片ZIP转PDF程序:纳入排序、合并与PDF写出程序;源码会extractall、清理固定temp_extract目录并在成功路径删除原ZIP。属于数据损失/路径处理风险,未执行或证明安全。
|
||||
实现来源 `S36`,佐证来源 `S35`;声明版本:未核/无明确发布版本声明。
|
||||
|
||||
## 13个本地入口的分离结果
|
||||
|
||||
### tools/prompts-library
|
||||
|
||||
纳入实现:`faqi-prompt-converter`。纳入程序,不把提示词资产或生成目录当工具实现。
|
||||
佐证来源:`S01, S02`。
|
||||
|
||||
### tools/chat-vault
|
||||
|
||||
纳入实现:`faqi-chat-vault`。程序与SQLite记录、日志、会话实体及存储载体分开。
|
||||
佐证来源:`S03, S04`。
|
||||
- 待核:运行效果、隐私边界与真正同步权限未核;README“只读”声明不证明数据安全。
|
||||
|
||||
### tools/config/.codex
|
||||
|
||||
纳入实现:`faqi-codex-config-installer`。配置与AGENTS文本不等于CLI;脚本本身有独立程序所指。
|
||||
佐证来源:`S05, S06`。
|
||||
- 待核:Codex实际程序、已安装版本、权限及账户不由本目录证明。
|
||||
|
||||
### skills/auto-skill
|
||||
|
||||
纳入实现:`faqi-auto-skill-create, faqi-auto-skill-validate, faqi-skill-seekers-adapter`。Skill说明/规约与三个独立入口脚本分离,不把整Skill包登记成一件软件。
|
||||
佐证来源:`S07, S08, S09, S10`。
|
||||
- 待核:其他辅助模块未逐模块登记,不能将本次选区称为全包能力审查。
|
||||
|
||||
### skills/auto-tmux
|
||||
|
||||
纳入实现:`faqi-auto-tmux`。Skill方法/规约、执行脚本、被依赖程序及运行入口分别指认。
|
||||
佐证来源:`S11, S12, S13`。
|
||||
- 待核:两个assets引用实际上是零字节普通占位文件,不是README声称的软链接;本次记录缺口,不冒称已修复或上游源码可经此引用到达。
|
||||
- 待核:蜂群附属脚本不逐一登记,不启动蜂群,也不将蜂群状态/日志算软件。
|
||||
|
||||
### tools/external/Skill_Seekers-development
|
||||
|
||||
纳入实现:`faqi-skill-seekers`。源码内容与仓库载体、接口规范、抓取过程、输入资料和生成Skill分开。
|
||||
佐证来源:`S14, S15, S16`。
|
||||
- 待核:CLI与MCP各实现的完整对应关系、许可/可用性与外部I/O权限未作完整审查。
|
||||
|
||||
### tools/external/.tmux
|
||||
|
||||
纳入实现:`faqi-oh-my-tmux`。配置数据与嵌入程序按实际所指区分;本条纳入可执行配置程序,未安装或source配置。
|
||||
佐证来源:`S17, S18, S19`。
|
||||
- 待核:源码含条件性kill-server;纳入不等于可安全对当前会话执行。
|
||||
|
||||
### tools/external/tmux
|
||||
|
||||
纳入实现:`faqi-tmux`。tmux程序与配置、操控封装、终端会话和显示记录分开。
|
||||
佐证来源:`S20, S21`。
|
||||
|
||||
### tools/external/claude-official-skills
|
||||
|
||||
纳入实现:`faqi-claude-skill-init`。集合入口不等于法器身份;指令内容与脚本实现分别判断。
|
||||
佐证来源:`S22, S23`。
|
||||
- 待核:README明确部分文档Skill仅source-available,不能把整个集合称为同一开源许可证;本次不批准再分发/商用许可。
|
||||
- 待核:其余辅助脚本未逐模块展开。
|
||||
|
||||
### tools/external/html-tools-main
|
||||
|
||||
纳入实现:`faqi-html-epub-css, faqi-html-markdown-text, faqi-html-task-card, faqi-html-xhs-card, faqi-html-markdown-sync-png`。五个页面确有不同JavaScript实现,登记来源限定内容记录,不按HTML目录或README宣传登记一件全能工具。
|
||||
佐证来源:`S24, S25, S26, S27, S28, S29`。
|
||||
- 待核:两个Markdown相关实现以及文件名“1.0”的产品同一/版本演化仍待核,不自动合并或填predecessor。
|
||||
- 待核:README的index.html/tools/示意与当前目录实际平铺不同;“无需额外依赖”不等于无需网络/CDN脚本。
|
||||
|
||||
### tools/external/my-nvim
|
||||
|
||||
纳入实现:`faqi-my-nvim-lua`。配置程序、宿主Neovim、LazyVim依赖与说明宣传各有自己的所指。
|
||||
佐证来源:`S30, S31, S32`。
|
||||
- 待核:配置会尝试克隆插件并启用更新检查;未运行,未核实际依赖锁定或README“全面测试”主张。
|
||||
|
||||
### tools/external/MCPlayerTransfer
|
||||
|
||||
纳入实现:`faqi-mc-player-transfer`。纳入迁移程序,角色数据与存档载体排除于程序身份。
|
||||
佐证来源:`S33, S34`。
|
||||
|
||||
### tools/external/XHS-image-to-PDF-conversion
|
||||
|
||||
纳入实现:`faqi-xhs-zip-pdf`。ZIP/PDF为输入/输出制品,原ZIP删除不是工具身份或效果证明。
|
||||
佐证来源:`S35, S36`。
|
||||
- 待核:不可逆删除、解压路径与部分失败恢复须先隔离验证,不能直接用真实资料运行。
|
||||
|
||||
## 静态依赖与引用入口
|
||||
|
||||
`requires`只记录源码/说明声明的依赖;相关本地实现ID是源码参照,不证明运行时加载了该版本,更不证明实际使用、符合协议或已获权限。
|
||||
|
||||
```text
|
||||
+----------------------------+----------+------------------------------------+--------------------+----------+
|
||||
| 主体实现 | 谓词 | 依赖所指 | 相关来源实现 | 证据ID |
|
||||
|----------------------------+----------+------------------------------------+--------------------+----------|
|
||||
| faqi-auto-tmux | requires | tmux程序(运行版本未知) | faqi-tmux | S13 |
|
||||
| faqi-oh-my-tmux | requires | tmux>=2.6及awk/perl/grep/sed | faqi-tmux | S17 |
|
||||
| faqi-skill-seekers-adapter | requires | 链接源码中的skill_seekers.cli.main | faqi-skill-seekers | S10 |
|
||||
| faqi-my-nvim-lua | requires | Neovim运行环境、lazy.nvim和LazyVim | 未知 | S32 |
|
||||
+----------------------------+----------+------------------------------------+--------------------+----------+
|
||||
```
|
||||
|
||||
- `faqi-auto-tmux`:脚本调用PATH中的tmux;本地上游源码仅作相关参照,不证明实际安装二进制来自该修订。
|
||||
- `faqi-oh-my-tmux`:README声明版本下限,不将配置修订误写成tmux版本,也不保证当前环境满足依赖。
|
||||
- `faqi-skill-seekers-adapter`:源码路径确由软链接指到选定submodule;这是静态加载意图,venv实际依赖、Python解析和运行结果未核。
|
||||
- `faqi-my-nvim-lua`:不把配置包当Neovim;源码可联网克隆/更新插件,实际宿主与依赖版本未绑定。
|
||||
|
||||
- `skills/auto-skill/scripts/Skill_Seekers-development`:`symlink`;目标 `../../../tools/external/Skill_Seekers-development`。同一仓库源码的引用入口,不新增法器副本;封装脚本另有指令内容。
|
||||
- `skills/claude-official-skills`:`symlink`;目标 `../tools/external/claude-official-skills`。指向Skill集合而非一件软件,不能再因引用入口登记整集合。
|
||||
- `skills/auto-tmux/assets/oh-my-tmux`:`empty-placeholder`;目标 `无`。实际Git模式100644、0字节;README称软链接,但此路径不能提供上游来源到达证据。
|
||||
- `skills/auto-tmux/assets/tmux-src`:`empty-placeholder`;目标 `无`。实际Git模式100644、0字节;独立tmux源码已按真实submodule审,不把占位文件算副本。
|
||||
|
||||
## 158条外部资源逐行分流
|
||||
|
||||
名称、原ID、状态、验证状态与风险只读自原YAML。`active`与`imported-unverified`不证明可用、许可或推荐。
|
||||
未核远端实现/版本的候选不登记为本地法器;模型名称所指与聊天平台分开。资料排除仅针对当前条目所指,不断言整个仓库没有程序。
|
||||
同名或同网址只产生重复入口核查线索,不自动合并软件身份;网络/金融分流不授权开户、交易、账户读取或实际网络操作。
|
||||
|
||||
### 软件实现候选
|
||||
|
||||
原行明确描述程序、编辑器、CLI、插件、库或生成工具,保留软件实现候选;只有名称/介绍地址,未核具体实现、版本、许可证或能力,不直接赋型/登记。
|
||||
|
||||
```text
|
||||
+-----------------------------------------------------+-----------------------+--------------+---------------------+--------------+
|
||||
| 原资源ID | 名称 | 原状态 | 原验证状态 | 原风险标记 |
|
||||
|-----------------------------------------------------+-----------------------+--------------+---------------------+--------------|
|
||||
| tools-platforms-codex-cli-362bc20a | Codex CLI | active | imported-unverified | 无 |
|
||||
| tools-platforms-droid-1b66f6e0 | Droid | active | imported-unverified | 无 |
|
||||
| tools-platforms-docusaurus-09c54423 | Docusaurus | active | imported-unverified | 无 |
|
||||
| tools-platforms-vitepress-da10a919 | VitePress | active | imported-unverified | 无 |
|
||||
| tools-platforms-lazyvim-2f22a781 | LazyVim | active | imported-unverified | 无 |
|
||||
| tools-platforms-neovim-a8b85739 | Neovim | active | imported-unverified | 无 |
|
||||
| tools-platforms-pearai-0683754c | PearAI | active | imported-unverified | 无 |
|
||||
| tools-platforms-vs-code-e8f2d385 | VS Code | active | imported-unverified | 无 |
|
||||
| tools-platforms-void-b1594346 | Void | active | imported-unverified | 无 |
|
||||
| tools-platforms-django-e05156b6 | Django | active | imported-unverified | 无 |
|
||||
| tools-platforms-excalidraw-02ba0cb2 | Excalidraw | active | imported-unverified | 无 |
|
||||
| tools-platforms-mermaid-cc6f6e7e | Mermaid | active | imported-unverified | 无 |
|
||||
| tools-platforms-dbeaver-aa2fc821 | DBeaver | active | imported-unverified | 无 |
|
||||
| tools-platforms-tableplus-9950f31a | TablePlus | active | imported-unverified | 无 |
|
||||
| tools-platforms-warp-14bec77a | Warp | active | imported-unverified | 无 |
|
||||
| tools-platforms-claude-code-11b1e88d | Claude Code | active | imported-unverified | 无 |
|
||||
| tools-platforms-opencode-ada070db | OpenCode | active | imported-unverified | 无 |
|
||||
| tools-platforms-gemini-cli-d077e5cc | Gemini CLI | active | imported-unverified | 无 |
|
||||
| tools-platforms-gemini-cli-row40-d077e5cc | Gemini CLI | active | imported-unverified | 无 |
|
||||
| tools-platforms-qwen-cli-a1b92a34 | Qwen CLI | active | imported-unverified | 无 |
|
||||
| tools-platforms-bito-0c0619b5 | Bito | active | imported-unverified | 无 |
|
||||
| tools-platforms-codeium-668488a9 | Codeium | active | imported-unverified | 无 |
|
||||
| tools-platforms-continue-edb7b3bf | Continue | active | imported-unverified | 无 |
|
||||
| tools-platforms-cursor-8ebf3977 | Cursor | active | imported-unverified | 无 |
|
||||
| tools-platforms-zed-07b4820e | Zed | active | imported-unverified | 无 |
|
||||
| tools-platforms-chatgpt-exporter-a03efe97 | ChatGPT Exporter | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-autogen-fc00be5e | autogen | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-browser-use-268f0f95 | browser-use | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-crewai-d9a56566 | crewai | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-dspy-d8bdba82 | dspy | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-langchain-089a07ab | langchain | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-pydantic-ai-cb69369e | pydantic-ai | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-smolagents-790ade5e | smolagents | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-aider-adccc23a | aider | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-claude-code-ef1ef8b6 | claude-code | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-cline-644a6623 | cline | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-continue-d5516851 | continue | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-gemini-cli-be45a9ce | gemini-cli | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-gpt-engineer-eaa2e8a8 | gpt-engineer | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-oh-my-opencode-0348827b | oh-my-opencode | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-open-interpreter-a514262e | open-interpreter | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-opencode-e1b762af | opencode | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-spec-kit-a9a40ae2 | spec-kit | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-avante-nvim-29a0c49f | avante.nvim | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-codecompanion-nvim-a6f68dc2 | codecompanion.nvim | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-codeium-b0b85053 | codeium | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-copilot-vim-c06b7933 | copilot.vim | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-gitingest-ee7a3f76 | gitingest | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-jan-c4cdcb50 | jan | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-lmstudio-8b9fe81d | lmstudio | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-localai-ea1fbd8b | localai | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-ollama-33222b83 | ollama | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-repomix-5aa70b79 | repomix | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-text-generation-webui-8ec0aebb | text-generation-webui | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-anythingllm-a3e8a5fc | AnythingLLM | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-dify-4f89d10f | Dify | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-privategpt-c615ca94 | PrivateGPT | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-quivr-5cc2ab96 | Quivr | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-ragflow-c92a0918 | RAGFlow | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-devdocs-62126dcb | DevDocs | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-create-next-app-1bebc93a | create-next-app | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-create-t3-app-daf8fe4b | create-t3-app | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-shadcn-ui-d7cf613e | shadcn/ui | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-vite-3e45b462 | vite | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-codex-e3c8be51 | openai/codex | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-roo-code-36e77dcc | RooCodeInc/Roo-Code | needs-review | imported-unverified | 无 |
|
||||
| network-payment-services-flclash-a974428b | FlClash | active | imported-unverified | 无 |
|
||||
+-----------------------------------------------------+-----------------------+--------------+---------------------+--------------+
|
||||
```
|
||||
|
||||
- `tools-platforms-codex-cli-362bc20a`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/0`。描述混有“最强模型”、CLI、配置与旧地址;只保留CLI候选,不使用宣传赋级,本地Codex安装脚本不等于CLI。
|
||||
- `tools-platforms-droid-1b66f6e0`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/5`。
|
||||
- `tools-platforms-docusaurus-09c54423`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/13`。
|
||||
- `tools-platforms-vitepress-da10a919`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/15`。
|
||||
- `tools-platforms-lazyvim-2f22a781`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/17`。
|
||||
- `tools-platforms-neovim-a8b85739`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/18`。
|
||||
- `tools-platforms-pearai-0683754c`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/19`。
|
||||
- `tools-platforms-vs-code-e8f2d385`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/20`。
|
||||
- `tools-platforms-void-b1594346`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/21`。
|
||||
- `tools-platforms-django-e05156b6`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/22`。
|
||||
- `tools-platforms-excalidraw-02ba0cb2`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/23`。
|
||||
- `tools-platforms-mermaid-cc6f6e7e`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/24`。
|
||||
- `tools-platforms-dbeaver-aa2fc821`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/26`。
|
||||
- `tools-platforms-tableplus-9950f31a`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/27`。
|
||||
- `tools-platforms-warp-14bec77a`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/28`。
|
||||
- `tools-platforms-claude-code-11b1e88d`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/30`。
|
||||
- `tools-platforms-opencode-ada070db`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/32`。官网品牌与另行opencode-ai/opencode仓库不能凭同名自动合并,需核来源与演化。
|
||||
- `tools-platforms-gemini-cli-d077e5cc`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/31`。与另一Gemini CLI行指同一官网,属于重复介绍线索,不把两个资源ID登记为两程序。
|
||||
- `tools-platforms-gemini-cli-row40-d077e5cc`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/38`。与前一Gemini CLI行同名同网址,原ID仍保留;还需与GitHub实现核具体版本。
|
||||
- `tools-platforms-qwen-cli-a1b92a34`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/39`。
|
||||
- `tools-platforms-bito-0c0619b5`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/41`。
|
||||
- `tools-platforms-codeium-668488a9`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/42`。
|
||||
- `tools-platforms-continue-edb7b3bf`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/43`。
|
||||
- `tools-platforms-cursor-8ebf3977`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/59`。
|
||||
- `tools-platforms-zed-07b4820e`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/62`。
|
||||
- `tools-platforms-chatgpt-exporter-a03efe97`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/68`。
|
||||
- `repo-rules-scaffolds-autogen-fc00be5e`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/5`。
|
||||
- `repo-rules-scaffolds-browser-use-268f0f95`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/6`。
|
||||
- `repo-rules-scaffolds-crewai-d9a56566`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/7`。
|
||||
- `repo-rules-scaffolds-dspy-d8bdba82`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/8`。
|
||||
- `repo-rules-scaffolds-langchain-089a07ab`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/9`。
|
||||
- `repo-rules-scaffolds-pydantic-ai-cb69369e`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/10`。
|
||||
- `repo-rules-scaffolds-smolagents-790ade5e`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/11`。
|
||||
- `repo-rules-scaffolds-aider-adccc23a`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/12`。
|
||||
- `repo-rules-scaffolds-claude-code-ef1ef8b6`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/13`。
|
||||
- `repo-rules-scaffolds-cline-644a6623`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/14`。
|
||||
- `repo-rules-scaffolds-continue-d5516851`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/15`。
|
||||
- `repo-rules-scaffolds-gemini-cli-be45a9ce`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/16`。
|
||||
- `repo-rules-scaffolds-gpt-engineer-eaa2e8a8`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/17`。
|
||||
- `repo-rules-scaffolds-oh-my-opencode-0348827b`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/18`。
|
||||
- `repo-rules-scaffolds-open-interpreter-a514262e`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/19`。
|
||||
- `repo-rules-scaffolds-opencode-e1b762af`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/20`。仓库URL为opencode-ai/opencode;不据名称与opencode.ai官网或其他研究来源认定同一实现。
|
||||
- `repo-rules-scaffolds-spec-kit-a9a40ae2`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/21`。
|
||||
- `repo-rules-scaffolds-avante-nvim-29a0c49f`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/24`。
|
||||
- `repo-rules-scaffolds-codecompanion-nvim-a6f68dc2`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/25`。
|
||||
- `repo-rules-scaffolds-codeium-b0b85053`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/26`。此行指codeium.vim插件,不能与Codeium平台或Windsurf品牌合并。
|
||||
- `repo-rules-scaffolds-copilot-vim-c06b7933`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/27`。
|
||||
- `repo-rules-scaffolds-gitingest-ee7a3f76`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/41`。
|
||||
- `repo-rules-scaffolds-jan-c4cdcb50`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/42`。
|
||||
- `repo-rules-scaffolds-lmstudio-8b9fe81d`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/43`。
|
||||
- `repo-rules-scaffolds-localai-ea1fbd8b`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/44`。
|
||||
- `repo-rules-scaffolds-ollama-33222b83`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/45`。
|
||||
- `repo-rules-scaffolds-repomix-5aa70b79`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/46`。
|
||||
- `repo-rules-scaffolds-text-generation-webui-8ec0aebb`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/47`。
|
||||
- `repo-rules-scaffolds-anythingllm-a3e8a5fc`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/55`。
|
||||
- `repo-rules-scaffolds-dify-4f89d10f`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/56`。
|
||||
- `repo-rules-scaffolds-privategpt-c615ca94`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/57`。
|
||||
- `repo-rules-scaffolds-quivr-5cc2ab96`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/58`。
|
||||
- `repo-rules-scaffolds-ragflow-c92a0918`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/59`。
|
||||
- `repo-rules-scaffolds-devdocs-62126dcb`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/60`。
|
||||
- `repo-rules-scaffolds-create-next-app-1bebc93a`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/65`。链接是CLI文档,文档不是程序;条目所指的生成器实现仍需版本核查。
|
||||
- `repo-rules-scaffolds-create-t3-app-daf8fe4b`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/66`。
|
||||
- `repo-rules-scaffolds-shadcn-ui-d7cf613e`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/68`。
|
||||
- `repo-rules-scaffolds-vite-3e45b462`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/69`。
|
||||
- `repo-rules-scaffolds-codex-e3c8be51`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/81`。
|
||||
- `repo-rules-scaffolds-roo-code-36e77dcc`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/82`。原描述称archive且status=needs-review;仅保留源码候选,不冒称当前可用或已核归档状态。
|
||||
- `network-payment-services-flclash-a974428b`:[原始资源行](../assets/external-resources/network-payment-services.yml) `/resources/1`。源码候选仅指代理客户端内容,不授权代理连接或实际网络配置。
|
||||
|
||||
### 托管入口候选
|
||||
|
||||
按原行服务功能与网址保留托管入口候选;网址不是实现、部署或设备证据,平台/模型/账号/实际调用仍需分离,未访问账户或核部署版本。
|
||||
|
||||
```text
|
||||
+----------------------------------------------+----------------+----------+---------------------+--------------+
|
||||
| 原资源ID | 名称 | 原状态 | 原验证状态 | 原风险标记 |
|
||||
|----------------------------------------------+----------------+----------+---------------------+--------------|
|
||||
| tools-platforms-apps-script-e6b8bbbb | Apps Script | active | imported-unverified | 无 |
|
||||
| tools-platforms-google-sheets-32b827b0 | Google Sheets | active | imported-unverified | 无 |
|
||||
| tools-platforms-mintlify-0f0b6833 | Mintlify | active | imported-unverified | 无 |
|
||||
| tools-platforms-mermaid-chart-302f49f0 | Mermaid Chart | active | imported-unverified | 无 |
|
||||
| tools-platforms-zread-6c1ee1d6 | Zread | active | imported-unverified | 无 |
|
||||
| tools-platforms-notebooklm-e1b56ba1 | NotebookLM | active | imported-unverified | 无 |
|
||||
| tools-platforms-kimi-53c18eae | Kimi | active | imported-unverified | 无 |
|
||||
| tools-platforms-chatglm-cn-ebc410ba | 智谱清言 | active | imported-unverified | 无 |
|
||||
| tools-platforms-www-doubao-com-b4d6c78b | 豆包 | active | imported-unverified | 无 |
|
||||
| tools-platforms-tongyi-aliyun-com-a528848f | 通义千问 | active | imported-unverified | 无 |
|
||||
| tools-platforms-ai-studio-2cd869be | AI Studio | active | imported-unverified | 无 |
|
||||
| tools-platforms-antigravity-528a772a | antigravity | active | imported-unverified | 无 |
|
||||
| tools-platforms-chatgpt-935111f5 | ChatGPT | active | imported-unverified | 无 |
|
||||
| tools-platforms-claude-13dd5e3a | Claude | active | imported-unverified | 无 |
|
||||
| tools-platforms-gemini-dc8a36f7 | Gemini | active | imported-unverified | 无 |
|
||||
| tools-platforms-bolt-new-06379d16 | Bolt.new | active | imported-unverified | 无 |
|
||||
| tools-platforms-devin-f5a69caf | Devin | active | imported-unverified | 无 |
|
||||
| tools-platforms-lovable-5eb584a1 | Lovable | active | imported-unverified | 无 |
|
||||
| tools-platforms-replit-agent-bbd1c2ac | Replit Agent | active | imported-unverified | 无 |
|
||||
| tools-platforms-v0-by-vercel-fe818ef0 | v0 by Vercel | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-github-e755441d | GitHub | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-github-copilot-102fb5f8 | GitHub Copilot | active | imported-unverified | 无 |
|
||||
+----------------------------------------------+----------------+----------+---------------------+--------------+
|
||||
```
|
||||
|
||||
- `tools-platforms-apps-script-e6b8bbbb`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/2`。
|
||||
- `tools-platforms-google-sheets-32b827b0`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/8`。
|
||||
- `tools-platforms-mintlify-0f0b6833`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/14`。
|
||||
- `tools-platforms-mermaid-chart-302f49f0`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/10`。
|
||||
- `tools-platforms-zread-6c1ee1d6`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/16`。
|
||||
- `tools-platforms-notebooklm-e1b56ba1`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/25`。
|
||||
- `tools-platforms-kimi-53c18eae`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/33`。仅保留平台网址候选;Kimi K2.5能力描述与服务实现/实际加载模型未核。
|
||||
- `tools-platforms-chatglm-cn-ebc410ba`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/34`。平台与GLM-4描述不作为同一对象/版本证据。
|
||||
- `tools-platforms-www-doubao-com-b4d6c78b`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/35`。模型与聊天客户端品牌并置,当前只保留网页入口候选。
|
||||
- `tools-platforms-tongyi-aliyun-com-a528848f`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/36`。Qwen模型、聊天服务及免费额度声明分别核,不继承“免费”或能力主张。
|
||||
- `tools-platforms-ai-studio-2cd869be`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/37`。AI Studio入口、Gemini模型与免费额度不是同一实体。
|
||||
- `tools-platforms-antigravity-528a772a`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/40`。
|
||||
- `tools-platforms-chatgpt-935111f5`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/45`。保留对话入口候选,不据GPT-5.1/支持Codex描述批准具体模型或CLI版本。
|
||||
- `tools-platforms-claude-13dd5e3a`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/46`。保留平台入口候选,不沿用Opus4.6能力/Artifacts宣传为实现效果。
|
||||
- `tools-platforms-gemini-dc8a36f7`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/47`。模型名、免费额度与长上下文宣传未核,网页入口与模型内容分开。
|
||||
- `tools-platforms-bolt-new-06379d16`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/63`。
|
||||
- `tools-platforms-devin-f5a69caf`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/64`。
|
||||
- `tools-platforms-lovable-5eb584a1`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/65`。
|
||||
- `tools-platforms-replit-agent-bbd1c2ac`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/66`。
|
||||
- `tools-platforms-v0-by-vercel-fe818ef0`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/67`。
|
||||
- `repo-rules-scaffolds-github-e755441d`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/2`。
|
||||
- `repo-rules-scaffolds-github-copilot-102fb5f8`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/71`。订阅/服务入口与copilot.vim插件、模型或免费资格分别核,原免费描述未核。
|
||||
|
||||
### 排除:资料/规约内容
|
||||
|
||||
当前条目所指为知识、教程、索引、规则、提示词或模板内容,不作为法器程序登记;不删除原资源,也不断言整个仓库没有程序,其内具体实现须另选来源。
|
||||
|
||||
```text
|
||||
+---------------------------------------------------------------------+----------------------------------------+--------------+---------------------+------------------------+
|
||||
| 原资源ID | 名称 | 原状态 | 原验证状态 | 原风险标记 |
|
||||
|---------------------------------------------------------------------+----------------------------------------+--------------+---------------------+------------------------|
|
||||
| tools-platforms-prompt-jsonl-8e9b2066 | prompt_jsonl | needs-review | imported-unverified | non-url-locator |
|
||||
| tools-platforms-bilibili-23287176 | Bilibili | active | imported-unverified | 无 |
|
||||
| tools-platforms-z-library-31b0d982 | Z-Library | active | imported-unverified | access-legality-review |
|
||||
| repo-rules-scaffolds-vibe-coding-e16848e0 | Vibe Coding 指南 | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-github-com-e0a40b2e | 开发者基础知识库 | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-mcaf-47f07717 | MCAF | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-github-topics-bcc7e192 | GitHub Topics | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-github-trending-d46be94c | GitHub Trending | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-awesome-mcp-servers-d91d6430 | awesome-mcp-servers | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-2025-ai-engineer-reading-list-70f4fbd3 | 2025 AI Engineer Reading List | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-ai-547bb859 | AI 编程最佳实践 | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-ai-engineering-d04a5b40 | ai-engineering | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-awesome-explorables-2cedba5b | awesome-explorables | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-awesome-llm-02e83378 | awesome-llm | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-generative-ai-for-beginners-3b1db321 | generative-ai-for-beginners | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-llm-course-9227aca8 | llm-course | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-lovable-for-beginners-38de2782 | lovable-for-beginners | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-prompt-engineering-guide-5130a915 | prompt-engineering-guide | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-vibe-vibe-c80a5961 | vibe-vibe | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-awesome-chatgpt-prompts-ebaf3df7 | awesome-chatgpt-prompts | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-awesome-chatgpt-prompts-zh-966cbb5b | awesome-chatgpt-prompts-zh | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-claude-code-system-prompts-3f0438e1 | claude-code-system-prompts | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-system-prompts-and-models-of-ai-tools-8290b642 | system-prompts-and-models-of-ai-tools | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-awesome-cursorrules-7f259f16 | awesome-cursorrules | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-cursor-directory-807839d9 | cursor.directory | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-dotcursorrules-ad20d456 | dotcursorrules | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-langgpt-d6b7fb87 | LangGPT | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-awesome-chatgpt-prompts-4c4b8064 | Awesome ChatGPT Prompts | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-system-prompts-b5948bc8 | System Prompts 仓库 | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-easy-vibe-3c217e96 | datawhalechina/easy-vibe | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-ai-guide-c12bbbfd | liyupi/ai-guide | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-vibe-coding-guide-cf65840a | wendy7756/vibe-coding-guide | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-ai-coding-c221421b | Daotin/ai-coding | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-vibe-coding-skill-a5e7c42d | earyantLe/vibe-coding-skill | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-awesome-vibe-coding-e5ab67eb | filipecalegario/awesome-vibe-coding | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-awesome-vibe-coding-e3ea2b5b | ai-for-developers/awesome-vibe-coding | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-claude-code-best-practice-01224898 | shanraisshan/claude-code-best-practice | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-awesome-claude-code-5e3406a1 | hesreallyhim/awesome-claude-code | active | imported-unverified | 无 |
|
||||
+---------------------------------------------------------------------+----------------------------------------+--------------+---------------------+------------------------+
|
||||
```
|
||||
|
||||
- `tools-platforms-prompt-jsonl-8e9b2066`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/1`。
|
||||
- `tools-platforms-bilibili-23287176`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/3`。
|
||||
- `tools-platforms-z-library-31b0d982`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/12`。按本条“电子书资源”所指排除程序登记;保留access-legality-review,不批准访问/下载或许可。
|
||||
- `repo-rules-scaffolds-vibe-coding-e16848e0`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/0`。
|
||||
- `repo-rules-scaffolds-github-com-e0a40b2e`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/3`。
|
||||
- `repo-rules-scaffolds-mcaf-47f07717`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/4`。
|
||||
- `repo-rules-scaffolds-github-topics-bcc7e192`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/22`。
|
||||
- `repo-rules-scaffolds-github-trending-d46be94c`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/23`。
|
||||
- `repo-rules-scaffolds-awesome-mcp-servers-d91d6430`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/28`。
|
||||
- `repo-rules-scaffolds-2025-ai-engineer-reading-list-70f4fbd3`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/30`。
|
||||
- `repo-rules-scaffolds-ai-547bb859`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/31`。
|
||||
- `repo-rules-scaffolds-ai-engineering-d04a5b40`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/32`。
|
||||
- `repo-rules-scaffolds-awesome-explorables-2cedba5b`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/34`。
|
||||
- `repo-rules-scaffolds-awesome-llm-02e83378`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/35`。
|
||||
- `repo-rules-scaffolds-generative-ai-for-beginners-3b1db321`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/36`。
|
||||
- `repo-rules-scaffolds-llm-course-9227aca8`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/37`。
|
||||
- `repo-rules-scaffolds-lovable-for-beginners-38de2782`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/38`。
|
||||
- `repo-rules-scaffolds-prompt-engineering-guide-5130a915`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/39`。
|
||||
- `repo-rules-scaffolds-vibe-vibe-c80a5961`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/40`。
|
||||
- `repo-rules-scaffolds-awesome-chatgpt-prompts-ebaf3df7`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/48`。与另一f/awesome-chatgpt-prompts行是重复来源线索;保原两ID,不登记两个工具。
|
||||
- `repo-rules-scaffolds-awesome-chatgpt-prompts-zh-966cbb5b`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/49`。
|
||||
- `repo-rules-scaffolds-claude-code-system-prompts-3f0438e1`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/50`。
|
||||
- `repo-rules-scaffolds-system-prompts-and-models-of-ai-tools-8290b642`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/51`。
|
||||
- `repo-rules-scaffolds-awesome-cursorrules-7f259f16`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/52`。
|
||||
- `repo-rules-scaffolds-cursor-directory-807839d9`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/53`。
|
||||
- `repo-rules-scaffolds-dotcursorrules-ad20d456`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/54`。
|
||||
- `repo-rules-scaffolds-langgpt-d6b7fb87`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/61`。
|
||||
- `repo-rules-scaffolds-awesome-chatgpt-prompts-4c4b8064`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/63`。原description=null;仅依原名称和仓库路径关联提示词合集线索,不补造产品能力。
|
||||
- `repo-rules-scaffolds-system-prompts-b5948bc8`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/64`。原description=null;与另一同URL条目关联提示词来源线索,不声称模型参数或工具实现。
|
||||
- `repo-rules-scaffolds-easy-vibe-3c217e96`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/72`。
|
||||
- `repo-rules-scaffolds-ai-guide-c12bbbfd`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/73`。
|
||||
- `repo-rules-scaffolds-vibe-coding-guide-cf65840a`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/74`。
|
||||
- `repo-rules-scaffolds-ai-coding-c221421b`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/75`。
|
||||
- `repo-rules-scaffolds-vibe-coding-skill-a5e7c42d`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/76`。
|
||||
- `repo-rules-scaffolds-awesome-vibe-coding-e5ab67eb`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/79`。
|
||||
- `repo-rules-scaffolds-awesome-vibe-coding-e3ea2b5b`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/80`。
|
||||
- `repo-rules-scaffolds-claude-code-best-practice-01224898`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/83`。
|
||||
- `repo-rules-scaffolds-awesome-claude-code-5e3406a1`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/84`。
|
||||
|
||||
### 排除:模型名称所指
|
||||
|
||||
当前名义所指是模型名称/版本,不当作法器程序;未取得参数/结构版本证据,不批准model-artifact实例,所附平台URL不证明模型与服务同一。
|
||||
|
||||
```text
|
||||
+------------------------------------------+-----------------+--------------+---------------------+--------------+
|
||||
| 原资源ID | 名称 | 原状态 | 原验证状态 | 原风险标记 |
|
||||
|------------------------------------------+-----------------+--------------+---------------------+--------------|
|
||||
| tools-platforms-claude-opus-4-6-f751380c | Claude Opus 4.6 | active | imported-unverified | 无 |
|
||||
| tools-platforms-gpt-5-1-codex-1ad522a5 | GPT-5.1 Codex | needs-review | imported-unverified | missing-link |
|
||||
| tools-platforms-gemini-2-5-pro-0661c69f | Gemini 2.5 Pro | needs-review | imported-unverified | missing-link |
|
||||
| tools-platforms-dall-e-3-26dc583b | DALL-E 3 | active | imported-unverified | 无 |
|
||||
+------------------------------------------+-----------------+--------------+---------------------+--------------+
|
||||
```
|
||||
|
||||
- `tools-platforms-claude-opus-4-6-f751380c`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/4`。claude.ai平台不是Opus参数内容或具体模型版本的验证证据。
|
||||
- `tools-platforms-gpt-5-1-codex-1ad522a5`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/6`。
|
||||
- `tools-platforms-gemini-2-5-pro-0661c69f`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/7`。
|
||||
- `tools-platforms-dall-e-3-26dc583b`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/48`。名称指模型,但网址是chatgpt.com;图像模型与其调用平台必须分离。
|
||||
|
||||
### 待核:对象身份
|
||||
|
||||
信息不足、对象名/目标不一致或复合包未展开,保留待核;不凭品牌、后缀、Skill/仓库包装复制软件身份,先明确具体模块、入口及版本。
|
||||
|
||||
```text
|
||||
+----------------------------------------------------+--------------------------+--------------+---------------------+--------------+
|
||||
| 原资源ID | 名称 | 原状态 | 原验证状态 | 原风险标记 |
|
||||
|----------------------------------------------------+--------------------------+--------------+---------------------+--------------|
|
||||
| tools-platforms-local-history-2b05b2c1 | Local History | needs-review | imported-unverified | missing-link |
|
||||
| tools-platforms-partial-diff-4787875c | Partial Diff | needs-review | imported-unverified | missing-link |
|
||||
| tools-platforms-zsh-d6d24951 | zsh | active | imported-unverified | 无 |
|
||||
| tools-platforms-tabnine-0b2c09aa | Tabnine | active | imported-unverified | 无 |
|
||||
| tools-platforms-elevenlabs-5a58d635 | ElevenLabs | active | imported-unverified | 无 |
|
||||
| tools-platforms-ideogram-efb6a3b8 | Ideogram | active | imported-unverified | 无 |
|
||||
| tools-platforms-kling-253d44f3 | Kling | active | imported-unverified | 无 |
|
||||
| tools-platforms-leonardo-ai-26816634 | Leonardo AI | active | imported-unverified | 无 |
|
||||
| tools-platforms-meshy-549051bc | Meshy | active | imported-unverified | 无 |
|
||||
| tools-platforms-midjourney-976ad67d | Midjourney | active | imported-unverified | 无 |
|
||||
| tools-platforms-runway-6c8ab136 | Runway | active | imported-unverified | 无 |
|
||||
| tools-platforms-sora-3b1d49f7 | Sora | active | imported-unverified | 无 |
|
||||
| tools-platforms-suno-fb9344c5 | Suno | active | imported-unverified | 无 |
|
||||
| tools-platforms-udio-0d39f909 | Udio | active | imported-unverified | 无 |
|
||||
| tools-platforms-kiro-47d2b0fc | Kiro | active | imported-unverified | 无 |
|
||||
| tools-platforms-windsurf-fdd489a7 | Windsurf | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-scientific-skills-0f3f6b96 | scientific-skills | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-mcp-servers-5d60dee4 | mcp-servers | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-ai-for-grant-writing-0a634380 | ai-for-grant-writing | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-fastapi-template-c97cc061 | fastapi-template | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-ai-coding-lab-6dc927c2 | luzhenqian/ai-coding-lab | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-cs146s-cn-eaea3651 | ShouZhengAI/CS146S_CN | active | imported-unverified | 无 |
|
||||
+----------------------------------------------------+--------------------------+--------------+---------------------+--------------+
|
||||
```
|
||||
|
||||
- `tools-platforms-local-history-2b05b2c1`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/9`。缺链接;同名插件可能有多个实现,需厂商/仓库和版本。
|
||||
- `tools-platforms-partial-diff-4787875c`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/11`。缺链接;需补具体插件来源,保留missing-link与needs-review。
|
||||
- `tools-platforms-zsh-d6d24951`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/29`。名称是zsh,但网址指ohmyz.sh;Shell程序与配置框架需消歧,不按标题选择软件身份。
|
||||
- `tools-platforms-tabnine-0b2c09aa`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/44`。
|
||||
- `tools-platforms-elevenlabs-5a58d635`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/49`。
|
||||
- `tools-platforms-ideogram-efb6a3b8`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/50`。
|
||||
- `tools-platforms-kling-253d44f3`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/51`。
|
||||
- `tools-platforms-leonardo-ai-26816634`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/52`。
|
||||
- `tools-platforms-meshy-549051bc`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/53`。
|
||||
- `tools-platforms-midjourney-976ad67d`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/54`。
|
||||
- `tools-platforms-runway-6c8ab136`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/55`。
|
||||
- `tools-platforms-sora-3b1d49f7`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/56`。
|
||||
- `tools-platforms-suno-fb9344c5`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/57`。
|
||||
- `tools-platforms-udio-0d39f909`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/58`。
|
||||
- `tools-platforms-kiro-47d2b0fc`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/60`。
|
||||
- `tools-platforms-windsurf-fdd489a7`:[原始资源行](../assets/external-resources/tools-platforms.yml) `/resources/61`。
|
||||
- `repo-rules-scaffolds-scientific-skills-0f3f6b96`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/1`。Skill集合可能包含方法与脚本,需逐实际内容选区;集合自身不直接注册成一件软件。
|
||||
- `repo-rules-scaffolds-mcp-servers-5d60dee4`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/29`。服务器集合需按独立实现选区,不把MCP协议、多个示例、部署和整仓库作同一实例。
|
||||
- `repo-rules-scaffolds-ai-for-grant-writing-0a634380`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/33`。
|
||||
- `repo-rules-scaffolds-fastapi-template-c97cc061`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/67`。模板可能包含可执行应用或生成器,须分清模板内容、应用源码与新生成实例。
|
||||
- `repo-rules-scaffolds-ai-coding-lab-6dc927c2`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/77`。项目实战复合仓库包含多种项目类型,不能把教程或整个仓库纳为一程序。
|
||||
- `repo-rules-scaffolds-cs146s-cn-eaea3651`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/78`。课程、作业与工具混合,需明确具体程序选区。
|
||||
|
||||
### 关联已审本地来源
|
||||
|
||||
原仓库网址与已审本地submodule来源对应,仅建立来源参照,不新增重复法器;不把未版本化仓库入口等同本次固定源码版本。
|
||||
|
||||
```text
|
||||
+--------------------------------------+---------------+----------+---------------------+--------------+
|
||||
| 原资源ID | 名称 | 原状态 | 原验证状态 | 原风险标记 |
|
||||
|--------------------------------------+---------------+----------+---------------------+--------------|
|
||||
| repo-rules-scaffolds-skills-cd973130 | Skills 制作器 | active | imported-unverified | 无 |
|
||||
| repo-rules-scaffolds-tmux-9f36981a | tmux | active | imported-unverified | 无 |
|
||||
+--------------------------------------+---------------+----------+---------------------+--------------+
|
||||
```
|
||||
|
||||
- `repo-rules-scaffolds-skills-cd973130`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/62`。 对应本地来源参照 faqi-skill-seekers;不把未版本化的仓库URL等同该固定源码版本。
|
||||
- `repo-rules-scaffolds-tmux-9f36981a`:[原始资源行](../assets/external-resources/repo-rules-scaffolds.yml) `/resources/70`。 对应本地来源参照 faqi-tmux;不把未版本化的仓库URL等同该固定源码版本。
|
||||
|
||||
### 待核:受限服务所指
|
||||
|
||||
网络/金融服务品牌、推广入口或账号产品所指待核;保留全部风险与原状态,不批准交易、注册、权限、设备或运行实例。
|
||||
|
||||
```text
|
||||
+-----------------------------------------------------+--------------+----------+---------------------+-----------------------------------------------------+
|
||||
| 原资源ID | 名称 | 原状态 | 原验证状态 | 原风险标记 |
|
||||
|-----------------------------------------------------+--------------+----------+---------------------+-----------------------------------------------------|
|
||||
| network-payment-services-www-bsmkweb-com-0960fe59 | 币安支付 | active | imported-unverified | referral-or-tracking-link, financial-service-review |
|
||||
| network-payment-services-xn-9kqz23b19z-com-a271e5a7 | 网络服务 | active | imported-unverified | referral-or-tracking-link |
|
||||
| network-payment-services-bybit-81d32c91 | Bybit 虚拟卡 | active | imported-unverified | referral-or-tracking-link, financial-service-review |
|
||||
+-----------------------------------------------------+--------------+----------+---------------------+-----------------------------------------------------+
|
||||
```
|
||||
|
||||
- `network-payment-services-www-bsmkweb-com-0960fe59`:[原始资源行](../assets/external-resources/network-payment-services.yml) `/resources/0`。资源自称“币安支付”,网址为bsmkweb.com并带ref;品牌/网址所指一致性未核,不据名称认定官方服务。
|
||||
- `network-payment-services-xn-9kqz23b19z-com-a271e5a7`:[原始资源行](../assets/external-resources/network-payment-services.yml) `/resources/2`。注册推广入口只有泛化云服务说明,实际服务、提供方与合规边界待核。
|
||||
- `network-payment-services-bybit-81d32c91`:[原始资源行](../assets/external-resources/network-payment-services.yml) `/resources/3`。卡产品/账户/支付过程与网站或程序内容分开,不触发开户或支付。
|
||||
|
||||
## 来源与选区
|
||||
|
||||
选区是一基半开区间 `[start,end)`;SHA-256对应固定Git blob的完整字节与选区原字节,不归一化或复制源码。
|
||||
校验还核当前文件字节及submodule指针;源码存在和指针匹配不等于完整仓库语义、许可证或能力已审。
|
||||
|
||||
### S01
|
||||
|
||||
[来源文件](../tools/prompts-library/README.md):`tools/prompts-library/README.md`。
|
||||
- 初审用途:`support`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`4c2d5f97a6cfa67e033e166676d12eeaab6a562fa83c39b0f2474ae2afbcdae2`。
|
||||
- 选区:`[1,95)`;SHA-256:`4c2d5f97a6cfa67e033e166676d12eeaab6a562fa83c39b0f2474ae2afbcdae2`。
|
||||
|
||||
### S02
|
||||
|
||||
[来源文件](../tools/prompts-library/main.py):`tools/prompts-library/main.py`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`ed0113d3ecbe9c9d4ca48ee7dde2c76c9a6fd1f54a1ae890fd3689d617347691`。
|
||||
- 选区:`[625,689)`;SHA-256:`757b82c3bba30f1d62359c39f7c110d425463326e854acef2de085f14d90cf6d`。
|
||||
|
||||
### S03
|
||||
|
||||
[来源文件](../tools/chat-vault/README.md):`tools/chat-vault/README.md`。
|
||||
- 初审用途:`support`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`938ddcce3ba06fad18a05d072cfc47cb8427064c72745f557e4b782de8a2c753`。
|
||||
- 选区:`[1,104)`;SHA-256:`deecf873b9392e27cbae073fd6f75fcb1865af9d6461232dd517ba945cafa3d1`。
|
||||
|
||||
### S04
|
||||
|
||||
[来源文件](../tools/chat-vault/services/chat-vault/src/main.py):`tools/chat-vault/services/chat-vault/src/main.py`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`561c611909714d358f9968c45078f037bd46cdb037969d598cfed27d94affd72`。
|
||||
- 选区:`[65,107)`;SHA-256:`43279c5004b34ef3de79da4dd5c103e741f0a9ed47683e7c262a79bd35f8b551`。
|
||||
|
||||
### S05
|
||||
|
||||
[来源文件](../tools/config/.codex/README.md):`tools/config/.codex/README.md`。
|
||||
- 初审用途:`support`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`4cd23bbafa069d8bd651e9997951ac99252cf13310d1c9fda14dcf01de818a53`。
|
||||
- 选区:`[1,78)`;SHA-256:`b290d2842b0290ee9701e41c046634d2cd90684c0c53d1e97e3781a05d695e87`。
|
||||
|
||||
### S06
|
||||
|
||||
[来源文件](../tools/config/.codex/install.sh):`tools/config/.codex/install.sh`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`a2ba28d5a48d46aa7d508408519be117f8726c8d66e632d8736deab9175b04a4`。
|
||||
- 选区:`[43,100)`;SHA-256:`99ccf88c8d5ec6f7b7eda53fc4fd3af29a0ca08d9eef74ad3283cdf649d6a7cf`。
|
||||
|
||||
### S07
|
||||
|
||||
[来源文件](../skills/auto-skill/README.md):`skills/auto-skill/README.md`。
|
||||
- 初审用途:`support`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`2fd869316c0469d9c4079cd9a19c41698b501bca6ddd2b6cc03617e3f96218f0`。
|
||||
- 选区:`[1,21)`;SHA-256:`2fd869316c0469d9c4079cd9a19c41698b501bca6ddd2b6cc03617e3f96218f0`。
|
||||
|
||||
### S08
|
||||
|
||||
[来源文件](../skills/auto-skill/scripts/create-skill.sh):`skills/auto-skill/scripts/create-skill.sh`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`3eb16d2f24cc2af3e7d7a0f4175e06b0258504795d079ba0920be9dd75f2f7fc`。
|
||||
- 选区:`[80,182)`;SHA-256:`e769660515ada48debbd022fdfb85ec934b4d3413cf3501e06ef075b6d36b1a4`。
|
||||
|
||||
### S09
|
||||
|
||||
[来源文件](../skills/auto-skill/scripts/validate-skill.sh):`skills/auto-skill/scripts/validate-skill.sh`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`deb5cf2529a93c87c8b7323b55ffc6d7798e6b59652351ba795340ac8c0061c9`。
|
||||
- 选区:`[67,160)`;SHA-256:`dbd460af6a32307709a11281c7b90925b9fd9820128eb04881c80c020a99f0dc`。
|
||||
|
||||
### S10
|
||||
|
||||
[来源文件](../skills/auto-skill/scripts/skill-seekers.sh):`skills/auto-skill/scripts/skill-seekers.sh`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`fdbf73b1faa1a0f445663b5c7c1c9792bbfb6dcdf5f5308198503e14ea0c64dc`。
|
||||
- 选区:`[28,66)`;SHA-256:`f678142dddda161372feb5c5af96bbbf5e1b3e76b9e2c7dc905a4d1ba18070f2`。
|
||||
|
||||
### S11
|
||||
|
||||
[来源文件](../skills/auto-tmux/README.md):`skills/auto-tmux/README.md`。
|
||||
- 初审用途:`support`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`d21ca4f1c4adb6a799a76f7a7446b1ebca70d2402f73e80600cda1c2a6d24c25`。
|
||||
- 选区:`[1,18)`;SHA-256:`0c0e46b950949789a6b85addd85f3a9ec0b2945e6a44134f82c7b46acc59b308`。
|
||||
|
||||
### S12
|
||||
|
||||
[来源文件](../skills/auto-tmux/scripts/auto-tmux.sh):`skills/auto-tmux/scripts/auto-tmux.sh`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`f473fddada7a7f5fd85afe94deccd16e2aba26195423dc87afbac176315b6567`。
|
||||
- 选区:`[701,725)`;SHA-256:`701db6430b20faa4bf2477001f584b15a1dea31e6c4a9d32747be343988dd3c2`。
|
||||
|
||||
### S13
|
||||
|
||||
[来源文件](../skills/auto-tmux/scripts/auto-tmux.sh):`skills/auto-tmux/scripts/auto-tmux.sh`。
|
||||
- 初审用途:`support`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`f473fddada7a7f5fd85afe94deccd16e2aba26195423dc87afbac176315b6567`。
|
||||
- 选区:`[65,95)`;SHA-256:`a745cc41ed28208894954fccadc603a2f11e4e7888bd9df4f85d1dc0c84ca564`。
|
||||
|
||||
### S14
|
||||
|
||||
[来源文件](../tools/external/Skill_Seekers-development/pyproject.toml):`tools/external/Skill_Seekers-development/pyproject.toml`。
|
||||
- 初审用途:`support`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`tools/external/Skill_Seekers-development`;Git修订:`26638b248279a3b001b651475e0f28975f5ff069`。
|
||||
- 完整文件SHA-256:`40820d20d8f56c1dc24c8f432141fa438d54473acbfecfa716fc9d188cbc8294`。
|
||||
- 选区:`[1,15)`;SHA-256:`8fc8e7df82f18edc826b13f63f097661c1f40b19d2e7ab576e25854b453919e3`。
|
||||
|
||||
### S15
|
||||
|
||||
[来源文件](../tools/external/Skill_Seekers-development/pyproject.toml):`tools/external/Skill_Seekers-development/pyproject.toml`。
|
||||
- 初审用途:`support`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`tools/external/Skill_Seekers-development`;Git修订:`26638b248279a3b001b651475e0f28975f5ff069`。
|
||||
- 完整文件SHA-256:`40820d20d8f56c1dc24c8f432141fa438d54473acbfecfa716fc9d188cbc8294`。
|
||||
- 选区:`[301,327)`;SHA-256:`ac6771e334ffad6fe8cb4934797de797375c87d4c33a16afff72de8d1642893f`。
|
||||
|
||||
### S16
|
||||
|
||||
[来源文件](../tools/external/Skill_Seekers-development/src/skill_seekers/cli/main.py):`tools/external/Skill_Seekers-development/src/skill_seekers/cli/main.py`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`tools/external/Skill_Seekers-development`;Git修订:`26638b248279a3b001b651475e0f28975f5ff069`。
|
||||
- 完整文件SHA-256:`8c02660dacd304f51fe8c4a9685d3f6d5324a7eef7779b6baa7325827bf01985`。
|
||||
- 选区:`[39,116)`;SHA-256:`60fba27fbe444499a1e95b5dc69edc8b0d34d6c26a30039dcbf9d9205ffdfb14`。
|
||||
|
||||
### S17
|
||||
|
||||
[来源文件](../tools/external/.tmux/README.md):`tools/external/.tmux/README.md`。
|
||||
- 初审用途:`support`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`tools/external/.tmux`;Git修订:`87dcd13a28aeb5f18baee630e24b3f5765ae3a4f`。
|
||||
- 完整文件SHA-256:`10b0cca6bb2a4ab7af39d76d27f51b91ca1df4dead015315400041695c9471e7`。
|
||||
- 选区:`[9,78)`;SHA-256:`243d5ab2936723c61f781dd6906e61de92cceea6069e570ca107b6c19236aeb7`。
|
||||
|
||||
### S18
|
||||
|
||||
[来源文件](../tools/external/.tmux/.tmux.conf):`tools/external/.tmux/.tmux.conf`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`tools/external/.tmux`;Git修订:`87dcd13a28aeb5f18baee630e24b3f5765ae3a4f`。
|
||||
- 完整文件SHA-256:`6807d44735b7b11e64c4488a0c3fdcbd2809cc73efedcc349d098e80a690aeeb`。
|
||||
- 选区:`[150,190)`;SHA-256:`e39dd4f98da410b88e110772d21d1eb14d3bfb6e2c6e8c36e2cb19129d9c98f8`。
|
||||
|
||||
### S19
|
||||
|
||||
[来源文件](../tools/external/.tmux/.tmux.conf):`tools/external/.tmux/.tmux.conf`。
|
||||
- 初审用途:`support`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`tools/external/.tmux`;Git修订:`87dcd13a28aeb5f18baee630e24b3f5765ae3a4f`。
|
||||
- 完整文件SHA-256:`6807d44735b7b11e64c4488a0c3fdcbd2809cc73efedcc349d098e80a690aeeb`。
|
||||
- 选区:`[1829,1891)`;SHA-256:`3065f39bd62e8cb3bb4095dfaf9784840368d5760137ad01d3f96eb55ede68a1`。
|
||||
|
||||
### S20
|
||||
|
||||
[来源文件](../tools/external/tmux/README):`tools/external/tmux/README`。
|
||||
- 初审用途:`support`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`tools/external/tmux`;Git修订:`615c27c11789948df2db09e113e882f82dfb3e1c`。
|
||||
- 完整文件SHA-256:`9fb75e6c7f10c25b73e41b8214336d0dc2acfbe4c99984514ccaf7327192d53e`。
|
||||
- 选区:`[1,20)`;SHA-256:`68e51dd5a0148fa1d22f5c7565d3da74dc6619207d1c5238658d5fd873c63e5b`。
|
||||
|
||||
### S21
|
||||
|
||||
[来源文件](../tools/external/tmux/tmux.c):`tools/external/tmux/tmux.c`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`tools/external/tmux`;Git修订:`615c27c11789948df2db09e113e882f82dfb3e1c`。
|
||||
- 完整文件SHA-256:`58a9bef0d1d424fd2e2a79c6d998dab96aab81ee771b7c2653928451f3bf11a8`。
|
||||
- 选区:`[350,492)`;SHA-256:`cd3c886c9a155f70dcddaeec88b4a86253c565b2e18753327f83446d92a7e8f4`。
|
||||
|
||||
### S22
|
||||
|
||||
[来源文件](../tools/external/claude-official-skills/README.md):`tools/external/claude-official-skills/README.md`。
|
||||
- 初审用途:`support`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`tools/external/claude-official-skills`;Git修订:`1ed29a03dc852d30fa6ef2ca53a67dc2c2c2c563`。
|
||||
- 完整文件SHA-256:`d7c5c2f9b248c7c0b31f093cf22b9a7407f5b093c8ca9ebe75a5b6845b02b76e`。
|
||||
- 选区:`[1,28)`;SHA-256:`672c572d34a077a534754b7311d19db68a8402c86fe64e35be5e80da3ae7453a`。
|
||||
|
||||
### S23
|
||||
|
||||
[来源文件](../tools/external/claude-official-skills/skills/skill-creator/scripts/init_skill.py):`tools/external/claude-official-skills/skills/skill-creator/scripts/init_skill.py`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`tools/external/claude-official-skills`;Git修订:`1ed29a03dc852d30fa6ef2ca53a67dc2c2c2c563`。
|
||||
- 完整文件SHA-256:`cf12790f1d4958799281920d599f56aea38fb5c26e2812a61dd740bf3d4b6b99`。
|
||||
- 选区:`[194,304)`;SHA-256:`f3ef6ff82946a9596d5cacfc1ed0405765187e5ffec5a4ede6c15f5e8dd248dd`。
|
||||
|
||||
### S24
|
||||
|
||||
[来源文件](../tools/external/html-tools-main/README.md):`tools/external/html-tools-main/README.md`。
|
||||
- 初审用途:`support`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`6aeb3fbdd0ad484f15b44b8c0e26caa7228cede0a659292893617d19d99b6df3`。
|
||||
- 选区:`[1,18)`;SHA-256:`c58731ae7c6b900a386e03571782503c366959db1a623c21c7de2a08fc04442d`。
|
||||
|
||||
### S25
|
||||
|
||||
[来源文件](../tools/external/html-tools-main/clean_epub_css.html):`tools/external/html-tools-main/clean_epub_css.html`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`1716a7ea5f4bf4837bc044c9c164e58b3dbb04d492f677b7766b506edd1c0d2a`。
|
||||
- 选区:`[317,405)`;SHA-256:`4d07dac2850cbf4860f628b5c26d52976aea9cc8dd981851da5141dc7b18a7cb`。
|
||||
|
||||
### S26
|
||||
|
||||
[来源文件](../tools/external/html-tools-main/markdown-bianjiqi.html):`tools/external/html-tools-main/markdown-bianjiqi.html`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`e4c76015749bf42e898412ec7b8e1229c847575ef740bcf6900311d7212dc61e`。
|
||||
- 选区:`[181,260)`;SHA-256:`cbc5a64c27eefb0801c95a87cbf4ed0a149e25000a41e53e3387eb274ca40894`。
|
||||
|
||||
### S27
|
||||
|
||||
[来源文件](../tools/external/html-tools-main/task%20card%20generator.html):`tools/external/html-tools-main/task card generator.html`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`0eba89d2f674bb0bc26690c4e406f99b7a2bcd40ecd838c1c19e1f970f7b5670`。
|
||||
- 选区:`[217,284)`;SHA-256:`8b710f5b6f6b1c1f0fcaafead15e6f63e5800684a1c8ae49dad6a7681659eb19`。
|
||||
|
||||
### S28
|
||||
|
||||
[来源文件](../tools/external/html-tools-main/xhs%20graphic%20production.html):`tools/external/html-tools-main/xhs graphic production.html`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`1835e29563d4cf7f01cb9cf837d3f57d1b2e48304cc202e1061240bccf6e7e0e`。
|
||||
- 选区:`[96,147)`;SHA-256:`52b9c7a45cd3d5c8409ee1cde59c31296b608e35c0d668c2833bd7b35639a0f8`。
|
||||
|
||||
### S29
|
||||
|
||||
[来源文件](../tools/external/html-tools-main/xhs%20graphic%20production%20-%201.0.html):`tools/external/html-tools-main/xhs graphic production - 1.0.html`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`14a60fa5cc9fa3b7a8beac146277c1ef15729eb5e18cd7889fbcf498d5d1411a`。
|
||||
- 选区:`[177,312)`;SHA-256:`abe37a7bfbc4b1035be0ff037decbc49b6f336a59e8b8e5501e810d721f45ab9`。
|
||||
|
||||
### S30
|
||||
|
||||
[来源文件](../tools/external/my-nvim/README.md):`tools/external/my-nvim/README.md`。
|
||||
- 初审用途:`support`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`905c3a248d5208f001f3eb6924beaf768454c70cdbc4c41cf67e906dba7ca8c0`。
|
||||
- 选区:`[1,36)`;SHA-256:`5476e2380b6412a4d29ce37ad4ded76cd39bc5928e5cf716d98749f3ae8a31ea`。
|
||||
|
||||
### S31
|
||||
|
||||
[来源文件](../tools/external/my-nvim/nvim-config/init.lua):`tools/external/my-nvim/nvim-config/init.lua`。
|
||||
- 初审用途:`support`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`3b2d6e9976a515b7c8df08ed7c7f61a5751e9c08a6ff5579d621b87312c9e2c6`。
|
||||
- 选区:`[1,3)`;SHA-256:`3b2d6e9976a515b7c8df08ed7c7f61a5751e9c08a6ff5579d621b87312c9e2c6`。
|
||||
|
||||
### S32
|
||||
|
||||
[来源文件](../tools/external/my-nvim/nvim-config/lua/config/lazy.lua):`tools/external/my-nvim/nvim-config/lua/config/lazy.lua`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`5fd03a47dc423a46b7c141149d35ba20cbbd96eb2c90f48f74dbff94c202802e`。
|
||||
- 选区:`[1,56)`;SHA-256:`5fd03a47dc423a46b7c141149d35ba20cbbd96eb2c90f48f74dbff94c202802e`。
|
||||
|
||||
### S33
|
||||
|
||||
[来源文件](../tools/external/MCPlayerTransfer/README.md):`tools/external/MCPlayerTransfer/README.md`。
|
||||
- 初审用途:`support`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`f48b3081530011171ee6761115613c5eb7811a9ec3059cdec53e3b50c632f0e3`。
|
||||
- 选区:`[1,47)`;SHA-256:`939c69119628dd9eea9c16461c41428db4e5faf6d7c9ab4024e7a2f8ffa0bce9`。
|
||||
|
||||
### S34
|
||||
|
||||
[来源文件](../tools/external/MCPlayerTransfer/main.py):`tools/external/MCPlayerTransfer/main.py`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`11bfdb47774247c32ad8cd0de441d56a13a17e9c12bcb3e2d9e81895958e1450`。
|
||||
- 选区:`[1,51)`;SHA-256:`11bfdb47774247c32ad8cd0de441d56a13a17e9c12bcb3e2d9e81895958e1450`。
|
||||
|
||||
### S35
|
||||
|
||||
[来源文件](../tools/external/XHS-image-to-PDF-conversion/README.md):`tools/external/XHS-image-to-PDF-conversion/README.md`。
|
||||
- 初审用途:`support`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`19f65c7b6afe56c57789a30d1aed3c214051474fd21ea97f1ec10cc1ec774f13`。
|
||||
- 选区:`[21,51)`;SHA-256:`271e08cdfc793b500025c6d2f7d8e768a1ba6f5a03fe86b86f1aee5c5a2517de`。
|
||||
|
||||
### S36
|
||||
|
||||
[来源文件](../tools/external/XHS-image-to-PDF-conversion/pdf.py):`tools/external/XHS-image-to-PDF-conversion/pdf.py`。
|
||||
- 初审用途:`implementation`(人工标注,不是自动语义批准)。
|
||||
- 仓库:`.`;Git修订:`0a7fdf4ca54d2bb327dcdfc13e816da57ee9c4c2`。
|
||||
- 完整文件SHA-256:`ee045272a0ba361676c1ee908758e7316e96438774716c79472fb05cc5055539`。
|
||||
- 选区:`[17,120)`;SHA-256:`4b4eb47d3545b5bcba80384c1aa81cee4d973d006736ea7a664f69ef9b759e70`。
|
||||
|
||||
## 维护与未完成事项
|
||||
|
||||
```bash
|
||||
make sync-faqi-catalog
|
||||
make check-faqi-catalog
|
||||
make test-faqi-catalog
|
||||
```
|
||||
|
||||
检查复用jsonschema/PyYAML,表格复用tabulate;来源、ID、选区、范围或只读视图漂移均失败,不联网补证或静默升级。
|
||||
此初审不维护等级、账户、设备、部署或运行证据。独立语义审查、运行/效果/许可核验、产品同一/版本演化及未逐模块展开的复合包仍待核。
|
||||
Reference in New Issue
Block a user