研究知识代理(RKA)

用于人工智能辅助调查的持久研究记忆。
RKA为你的研究项目提供了一个在两次会议之间不会忘记的大脑。它将每一个发现、决策、假设和文献参考都存储在一个具有完整来源链的结构化知识库中。大脑(克劳德)处理所有的知识丰富——不需要本地法学硕士学位。
RKA architecture and operational mechanism
A. 三个角色-- 研究员 (框架和批准), 脑 (Claude Desktop综合文献并提出结构化选项), 执行者 (Claude Code,实现有界任务)——共享一个类型化的、来源感知的知识库。四个控制属性锚定了架构:可追溯性、可逆性、可见的分歧、人类认可的承诺。 B 一个操作周期:研究人员制定目标;大脑重申意图(确认简报),检索上下文,并提出结构化选项;研究人员批准了一项决定;向执行人派遣特派团;执行人实施并报告;大脑整合结果并打开下一个决策周期。
Month 1 Month 3 Month 6
┌──────────┐ ┌──────────┐ ┌──────────┐
│ "We found │ │ "Based on │ │ "We can │
│ that..." │ │ 3 months │ │ trace │
│ │ ┌─────┐ │ of evi- │ ┌─────┐ │ every │
│ (lost │──▶│ RKA │──▶│ dence..."│──▶│ RKA │──▶│ decision │
│ next │ └─────┘ │ │ └─────┘ │ back to │
│ session) │ │ (all here)│ │ its why" │
└──────────┘ └──────────┘ └──────────┘
Without RKA With RKA With RKA v2
Findings vanish Everything persists Knowledge self-organizes专为北卡罗来纳大学夏洛特分校的CS/IoT/CPS安全研究而设计。
纸张
描述RKA架构、设计原则和评估的工作草案以PDF格式提供: RKA-paper.pdf — *框架是人:人工智能辅助研究的研究者-大脑-执行者架构*.
上图为草案中的图1;它提供了架构的概览(面板a)和一个操作决策周期(面板B)。本自述的其余部分是实用的、动手操作的伴侣:设置、CLI、MCP工具、RESTneneneba API和web仪表板。关于概念论证和评估,请阅读草案。
______________________________________________________________________
运作原理
三个参与者通过共享知识库进行协作:
graph LR
PI["🧑🔬 PI
Human researcher"]
Brain["🧠 Brain
Claude Desktop"]
Executor["⚡ Executor
Claude Code"]
RKA["📚 RKA
Shared knowledge base"]
PI -->|supervises| Brain
PI -->|supervises| Executor
Brain -->|"strategy, decisions"| RKA
Executor -->|"findings, reports"| RKA
RKA -->|"context, evidence"| Brain
RKA -->|"missions, guidance"| Executor
style RKA fill:#E1F5EE,stroke:#0F6E56,color:#04342C
style Brain fill:#EEEDFE,stroke:#534AB7,color:#26215C
style Executor fill:#E6F1FB,stroke:#185FA5,color:#042C53
style PI fill:#F1EFE8,stroke:#5F5E5A,color:#2C2C2A- 脑 (克劳德桌面)——战略层。解释研究结果,确定研究方向,审查证据集群,解决矛盾。
- 执行者 (Claude Code)——实现层。运行实验、编写代码、收集数据。接收任务,提交报告,在被阻止时设置检查站。
- 圆周率 (人类研究人员)——监督两者,解决升级问题,提供领域专业知识。
- 俄罗斯联邦航天局 --共享的记忆。存储所有内容,为需要它的人提供上下文。维护清单检测来源缺口,供大脑修复。
______________________________________________________________________
知识管道
原始观察不会保持原始状态。在维护过程中,大脑将日记条目提炼为结构化知识:
graph TD
Entry["📝 Journal entries
note · log · directive"]
Claims["🔍 Claims
hypothesis · evidence · method
result · observation · assumption"]
Clusters["🗂️ Evidence clusters
Grouped claims with
Brain-written synthesis"]
Map["🗺️ Research map
Research questions →
clusters → claims"]
Entry -->|"Brain extracts"| Claims
Claims -->|"Brain clusters"| Clusters
Clusters -->|"Brain synthesizes"| Map
style Entry fill:#E6F1FB,stroke:#185FA5,color:#042C53
style Claims fill:#EEEDFE,stroke:#534AB7,color:#26215C
style Clusters fill:#FAEEDA,stroke:#854F0B,color:#412402
style Map fill:#E1F5EE,stroke:#0F6E56,color:#04342C每个声明都通过字符偏移链接回其源条目。每个集群都与其组成的主张相关联。整个来源链总是可以穿越的。
______________________________________________________________________
来源链
RKA中的每个实体都知道它为什么存在。类型化的交叉引用形成了一个完整的推理链:
graph LR
Lit["📄 Literature
MQTT benchmarks"]
Dec1["🔀 Decision
Test broker limits"]
Mis["📋 Mission
Stress test at scale"]
Entry["📝 Finding
12% packet loss"]
Claim["💡 Claim
Threshold at 400"]
Dec2["🔀 Decision
Implement sharding"]
Lit -->|informed| Dec1
Dec1 -->|motivated| Mis
Mis -->|produced| Entry
Entry -->|derived| Claim
Claim -->|justified| Dec2
style Lit fill:#F1EFE8,stroke:#5F5E5A,color:#2C2C2A
style Dec1 fill:#EEEDFE,stroke:#534AB7,color:#26215C
style Mis fill:#E6F1FB,stroke:#185FA5,color:#042C53
style Entry fill:#E1F5EE,stroke:#0F6E56,color:#04342C
style Claim fill:#FAEEDA,stroke:#854F0B,color:#412402
style Dec2 fill:#EEEDFE,stroke:#534AB7,color:#26215C12种类型的链接: informed_by · justified_by · motivated · produced · cites · references · supports · contradicts · supersedes · resolved_as · derived_from · builds_on
______________________________________________________________________
你可以用RKA做什么
记录并整理:
Brain: rka_add_note("12% packet loss above 400 connections", type="note")
rka_add_decision("Use horizontal sharding", related_journal=["jrn_..."])
rka_create_mission("Test sharding", motivated_by_decision="dec_...")
Executor: rka_add_note("Ran 500-connection stress test", type="log")
rka_submit_report(mission_id, findings="Sharding reduced loss to 2%")
rka_submit_checkpoint("Need PI input on replication factor")导航和搜索:
rka_get_research_map() → Three-level view: RQs → clusters → claims
rka_trace_provenance(id) → Literature → decision → mission → finding → claim
rka_get_review_queue() → Items flagged for Brain's deep reasoning
rka_search("MQTT scalability") → Entries, decisions, literature, claims
rka_get_context(topic="...") → Importance-ranked context package
rka_multi_hop_retrieval(query="...") → Query-anchored ranked subgraph______________________________________________________________________
主要特点
| 类别 | 它的作用 |
|---|---|
| 持久内存 | 日记条目、决策、文献、任务、检查点——所有这些都在会话之间存活 |
| 渐进蒸馏 | 大脑驱动的管道:条目→ 索赔→ 证据集群→ 研究主题 |
| 三层研究图 | 导航:研究问题→ 证据集群→ 个人索赔 |
| 完整来源 | 12条类型化的交叉参考边,形成可追溯的推理链 |
| 大脑驱动的丰富 | 大脑处理所有知识丰富;维护清单自动检测差距 |
| 决策生命周期 | 推翻决定 rka_supersede_decision --受影响的索赔被标记为过时,等待Brain审查 |
| 混合搜索 | FTS5关键字+sqlite-vec嵌入+倒排融合 |
| 多项目 | 使用MCP工具进行切换的独立项目数据库 |
| 网络仪表盘 | 12页React UI:带有可过滤统计数据的研究地图、决策树、知识图、markdown渲染日志、可扩展任务 |
| 入职 | rka_generate_claude_md 从实时数据库状态自动生成特定于项目的CLAUDE.md |
| 技能插件 | 特定角色的SKILL.md指南打包为MCP提示(大脑、执行器、PI),带有工作示例和反模式 |
| 知识新鲜度 | 通过依赖图进行状态检测和传播;基于向量相似度的矛盾检测 |
| 验证门 | 结构化的通过/不通过检查点(0-3号门),带有通过/取消/保留/回收判断和假设跟踪 |
| 集群管理 | 拆分大集群,合并薄集群——自动保存声明来源 |
| 文献工作流程 | rka_process_paper 在一次调用中将阅读注释捕获为结构化声明 |
| RQ生命周期 | 跟踪开放式研究问题→ 部分答复→ 回答→ 重新构建→ 关闭 |
| 证据汇编 | rka_assemble_evidence 根据现有知识生成lit评审、进度报告和提案部分 |
| 数据完整性 | 分类表注册表可防止导出过程中数据丢失;rka_check_integrity 验证知识图 |
| 多选择决策用户体验 | rka_present_decision 用帕累托高亮显示结构化选项集; rka_record_pi_selection 捕捉人类的选择和 rka_record_outcome 使用Brier评分、ECE和覆盖率指标关闭校准循环 |
| 钉钩系统 | 事件驱动自动化(迁移019):5种事件类型和8种MCP工具(rka_add_hook, rka_list_hooks, rka_enable_hook/rka_disable_hook, rka_delete_hook, rka_get_hook_executions, rka_get_brain_notifications, rka_clear_brain_notifications)用于漂移检测和大脑通知 |
| 流式HTTP MCP | 可选 rka mcp --transport http 远程/多客户端访问模式(仅限OAuth 2.1登陆之前的开发) |
______________________________________________________________________
目录
______________________________________________________________________
建筑
大脑/执行者模型
RKA实现了三方合作:
graph TD
subgraph Clients
CD["Claude Desktop
Brain — MCP stdio"]
CC["Claude Code
Executor — MCP stdio"]
WEB["Web Dashboard
localhost:9712"]
end
subgraph "RKA Server"
MCP["MCP Server — 75+ tools"]
API["REST API — FastAPI"]
SVC["Service Layer — shared logic"]
DB["SQLite + FTS5 + sqlite-vec"]
WORKER["Background Worker
Embeddings only"]
end
CD --> MCP
CC --> MCP
WEB --> API
MCP --> SVC
API --> SVC
SVC --> DB
WORKER --> DB- 脑 (Claude Desktop):战略决策——研究什么,采取哪个方向,如何解释研究结果,以及要解决哪些审查队列项目。通过MCP工具进行通信。
- 执行者 (Claude Code):实现——运行实验、编写代码、收集数据。接收任务、提交报告、设置检查站。
- 圆周率 (人):监督进度,解决检查点,提供领域专业知识。
四层设计
- MCP工具层 --薄型适配器暴露
rka_*stdio上的工具。保持轻量级的每个会话状态,用于输出压缩和摘要,但没有核心业务逻辑。 - REST API层 --FastAPI端点位于
/api.相同的薄型适配器模式,委托给服务。 - 服务层 --所有的商业逻辑。CRUD操作、自动富集、事件排放、上下文准备、蒸馏管道。MCP和REST共享相同。
- 基础设施层 --数据库(SQLite+FTS5+SQLite-vec)、嵌入(FastEmbed)、文件存储。可选的LiteLLM网关供电
rka_ask/rka_generate_summary仅当用户连接cloud-LLM API密钥时。
三过程模型
RKA以三个进程运行:
| 进程 | 命令 | 目的 | 端口 |
|---|---|---|---|
| REST API+Web用户界面 | rka serve | HTTP端点+静态web仪表板 | 9712 |
| 后台工作者 | 由启动 rka serve | 嵌入生成、FTS索引 | 内部 |
| MCP stdio服务器 | rka mcp | 克劳德桌面/代码工具界面 | stdio |
REST API和后台工作程序共享相同的SQLite数据库文件和服务层代码。后台工作程序处理嵌入生成,以便MCP和REST调用立即返回。知识丰富(索赔提取、聚类综合、来源链接)由大脑在维护会话期间处理,不需要本地LLM。
MCP服务器通过stdio(stdin/stdout)进行通信,并将所有调用代理到位于的REST API RKA_API_URL (默认值: http://localhost:9712).
______________________________________________________________________
关键概念
实体类型
| 实体 | 前缀 | 目的 |
|---|---|---|
| 日记 | jrn_ | 研究笔记——观察、分析、程序和指令 |
| 决定 | dec_ | 决策树节点——带有选项、选定路径和基本原理的问题 |
| 文学 | lit_ | 论文、文章——通过阅读渠道追踪 |
| 使命 | mis_ | 分配给执行者的任务包,包括目标和验收标准 |
| 检查点 | chk_ | 执行者需要Brain/PI输入的升级点 |
| 索赔 | clm_ | 从日记账分录中提取断言(假设、证据、方法、结果、观察、假设) |
| 证据集群 | ecl_ | 与Brain在维护期间撰写的合成相关的索赔组 |
| 主题 | top_ | 组织知识的分层主题分类法 |
| 查看队列项目 | rev_ | 标记为大脑审查的项目(低置信度、矛盾、缺少证据) |
| 交叉引用 | link_ | 在实体之间形成来源链的类型化边 |
| 事件 | evt_ | 对所有具有因果链的状态变化进行审计跟踪 |
| 项目状态 | -- | 每个项目的Singleton:当前阶段、总结、阻碍因素、指标 |
日记账条目类型
v2.0将日记账分录类型简化为三个规范类别:
| 类型 | 目的 |
|---|---|
note | 观察、分析、洞察——大多数条目的默认类型 |
log | 程序、方法步骤、实验记录 |
directive | PI或Brain的指示,指导未来的工作 |
v1的遗留类型(finding, insight, idea, observation, hypothesis, methodology, pi_instruction, exploration, summary)被接受为输入,并自动映射到最接近的v2.0类型。
渐进式蒸馏管道
蒸馏管道是由大脑驱动的。大脑在维护过程中提取索赔、汇总证据并撰写综合报告:
Journal Entries (note / log / directive)
|
| [Brain: claim extraction during maintenance]
v
Claims (clm_)
hypothesis | evidence | method | result | observation | assumption
|
| [Brain: clustering and synthesis]
v
Evidence Clusters (ecl_)
Brain-written synthesis of related claims
|
| [Brain: research question assignment]
v
Research Map
Research Questions --> Clusters --> Claimsrka_get_pending_maintenance() 检测需要蒸馏的条目和其他来源缺口。大脑在会话开始时处理这些信息 rka_extract_claims, rka_create_cluster,以及 rka_assign_claims_to_cluster.
基于ULID的ID
所有实体都使用类型前缀的ULID(例如。, dec_01HXYZ...).ULID是全局唯一的,可按创建时间排序,前缀使读取日志或数据库行时的调试更容易。
任务生命周期
Brain creates mission --> Executor picks up (active) --> Work proceeds
--> Checkpoint raised if blocked --> Brain/PI resolves
--> Executor submits report --> Brain reviews
--> Mission marked complete/partial/blocked审核队列
审查队列收集了需要大脑关注的项目:低置信度声明、声明之间的矛盾以及需要叙事综合的集群。大脑可以批准、拒绝、合并或覆盖每个项目。
决策替代
当一项决定被新证据取代时,RKA会将旧决定标记为被取代,并将其与替代决定联系起来,并可选择对引用旧决定的索赔重新进行蒸馏。这保留了完整的审计跟踪,同时保持了活跃的研究地图的最新状态。
来源链
每个实体都可以通过键入链接到其源 link_ 交叉引用。常见的链接类型包括 derived_from, contradicts, supports, supersedes,以及 cites这些边构成了知识图谱页面中可见的出处图。
上下文排名(v2.4+)
上下文引擎返回一个单排名的条目列表——没有令牌预算截断,没有温度波动。排序是确定的,在SQL时间计算:
journal.importance—critical>high>normal>low>archived.PI来源的条目在其重要性范围内略有提升。entity_links中心性 --入站边缘+出站边缘之和;高度连接的节点首先在重要性带内出现。created_atDESC --新事物是决定性因素。
早期的RKA版本(≤v2.3)在日阈值上使用热/暖/冷温度跳跃加上令牌预算。这两个都在v2.4中被删除了(参见 dec_01KQQPD6Y6B362T3K08368BDMP):日阈值系统地排除了较旧的相关内容,前沿模型上下文窗口使簿记员强加的预算变得没有必要。对于多跳问题,答案取决于连接的实体——从种子开始的多跳,请参见 rka_multi_hop_retrieval --它使用具有每个关系权重的类型化边缘词汇表返回一个查询锚定的相关性排名子图。
______________________________________________________________________
安装
选项A:Docker(推荐)
先决条件:
git clone https://github.com/infinitywings/rka.git
cd rka
docker compose up -d就是这样。打开 http://localhost:9712 在您的浏览器中。
连接克劳德桌面和克劳德代码(MCP):
两个客户都通过同一个小 rka stdio二进制文件。在Docker之外安装一次,这样Claude应用程序就可以直接启动它:
UV_CACHE_DIR=/tmp/uv-cache uv tool install --force .双星降落在 ~/.local/bin/rka 船舶角色技能提示(brain_skill, executor_skill, pi_skill)Claude可以加载以获取完整的工作流程指导。
然后在每个客户端的MCP配置中注册它——完整的分步设置在 快速入门§2 下面,包括推荐 env.RKA_PROJECT 块(v2.3.2+)固定您的主项目,以便新会话正确解析,而不是默默地写入 proj_default.
无需法学硕士学位。 大脑(克劳德桌面)在正常会话期间处理所有知识丰富——索赔提取、聚类综合、矛盾解决。除了Docker和MCP二进制文件之外,没有什么可配置的。
MCP二进制文件是无状态的-它代理对Docker容器的REST API的所有调用 RKA_API_URL.
代码更改后,始终重新安装MCP二进制文件:
uv tool uninstall rka
rm -rf /tmp/uv-cache
UV_CACHE_DIR=/tmp/uv-cache uv tool install --force --reinstall .平原 uv tool install --force . 使用缓存的控制盘,可能无法获取更改。
选项B:来源(开发)
先决条件:
- Python 3.11+
- Node.js 18+(用于web仪表板)
git clone https://github.com/infinitywings/rka.git
cd rka
# Create venv and install
python -m venv .venv
source .venv/bin/activate
pip install -e ".[academic,workspace]"
# Build web UI
cd web && npm install && npm run build && cd ..
# Start the server (REST API + background worker)
rka serve连接克劳德桌面/代码(MCP):
# Install the MCP binary via uv tool (avoids macOS sandbox issues)
UV_CACHE_DIR=/tmp/uv-cache uv tool install --force .在每个Claude客户中注册 快速入门§2 下面——推荐的JSON包括 env.RKA_PROJECT 将您的主要项目固定在会话之间的块。
______________________________________________________________________
快速开始
1.启动服务器
# Docker (recommended)
docker compose up -d
# Or from source
rka serveweb仪表板位于 http://localhost:9712.API文件位于 http://localhost:9712/docs.
2.连接克劳德桌面和克劳德代码
RKA通过MCP(模型上下文协议)到达两个Claude应用程序。你安装一个小的二进制文件,并在每个应用程序中注册它。
为什么是两个APP? 大脑(战略、综合)运行 克劳德桌面版执行器(实现、编码)在 克劳德代码。它们共享相同的RKA知识库,因此上下文在会话和角色之间得以保留。 ⚠️ MCP在上不可用 claude.ai 网站——你需要原生的Claude Desktop应用程序和Claude Code扩展/CLI。
步骤2a——安装RKA MCP二进制文件 (一次性,在Docker之外运行,因此Claude应用程序可以直接启动它):
UV_CACHE_DIR=/tmp/uv-cache uv tool install --force .这个地方 rka 在 ~/.local/bin/rka.验证 ~/.local/bin/rka --version.
步骤2b——配置克劳德桌面(大脑)。 打开克劳德桌面→ 设置→ 开发者→ 编辑配置,或直接编辑文件:
| 操作系统 | 配置文件 |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| 窗户 | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
添加(或合并)--替换 ` 使用您的实际用户名;路径必须是 **绝对的**,不 ~.Set RKA_PROJECT` 添加到主项目的id,以便每个新会话都在该项目中开始(请参阅下面的“固定默认项目”):
{
"mcpServers": {
"rka": {
"command": "/Users//.local/bin/rka",
"args": ["mcp"],
"env": {
"RKA_PROJECT": "prj_01ABC..."
}
}
}
}保存和 完全退出克劳德桌面 (macOS上的Cmd+Q/右键单击托盘图标→ 在Windows上退出),然后重新打开。RKA工具现在可以在任何新的对话中使用。
步骤2c——配置克劳德代码(执行器)。 通过VS Code扩展 MCP服务器 UI,或通过创建 .claude/mcp.json 在您的repo根目录中:
{
"mcpServers": {
"rka": {
"command": "/Users//.local/bin/rka",
"args": ["mcp"],
"env": {
"RKA_PROJECT": "prj_01ABC..."
}
}
}
}重新加载VS代码窗口: Cmd+Shift+P (macOS)/ Ctrl+Shift+P (Windows/Linux)→ “开发人员:重新加载窗口”.
如果您使用Claude Code CLI而不是VS Code扩展,则会使用相同的配置 ~/.claude/settings.json 在...之下 mcpServers.
固定默认项目(推荐)。 设置 RKA_PROJECT= 在MCP中 env 块(或API进程的外壳环境)使两个MCP _session.project_id 以及在每个新会话上对该项目的API侧回退解析。没有它,新的MCP子流程默认为 proj_default 如果大脑和执行者都不召唤,它就会默默地写下来 rka_set_project() 第一。要查找您的项目id,请运行 rka_list_projects() 在任何会话中一次,或检查 http://localhost:9712 在仪表板URL栏中。
步骤2d——验证。 在每个应用程序中,询问:
“列出我的RKA项目”
每个克劳德都应该打电话 rka_list_projects() 并返回一个列表(新安装时为空)。
步骤2e——加载角色技能 (建议每届新会议)。主控程序 提示 船用二进制;他们教克劳德会话开始协议、归因规则和出处规则。
在Claude Desktop中,问: *“发挥你的脑力。”* 在克劳德代码中,问: *“发挥你的执行技能。”* 或者通过以下方式明确调用 / 斜线菜单→ rka → 脑技能 / 执行者技能.
有关包括故障排除在内的完整设置演练,请参阅 用法\_ GIDE.md.
MCP传输模式
这 rka mcp 二进制支持两种传输模式:
- 标准(默认) —
rka mcp没有争论。Claude Desktop和Claude Code将二进制文件作为子进程生成,并通过stdin/stdout进行通信。这是上面安装说明配置的模式。 - 流式HTTP(选择加入,v2.2+) —
rka mcp --transport http --port 9713在上运行服务器http://127.0.0.1:9713/mcp。可用于远程访问、多客户端场景或基于mitmproxy的协议调试。通过启用--transport http旗帜或RKA_MCP_TRANSPORT=httpenvvar.身份验证尚未实现——在未来的任务添加OAuth 2.1之前,仅将HTTP模式视为dev/internal。
不同运输工具的刀具表面相同。Docker的默认命令仍然启动stdio,没有任何变化。
3.生成入职指令(可选)
跑 rka_generate_claude_md 从克劳德桌面或点击 GET /api/generate-claude-md?role=executor 生成自定义 CLAUDE.md 对于当前的项目和角色。这为新的会议提供了关于项目目标、惯例和积极工作的即时背景。
4.尝试示例项目(可选)
RKA附带了一个示例知识包—— rka_development 该项目曾用于自行构建RKA。导入它以探索一个包含80个日记条目、22个决策、10个文献参考、3个任务和279个交叉引用的完整知识库:
curl -X POST http://localhost:9712/api/projects/import \
-F "file=@examples/rka_development.rka-pack.zip"或者使用网络仪表板:打开 仪表板 → 导入包 → 选择 examples/rka_development.rka-pack.zip.
导入后,切换到侧栏中的项目,浏览决策树、知识图和研究图,看看真实项目的外观。
5.开始研究
使用web UI进行浏览和问答,或使用Claude Desktop/Code和MCP工具进行完整的Brain/Executor工作流程。仪表板允许您选择活动项目、浏览研究地图、管理审查队列,并将活动项目导出为知识包。
______________________________________________________________________
技能插件——角色特定工作流指南
RKA附带了针对特定角色的技能指南,教克劳德如何有效地使用这些工具。这些与MCP二进制文件打包在一起,并作为MCP提示提供。
可用技能
| 技能 | 目标 | 内容 |
|---|---|---|
brain_skill | Claude Desktop | 会话启动协议、PI归因、来源规则、索赔提取、多任务解析、研究图工作流程、确认简报、知识新鲜度、验证门、反模式 |
executor_skill | 克劳德代码 | 任务拾取协议、后备程序、记录标准、升级触发器、报告提交、MCP二进制文件重新安装、跨角色意识 |
pi_skill | 人类研究人员 | 检查状态、阅读研究地图、审查决策、查找变化的快速参考 |
技能是如何加载的
MCP服务器指令告诉Claude在会话开始时加载适当的技能提示。Claude桌面加载 brain_skill;克劳德代码加载 executor_skillPI可以读取 skills/pi/SKILL.md 直接。
关键工作流程
大脑会话开始:
rka_set_project()→rka_get_changelog(since="yesterday")→rka_get_research_map()- 安静地处理多达10个维护项目
- 问候用户
执行者任务拾取:
rka_get_mission()→ readmotivated_by_decision→ 阅读上下文链接- 提交背景简报(计划摘要、假设、风险)
- 开始前等待Brain批准
验证门(通过/不通过检查点):
rka_create_gate(mission_id, gate_type, deliverables, pass_criteria)- 工作继续进行→ 已创建可交付成果
rka_evaluate_gate(gate_id, verdict, notes, assumption_status)- 如果假设无效→ 陈旧性通过知识图谱级联
______________________________________________________________________
多项目支持
多项目管理可通过MCP和REST实现:
- MCP工具:
rka_list_projects列出所有项目。rka_set_project按名称或ID切换活动项目。rka_create_project在不离开MCP会话的情况下创建新项目。 - REST API和web仪表板:了解项目。仪表板在本地存储活动项目并注入
X-RKA-Project自动处理API请求。 - 知识包:使用导出活动项目
GET /api/projects/export.导入以前导出的包POST /api/projects/import.Import创建一个单独的项目,重新映射项目范围的实体ID,并重写内部引用。 - 工作区引导:CLI引导命令针对当前数据库/默认项目。对于多项目数据库中特定于项目的引导,请使用
POST /api/workspace/scan和POST /api/workspace/ingest随着X-RKA-Project.
______________________________________________________________________
CLI参考
rka init
初始化一个新的RKA工作区并为默认项目设置种子。
rka init "IoT Security Analysis" --description "Systematic review of CPS vulnerabilities"| 选项 | 默认值 | 描述 |
|---|---|---|
--description | "" | 项目描述 |
--dir | . | 项目目录 |
rka serve
启动REST API+web仪表板服务器和后台工作程序。
rka serve --port 9712 --reload| 选项 | 默认值 | 描述 |
|---|---|---|
--host | 127.0.0.1 | 绑定地址 |
--port | 9712 | 端口号 |
--reload | false | 代码更改时自动重新加载(开发模式) |
rka mcp
启动Claude Desktop或Claude Code的MCP stdio服务器。MCP服务器是无状态的-它代理对位于的REST API的所有调用 RKA_API_URL.
rka mcp无选项--根据MCP协议通过stdin/stdout进行通信。
rka status
显示当前项目状态。
rka status显示:项目名称、当前阶段、活动任务、打开的检查点、实体计数。
rka backup
备份SQLite数据库。
rka backup --output ./backups/rka-backup.db| 选项 | 默认值 | 描述 |
|---|---|---|
--output | 带时间戳的文件 | 备份的输出路径 |
rka migrate
运行挂起的数据库迁移。
rka migraterka bootstrap scan
扫描工作区文件夹并对文件进行分类,以便纳入知识库。
rka bootstrap scan ~/research/project_files --no-llm| 选项 | 默认值 | 描述 |
|---|---|---|
--ignore | -- | 其他忽略模式(可重复) |
--no-llm | false | 禁用LLM增强分类 |
--json-output | false | 输出原始JSON清单 |
rka bootstrap ingest
扫描工作区文件夹并将其摄取到知识库中。
rka bootstrap ingest ~/research/project_files --phase phase_1 --tags bootstrap -y| 选项 | 默认值 | 描述 |
|---|---|---|
--phase | None | 所有参赛作品的研究阶段 |
--tags | -- | 要添加到所有条目的标签(可重复) |
--skip | -- | 要跳过的相对路径(可重复) |
--no-llm | false | 禁用LLM增强分类 |
--dry-run | false | 预览而不创建条目 |
--yes | false | 跳过确认提示 |
这些CLI引导命令针对当前数据库/默认项目。在多项目部署中,使用 POST /api/workspace/scan 和 POST /api/workspace/ingest 随着 X-RKA-Project 引导一个特定的项目。
______________________________________________________________________
配置
所有设置都使用环境变量 RKA_ 前缀。把它们放在一个 .env 项目目录中的文件。
核心设置
| 变量 | 默认值 | 描述 |
|---|---|---|
RKA_PROJECT_DIR | . | 项目根目录 |
RKA_DB_PATH | rka.db | SQLite数据库文件路径 |
RKA_HOST | 127.0.0.1 | API服务器绑定地址 |
RKA_PORT | 9712 | API服务器端口 |
RKA_API_URL | http://localhost:9712 | MCP代理的REST API URL |
嵌入设置
| 变量 | 默认值 | 描述 |
|---|---|---|
RKA_EMBEDDINGS_ENABLED | false | 启用嵌入生成 |
RKA_EMBEDDING_MODEL | nomic-ai/nomic-embed-text-v1.5 | FastEmbed模型名称 |
上下文引擎设置
v2.4上下文引擎没有可调的环境变量——排名是SQL时间重要性×中心性×新近性、确定性和簿记员。遗产 RKA_CONTEXT_HOT_DAYS, RKA_CONTEXT_WARM_DAYS,以及 RKA_CONTEXT_DEFAULT_MAX_TOKENS 在v2.4中删除了env变量(请参阅上面的“上下文排名”一节)。
______________________________________________________________________
MCP工具参考
所有工具都以前缀 rka_ 并可通过MCP stdio接口访问。MCP服务器在中定义 rka/mcp/server.py.
项目
| 工具 | 目的 |
|---|---|
rka_list_projects | 列出所有带有名称、描述和ID的项目 |
rka_set_project | 按名称或ID切换活动项目 |
rka_create_project | 创建一个新项目,并可选择切换到该项目 |
rka_get_status | 获取当前项目状态(阶段、摘要、阻断器、指标) |
rka_update_status | 更新项目状态 |
备注
| 工具 | 目的 |
|---|---|
rka_add_note | 添加带有可选标签的日记条目;类型是注释、日志或指令(传统类型会自动映射) |
rka_update_note | 更新现有日记账分录 |
rka_get_journal | 使用过滤器查询日记条目(类型、阶段、置信度、自) |
决策
| 工具 | 目的 |
|---|---|
rka_add_decision | 在研究决策树中添加决策节点 |
rka_update_decision | 更新决策(更改状态、记录所选选项、添加理由) |
rka_get_decision_tree | 获取完整的决策树结构 |
文学
| 工具 | 目的 |
|---|---|
rka_add_literature | 添加文献条目(论文、文章、书籍) |
rka_update_literature | 更新任何文献字段(标题、作者、年份、地点、doi、摘要、状态、方法注释、标签等) |
rka_get_literature | 使用过滤器查询文献 |
rka_enrich_doi | 通过CrossRef查找文献条目的DOI,丰富文献条目 |
任务
| 工具 | 目的 |
|---|---|
rka_create_mission | 为执行者创建一个包含目标、任务和验收标准的任务 |
rka_get_mission | 按ID或当前活动任务获取任务 |
rka_update_mission_status | 更新任务状态和任务进度 |
rka_submit_report | 提交已完成/部分任务的执行报告 |
rka_get_report | 检索任务报告 |
检查站(升级)
| 工具 | 目的 |
|---|---|
rka_submit_checkpoint | 提出决定/澄清/检查点 |
rka_get_checkpoints | 按状态列出检查点(打开、已解决、已关闭) |
rka_resolve_checkpoint | 用决定和理由解决检查点 |
研究地图(v2.0)
| 工具 | 目的 |
|---|---|
rka_get_research_map | 获取三级研究图:研究问题、证据集群和索赔 |
rka_get_claims | 使用过滤器(类型、置信度、聚类、entry_id)查询提取的索赔 |
rka_extract_claims | Brain从日记条目创建索赔(接受entry_id+索赔对象列表) |
rka_create_cluster | Brain创建了一个证据集群,可以选择在一次通话中分配索赔 |
rka_assign_claims_to_cluster | Brain通过member_of edges将现有声明连接到现有集群 |
rka_supersede_decision | 将一项决定标记为被新决定取代,并可选择对受影响的索赔进行重新蒸馏 |
rka_trace_provenance | 追踪实体的完整来源链——所有上游来源和下游衍生品 |
集群管理(v2.1)
| 工具 | 目的 |
|---|---|
rka_list_clusters | 列出证据集群,包括索赔数量、置信度和综合 |
rka_split_cluster | 通过重新分配索赔将集群拆分为多个新集群 |
rka_merge_clusters | 将多个集群合并为一个新集群 |
查看队列(v2.0)
| 工具 | 目的 |
|---|---|
rka_get_review_queue | 列出审查队列中的项目(低置信度、矛盾、需要综合) |
rka_review_cluster | 审查、批准或修订证据组的综合摘要 |
rka_review_claims | 审查一组索赔——接受、拒绝、合并或标记以进行进一步调查 |
rka_resolve_contradiction | 用理由和处理方式解决两个索赔之间的矛盾 |
知识新鲜度(v2.1)
| 工具 | 目的 |
|---|---|
rka_flag_stale | 将声明、集群或决策标记为过时(黄色/红色),并通过依赖关系图进行可选传播 |
rka_check_freshness | 扫描潜在的过时知识:过时的声明、被取代的来源、过时的集群和决策 |
rka_detect_contradictions | 使用向量相似性或FTS回退查找可能与给定声明相矛盾的声明 |
验证门(v2.1)
| 工具 | 目的 |
|---|---|
rka_create_gate | 创建验证门检查点(问题标记、计划验证、证据审查、综合验证) |
rka_evaluate_gate | 用“通过/杀死/保持/回收”判断来评估一扇门;无效假设自动级联陈旧性 |
研究员经验(v2.1)
| 工具 | 目的 |
|---|---|
rka_get_changelog | 跨实体时态视图——自给定日期以来,所有实体类型发生了什么变化 |
rka_assemble_evidence | 将研究问题下的证据汇编成结构化的标记(lit_review、progress_report、proposal_section) |
rka_process_paper | 文献阅读工作流程——在一次通话中创建阅读笔记+从注释中提取声明 |
rka_advance_rq | 推进研究问题的生命周期(开放→ 部分答复→ 回答→ 重新构建→ 关闭) |
rka_check_integrity | 验证知识库的完整性——孤立边、缺失引用、计数不匹配 |
搜索和上下文
| 工具 | 目的 |
|---|---|
rka_search | 跨所有实体类型的混合搜索 |
rka_get_context | 重要性排序上下文包(v2.4:无令牌预算;按重要性×中心性×新近性排序) |
rka_multi_hop_retrieval | 查询锚定相关性排名子图,遍历具有每个关系权重的类型化边 |
rka_ask | 提出一个基于知识库(RAG)的问题 |
rka_summarize | 按需主题总结 |
rka_eviction_sweep | 基于陈旧性提出档案条目 |
图
| 工具 | 目的 |
|---|---|
rka_get_graph | 获取完整的实体关系图 |
rka_get_ego_graph | 使自我图以特定实体为中心 |
rka_graph_stats | 获取图形统计信息(节点数、边数、密度) |
学术导入与丰富
| 工具 | 目的 |
|---|---|
rka_search_semantic_scholar | 通过查询在语义学者中搜索论文,可选择年份/字段过滤器并自动添加到库中 |
rka_search_arxiv | 通过查询在arXiv中搜索论文,具有排序选项和可选的自动添加到库中 |
rka_search_elicit | 搜索与研究问题相关的论文 |
rka_import_bibtex | 从BibTeX字符串导入文献条目(按DOI和标题自动检测重复项) |
工作区引导
| 工具 | 目的 |
|---|---|
rka_scan_workspace | 扫描文件夹并对文件进行分类以供摄入(正则表达式启发式算法+可选的LLM增强) |
rka_bootstrap_workspace | 一键扫描+摄取:将所有文件分类并导入知识库 |
rka_review_bootstrap | 回顾已完成的引导——大脑切换的条目计数、建议和叙述 |
会话
| 工具 | 目的 |
|---|---|
rka_session_digest | 生成当前会话活动摘要以进行切换 |
rka_reset_session | 重置每个会话状态(压缩计数器、摘要缓冲区) |
入职培训(v2.0)
| 工具 | 目的 |
|---|---|
rka_generate_claude_md | 为活动项目和角色(执行者、大脑)生成自定义的CLAUDE.md |
出口
| 工具 | 目的 |
|---|---|
rka_export | 将研究数据导出为markdown、JSON或Mermaid图(范围:状态、决策、文献、完整) |
rka_export_mermaid | 将决策树导出为具有基于状态样式的Mermaid流程图 |
______________________________________________________________________
REST API参考
基本URL: http://localhost:9712/api
交互式API文档可在 http://localhost:9712/docs (Swagger用户界面)。
大多数实体端点都是项目范围的。通过 X-RKA-Project: 以特定项目为目标。如果省略,服务器将回退到 DEFAULT_PROJECT_ID,从 RKA_PROJECT 服务器启动时的环境变量(v2.3.2+) proj_default 如果未设置。通过导出来固定您的主项目 RKA_PROJECT= 在API过程的环境中(或在您的MCP中 env block——请参阅上面的“固定默认项目”)。
请求验证(v2.3.1+)
八个核心实体更新模型(DecisionUpdate, MissionUpdate, JournalEntryUpdate, LiteratureUpdate, ClaimUpdate, EvidenceClusterUpdate, TopicUpdate, ProjectStateUpdate)使用Pydantic extra="forbid".POST/PUT请求携带未在相应模型中声明的字段,现在返回 HTTP 422 而不是默默地剥去它们。在-2.3.1之前,该条是一个记录在案的bug(承诺 02d7348 引入约束)。任何在更新端点上将意外的422一分为二的人都应该在该提交处着陆。
MissionUpdate 之前比读取投影窄(3个声明字段)。现在它也接受 phase, context, acceptance_criteria, scope_boundaries, checkpoint_triggers, depends_on, parent_mission_id, motivated_by_decision,以及 tags.通过REST PUT写入这些字段现在将保持不变(并且 motivated_by_decision 写作也实现了相应的 motivated 实体链接)。 DecisionUpdate 类似地添加 assumptions.
注释(日记条目)
| 方法 | 端点 | 描述 |
|---|---|---|
POST | /notes | 创建日记条目 |
GET | /notes | 列表条目(过滤器:类型、阶段、置信度、重要性、来源、自、隐藏_覆盖) |
GET | /notes/{id} | 获取单个条目 |
PUT | /notes/{id} | 更新条目 |
决策
| 方法 | 端点 | 描述 |
|---|---|---|
POST | /decisions | 创建决策节点 |
GET | /decisions | 列出决策(过滤器:阶段、状态、parent_id) |
GET | /decisions/tree | 获取完整的树结构(用于可视化) |
GET | /decisions/{id} | 通过选项做出单一决定 |
PUT | /decisions/{id} | 更新决定 |
POST | /decisions/{id}/supersede | 用替代品取代决定,可选择触发再蒸馏 |
文学
| 方法 | 端点 | 描述 |
|---|---|---|
POST | /literature | 添加文献条目 |
GET | /literature | 列表条目(筛选器:状态、年份范围、地点、查询) |
GET | /literature/{id} | 获取单个条目 |
PUT | /literature/{id} | 更新条目 |
任务
| 方法 | 端点 | 描述 |
|---|---|---|
POST | /missions | 创建任务 |
GET | /missions | 列出任务(筛选器:阶段、状态) |
GET | /missions/{id} | 获得一个任务 |
PUT | /missions/{id} | 更新任务 |
POST | /missions/{id}/report | 提交执行报告 |
GET | /missions/{id}/report | 获取任务报告 |
检查点
| 方法 | 端点 | 描述 |
|---|---|---|
POST | /checkpoints | 创建检查点 |
GET | /checkpoints | 列出检查点(筛选器:状态、任务id) |
GET | /checkpoints/{id} | 获取单个检查点 |
PUT | /checkpoints/{id}/resolve | 解决检查点 |
索赔(v2.0)
| 方法 | 端点 | 描述 |
|---|---|---|
POST | /claims | 手动创建索赔或触发从日记账分录中提取 |
GET | /claims | 列出声明(过滤器:类型、置信度、cluster_id、entry_id) |
GET | /claims/{id} | 获取带有来源链接的单一索赔 |
POST | /claims/edges | 创建索赔边缘(member_of、支持、反驳、限定、取代) |
证据集群(v2.0)
| 方法 | 端点 | 描述 |
|---|---|---|
POST | /clusters | 创建证据集群 |
GET | /clusters | 列出集群(过滤器:topic_id、has_synthesis、since) |
GET | /clusters/{id} | 获取包含成员声明的单个集群 |
PUT | /clusters/{id} | 更新集群(修订综合、更新主题) |
主题(v2.0)
| 方法 | 端点 | 描述 |
|---|---|---|
POST | /topics | 创建主题 |
GET | /topics | 列出主题(过滤器:parent_id,深度) |
GET | /topics/{id} | 获取单个主题 |
PUT | /topics/{id} | 更新主题 |
GET | /topics/tree | 获取完整的分层主题树 |
研究地图(v2.0)
| 方法 | 端点 | 描述 |
|---|---|---|
GET | /research-map | 获取三级研究图:RQ、集群和代表性声明 |
GET | /research-map/rq/{rq_id}/clusters | 获取一个研究问题下的所有集群 |
GET | /research-map/cluster/{cluster_id}/claims | 获取集群内的所有索赔 |
查看队列(v2.0)
| 方法 | 端点 | 描述 |
|---|---|---|
GET | /review-queue | 列出审核队列项目(筛选器:状态、原因、自) |
POST | /review-queue | 手动将项目添加到审阅队列 |
PUT | /review-queue/{id}/resolve | 使用处置来解决审核队列项 |
研究员工具(v2.1)
| 方法 | 端点 | 描述 |
|---|---|---|
GET | /changelog | 跨实体时态视图(查询:since, limit) |
GET | /assemble-evidence | 收集证据作为标记(查询:research_question_id, format) |
POST | /clusters/split | 将集群拆分为多个新集群 |
POST | /clusters/merge | 将多个集群合并为一个 |
POST | /literature/process-paper | 将纸质注释处理为索赔 |
POST | /research-questions/advance | 推进RQ生命周期状态 |
知识新鲜度(v2.1)
| 方法 | 端点 | 描述 |
|---|---|---|
POST | /freshness/flag-stale | 使用可选传播将实体标记为过时 |
GET | /freshness/check | 扫描可能过时的项目 |
POST | /freshness/detect-contradictions | 通过向量相似度或FTS查找矛盾候选 |
GET | /integrity | 运行知识库完整性检查 |
搜索和上下文
| 方法 | 端点 | 描述 |
|---|---|---|
POST | /search | 混合搜索(FTS5+语义) |
POST | /context | 生成上下文包 |
POST | /summarize | 按需汇总 |
POST | /eviction-sweep | 提出归档条目 |
项目和知识包
| 方法 | 端点 | 描述 |
|---|---|---|
GET | /projects | 列出项目元数据 |
POST | /projects | 创建项目 |
DELETE | /projects/{id}?confirm=true | 删除项目及其所有数据(需要confirm=true) |
GET | /projects/{id}/entity-counts | 获取项目的实体计数(删除前检查) |
GET | /status | 获取项目状态 |
PUT | /status | 更新项目状态 |
GET | /projects/export | 将活动项目导出为知识包压缩包 |
POST | /projects/import | 将知识包压缩包导入新项目 |
GET | /maintenance | 获取待处理的维护清单(来源缺口、缺少链接) |
GET | /health | 健康检查(版本、sqlite-vec状态) |
嵌入式配置(v2.4.0)
| 方法 | 端点 | 描述 |
|---|---|---|
GET | /config/embedding | 当前嵌入后端配置(api_key已编辑) |
PUT | /config/embedding?actor=... | 如果后端/dim更改(202)或没有操作(200),则保存配置+测试+启动回填 |
POST | /config/embedding/test | 探测后端可达性+弱检测(无持久性) |
GET | /config/embedding/backfill/status[?job_id=…] | 轮询正在运行的回填进度 |
完整参考: docs/embedding_backends.md.
LLM路由(保留;v2.4.0未配置)
这 /api/llm/* 路线和 rka_ask / rka_generate_summary MCP工具仍保留在代码库中,但不再出现在 web UI。v2.4.0根据PI指令删除了LLM配置旋钮 jrn_01KRNZBS50K250HHHHEC58E4GC;未来的版本将重新连接LLM 通过编排器的Claude Code SDK路径实现功能。
| 方法 | 端点 | 描述 |
|---|---|---|
GET | /llm/status | LLM配置、可用性、模型、上下文窗口(优雅无操作) |
PUT | /llm/config | 更新LLM设置(不再由UI驱动) |
POST | /llm/check | 重新检查LLM连接 |
GET | /llm/models | 列出已配置后端上可用的型号 |
笔记本(问答+总结)
| 方法 | 端点 | 描述 |
|---|---|---|
POST | /notebook/qa | 提出一个基于知识库的问题 |
GET | /notebook/qa/sessions | 列出问答环节 |
POST | /notebook/summary | 生成摘要(范围:项目、阶段、任务、标签) |
GET | /notebook/summaries | 列表生成的摘要 |
知识图谱
| 方法 | 端点 | 描述 |
|---|---|---|
GET | /graph | 获取完整的实体关系图 |
GET | /graph/ego/{entity_id} | 让自我图以一个实体为中心 |
GET | /graph/stats | 图形统计 |
文物和数字
| 方法 | 端点 | 描述 |
|---|---|---|
POST | /artifacts | 为活动项目注册工件文件 |
GET | /artifacts | 列出工件 |
GET | /artifacts/{artifact_id} | 得到一件艺术品 |
POST | /artifacts/{artifact_id}/extract | 从工件中提取图形和表格 |
GET | /artifacts/{artifact_id}/figures | 列出工件的图形 |
GET | /figures/{figure_id} | 获取单个提取的图形 |
事件和标签
| 方法 | 端点 | 描述 |
|---|---|---|
GET | /events | 列出审核事件(过滤器:phase、event_type、entity_type、actor、since) |
GET | /tags | 列出带有计数的标签(过滤器:entity_type) |
审核日志
| 方法 | 端点 | 描述 |
|---|---|---|
GET | /audit | 列出审核条目(过滤器:动作、实体类型、实体id、参与者、自、限制、偏移) |
GET | /audit/counts | 按操作类型分组的审核条目计数 |
工作区引导
| 方法 | 端点 | 描述 |
|---|---|---|
POST | /workspace/scan | 扫描工作区文件夹并对文件进行分类以供摄入 |
POST | /workspace/ingest | 将扫描清单中的文件引入知识库 |
GET | /workspace/review/{scan_id} | 查看已完成的引导(条目计数、建议) |
学术导入
| 方法 | 端点 | 描述 |
|---|---|---|
POST | /import/bibtex | 从BibTeX内容导入文献条目 |
POST | /import/bibtex-file | 从上传的.bib文件导入文献条目 |
POST | /literature/{id}/enrich-doi | 通过CrossRef查找文献条目的DOI,丰富文献条目 |
GET | /decisions/mermaid | 将决策树导出为Mermaid流程图 |
POST | /import/batch | 批量导入不同类型的多个实体 |
POST | /ingest/document | 通过拆分为日记账条目来获取降价文档 |
入职培训(v2.0)
| 方法 | 端点 | 描述 |
|---|---|---|
GET | /generate-claude-md | 为活动项目和角色生成自定义的CLAUDE.md(?role=executor 或 ?role=brain) |
______________________________________________________________________
Web仪表板
web仪表板提供了一个可视化界面,用于在不使用MCP工具或原始API调用的情况下检查项目状态。它具有项目意识,包括项目选择和知识包导出/导入控制。
构建仪表板
cd web
npm install
npm run build构建输出将转到 web/dist/.何时 rka serve 启动时,它会自动检测并提供此目录 http://localhost:9712.Docker在以下过程中自动构建仪表板 docker build.
发展模式
# Terminal 1: API server + background worker
rka serve
# Terminal 2: Vite dev server with HMR
cd web
npm run devVite-dev服务器运行在 http://localhost:5173 并将API调用代理到 :9712.
页面
| 页面 | 路径 | 功能 |
|---|---|---|
| 仪表板 | / | 项目概述、正在执行的任务、开放检查点、最近的条目、项目选择、知识包导出/导入 |
| 期刊 | /journal | 按日期分组的时间线视图、带展开/折叠的标记渲染内容、类型过滤器(注释/日志/指令)、置信度过滤器、创建/编辑条目 |
| 决策 | /decisions | 交互式决策树(React Flow+elkjs),点击节点查看细节面板,替换徽章 |
| 文学 | /literature | 带有阅读管道状态选项卡的表视图,添加/更新论文 |
| 任务 | /missions | 活动和历史任务,具有可扩展的详细视图、带进度条的任务清单、检查点徽章、上下文显示、报告查看器 |
| 笔记本 | /notebook | 问答聊天(根据你的知识库提问)+总结生成 |
| 时间线 | /timeline | 按日期分组的事件流、实体/参与者过滤器、因果链可视化 |
| 研究地图 | /research-map | 三级深入:研究问题、证据集群和索赔。可点击的摘要统计数据按差距/矛盾过滤。以markdown形式呈现的聚类合成 |
| 知识图谱 | /graph | 实体关系图(React Flow),按类型着色的节点,关系边,来源链遍历 |
| 审核日志 | /audit | 带有动作/实体/参与者过滤器的系统审核跟踪表,动作计数摘要 |
| 上下文检查器 | /context | 生成重要性排序的上下文包并复制JSON。(v2.4:热/暖/冷徽章被移除,取而代之的是一个排名列表。) |
| 设置 | /settings | LLM配置+状态、API运行状况、DB统计信息、项目配置、到的快速链接 /docs 和 /api/health |
技术栈
- React 19+TypeScript 5.9与Vite 7
- 顺风CSS 4+shadcn/ui(v5)
- TanStack查询5服务器状态
- @xyflow/react用于决策树、知识图和研究图可视化
______________________________________________________________________
数据模型
SQLite架构
所有数据都存在于一个单一的 rka.db 文件。该架构包括:
- 核心表:
projects,project_states,decisions,literature,journal_entries,missions,checkpoints,events,artifacts - v2.0表格:
claims,claim_edges,evidence_clusters,topics,review_queue,entity_links,jobs - 连接表:
tags--用于跨实体标记查询的实体类型/实体id/标记三元组 - JSON列:
options(决定),authors(文学),tasks(任务),key_findings(文学) - FTS5虚拟表:内容字段上的全文搜索索引
- sqlite-vec虚拟表:用于语义搜索的向量嵌入(可选)
ID格式
所有ID都遵循以下模式: {type_prefix}_{ulid}
| 实体 | 前缀 | 示例 |
|---|---|---|
| 决定 | dec_ | dec_01HXYZ9A2B3C4D5E6F7G |
| 文学 | lit_ | lit_01HXYZ... |
| 期刊 | jrn_ | jrn_01HXYZ... |
| 使命 | mis_ | mis_01HXYZ... |
| 检查点 | chk_ | chk_01HXYZ... |
| 活动 | evt_ | evt_01HXYZ... |
| 扫描 | scn_ | scn_01HXYZ... |
| 索赔 | clm_ | clm_01HXYZ... |
| 证据集群 | ecl_ | ecl_01HXYZ... |
| 主题 | top_ | top_01HXYZ... |
| 查看队列项目 | rev_ | rev_01HXYZ... |
| 交叉引用 | link_ | link_01HXYZ... |
事件溯源
每次写入操作都会向发出一个事件 events 桌子上有:
event_type--创建、更新、解决、提炼、取代等。entity_type+entity_id--发生了什么变化actor--谁做出了改变(大脑、执行者、pi、llm、webui、系统)caused_by--触发事件的因果链metadata--带有更改详细信息的JSON blob
有效的参与者值: brain | executor | pi | llm | web_ui | system
这将创建完整的审计跟踪,并在时间线页面中实现因果链可视化。
______________________________________________________________________
搜索和上下文引擎
混合搜索
RKA使用交互秩融合(RRF)结合了两种搜索策略:
- FTS5(关键字搜索) --SQLite内置的全文搜索功能。重量:0.3
- sqlite-vec(语义搜索) --使用嵌入的向量相似性。重量:0.7
混合方法可以捕获精确匹配和语义相关的内容。如果sqlite-vec不可用,系统将仅回退到FTS5。
嵌入
- 模型:
nomic-ai/nomic-embed-text-v1.5(768尺寸) - 运行时:FastEmbed(ONNX,完全本地,无API调用)
- 存储:sqlite-vec虚拟表
当创建或更新条目时,嵌入由后台工作器异步生成。
上下文引擎(v2.4)
上下文引擎为给定主题构建一个重要性排名包。管道为:
- 搜索 --混合FTS5+矢量搜索为候选池播种。
- 中心性注释 --每位候选人获得
entity_links学位计数。 - SQL时间排名 —
journal.importance(案例4..0)×中心性×created_atDESC,PI来源的入口有+0.5升程。 - 可选叙述 --通行证
depth="detailed"要求LLM(如果已配置)在排名列表上综合连贯的叙述。
没有代币预算截断;返回完整的排名列表。对于多跳问题,如果答案取决于连接的实体——从种子开始的多跳,请使用 rka_multi_hop_retrieval 相反。
请求上下文包:
curl -X POST http://localhost:9712/api/context \
-H 'Content-Type: application/json' \
-d '{"topic": "evaluation methodology"}'______________________________________________________________________
知识丰富
脑驱动强化(v2.0+)
在正常会话期间,所有知识丰富都由大脑(克劳德桌面)处理。没有本地LLM,没有后台AI工作者,也没有要配置的LLM API密钥。后台工作者仅处理用于语义搜索的嵌入作业。
大脑在维护过程中会做什么:
- 从日记账分录中提取索赔
- 将相关主张分为证据组
- 为证据集群撰写综合叙述
- 解决索赔之间的矛盾
- 为研究问题分配证据集群
- 修复缺失的来源链接
维护清单: rka_get_pending_maintenance() 使用纯SQL查询检测所有来源缺口。启动时,大脑每次会话最多处理10个项目。
审核队列
审查队列收集标记为Brain关注的项目:
- 需要验证的低置信度声明
- 索赔之间的矛盾
- 需要综合的证据集
大脑通过以下方式解析项目 rka_review_cluster, rka_review_claims,以及 rka_resolve_contradiction.
______________________________________________________________________
发展
运行测试
# Docker (recommended)
docker compose exec rka pytest
# Verbose output
docker compose exec rka pytest -v测试套件涵盖数据库架构、CRUD操作、FTS5搜索、上下文引擎、LLM丰富、事件发射、多项目范围界定、知识包导入/导出、API端点、工作区引导、图形服务、回填服务、摘要/QA服务、蒸馏管道、声明、集群、主题、审查队列、研究地图和入职。
项目结构
rka/
+-- skills/ # MCP skill prompts (packaged with binary)
| +-- SKILL.md # Router: detects role, directs to sub-skill
| +-- brain/SKILL.md # Brain workflow guide (~450 lines)
| +-- executor/SKILL.md # Executor workflow guide (~150 lines)
| +-- pi/SKILL.md # PI quick reference
+-- rka/ # Python package
| +-- cli.py # Click CLI (init, serve, mcp, status, backup, migrate, bootstrap)
| +-- config.py # Pydantic settings (RKAConfig)
| +-- models/ # Pydantic models for all entities
| +-- services/ # Business logic (shared by MCP + REST)
| | +-- base.py # BaseService with emit_event()
| | +-- project.py # Project metadata + per-project status
| | +-- notes.py # Journal entry CRUD + enrichment
| | +-- decisions.py # Decision tree CRUD + superseding
| | +-- literature.py # Literature CRUD
| | +-- missions.py # Mission lifecycle
| | +-- checkpoints.py # Checkpoint CRUD + resolution
| | +-- claims.py # Claim extraction, CRUD, provenance
| | +-- clusters.py # Evidence cluster CRUD + synthesis
| | +-- topics.py # Hierarchical topic taxonomy
| | +-- research_map.py # Three-level research map assembly
| | +-- review_queue.py # Review queue CRUD + resolution
| | +-- onboarding.py # CLAUDE.md generation
| | +-- worker.py # Background worker + job queue
| | +-- search.py # Hybrid FTS5 + vector search
| | +-- context.py # Context engine (importance-ranked retrieval; v2.4)
| | +-- graph.py # Entity relationship graph
| | +-- audit.py # Audit log queries and counts
| | +-- academic.py # BibTeX import, DOI enrichment, Mermaid export
| | +-- artifacts.py # Artifact registration + figure extraction
| | +-- knowledge_pack.py # Project export/import packs (categorized table registry)
| | +-- researcher_tools.py # Changelog, evidence assembly, cluster split/merge, paper processing, RQ lifecycle
| | +-- workspace.py # Workspace bootstrap (scan, classify, ingest)
| | +-- jobs.py # Job queue primitives
| | +-- summary.py # Q&A + summary generation
| +-- infra/ # Infrastructure
| | +-- database.py # SQLite + FTS5 + sqlite-vec
| | +-- llm.py # LiteLLM + Instructor wrapper
| | +-- embeddings.py # FastEmbed service
| +-- mcp/ # MCP server
| | +-- server.py # FastMCP tool + prompt definitions (all rka_* tools)
| +-- api/ # FastAPI
| +-- app.py # Application factory + static serving
| +-- deps.py # Dependency injection
| +-- routes/ # Route modules (one per entity type)
| +-- notes.py
| +-- decisions.py
| +-- literature.py
| +-- missions.py
| +-- checkpoints.py
| +-- claims.py
| +-- clusters.py
| +-- topics.py
| +-- research_map.py
| +-- review_queue.py
| +-- onboarding.py
| +-- search.py
| +-- context.py
| +-- graph.py
| +-- audit.py
| +-- academic.py
| +-- artifacts.py
| +-- workspace.py
| +-- project.py
| +-- llm.py
| +-- summary.py
| +-- researcher_tools.py # Changelog, evidence assembly, split/merge, process paper, advance RQ, integrity
| +-- events.py
| +-- tags.py
+-- web/ # React dashboard (Vite + TypeScript)
| +-- src/
| | +-- api/ # Fetch client + TypeScript types
| | +-- hooks/ # TanStack Query hooks
| | +-- components/ # UI components (shadcn + layout + shared)
| | +-- pages/ # Page components (12 pages)
| | +-- lib/ # Utilities
| +-- dist/ # Production build (served by FastAPI)
+-- tests/ # Pytest test suite
+-- pyproject.toml # Python project config
+-- docker-compose.yml # Docker Compose configuration
+-- Dockerfile # Docker image (builds web UI + installs Python package)
+-- .env # Project configuration添加新实体类型
- 在中创建Pydantic模型
rka/models/ - 添加服务类扩展
BaseService在rka/services/ - 在中添加路由模块
rka/api/routes/ - 在中注册路线
rka/api/app.py - 在中添加MCP工具功能
rka/mcp/server.py - 在中添加架构DDL
rka/infra/database.py - 在中添加TypeScript类型
web/src/api/types.ts - 在中添加TanStack查询挂钩
web/src/hooks/ - 在中添加页面组件
web/src/pages/如有需要
______________________________________________________________________
构建阶段
| 阶段 | 焦点 | 状态 |
|---|---|---|
| 第一阶段 | 核心MCP+SQLite--模式、CRUD、MCP工具、REST端点、CLI | 完成 |
| 第2阶段 | LLM+语义搜索——LiteLLM、FastEmbed、FTS5、上下文引擎、自动丰富 | 完成 |
| 第三期 | Web Dashboard——React+Vite,核心页面,决策树可视化,静态服务 | 完成 |
| 阶段4 | 探索可视化——时间线页面(事件流+因果链)、知识图谱页面(与React Flow的实体关系) | 完成 |
| 阶段5 | 学术API+审核-BibTeX导入,DOI丰富(CrossRef),语义学者+arXiv搜索,Mermaid决策树导出,批量导入,文档摄取,审核日志查看器+API | 完成 |
| 第6阶段 | 工作区引导——使用正则表达式+LLM分类进行文件夹扫描、批量摄入管道、重复检测、大脑切换审查 | 完成 |
| 第7阶段 | 笔记本+LLM配置——问答聊天、摘要生成、运行时LLM配置、上下文窗口自动检测、知识图、Docker部署 | 完成 |
| 第8阶段 | 多项目+知识包——项目隔离、仪表板项目管理、可移植项目导出/导入、工件安全导入重新映射、MCP多项目工具 | 完成 |
| 第9阶段 | v2.0——渐进式蒸馏管道(条目->索赔->集群->研究图),三级研究图页面,通过审查队列进行大脑增强富集,用再蒸馏代替决策,来源链,类型化交叉引用(link\_),分层主题分类,后台工程,入职工具(rka_generate_claude_md),简化日记条目类型(注释/日志/指令) | 完成 |
| 第10阶段 | v2.1--技能插件(MCP提示的特定于角色的SKILL.md)、带有集群详细信息面板的交互式研究地图、研究人员体验工具(变更日志、证据组装、集群拆分/合并、文献处理、RQ生命周期)、深度三层防御(参与者对齐协议、具有过时传播的知识新鲜度、验证门)、具有表注册表和完整性检查的知识包重新设计,rka_check_integrity 工具 | 完成 |
| 第11阶段 | v2.2——基于人机交互文献的多选决策用户体验(阿谀奉承、诱饵效应、选择超载、认知强迫、校准信任、RPDM):decision_options 表(迁移017)、帕累托优势计算, rka_present_decision 剥离然后重新注入协议, rka_record_pi_selection, rka_record_outcome 写信给 calibration_outcomes (迁移018),Brier评分/ECE/覆盖率校准指标,双时态 valid_until,流式HTTP MCP传输,代理技能格式迁移 | 完成 |
| 第12阶段 | v2.3--钩子系统v1(迁移019):5种钩子事件类型,3个内置处理程序,8个MCP工具(rka_add_hook, rka_list_hooks, rka_enable_hook, rka_disable_hook, rka_delete_hook, rka_get_hook_executions, rka_get_brain_notifications, rka_clear_brain_notifications)用于事件驱动的大脑通知和漂移检测 | 完成 |
______________________________________________________________________
许可证
私人研究工具。目前尚未在开源许可证下发布。
