fcon-tech/portolan
GitHub: fcon-tech/portolan
Portolan是一款本地代码库导航工具,用于AI代理协作和代码库安全研究。
Stars: 1 | Forks: 0
# Portolan
[俄语版本](docs/ru/README.md)
Portolan 是为 AI 代理和工程领导者提供的本地、只读代码库导航套件。
它在您的机器上运行,读取本地文件,并在代理回答问题之前写入有界证据工件:哪些存储库可见,发现了哪些关系和重复/配置表面,看起来像技术债务,以及什么仍然未知。
Portolan 是景观导航的代理 harness:它为代理提供通过本地证据、显式差距和导入的 OSS 输出的有界路线。
它不是一个编码 harness、就绪门、服务目录、可观察性平台、现代化引擎,也不是 Cursor、Claude、Sourcegraph、Backstage 或企业代码智能工具的替代品。
## 何时使用
当您希望代理回答以下问题时要使用 Portolan:
- 这个存储库或本地软件景观中有什么?
- 从本地证据中可以看到哪些依赖关系和关系?
- 重复的源/配置文件在哪里?
- 哪些环境变量、端口、清单、工作流程、功能标志或秘密引用可见?
- 哪些技术债务候选者可以由本地证据支持?
- 什么是不知名、缺失或未评估的?
当目标混乱、多存储库、遗留或部分黑盒时,Portolan 特别有用。
## 您将获得什么
主要工作流程为代理创建一个上下文包:
```
portolan context prepare --root --out /context --profile agent
```
典型输出:
```
/context/
agent-brief.md
answer-contract.md
query-plan.md
evidence-index.jsonl
repos.json
tool-registry.json
oss-plan.json
gaps.jsonl
```
当您需要一个更完整的地图时,运行:
```
portolan map --root --out /map
```
典型输出:
```
/map/
run.json
coverage.json
summary.json
graph-index.json
graph.json
findings.jsonl
map.md
```
从 `summary.json`、`graph-index.json`、`findings.jsonl` 和 `map.md` 开始。
只有在需要详细内容时才打开完整的 `graph.json`。
对于针对现有地图包的有界代理问题,使用:
```
portolan query findings --bundle /map --kind relationships --limit 20
portolan query gaps --bundle /map --limit 20
```
在需要查找记录、弱证据状态或稳定的 `portolan://` 引用时,在加载 `graph.json` 之前使用这些查询命令。
## 快速入门
发布 `v0.1.0` 标签后,使用 Go 安装第一个公共源首次发布:
```
# Requires the published v0.1.0 tag. If this fails, use the source-checkout
# route below until the tag is available.
go install github.com/fcon-tech/portolan/cmd/portolan@v0.1.0
portolan --version
```
此命令获取公共模块源并在本地构建 CLI。它不会安装预构建的 Portolan 二进制文件。
在该标签存在之前,或者如果您无法或不应通过 `go install` 获取模块,克隆源签出并构建存储库本地二进制文件:
```
git clone https://github.com/fcon-tech/portolan.git
cd portolan
scripts/bootstrap-portolan
.portolan/bin/portolan --version
.portolan/bin/portolan --help
.portolan/bin/portolan context prepare --root --out /context --profile agent
.portolan/bin/portolan map --root --out /map
```
Portolan 尚未发布可下载的预构建二进制文件。您需要 `go.mod` 中声明的 Go 版本进行源引导。
如果引导失败是因为缺少 Go 或缓存的模块,请参阅 [故障排除](docs/agent/TROUBLESHOOTING.md)。仅在您有意进行网络依赖项下载时:
```
PORTOLAN_BOOTSTRAP_ALLOW_NETWORK=1 scripts/bootstrap-portolan
```
如果您正在开发 Portolan 本身,您还可以使用:
```
go run ./cmd/portolan context prepare --root --out /context --profile agent
go run ./cmd/portolan map --root --out /map
go run ./cmd/portolan query gaps --bundle /map --limit 20
```
仅在您有意替换现有 Portolan 输出目录时使用 `--force`。
## 文档路线
如果您不确定先打开哪个文档,请从 [文档入门](docs/onboarding.md) 路线开始。它将人类、代理、Cursor 操作员、OpenCode 操作员和发布审阅者指向每个工作流程的维护表面。
对于更大的命名压力示例,请参阅 [Apache Bigtop 压力示例](docs/demo.md)。它是单个本地目标形状的证据,而不是主要产品路径。
## 公共路线
这些路线是当前的和边界有限的。一些公共表面是初始社区基础设施,而不是广泛采用或支持的证明。
- 安装:使用上面的 [快速入门](#quick-start)。
- 演示:针对您可以检查的任何本地目标运行 [快速入门](#quick-start)。对于更大的命名示例,请参阅 [Apache Bigtop 压力示例](docs/demo.md)。
- 产品声明:在重用公共措辞之前阅读 [产品声明](docs/product-claims.md)。
- 产品质量:在将报告或表面视为产品就绪之前阅读 [产品质量边界](docs/product-quality-boundary.md) 和 [产品成熟度矩阵](docs/product-maturity.md)。
- 贡献:在打开问题或拉取请求之前阅读 [贡献](CONTRIBUTING.md)。
- 安全:通过 [安全](SECURITY.md) 报告敏感漏洞,而不是公开问题。
- 支持:有关公共支持边界,请参阅 [支持](SUPPORT.md)。
## 代理
如果您要求 AI 代理使用 Portolan,请将其指向用户代理文档:
- [文档入门](docs/onboarding.md)
- [代理快速入门](docs/agent/QUICKSTART.md)
- [代理快速入门,俄语](docs/agent/QUICKSTART.ru.md)
- [安装](docs/agent/INSTALL.md)
- [安装,俄语](docs/agent/INSTALL.ru.md)
- [安装提示](docs/agent/INSTALL-PROMPT.md)
- [安装提示,俄语](docs/agent/INSTALL-PROMPT.ru.md)
- [配置](docs/agent/CONFIG.md)
- [示例](docs/agent/EXAMPLES.md)
- [故障排除](docs/agent/TROUBLESHOOTING.md)
在此存储库上工作的开发代理应遵循 [AGENTS.md](AGENTS.md)。
最安全的可重用指令是 [docs/agent/INSTALL-PROMPT.md](docs/agent/INSTALL-PROMPT.md) 中的可复制提示块。填写三个绝对路径,并将该块发送到代理。
对于更短的运行,将此发送到代理:
```
Install and use Portolan from PORTOLAN_PATH on TARGET_PATH. Write artifacts to
OUTPUT_PATH. Follow docs/agent/INSTALL-PROMPT.md, preserve unknown /
cannot_verify / not_assessed, and cite local artifact paths for every material
claim.
```
对于俄语代理运行,请使用 [docs/agent/INSTALL-PROMPT.ru.md](docs/agent/INSTALL-PROMPT.ru.md)。
为 `PORTOLAN_PATH`、`TARGET_PATH` 和 `OUTPUT_PATH` 提供绝对本地路径。不要将特定于目标的预期发现添加到提示中。
## 证据规则
Portolan 不会将缺失的证据转换为信心。结果保留证据状态:
- `source-visible`:在源文件中可见。
- `metadata-visible`:在本地元数据、清单或导出的工具输出中可见。
- `runtime-visible`:在提供的本地运行时观察中可见。
- `claim-only`:由人类或工具声明,但未在本地验证。
- `unknown`:没有可用的证据。
- `cannot_verify`:存在证据,但 Portolan 无法验证它。
报告还可能使用 `not_assessed`,当表面未检查或检测器未实现时。
## 当前边界
当前安全的产品措辞位于 [产品声明](docs/product-claims.md)。
当本地检查通过时,`v0.1.0` 发布表面准备进行公共测试;它不意味着 GitHub 流行度、外部采用、合并批准或广泛的生态系统验证。
重要的限制:
- 命名的接受示例是特定于目标形状的证据,而不是主要产品故事。经过验证的 Cursor 比较是在一个固定的本地目标上的无头 Cursor,而不是 UI Cursor/Composer。
- 本地存储库数量不能证明完全继承财产覆盖。
- 除非提供支持的本地运行时观察,否则不会评估运行时服务拓扑;部分观察不能证明完整的拓扑。
- Portolan 有记录的不受信任工件边界和针对所选本地 CLI 风险的专注测试;这不是广泛的安全认证。
- 重复发现需要所选本地工具输出,例如 jscpd/CPD-style JSON。如果没有该输出,重复仍然为 `not_assessed`。
- OSS 验证是证据特定的。Syft/CycloneDX、Semgrep、Repomix、Graphify、jscpd-style JSON 和符号索引 JSON 表面是通过它们的本地 CLI、技能或 MCP 表面产生的有界本地输入,当安装并请求时;Portolan 导入并规范化了输出,而不是包装或替换扫描器。
## 更多文档
英语:
- [文档入门](docs/onboarding.md)
- [产品声明](docs/product-claims.md)
- [发布指南](docs/release.md)
- [产品边界](docs/product-boundary.md)
- [证据模型](docs/evidence-model.md)
- [关系检测](docs/relationship-detection.md)
- [运行时观察](docs/runtime-observations.md)
- [安全威胁模型](docs/security-threat-model.md)
- [OSS 组成](docs/oss-composition.md)
- [Apache Bigtop 压力示例](docs/demo.md)
- [贡献](CONTRIBUTING.md)
- [安全策略](SECURITY.md)
- [支持](SUPPORT.md)
- [产品待办事项](docs/product-backlog.md)
- [SpecKit 工作流程](docs/speckit-workflow.md)
俄语:
- [俄语概述](docs/ru/README.md)
- [俄语产品边界](docs/ru/product-boundary.md)
## 开发者检查
对于存储库开发:
```
go test -count=1 ./...
jq empty schema/*.json
git diff --check
```
标签:AI 代码助手, EVTX分析, 代码依赖, 代码关系, 代码准备, 代码准备助手, 代码准备助手助手, 代码准备工具, 代码准备工具助手, 代码准备工具助手助手, 代码分析, 代码分析助手, 代码分析助手助手, 代码分析工具, 代码发现, 代码可视化, 代码可视化助手, 代码可视化助手助手, 代码地图, 代码审查, 代码审查助手, 代码审查助手助手, 代码导航, 代码导航助手, 代码导航助手助手, 代码导航工具, 代码库管理, 代码搜索, 代码文档, 代码文档助手, 代码文档助手助手, 代码映射, 代码映射工具, 代码映射工具助手, 代码映射工具助手助手, 代码智能助手, 代码智能助手助手, 代码智能工具, 代码环境变量, 代码现代化, 代码现代化助手, 代码现代化助手助手, 代码知识库, 代码知识库助手, 代码知识库助手助手, 代码索引, 代码索引助手, 代码索引助手助手, 代码结构, 代码结构助手, 代码结构助手助手, 代码资产管理, 代码资产管理助手, 代码资产管理助手助手, 代码输出, 代码输出助手, 代码输出助手助手, 凭证管理, 功能标志, 工作流程, 工程领导力, 技术债务, 日志审计, 本地化工具, 秘密引用, 端口管理