一键导入
core-research-tool
Research the Community Core codebase to understand implementations, architecture, and feature behavior
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Research the Community Core codebase to understand implementations, architecture, and feature behavior
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | core-research-tool |
| description | Research the Community Core codebase to understand implementations, architecture, and feature behavior |
Perform deep research on the Core codebase to develop SME-level understanding.
Ask the user what they want to research. Classify the goal and plan your approach:
| Research type | Focus areas | Depth target |
|---|---|---|
| Implementation lookup | Steps 2-4, then 6 | Find the code, understand its contract and behavior |
| Architecture question | Steps 2-3, then 5 | Map module boundaries, dependencies, and extension points |
| Feature trace | Steps 2-4 in sequence | Follow data/control flow end-to-end, understand each layer |
| Historical context | Steps 2-3, then 7 | Understand why code exists and how it evolved |
Before diving into code, understand WHAT you're researching:
Search for documentation. Look for README files, package-info.java, or Javadoc in the relevant module.
Identify the core abstractions. What are the key interfaces and classes? What problem do they solve?
Understand the domain vocabulary. Key terms in Core:
engine/api/)Read the interfaces before implementations. Interfaces define contracts; implementations are details.
Start broad, then narrow. Iterate until you find the right code.
Semantic search first:
code_search: "Find where table update notifications are propagated"
Exact symbol search when you know names:
grep_search: Query="TableUpdateListener" SearchPath="{repo_root}"
grep_search: Query="implements UpdateGraph" SearchPath="{repo_root}"
If search returns nothing useful:
If search returns too much:
For each significant class/method, understand:
*Test.java files.*Configuration.java or properties.Key file types to examine:
*Configuration.java — configuration schemas and defaults*Service.java, *Handler.java — core business logic*Test.java — expected behavior and edge cases*.gradle — module dependenciesWhen to go deeper:
When to stop:
For architecture questions, build a mental model:
*.gradle for dependencies.Common architectural patterns:
Configuration flow:
props/*.prop files or environment → Configuration/ utilities → Runtime component
gRPC service flow:
proto/proto-backplane-grpc/*.proto → generated Java → server/src/.../server/**/*ServiceGrpcImpl.java → java-client/ or py/client/
Table update flow:
Source data change → UpdateGraph cycle → TableUpdateListener.onUpdate → Downstream table update → Barrage → UI refresh
For feature traces, follow data/control through all layers:
server/), UI action (web/), or Python/Groovy API (py/)*ServiceGrpcImpl.java in server/src/main/java/io/deephaven/server/*/engine/table/ or extensions/ColumnSource, RowSet in engine/api/Example trace (client executes a table operation via gRPC):
User calls table.where("Price > 100") in py/client/pydeephaven
→ Client sends gRPC request to server
→ server/src/.../table/ops/TableServiceGrpcImpl receives request
→ engine/table/impl/QueryTable.where() creates WhereListener
→ WhereFilter evaluates condition against ColumnSource data
→ Result table registered with UpdateGraph for live updates
→ Barrage streams result back to client
Iterate until you can explain:
For historical context or debugging:
// turbo
git log --oneline -n 20 -- {path}
// turbo
git blame {file} | head -50
// turbo
git log -S "{symbol}" --oneline -n 10
Useful patterns:
git log --grep="fix" -- {file} — find bug fixesgit log --grep="{feature}" --oneline — feature historygit show {commit} — understand a specific changeWhat to look for:
Before reporting, verify your mental model:
Report comprehensively:
@path:line format. Prioritize by importance.Quality bar: Could someone unfamiliar with the codebase read your synthesis and understand the feature/architecture well enough to modify it?
| Research goal | Start here |
|---|---|
| Table operations | engine/table/src/main/java/io/deephaven/engine/table/impl/ |
| Table API/interfaces | engine/api/src/main/java/io/deephaven/engine/table/ |
| Live updates | engine/updategraph/src/main/java/io/deephaven/engine/updategraph/ |
| Row/column data | engine/chunk/, engine/rowset/, engine/vector/ |
| Server/gRPC | server/src/main/java/io/deephaven/server/ |
| gRPC definitions | proto/proto-backplane-grpc/ |
| Web UI | web/client-ui/, web/client-api/ |
| Python integration | py/server/, Integrations/ |
| Data connectors | extensions/ (parquet, kafka, iceberg, arrow, etc.) |
| Authentication | authentication/, authorization/ |
| Configuration | Configuration/, props/ |
{module-name}/build.gradle (e.g., server/build.gradle){parent}/{sub-module}/build.gradle
engine/ — core table engine modulesextensions/ — data format and connector modulesserver/ — gRPC server modulesweb/ — web client modulespy/ — Python integration modulesengine/api/src/main/java/io/deephaven/engine/table/Table, TableDefinition, ColumnSource, RowSet, TableUpdateListener, TableUpdateengine/table/src/main/java/io/deephaven/engine/table/impl/QueryTable, BaseTable, WhereListener, SelectColumn, ColumnSource implementationsselect/, sources/, join/, by/, sort/engine/updategraph/src/main/java/io/deephaven/engine/updategraph/UpdateGraph, NotificationQueue, LogicalClock, UpdateSourceRegistrarengine/chunk/src/main/java/io/deephaven/chunk/Chunk, WritableChunk, ChunkType — efficient bulk data transferengine/rowset/src/main/java/io/deephaven/engine/rowset/RowSet, WritableRowSet, RowSetFactory, RowSequenceserver/src/main/java/io/deephaven/server/*ServiceGrpcImpl (TableServiceGrpcImpl, SessionServiceGrpcImpl, etc.)session/, table/, arrow/, barrage/proto/proto-backplane-grpc/src/main/proto/deephaven_core/proto/.proto files define all client-server communicationextensions/parquet/table/src/main/java/io/deephaven/parquet/table/ParquetTools, ParquetTableWriterextensions/kafka/src/main/java/io/deephaven/kafka/KafkaTools, KafkaStreamPublisher (in ingest/ subpackage)extensions/iceberg/src/main/java/io/deephaven/iceberg/extensions/barrage/src/main/java/io/deephaven/extensions/barrage/BarrageMessageWriter, BarrageOptions, BarrageSubscriptionOptionsextensions/arrow/src/main/java/io/deephaven/extensions/arrow/web/client-api/src/main/java/io/deephaven/web/client/api/JsTable, JsSession, WorkerConnectiondeephaven/web-client-ui repositoryjava-client/session/src/main/java/io/deephaven/client/Session, TableHandle, FlightSessionpy/client/pydeephaven/py/server/deephaven/table.py, dtypes.py, time.py, plot/Configuration/src/main/java/io/deephaven/configuration/authentication/src/main/java/io/deephaven/auth/authentication/example-providers/authorization/src/main/java/io/deephaven/auth/Plot/src/main/java/io/deephaven/plot/Figure, Axes, SeriesIntegrations/src/main/java/io/deephaven/integrations/python/, groovy/ModelFarm/src/main/java/io/deephaven/modelfarm/Configuration flow:
props/*.prop or environment → Configuration/ → Runtime component
gRPC service flow:
proto/proto-backplane-grpc/*.proto → generated Java → server/src/.../server/**/*ServiceGrpcImpl.java → java-client/ or py/client/
Table update flow:
Source change → UpdateGraph.requestRefresh → Notification cycle → TableUpdateListener.onUpdate → Downstream tables → Barrage → Client