greysquirr3l/redshank
GitHub: greysquirr3l/redshank
一个用 Rust 编写的自主递归语言模型调查代理,集成多源数据与知识图谱以揭示隐蔽关联。
Stars: 0 | Forks: 0
# Redshank

一个用 Rust 编写的自主递归语言模型调查代理。Redshank 摄取异构公共数据集——竞选财务、游说披露、联邦合同、公司注册、制裁名单、法院记录、个人 OSINT 以及媒体情报,解析其中的实体,并通过内嵌于实时知识图谱维基中的证据支持分析,揭示非显而易见的关联。
Redshank 是 [OpenPlanter](https://github.com/ShinMegamiBoson/OpenPlanter) 的从零开始的 Rust 重写版本,替代了 Python 运行时,编译为二进制文件,零依赖 Python 或 Node.js。
## 安装
```
cargo install redshank --locked
```
或者从源码构建:
```
git clone https://github.com/greysquirr3l/redshank.git
cd redshank
cargo build --release
```
二进制文件位于 `target/release/redshank`。
## 快速启动
```
# 1. 设置您的 API 密钥
export ANTHROPIC_API_KEY="sk-ant-..."
# 2. 启动 TUI
redshank tui
# 3. 或者从命令行运行一次性调查
redshank run "Who are the top donors to PACs linked to defense contractors with active SAM.gov registrations?"
```
## 功能特性
- **递归工具调用引擎** — 代理循环调用工具、读取结果,
并可将子任务委派给具有独立上下文窗口的子代理调用。上下文压缩保持长调查在令牌限制内。
- **34 个数据获取器** — 从政府数据库、公司注册、制裁名单、法院系统及 OSINT 源拉取记录(详见
[数据源](#data-sources))。
- **知识图谱维基** — 发现结果被写入相互关联的 Markdown 文档并带有交叉引用。petgraph 有向无环图跟踪实体与关系,并支持模糊名称匹配。
- **交互式 TUI** — 三面板 ratatui 界面:会话侧边栏、可滚动的聊天日志,以及字符单元维基图谱画布。支持模型切换、推理努力度与会话管理的斜杠命令。
- **多提供者 LLM 支持** — Anthropic(原生 Messages API 与推理预算)、OpenAI、OpenRouter、Cerebras 和 Ollama(本地)。
- **安全优先架构** — 故障安全设计,包含类型化的 `AuthContext`、基于角色的 `SecurityPolicy` 以及 `chmod 600` 凭证存储。每次数据访问均在接触存储前检查权限。
- **Stygian 集成** — 可选的 `stygian` 特性标志启用 stygian-graph 管道与针对 JS 渲染页面的 stygian-browser 反检测自动化。
- **Coraline MCP 工具** — 可选的 `coraline` 特性标志添加代码感知文件读取、语义搜索、仓库映射以及通过 Coraline MCP 服务器的文件编辑。
- **CQRS + 领域事件** — 每个变更操作流经幂等命令处理器;每个读取通过查询处理器。状态转换发出类型化领域事件并持久化到 SQLite。
## 数据源
| 类别 | 获取器 |
| --- | --- |
| **竞选财务** | FEC 申报、参议院游说披露、众议院游说披露 |
| **政府合同** | USASpending、SAM.gov 注册、FPDS 合同授予、联邦审计清算所 |
| **公司注册** | GLEIF(LEI 查询)、OpenCorporates、FinCEN BOI、州务卿门户、SEC EDGAR |
| **金融** | FDIC 机构搜索、PropPublica 非营利组织 990 申报 |
| **制裁** | OFAC SDN、联合国综合制裁、欧盟制裁、世界银行除名公司 |
| **环境与安全** | EPA ECHO 合规性、OSHA 检查数据 |
| **法院** | CourtListener(RECAP 归档) |
| **泄露与离岸** | ICIJ 离岸泄露数据库 |
| **个人 OSINT** | HIBP 泄露暴露、GitHub 个人资料、Wayback Machine 快照、WHOIS/RDAP 历史、选民登记、USPTO 专利/商标发明人、用户名枚举(37 个平台)、社交媒体资料 |
| **参考与媒体** | Wikidata 实体查询、GDELT 媒体监控、Census ACS 人口统计 |
| **财产** | 县级财产/评估记录 |
## 配置
凭据按以下优先级解析(首个匹配项生效):
1. `REDSHANK_` — 应用命名空间,适用于在同一主机上运行多个代理。
2. `OPENPLANTER_` — 向后兼容旧版。
3. `` — 裸环境变量(对大多数用户已足够)。
将密钥设置为环境变量或在 `.env` 文件中声明:
```
cp .env.example .env
# 编辑 .env 文件以配置您的密钥
chmod 600 .env
```
若需持久化存储,请复制示例凭据文件:
```
mkdir -p .redshank
cp credentials.example.json .redshank/credentials.json
chmod 600 .redshank/credentials.json
```
Redshank 按顺序合并所有来源:环境变量 → `.env` → `/.redshank/credentials.json` → `~/.redshank/credentials.json`。
模型默认值位于 `/.redshank/settings.json`:
```
{
"default_model": "claude-sonnet-4-20250514",
"default_reasoning_effort": "medium",
"providers": {
"OpenAiCompatible": {
"enabled": true,
"protocol": "openai_compatible",
"deployment": "local",
"base_url": "http://localhost:11434/v1",
"default_model": "llama3.2"
},
"OpenAI": {
"enabled": true,
"protocol": "openai_compatible",
"deployment": "local",
"base_url": "http://localhost:1234/v1",
"default_model": "qwen2.5-coder:latest"
}
}
}
```
提供者路由保留在 `settings.json` 中,而实际密钥保持在
`.redshank/credentials.json`。这样可以将 `OpenAI` 指向本地 OpenAI 兼容服务器,或将 `Ollama` 路由到非默认主机,而无需将 API 密钥复制到通用设置中。
运行时可通过 CLI 标志覆盖:
```
redshank run --model gpt-4o --reasoning high "Investigate ..."
```
## TUI 使用指南
使用 `redshank tui` 启动(或 `redshank tui --session ` 恢复会话)。
| 区域 | 描述 |
| --- | --- |
| **侧边栏**(左侧 20%) | 会话列表。使用方向键选择。 |
| **聊天窗格**(中央 55%) | 可滚动的对话日志。在底部输入行键入目标。 |
| **图谱窗格**(右侧 25%) | 字符单元维基图谱画布。节点按类别着色。 |
### 斜杠命令
| 命令 | 效果 |
| --- | --- |
| `/model ` | 切换模型(添加 `--save` 以持久化) |
| `/model` | 列出可用模型 |
| `/reasoning ` | 设置推理努力度 |
| `/status` | 显示当前模型、努力度与会话信息 |
| `/clear` | 清除聊天日志 |
| `/help` | 显示可用命令 |
| `/quit` 或 `Ctrl+C` | 退出 |
### 无头模式
在无 TUI 模式下运行用于脚本或 CI:
```
redshank run --no-tui "Investigate ..."
```
## CLI 参考
```
redshank [OPTIONS]
Commands:
run Run an investigation with a given objective
tui Launch the interactive TUI
fetch Run a data fetcher directly
session List, resume, or delete sessions
configure Interactive credential and settings setup
version Print version and build info
Global Options:
-w, --workspace Workspace directory [default: .]
-m, --model Override the default model
-r, --reasoning Reasoning effort (off|low|medium|high)
--no-tui Run headless (no interactive UI)
--max-depth Maximum recursion depth for subtasks
--demo Demo mode (use mock model)
```
## 开发
### 先决条件
- Rust 1.94+(稳定版)
- SQLite(通过 rusqlite 打包)
### 构建与测试
```
cargo build --workspace
cargo test --workspace
cargo clippy --workspace -- -D warnings
```
### 可选特性
```
# 使用 Styx 网络自动化构建
cargo build -p redshank-core --features stygian
# 使用 Coraline MCP 代码导航工具构建
cargo build -p redshank-core --features coraline
```
### 工作区布局
```
redshank/
├── redshank-core/ Core library: domain model, ports, engine, tools, persistence
│ └── src/
│ ├── domain/ Pure types, zero I/O deps
│ ├── ports/ Trait interfaces (inbound + outbound)
│ ├── application/ CQRS command/query handlers, engine service
│ └── adapters/ LLM providers, tools, SQLite, wiki filesystem
├── redshank-tui/ ratatui terminal interface
├── redshank-fetchers/ 34 data-source fetcher libraries
├── redshank-cli/ clap CLI entry point
└── plan.toml Build plan (26 tasks)
```
## 与 OpenPlanter 的对比
| | OpenPlanter | Redshank |
| --- | --- | --- |
| **语言** | Python 3.12 | Rust 1.94(2024 版) |
| **TUI 框架** | Textual | ratatui + crossterm |
| **图库** | NetworkX | petgraph |
| **HTTP 客户端** | urllib / httpx | reqwest + stygian-browser |
| **LLM 提供者** | Anthropic、OpenAI、OpenRouter、Cerebras、Ollama | 相同集合,原生 Rust 客户端 |
| **数据获取器** | 12 个 Python 脚本 | 34 个库模块 |
| **架构** | 扁平模块 | 六边形 DDD + CQRS |
| **安全模型** | 文件权限 | 类型化 AuthContext + SecurityPolicy + 故障安全 |
| **会话存储** | JSON 文件 | SQLite 与领域事件 |
| **分发方式** | pip install + Python 运行时 | 单个编译二进制文件 |
| **桌面应用** | Tauri 2 + Svelte | —(仅 TUI,桌面版计划中) |
## 许可证
参见 [LICENSE](LICENSE) 获取详细信息。
标签:34个数据抓取器, cargo install, ESC4, OSINT, PyRIT, ratatui, Rust, TUI, 一次性调查, 上下文压缩, 从零实现, 企业注册, 制裁名单, 可视化界面, 多智能体系统, 媒体情报, 子任务委派, 实体解析, 实时知识图谱, 工具调用, 开源, 异步, 政府数据, 数据摄取, 无Node.js, 无Python, 模糊匹配, 法院记录, 游说披露, 竞选财务, 终端用户界面, 编译型二进制, 网络流量审计, 联邦合同, 自主代理, 语言模型代理, 调查分析, 跨数据源关联, 递归代理, 通知系统, 零依赖, 高效