cognis-digital/portalcat
GitHub: cognis-digital/portalcat
一款纯 Python 实现的软件目录与脚手架工具,无需数据库即可索引实体、追踪归属与依赖关系、校验引用完整性并回答影响范围查询。
Stars: 0 | Forks: 0
# portalcat
**一个可以在任何地方运行的软件目录与脚手架工具。** 为你的
`catalog-info.yaml` 实体建立索引,构建归属与依赖关系图,验证
引用,回答“谁拥有此项目 / 哪些依赖于它”,并从模板中
构建新组件的基础架构 —— 纯 Python 标准库实现。
**Cognis Neural Suite** 的一部分。
## 为什么需要
内部开发者门户通常会回答几个关键问题:谁拥有某个服务,
它依赖什么,如果它发生变更会破坏什么,以及是否有任何内容指向了
已经不存在的事物。portalcat 可以直接从实体文件目录中回答所有这些问题 —— 无需托管门户服务器,无需数据库,无外部依赖。
## 命令
```
# 总结 catalog(种类、所有者、悬空引用)。
python -m portalcat summary ./repo
# 验证实体 + 引用。
python -m portalcat validate ./repo
# 所有者和 blast-radius 查询。
python -m portalcat owner ./repo Component:orders-api
python -m portalcat impact ./repo Resource:orders-db
# 从 template tree 脚手架生成新组件({{ name }} 占位符)。
python -m portalcat scaffold ./template ./new-service \
--set name=billing-api --set owner=team-fin
# 作为本地 MCP server 运行(stdio JSON-RPC)。
python -m portalcat mcp
```
## 实体模型
```
kind: Component # Component | API | System | Resource | Group | User | Domain
metadata:
name: orders-api
tags: [go, payments]
spec:
owner: team-payments
system: commerce
dependsOn: [Component:inventory-api, Resource:orders-db]
```
## portalcat 的独特之处
- **单命令查看影响范围。** `impact` 会遍历传递依赖项,让你
在进行变更之前就知道它会影响什么。
- **引用完整性。** 悬空的 `owner`/`dependsOn` 边缘会被标记为
错误 —— 你的目录不会悄无声息地腐坏。
- **内置脚手架。** 使用 `{{ placeholder }}` 替换路径和内容,
从模板树中批量生成新的、已在目录中注册的组件。
- **原生 MCP**(`summary` / `validate` / `impact`)以及一个可选的本地集群 AI
hook(默认关闭),可为无主实体建议归属者。
## 测试
```
python -m pytest -q # or: python -m unittest discover -s tests
```
## 互操作性
`portalcat` 可与拥有 300 多个工具的 Cognis 套件组合使用 —— JSON 输入/输出以及共享的
OpenAI 兼容的 `/v1` 主干网络。请参阅 **[INTEROP.md](INTEROP.md)** 了解
套件图谱、组合模式以及参考技术栈。
## 集成
通过
[`cognis-connect`](https://github.com/cognis-digital/cognis-connect) 将 `portalcat` 的发现结果转发至 STIX/MISP/Sigma/Splunk/Elastic/Slack/webhook。请参阅 **[INTEGRATIONS.md](INTEGRATIONS.md)**。
## 许可证
Cognis Open Collaboration License (COCL) 1.0 —— 详见 [`LICENSE`](LICENSE)。
© 2026 Cognis Digital LLC. 原创的 Cognis 作品;不包含任何第三方代码、名称或
品牌标识。
## 领域
**主要领域:** 网络 & 安全 · **JTF MERIDIAN 部门:** NULLBYTE · SPECTER
**主题:** `cognis` `security` `infosec` `cybersecurity` `blue-team`
**Cognis Neural Suite** 的一部分 —— 包含 300 多个源码可用工具,按照 JTF MERIDIAN 指挥结构划分为 12 个领域。请参阅 [GitHub 上的套件](https://github.com/cognis-digital) 和 [jtf-meridian](https://github.com/cognis-digital/jtf-meridian) 了解各部分如何协同工作。
## 使用说明 —— 分步指南
`portalcat` 会将 `catalog-info.yaml` 实体索引到一个归属与依赖关系图中,你可以对其进行验证、查询、绘制图表以及基于此进行脚手架构建。
1. **安装**(纯标准库,Python 3.10+):
pip install "git+https://github.com/cognis-digital/portalcat.git"
2. **总结并验证**某个目录(如果出现错误,validate 会以非零状态退出,因此它也可以兼作检查关卡):
portalcat summary ./repo
portalcat validate ./repo
3. **回答关于实体的归属 / 影响范围问题**:
portalcat owner ./repo Component:orders-api
portalcat impact ./repo Resource:orders-db # 哪些内容传递依赖于它
portalcat deps ./repo Component:orders-api # 它依赖于哪些内容
4. **使用输出结果** —— 查找孤立项(`--format json`)或将依赖图导出为 Mermaid:
portalcat orphans ./repo --format json
portalcat graph ./repo --out deps.mmd
5. **从模板树构建新组件**(包含 `{{ name }}` 占位符),或将其作为本地 MCP server 运行:
portalcat scaffold ./template ./new-service --set name=billing-api --set owner=team-fin
portalcat mcp
标签:Python, SOC Prime, 依赖图谱, 内部开发者门户, 开发工具, 无后门, 脚手架, 软件目录, 逆向工具