NTS_MCP_FS is an enterprise-grade File System server implementation for the Model Context Protocol (MCP).
It transforms standard file operations into a Transactional OS for AI Agents. Unlike basic tools that allow "blind" overwrites, NTS enforces Optimistic Locking, provides a Persistent HUD, and enables Atomic Scripting via programmable batches.
| Feature | Standard MCP Server | NTS_MCP_FS |
|---|---|---|
| Integrity | Blind Overwrites (Last Write Wins) | Line Access Tokens (LATs) - Optimistic Locking |
| Operations | One file at a time | Programmable Atomic Batches (Multi-file Scripting) |
| Context | Stateless (Agent forgets plan) | AI-HUD & Built-in TODOs (Persistent Context) |
| Safety | Basic Ctrl+Z (if any) | Deep Undo & Checkpoints (Tracks file moves) |
| Code Intelligence | None | LSP Navigation & Semantic Refactoring (12 languages) |
| Verification | Manual testing | Syntax Check (Tree-sitter), Compilation & Test validation |
| Persistence | Stateless (in-memory only) | H2 Database (Transaction journal survives restarts) |
| Performance | Blocking I/O | Java Virtual Threads & Memory-Mapped I/O |
"The goal is not to make the agent's job easier β it's to make the agent's work reliable."
Most MCP servers optimize for convenience: fewer calls, shorter responses, maximum automation. NTS takes the opposite approach. It introduces intentional friction that forces AI agents to work with surgical precision.
When an AI agent works on a complex task (1-2M+ tokens), context summarization inevitably loses details. The agent "forgets" what it read 50 messages ago. Then:
- π΄ Agent edits line 347 based on stale memory
- π΄ Edit breaks something β agent panics
- π΄ Agent enters an uncontrolled fix-loop
- π΄ Hours of work destroyed in seconds
This isn't a bug β it's an emergent property of how LLMs handle long contexts. NTS is designed to prevent this failure mode.
Line Access Tokens (LATs) are not just a security feature β they're a cognitive constraint.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Without LAT: β
β "I'll just read the whole file... it's only 400 lines" β
β β Context bloated with "just in case" data β
β β Summarization drops critical details β
β β Agent edits wrong line from fuzzy memory β
β β Catastrophic error β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β With LAT: β
β "I need to edit line 47. Let me read lines 40-55." β
β β Agent explicitly decides what it needs β
β β Token proves agent saw current state β
β β Context stays clean and precise β
β β Edits are surgical and verified β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The agent cannot read an entire file in one lazy command. It must specify ranges. This forces the agent to think before acting β exactly the discipline that prevents drift.
Every nts_edit_file response includes a full unified diff. This isn't optional verbosity β it's mandatory validation.
--- User.java (original)
+++ User.java (modified)
@@ -15,7 +15,7 @@
}
- public String getName() {
+ public String getFullName() {
return name;
}The agent sees the result immediately, in the same response. No separate "verify" step needed. No chance to "forget" to check. The diff is the proof.
| Scenario | Standard Tools | NTS |
|---|---|---|
| 2-hour refactoring session | 40% chance of catastrophic error | Near-zero (checkpoint + undo) |
| Multi-file rename | Silent corruption possible | Atomic batch or full rollback |
| External file change mid-work | Agent overwrites user's edits | Token expires, agent warned |
| Agent "panics" after error | Uncontrolled fix spiral | Undo β stable state β retry |
Spending 10% more tokens on discipline saves 100% of wasted work.
A 2-hour agent session costs ~$5-15 in API calls. A catastrophic error that destroys that work costs the same amount again to redo β plus human time to diagnose what went wrong.
NTS trades micro-efficiency for macro-reliability. The agent works slightly harder per-operation, but the entire session succeeds instead of collapsing at hour 1:45.
The server injects a status header into every tool response. The Agent never loses context.
[HUD tid:a1b2] Plan: Refactor Auth [β2 β1] β #3: Update Login | Task: 5 edits | Unlocked: 3 files
- Task Context: Reminds the agent of the active Task ID.
- Progress Tracking: Shows current TODO status (Done/Pending) and the next active task.
- Safety Stats: Shows how many files are currently unlocked for editing.
The nts_batch_tools is not just a list of commands; it's a scripting engine for the file system.
- Atomic Transactions: 10 operations in one request. If the 10th fails, the previous 9 are rolled back instantly. The project is never left in a broken state.
- Variable Interpolation: Pass data between steps. Create a file in Step 1, then reference its path in Step 2 using
{{step1.path}}. - Virtual Addressing: Use variables like
$LASTor$PREV_END+1to insert code relative to previous edits without calculating line numbers. - Virtual FS Context: When you edit a file in Step 1 and run
nts_code_refactorin Step 2, the refactoring sees the modified content from Step 1, not the disk version. Enables complex chains like "edit class β rename symbol across project".
Example Script: "Create a service, rename it, and add a method"
"actions": [
{ "id": "cre", "tool": "nts_file_manage", "params": { "action": "create", "path": "Temp.java", "content": "class Svc {}" } },
{ "tool": "nts_file_manage", "params": { "action": "rename", "path": "{{cre.path}}", "newName": "UserService.java" } },
{ "tool": "nts_edit_file", "params": { "path": "{{cre.path}}", "startLine": "$LAST", "operation": "insert_after", "content": "void login() {}", "accessToken": "{{cre.token}}" } }
]Note: {{cre.path}} automatically resolves to UserService.java after the rename step!
- Optimistic Locking (LATs): Agents must read a file to get a token (
LAT:...) before editing. If the file changes externally, the token expires and the external change is automatically recorded in file history. No more race conditions. - Smart Token Invalidation: Tokens track Range CRC instead of file CRC. Edits outside your token's range don't invalidate it β only changes to the specific lines you're working on trigger re-read. This dramatically reduces unnecessary token refreshes in large files.
- Path Aliasing: Tokens remain valid after
move/renameoperations. The system tracks file identity through path aliases with transitive resolution β even chains likeA β B β Cpreserve token validity. - Strict Sandboxing: All paths are normalized and pinned to the project root. Impossible to escape via
../../. - Infrastructure Protection: Automatically blocks modification of
.git,.env, and build configs unless explicitly allowed. - OOM Protection: Prevents reading massive files (>10MB) that would crash the context window.
- Structured Error Codes: All errors include machine-readable codes (
FILE_NOT_FOUND,TOKEN_EXPIRED, etc.) with human-readable solutions. No more cryptic exceptions β every error tells you exactly what went wrong and how to fix it.
- Task Journal (H2 Database): Logs every logical step (not just file IO). Persisted in embedded H2 database β survives server restarts.
- In-Memory Snapshots: Undo engine uses in-memory
byte[]snapshots instead of file-based backups for faster recovery. - Checkpoints: Agent can run
nts_task checkpoint('pre-refactor')and safelyrollbackif the approach fails. - Deep Undo: The system tracks File Lineage. If you move
FileA -> FileBand then hit Undo, NTS knows to restore content toFileA. - Git Integration: Can create Git stashes as emergency fallbacks (
git_checkpoint).
The server automatically detects when files are modified outside of MCP (by user, linter, IDE, or other tools).
- CRC-based Detection: Each file read creates a snapshot. On next access, if the CRC differs, the change is detected.
- File History: External changes are recorded in file history and can be reviewed via
nts_task journal. - Smart Prompts: When an external change is detected, the agent receives a TIP recommending to review changes before proceeding, as they may be intentional user edits.
- Undo Support: If needed, external changes can be undone through the standard undo mechanism.
Every tool response includes intelligent contextual hints that guide the agent through optimal workflows.
- Workflow Guidance: After each operation, TIPs suggest the logical next step (e.g., "Token ready for editing β nts_edit_file(...)").
- Performance Hints: Large range reads trigger suggestions to use symbol-based navigation or grep for precision.
- Error Prevention: Pattern analysis detects regex-like queries used without
isRegex=trueand warns proactively. - Token Management: When line counts change after edit, TIPs remind to use the NEW token for subsequent operations.
- Refactoring Awareness: Signature changes trigger suggestions to check call sites via
nts_code_navigate(action='references'). - Import Updates: After move/rename of Java/Kotlin files, TIPs suggest searching for import statements that need updating.
Example TIPs in action:
[WORKFLOW: Token ready for editing -> nts_edit_file(path, startLine, content, accessToken)]
[TIP: Large range read (150 lines). Consider using 'symbol' parameter for precise symbol boundaries.]
[TIP: Pattern contains regex-like characters (.*). If you intended regex search, add isRegex=true parameter.]
[TIP: Line count changed (+5). Use NEW TOKEN above for subsequent edits to this file.]
A specialized tool (nts_todo) allows the agent to maintain a Markdown-based plan.
- The active plan state is fed into the HUD.
- Keeps the agent focused on one task at a time.
- Auto-updates status (
todo,done,failed) in the file system.
The nts_code_navigate tool provides IDE-like code intelligence powered by Tree-sitter.
- Go to Definition: Jump to where a symbol is defined.
- Find References: Locate all usages across the project.
- Hover: Get type, signature, and documentation for any symbol.
- List Symbols: File outline with all definitions.
- 12 Languages: Java, Kotlin, JS/TS/TSX, Python, Go, Rust, C/C++, C#, PHP, HTML.
The nts_code_refactor tool performs intelligent code transformations.
- Rename: Updates ALL references across the entire project automatically.
- Change Signature: Add, remove, rename, retype, or reorder method parameters with automatic call site updates.
- Extract Method: Pull code into a new method with proper parameters.
- Extract Variable: Extract repeated expressions into named variables.
- Inline: Replace method/variable with its body/value.
- Move: Relocate class to a different package with import updates.
- Wrap: Wrap code in try-catch, if-block, or loop.
- Delete: Safe symbol deletion with reference checking.
- Generate: Create getters, setters, constructors, builders, toString, equals/hashCode.
- Batch: Combine multiple refactoring operations atomically.
- Preview Mode: Review diff before applying (
preview: true). - Parallel Reference Search: Both
nts_code_navigateandnts_code_refactoruse parallel file scanning with pre-filtering, searching up to 15 levels deep for maximum coverage. - Batch Integration: Returns
affectedFilesarray with tokens for each modified file β enables chaining likerefactor β editinnts_batch_tools.
{
"action": "rename",
"path": "src/User.java",
"symbol": "getName",
"newName": "getFullName",
"preview": true
}Response includes tokens for batch chaining:
{
"affectedFiles": [
{ "path": "src/User.java", "accessToken": "LAT:...", "crc32c": "A1B2C3D4", "lineCount": 50 },
{ "path": "src/UserService.java", "accessToken": "LAT:...", "crc32c": "E5F6G7H8", "lineCount": 120 }
]
}Each tool in NTS is designed as part of an interconnected discipline system. They don't just perform operations β they enforce a workflow that keeps the agent focused, verified, and recoverable.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β THE NTS DISCIPLINE LOOP β
β β
β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β
β β INIT ββββββΆβ READ ββββββΆβ EDIT ββββββΆβ VERIFY β β
β β Task β β + Token β β + Token β β(Diff/AST)β β
β ββββββββββββ ββββββββββββ ββββββββββββ ββββββ¬ββββββ β
β β β β
β β ββββββββββββ β β
β βββββββββββββββΆβ UNDO βββββββββββββββββββββββββββ β
β (if panic) β Recovery β (if wrong) β
β ββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Why it exists: Creates an isolated task with its own undo history, checkpoints, and token registry.
Discipline role: Everything the agent does is tracked. There's no "anonymous" editing. If something breaks, the task journal knows exactly what happened and when.
Task Reactivation: If the server restarts or connection drops, the task can be reactivated:
{ "taskId": "your-previous-uuid" }This restores the task directory with todos and file history. In-memory state (tokens, undo stack) starts fresh, but disk-persisted data (H2 journal) is preserved.
Connection: All other tools require taskId. This isn't bureaucracy β it's traceability.
Why it exists: Reads file content and issues a Line Access Token (LAT).
Discipline role: The agent must explicitly decide which lines it needs. No "just read everything" shortcut.
β read({ path: "file.java" }) // NOT ALLOWED
β
read({ path: "file.java", startLine: 10, endLine: 30 }) // Forced precision
Connection: The token returned here is required for nts_edit_file. Read β Token β Edit. No shortcuts.
Smart TIPs: Responses include workflow hints (e.g., "Token ready for editing") and suggest symbol-based reading for large ranges.
Bulk Read: Read multiple related files in a single request:
{
"bulk": [
{ "path": "UserService.java", "symbol": "createUser" },
{ "path": "UserRepository.java", "symbol": "save" },
{ "path": "User.java", "startLine": 1, "endLine": 30 }
]
}Each file is separated in output with its own TOKEN. Errors in one file don't affect others.
Why it exists: Applies line-based edits with mandatory token validation.
Discipline role:
- Token required β proves agent read the current state
- Diff in response β agent immediately sees what changed
- CRC check β if file changed externally, edit fails safely
- Smart TIPs β contextual hints for common issues:
- Multi-line content replacing single line without
endLineβ suggestsinsert_afteror range - Line count changed β reminds to use NEW token for subsequent edits
- Signature change detected β suggests checking call sites with
nts_code_navigate - Significant changes β reminds to run tests
- Multi-line content replacing single line without
Connection: Consumes token from nts_file_read, produces new token for subsequent edits. Chain of custody is unbroken.
Why it exists: Create, delete, move, rename files and directories.
Discipline role:
createreturns a token β new files are immediately editablerename/movetransfers tokens via path aliasing β tokens remain valid even after the file is moved (transitive chains likeA β B β Cwork)deleteinvalidates tokens β no editing ghosts
Connection: Works with nts_batch_tools for atomic multi-file restructuring. Path aliases persist across the task.
Why it exists: Find files (glob), search content (grep), view structure.
Discipline role: grep returns tokens for matched ranges. The agent can search and immediately edit without a separate read step.
grep("TODO") β finds line 47 β returns TOKEN for lines 45-50
β agent can edit lines 45-50 directly
Smart TIPs: After grep, workflow hints remind that tokens are ready for direct editing. If pattern looks like regex but isRegex=false, suggests enabling it.
Connection: Bridges discovery and action. Reduces round-trips while maintaining token discipline.
Why it exists: Undo, redo, checkpoints, rollback, and task journal.
Discipline role: When the agent makes a mistake, it has structured recovery instead of uncontrolled fix-spiraling.
checkpoint("before-risky-refactor")
β try dangerous changes
β if wrong: rollback("before-risky-refactor")
β project restored in one command
Connection: This is the safety net that makes aggressive refactoring possible. Agents can be bold because recovery is guaranteed.
Why it exists: Execute multiple tools as a single atomic transaction.
Discipline role: Complex operations either fully succeed or fully rollback. No half-broken states.
{
"actions": [
{ "id": "svc", "tool": "nts_file_manage", "params": { "action": "create", "path": "Service.java" }},
{ "tool": "nts_edit_file", "params": { "path": "{{svc.path}}", "accessToken": "{{svc.token}}", ... }}
]
}
// If edit fails β create is rolled back β project untouchedConnection: Uses {{step.token}} interpolation. Tokens flow between steps automatically. This is the culmination of the discipline system.
Why it exists: Global search and replace across the entire project.
Discipline role:
dryRun: trueshows all changes before applying- Atomic: all files changed or none
- Creates automatic checkpoint before execution
Connection: High-risk operation with maximum safeguards.
Why it exists: Go to definition, find references, hover info, symbol listing.
Discipline role: Agent can understand code structure before editing. Reduces guesswork, increases precision.
Connection: Returns tokens for found locations. Navigate β understand β edit with confidence.
Why it exists: Rename symbols, change signatures, generate code, extract methods β with automatic reference updates.
Discipline role:
preview: trueshows all affected files before applying- Semantic rename updates ALL references, not just text matches
- Atomic: entire refactoring succeeds or fails together
- Returns tokens for all modified files β enables
refactor β editchains in batches
Connection: Uses tree-sitter for precision. Integrates with nts_batch_tools via {{step.affectedFiles[0].accessToken}} interpolation. Safer than manual multi-file editing.
Why it exists: Maintains a Markdown-based task list integrated with the HUD.
Discipline role: Keeps the agent focused on one task at a time. The HUD constantly reminds what's next.
[HUD] Plan: Auth Refactor [β2 β3] β #3: Update Login Controller
Connection: Prevents scope creep. Agent always knows the current objective even after context summarization.
Why it exists: Git status, diff, add, commit β without leaving NTS.
Discipline role:
git_checkpointcreates stash as emergency backupcommit_taskauto-generates commit message from TODO progress- Safe operations only (no push/force)
Connection: Integrates with task journal. Commits can reference completed tasks.
Why it exists: Shows unified diff between any two files.
Discipline role: Agent can verify changes by comparing before/after states explicitly.
Connection: Useful for reviewing results of batch operations or refactoring.
Why it exists: Run Gradle tasks (build, test, check) with parsed output.
Discipline role: Agent gets immediate feedback on whether changes broke the build. Errors are parsed and actionable.
Connection: Closes the loop: Edit β Build β Fix β Repeat.
Why it exists: Verify code correctness at three levels: syntax, compilation, and tests.
Discipline role:
syntaxβ Fast tree-sitter AST check (no build needed). Catches errors instantly after edits.compileβ Runsgradlew build -x testfor compilation verification.testβ Runsgradlew testfor full test validation.
Connection: Bridges editing and building. Agent verifies syntax without a full build cycle, escalating to compilation/tests only when needed.
Why it exists: Provides compact workspace summary for re-orientation after context compression.
Discipline role: When the agent loses context due to prompt summarization, this tool returns:
- Current task ID and stats
- TODO progress (if active)
- Recently modified files
- Recent journal entries (last 5 operations)
- Suggested next action
Connection: Acts as an emergency compass. The agent can always ask "where am I?" and get a precise answer.
Why it exists: Monitor and control long-running background processes (Gradle builds, Git operations).
Discipline role: Agent can retrieve logs or kill async processes without blocking the main workflow.
Connection: Works with nts_gradle_task and nts_git for async operations.
These tools aren't independent utilities. They form a closed discipline loop:
- Task establishes accountability
- Read forces attention and issues tokens
- Edit requires tokens and shows results
- Verify validates changes (syntax β compile β test)
- Task provides recovery when needed
- Batch enables complex operations atomically
- HUD + TODO maintains focus across long sessions
- Workspace Status recovers context after compression
Every tool reinforces the others. There's no escape hatch to "just edit blindly." The discipline is architectural.
Prerequisites: Java 25+ (Virtual Threads, enhanced performance).
Build and run the integrator to automatically configure supported clients (Gemini CLI, Claude Code, Qwen CLI, Cursor, LM Studio, Antigravity, Copilot VS Code).
./gradlew shadowJar
java -jar app/build/libs/app-all.jar --integrateAdd to your mcp-config.json:
{
"mcpServers": {
"NTS-FileSystem-MCP": {
"command": "java",
"args": [
"-jar",
"/absolute/path/to/nts-mcp-fs/app/build/libs/app-all.jar"
]
}
}
}Docker eliminates the need to install Java 25+ locally. The server runs in a container with project directories mounted as volumes.
Important: Docker Mode and Roots
In Docker, you must explicitly mount directories and specify them via
NTS_DOCKER_ROOTS. These roots override any roots sent by the MCP client, because the client sends host paths that don't exist inside the container.
Option A: Use pre-built image (recommended)
docker pull ghcr.io/nefrols/nts-mcp-fs:latestSingle project:
{
"mcpServers": {
"NTS-FileSystem-MCP": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/home/user/myproject:/mnt/project",
"-e", "NTS_DOCKER_ROOTS=/mnt/project",
"ghcr.io/nefrols/nts-mcp-fs:latest"
]
}
}
}Multiple projects:
{
"mcpServers": {
"NTS-FileSystem-MCP": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/home/user/project1:/mnt/p1",
"-v", "/home/user/project2:/mnt/p2",
"-e", "NTS_DOCKER_ROOTS=/mnt/p1:/mnt/p2",
"ghcr.io/nefrols/nts-mcp-fs:latest"
]
}
}
}Option B: Build locally
docker build -t nts-mcp-fs .
docker run -i --rm \
-v /path/to/project:/mnt/project \
-e NTS_DOCKER_ROOTS=/mnt/project \
nts-mcp-fsEnvironment variables:
| Variable | Description |
|---|---|
NTS_DOCKER_ROOTS |
Required. Colon-separated list of root paths inside the container. Must match your -v mount points. Overrides client roots. |
JAVA_OPTS |
JVM options (default: -XX:+UseZGC -Xmx512m) |
MCP_DEBUG |
Set to true for debug logging |
MCP_LOG_FILE |
Path to log file (for clients that merge stderr/stdout) |
Available image tags:
| Tag | Description |
|---|---|
latest |
Latest stable release |
1.2.3 |
Specific version |
1.2 |
Latest patch of minor version |
edge |
Latest development build (main branch) |
NTS_MCP_FS β ΡΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Model Context Protocol (MCP) ΡΡΠΎΠ²Π½Ρ Enterprise.
ΠΠ½ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π² Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΡΡ ΠΠ‘ Π΄Π»Ρ ΠΠ-Π°Π³Π΅Π½ΡΠΎΠ². Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΡΠΎΡΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡΠΈΡ "ΡΠ»Π΅ΠΏΡΡ" ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡ, NTS ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΠΏΡΠΈΠΌΠΈΡΡΠΈΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΠΎΡΡΠΎΡΠ½Π½ΡΠΉ HUD ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΡΠΎΠΌΠ°ΡΠ½ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΠΌΡΠ΅ Π±Π°ΡΡΠΈ.
| Π€ΡΠ½ΠΊΡΠΈΡ | ΠΠ±ΡΡΠ½ΡΠΉ MCP Π‘Π΅ΡΠ²Π΅Ρ | NTS_MCP_FS |
|---|---|---|
| Π¦Π΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ | Π‘Π»Π΅ΠΏΠ°Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡ (ΠΊΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ, ΡΠΎΡ ΠΈ ΠΏΡΠ°Π²) | Line Access Tokens (LATs) - ΠΠΏΡΠΈΠΌΠΈΡΡΠΈΡΠ½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° |
| ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ | ΠΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ Π·Π° ΡΠ°Π· | ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΡΠΎΠΌΠ°ΡΠ½ΡΠ΅ ΠΠ°ΡΡΠΈ (Π‘ΠΊΡΠΈΠΏΡΠΈΠ½Π³) |
| ΠΠΎΠ½ΡΠ΅ΠΊΡΡ | ΠΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ (ΠΠ³Π΅Π½Ρ Π·Π°Π±ΡΠ²Π°Π΅Ρ ΠΏΠ»Π°Π½) | AI-HUD ΠΈ ΠΡΡΡΠΎΠ΅Π½Π½ΡΠΉ TODO (ΠΠΎΡΡΠΎΡΠ½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ) |
| ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ | Ctrl+Z (Π΅ΡΠ»ΠΈ ΠΏΠΎΠ²Π΅Π·Π΅Ρ) | Deep Undo ΠΈ Π§Π΅ΠΊΠΏΠΎΠΈΠ½ΡΡ (Π£ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²) |
| ΠΠ½ΡΠ΅Π»Π»Π΅ΠΊΡ ΠΊΠΎΠ΄Π° | ΠΡΡΡΡΡΡΠ²ΡΠ΅Ρ | LSP-Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΈ Π‘Π΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ (12 ΡΠ·ΡΠΊΠΎΠ²) |
| ΠΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ | Π ΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ | ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° (Tree-sitter), ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈ ΡΠ΅ΡΡΡ |
| ΠΠ΅ΡΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΡΡΡ | ΠΠ΅Π· ΡΠΎΡΡΠΎΡΠ½ΠΈΡ (ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΠ°ΠΌΡΡΠΈ) | H2 Database (ΠΆΡΡΠ½Π°Π» ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠΈ) |
| Π‘ΠΊΠΎΡΠΎΡΡΡ | ΠΠ»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ I/O | Java Virtual Threads ΠΈ Memory-Mapped I/O |
π― Π€ΠΈΠ»ΠΎΡΠΎΡΠΈΡ: ΠΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π° ΠΠ ΡΠ΅ΡΠ΅Π· ΠΎΡΠΎΠ·Π½Π°Π½Π½ΠΎΠ΅ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΠ΅
Β«Π¦Π΅Π»Ρ Π½Π΅ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Π°Π³Π΅Π½ΡΠ° β Π° Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ΡΠΆΠ½ΠΎΠΉ.Β»
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ MCP-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΡΡ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ: ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΊΠΎΡΠΎΡΠ΅ ΠΎΡΠ²Π΅ΡΡ, ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ. NTS ΠΈΠ΄ΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΡΠΌ ΠΏΡΡΡΠΌ. ΠΠ½ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΡΠΎΠ·Π½Π°Π½Π½ΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΠ-Π°Π³Π΅Π½ΡΠ° ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Ρ ΠΈΡΡΡΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ.
ΠΠΎΠ³Π΄Π° ΠΠ-Π°Π³Π΅Π½Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π°Π΄ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ (1-2Π+ ΡΠΎΠΊΠ΅Π½ΠΎΠ²), ΡΡΠΌΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ ΡΠ΅ΡΡΠ΅Ρ Π΄Π΅ΡΠ°Π»ΠΈ. ΠΠ³Π΅Π½Ρ Β«Π·Π°Π±ΡΠ²Π°Π΅ΡΒ», ΡΡΠΎ ΡΠΈΡΠ°Π» 50 ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π½Π°Π·Π°Π΄. ΠΠ°Π»ΡΡΠ΅:
- π΄ ΠΠ³Π΅Π½Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅Ρ ΡΡΡΠΎΠΊΡ 347 ΠΏΠΎ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ
- π΄ ΠΡΠ°Π²ΠΊΠ° ΡΡΠΎ-ΡΠΎ Π»ΠΎΠΌΠ°Π΅Ρ β Π°Π³Π΅Π½Ρ ΠΏΠ°Π½ΠΈΠΊΡΠ΅Ρ
- π΄ ΠΠ³Π΅Π½Ρ Π²Ρ ΠΎΠ΄ΠΈΡ Π² Π½Π΅ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠΈΠΊΠ» ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ
- π΄ Π§Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½Ρ Π·Π° ΡΠ΅ΠΊΡΠ½Π΄Ρ
ΠΡΠΎ Π½Π΅ Π±Π°Π³ β ΡΡΠΎ ΡΠΌΠ΅ΡΠ΄ΠΆΠ΅Π½ΡΠ½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠ°Π±ΠΎΡΡ LLM Ρ Π΄Π»ΠΈΠ½Π½ΡΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ. NTS ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ.
Line Access Tokens (LATs) β ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΡΡΠΎ ΠΊΠΎΠ³Π½ΠΈΡΠΈΠ²Π½ΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ΠΠ΅Π· LAT: β
β Β«ΠΡΠΎΡΠΈΡΠ°Ρ Π²Π΅ΡΡ ΡΠ°ΠΉΠ»... ΡΠ°ΠΌ Π²ΡΠ΅Π³ΠΎ 400 ΡΡΡΠΎΠΊΒ» β
β β ΠΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΠ°Π·Π΄ΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ Β«Π½Π° Π²ΡΡΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉΒ» β
β β Π‘ΡΠΌΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΡΠ΅Ρ ΠΊΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ β
β β ΠΠ³Π΅Π½Ρ ΠΏΡΠ°Π²ΠΈΡ Π½Π΅ ΡΡ ΡΡΡΠΎΠΊΡ ΠΏΠΎ ΡΠ°Π·ΠΌΡΡΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ β
β β ΠΠ°ΡΠ°ΡΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ° β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Π‘ LAT: β
β Β«ΠΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΡΡ ΡΡΡΠΎΠΊΡ 47. ΠΡΠΎΡΠΈΡΠ°Ρ ΡΡΡΠΎΠΊΠΈ 40-55.Β» β
β β ΠΠ³Π΅Π½Ρ ΡΠ²Π½ΠΎ ΡΠ΅ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅ΠΌΡ Π½ΡΠΆΠ½ΠΎ β
β β Π’ΠΎΠΊΠ΅Π½ Π΄ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π°Π³Π΅Π½Ρ Π²ΠΈΠ΄Π΅Π» Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ β
β β ΠΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΎΡΡΠ°ΡΡΡΡ ΡΠΈΡΡΡΠΌ ΠΈ ΡΠΎΡΠ½ΡΠΌ β
β β ΠΡΠ°Π²ΠΊΠΈ Ρ
ΠΈΡΡΡΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΡΠ½Ρ ΠΈ Π²Π΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ΠΠ³Π΅Π½Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π²Π΅ΡΡ ΡΠ°ΠΉΠ» ΠΎΠ΄Π½ΠΎΠΉ Π»Π΅Π½ΠΈΠ²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ. ΠΠ½ ΠΎΠ±ΡΠ·Π°Π½ ΡΠΊΠ°Π·Π°ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡΡΡΠΎΠΊ. ΠΡΠΎ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Π°Π³Π΅Π½ΡΠ° Π΄ΡΠΌΠ°ΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ β ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ° Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ Π΄ΡΠ΅ΠΉΡ.
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΡΠ²Π΅Ρ nts_edit_file ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ»Π½ΡΠΉ unified diff. ΠΡΠΎ Π½Π΅ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠ²Π½ΠΎΡΡΡ β ΡΡΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°Ρ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ.
--- User.java (original)
+++ User.java (modified)
@@ -15,7 +15,7 @@
}
- public String getName() {
+ public String getFullName() {
return name;
}ΠΠ³Π΅Π½Ρ Π²ΠΈΠ΄ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΎΡΠ²Π΅ΡΠ΅. ΠΠ΅ Π½ΡΠΆΠ΅Π½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°Π³ Β«ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡΒ». ΠΠ΅Ρ ΡΠ°Π½ΡΠ° Β«Π·Π°Π±ΡΡΡΒ» ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ. Diff β ΡΡΠΎ Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ.
| Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ | Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ | NTS |
|---|---|---|
| 2-ΡΠ°ΡΠΎΠ²Π°Ρ ΡΠ΅ΡΡΠΈΡ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π° | 40% ΡΠ°Π½Ρ ΠΊΠ°ΡΠ°ΡΡΡΠΎΡΡ | ΠΠΊΠΎΠ»ΠΎ Π½ΡΠ»Ρ (checkpoint + undo) |
| ΠΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΠΉΠ»Π°Ρ | ΠΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΡΠΈΡ Π°Ρ ΠΏΠΎΡΡΠ° | ΠΡΠΎΠΌΠ°ΡΠ½ΡΠΉ batch ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΡΠΉ ΠΎΡΠΊΠ°Ρ |
| ΠΠ½Π΅ΡΠ½Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ | ΠΠ³Π΅Π½Ρ Π·Π°ΡΡΡΡ ΠΏΡΠ°Π²ΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ | Π’ΠΎΠΊΠ΅Π½ ΡΠ³ΠΎΡΠ°Π΅Ρ, Π°Π³Π΅Π½Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄ΡΠ½ |
| ΠΠ³Π΅Π½Ρ Β«ΠΏΠ°Π½ΠΈΠΊΡΠ΅ΡΒ» ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ | ΠΠ΅ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠΏΠΈΡΠ°Π»Ρ ΡΠΈΠΊΡΠΎΠ² | Undo β ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ β ΠΏΠΎΠ²ΡΠΎΡ |
ΠΠΎΡΡΠ°ΡΠΈΡΡ Π½Π° 10% Π±ΠΎΠ»ΡΡΠ΅ ΡΠΎΠΊΠ΅Π½ΠΎΠ² Π½Π° Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Ρ β Π·Π½Π°ΡΠΈΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ 100% ΡΠ°Π±ΠΎΡΡ.
2-ΡΠ°ΡΠΎΠ²Π°Ρ ΡΠ΅ΡΡΠΈΡ Π°Π³Π΅Π½ΡΠ° ΡΡΠΎΠΈΡ ~$5-15 Π² API-Π²ΡΠ·ΠΎΠ²Π°Ρ . ΠΠ°ΡΠ°ΡΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°, ΡΠ½ΠΈΡΡΠΎΠΆΠΈΠ²ΡΠ°Ρ ΡΡΡ ΡΠ°Π±ΠΎΡΡ, ΡΡΠΎΠΈΡ ΡΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ β ΠΏΠ»ΡΡ Π²ΡΠ΅ΠΌΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° Π½Π° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΡ.
NTS ΠΌΠ΅Π½ΡΠ΅Ρ ΠΌΠΈΠΊΡΠΎ-ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π½Π° ΠΌΠ°ΠΊΡΠΎ-Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΡ. ΠΠ³Π΅Π½Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΡΡ ΡΡΠ΅ΡΠ΄Π½Π΅Π΅ Π½Π°Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ, Π½ΠΎ Π²ΡΡ ΡΠ΅ΡΡΠΈΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ, Π° Π½Π΅ ΡΡΡΠΈΡΡΡ Π½Π° 1:45.
Π‘Π΅ΡΠ²Π΅Ρ Π²Π½Π΅Π΄ΡΡΠ΅Ρ ΡΡΡΠΎΠΊΡ ΡΡΠ°ΡΡΡΠ° Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΡΠ²Π΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°. ΠΠ³Π΅Π½Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ΅ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ.
[HUD tid:a1b2] Plan: Refactor Auth [β2 β1] β #3: Update Login | Task: 5 edits | Unlocked: 3 files
- ΠΠΎΠ½ΡΠ΅ΠΊΡΡ Π·Π°Π΄Π°ΡΠΈ: ΠΠ°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ Π°Π³Π΅Π½ΡΡ ID Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ.
- Π’ΡΠ΅ΠΊΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ°: ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ TODO (ΠΠΎΡΠΎΠ²ΠΎ/Π ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ) ΠΈ ΡΠ»Π΅Π΄ΡΡΡΡΡ Π·Π°Π΄Π°ΡΡ.
- Π‘ΡΠ°ΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ: ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΎΡΠΊΡΡΡΠΎ Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ nts_batch_tools β ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠΌΠ°Π½Π΄, ΡΡΠΎ Π΄Π²ΠΈΠΆΠΎΠΊ ΡΠΊΡΠΈΠΏΡΠΈΠ½Π³Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
- ΠΡΠΎΠΌΠ°ΡΠ½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ: 10 Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅. ΠΡΠ»ΠΈ 10-Π΅ ΡΠΏΠ°Π΄Π΅Ρ, ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ 9 ΠΎΡΠΊΠ°ΡΡΡΡΡ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ. ΠΡΠΎΠ΅ΠΊΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΡΡΠ°Π½Π΅ΡΡΡ "ΡΠ»ΠΎΠΌΠ°Π½Π½ΡΠΌ".
- ΠΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
: ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° Π΄Π°Π½Π½ΡΡ
ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π³Π°ΠΌΠΈ. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» Π½Π° Π¨Π°Π³Π΅ 1 ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΅Π³ΠΎ ΠΏΡΡΡ Π½Π° Π¨Π°Π³Π΅ 2 ΡΠ΅ΡΠ΅Π·
{{step1.path}}. - ΠΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΡ: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
$LAST(ΠΊΠΎΠ½Π΅Ρ ΡΠ°ΠΉΠ»Π°) ΠΈΠ»ΠΈ$PREV_END+1(Π²ΡΡΠ°Π²ΠΊΠ° ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΏΡΠ°Π²ΠΊΠΈ), ΡΡΠΎΠ±Ρ Π½Π΅ Π²ΡΡΡΠΈΡΡΠ²Π°ΡΡ Π½ΠΎΠΌΠ΅ΡΠ° ΡΡΡΠΎΠΊ Π²ΡΡΡΠ½ΡΡ. - ΠΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ FS: ΠΠΎΠ³Π΄Π° Π²Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ°ΠΉΠ» Π½Π° Π¨Π°Π³Π΅ 1 ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅
nts_code_refactorΠ½Π° Π¨Π°Π³Π΅ 2, ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ Π²ΠΈΠ΄ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΈΠ· Π¨Π°Π³Π° 1, Π° Π½Π΅ Π²Π΅ΡΡΠΈΡ Ρ Π΄ΠΈΡΠΊΠ°. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠ΅ΠΏΠΎΡΠΊΠΈ Π²ΡΠΎΠ΄Π΅ Β«ΠΏΡΠ°Π²ΠΊΠ° ΠΊΠ»Π°ΡΡΠ° β ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡΒ».
ΠΡΠΈΠΌΠ΅Ρ ΡΠΊΡΠΈΠΏΡΠ°: "Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΡΠ²ΠΈΡ, ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄"
"actions": [
{ "id": "cre", "tool": "nts_file_manage", "params": { "action": "create", "path": "Temp.java", "content": "class Svc {}" } },
{ "tool": "nts_file_manage", "params": { "action": "rename", "path": "{{cre.path}}", "newName": "UserService.java" } },
{ "tool": "nts_edit_file", "params": { "path": "{{cre.path}}", "startLine": "$LAST", "operation": "insert_after", "content": "void login() {}", "accessToken": "{{cre.token}}" } }
]ΠΠ°ΠΌΠ΅ΡΡΡΠ΅: {{cre.path}} Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡΡ Π² UserService.java ΠΏΠΎΡΠ»Π΅ ΡΠ°Π³Π° ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ!
- ΠΠΏΡΠΈΠΌΠΈΡΡΠΈΡΠ½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° (LATs): ΠΠ³Π΅Π½Ρ ΠΎΠ±ΡΠ·Π°Π½ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠ°ΠΉΠ» ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠΊΠ΅Π½ (
LAT:...) ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠ°Π²ΠΊΠΎΠΉ. ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ ΠΈΠ·Π²Π½Π΅ β ΡΠΎΠΊΠ΅Π½ ΡΠ³ΠΎΡΠ°Π΅Ρ, Π° Π²Π½Π΅ΡΠ½Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΠΈΡΡΠΎΡΠΈΡ ΡΠ°ΠΉΠ»Π°. ΠΠΈΠΊΠ°ΠΊΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ Π³ΠΎΠ½ΠΊΠΈ (Race Conditions). - Π£ΠΌΠ½Π°Ρ ΠΈΠ½Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ²: Π’ΠΎΠΊΠ΅Π½Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ CRC Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, Π° Π½Π΅ Π²ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΡΠ°Π²ΠΊΠΈ Π²Π½Π΅ Π²Π°ΡΠ΅Π³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π½Π΅ ΠΈΠ½Π²Π°Π»ΠΈΠ΄ΠΈΡΡΡΡ ΡΠΎΠΊΠ΅Π½ β ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΡΡΠΎΠΊ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅, ΡΡΠ΅Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΡΠ²Π°Π½ΠΈΡ. ΠΡΠΎ ΡΠ°Π΄ΠΈΠΊΠ°Π»ΡΠ½ΠΎ ΡΠΎΠΊΡΠ°ΡΠ°Π΅Ρ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ² Π² Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ°ΠΉΠ»Π°Ρ .
- Path Aliasing: Π’ΠΎΠΊΠ΅Π½Ρ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ
move/rename. Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΡ ΡΠ°ΠΉΠ»Π° ΡΠ΅ΡΠ΅Π· Π°Π»ΠΈΠ°ΡΡ ΠΏΡΡΠ΅ΠΉ Ρ ΡΡΠ°Π½Π·ΠΈΡΠΈΠ²Π½ΡΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ β Π΄Π°ΠΆΠ΅ ΡΠ΅ΠΏΠΎΡΠΊΠΈA β B β CΡΠΎΡ ΡΠ°Π½ΡΡΡ Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ². - Π‘ΡΡΠΎΠ³Π°Ρ ΠΏΠ΅ΡΠΎΡΠ½ΠΈΡΠ°: ΠΡΠ΅ ΠΏΡΡΠΈ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΡΡΡΡΡ ΠΈ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΊ ΠΊΠΎΡΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡΡ
ΠΎΠ΄ ΡΠ΅ΡΠ΅Π·
../../Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½. - ΠΠ°ΡΠΈΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ: ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
.git,.envΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ (ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ). - ΠΠ°ΡΠΈΡΠ° ΠΎΡ OOM: ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΡΡΠ΅Π½ΠΈΡ Π³ΠΈΠ³Π°Π½ΡΡΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² (>10MB), ΡΠΏΠΎΡΠΎΠ±Π½ΡΡ ΠΎΠ±ΡΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
- Π‘ΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΠ΄Ρ ΠΎΡΠΈΠ±ΠΎΠΊ: ΠΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΌΠ°ΡΠΈΠ½ΠΎΡΠΈΡΠ°Π΅ΠΌΡΠ΅ ΠΊΠΎΠ΄Ρ (
FILE_NOT_FOUND,TOKEN_EXPIREDΠΈ Π΄Ρ.) Ρ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠΈΠΊΠ°ΠΊΠΈΡ Π·Π°Π³Π°Π΄ΠΎΡΠ½ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ β ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ, ΡΡΠΎ ΠΏΠΎΡΠ»ΠΎ Π½Π΅ ΡΠ°ΠΊ ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ.
- ΠΡΡΠ½Π°Π» Π·Π°Π΄Π°ΡΠΈ (H2 Database): ΠΠΎΠ³ΠΈΡΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Π³. Π₯ΡΠ°Π½ΠΈΡΡΡ Π²ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ H2 Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ β ΠΏΠ΅ΡΠ΅ΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°.
- In-Memory ΡΠ½Π°ΠΏΡΠΎΡΡ: ΠΠ²ΠΈΠΆΠΎΠΊ ΠΎΡΠΊΠ°ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ
byte[]ΡΠ½Π°ΠΏΡΠΎΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ Π±ΡΠΊΠ°ΠΏΠΎΠ² Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ. - Π§Π΅ΠΊΠΏΠΎΠΈΠ½ΡΡ: ΠΠ³Π΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ
nts_task checkpoint('pre-refactor')ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡrollback, Π΅ΡΠ»ΠΈ Π³ΠΈΠΏΠΎΡΠ΅Π·Π° Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π»Π°. - Deep Undo (Π£ΠΌΠ½ΡΠΉ ΠΎΡΠΊΠ°Ρ): Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ Π ΠΎΠ΄ΠΎΡΠ»ΠΎΠ²Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² (Lineage). ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ
FileA -> FileBΠΈ Π½Π°ΠΆΠ°ΡΡ Undo, NTS ΠΏΠΎΠΉΠΌΠ΅Ρ, ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π½ΡΠΆΠ½ΠΎ Π²Π΅ΡΠ½ΡΡΡ Π²FileA. - Git ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ: ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Git stashes ΠΊΠ°ΠΊ Π°Π²Π°ΡΠΈΠΉΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ (
git_checkpoint).
Π‘Π΅ΡΠ²Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° ΡΠ°ΠΉΠ»Ρ Π±ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ Π²Π½Π΅ MCP (ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, Π»ΠΈΠ½ΡΠ΅ΡΠΎΠΌ, IDE ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ).
- ΠΠ΅ΡΠ΅ΠΊΡΠΈΡ ΠΏΠΎ CRC: ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΡΠ΅Π½ΠΈΠΈ ΡΠ°ΠΉΠ»Π° ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΠ½Π°ΠΏΡΠΎΡ. ΠΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ΅, Π΅ΡΠ»ΠΈ CRC ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ β ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΡΡΡ.
- ΠΡΡΠΎΡΠΈΡ ΡΠ°ΠΉΠ»Π°: ΠΠ½Π΅ΡΠ½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΠΈΡΡΠΎΡΠΈΡ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ΅ΡΠ΅Π·
nts_task journal. - Π£ΠΌΠ½ΡΠ΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ: ΠΡΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠΈ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π°Π³Π΅Π½Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ TIP Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠ΅ΠΉ ΠΈΠ·ΡΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ, Ρ.ΠΊ. ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠ΅Π΄Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠ°Π²ΠΊΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΡΠΊΠ°ΡΠ°: ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ°ΡΠΈΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ undo.
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΡΠ²Π΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠ΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ, Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ Π°Π³Π΅Π½ΡΠ° ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΌΡ workflow.
- Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ workflow: ΠΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ TIPs ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«Π’ΠΎΠΊΠ΅Π½ Π³ΠΎΡΠΎΠ² Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ β nts_edit_file(...)Β»).
- ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ: Π§ΡΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ symbol-Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΈΠ»ΠΈ grep Π΄Π»Ρ ΡΠΎΡΠ½ΠΎΡΡΠΈ.
- ΠΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ: ΠΠ½Π°Π»ΠΈΠ· ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ regex-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π±Π΅Π·
isRegex=trueΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π΅Ρ Π·Π°ΡΠ°Π½Π΅Π΅. - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ: ΠΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΡΡΠΎΠΊ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ°Π²ΠΊΠΈ TIPs Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΠΠΠ«Π ΡΠΎΠΊΠ΅Π½.
- ΠΡΠ²Π΅Π΄ΠΎΠΌΠ»ΡΠ½Π½ΠΎΡΡΡ ΠΎ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π΅: ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΈΠ³Π½Π°ΡΡΡΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΌΠ΅ΡΡΠ° Π²ΡΠ·ΠΎΠ²Π° ΡΠ΅ΡΠ΅Π·
nts_code_navigate(action='references'). - ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΎΠ²: ΠΠΎΡΠ»Π΅ move/rename Java/Kotlin ΡΠ°ΠΉΠ»ΠΎΠ² TIPs ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΏΠΎΠΈΡΠΊΠ°ΡΡ import-Ρ Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅ΡΡ TIPs Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ:
[WORKFLOW: Token ready for editing -> nts_edit_file(path, startLine, content, accessToken)]
[TIP: Large range read (150 lines). Consider using 'symbol' parameter for precise symbol boundaries.]
[TIP: Pattern contains regex-like characters (.*). If you intended regex search, add isRegex=true parameter.]
[TIP: Line count changed (+5). Use NEW TOKEN above for subsequent edits to this file.]
Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ nts_todo ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π³Π΅Π½ΡΡ Π²Π΅ΡΡΠΈ ΠΏΠ»Π°Π½ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Markdown.
- ΠΠΊΡΠΈΠ²Π½ΡΠΉ ΠΏΠ»Π°Π½ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅ΡΡΡ Π² HUD.
- Π£Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠΊΡΡ Π°Π³Π΅Π½ΡΠ° Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅.
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΡΠ°ΡΡΡΡ (
todo,done,failed) Π² ΡΠ°ΠΉΠ»Π΅.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ nts_code_navigate ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ IDE-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ Π½Π° Π±Π°Π·Π΅ Tree-sitter.
- Go to Definition: ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°.
- Find References: ΠΠΎΠΈΡΠΊ Π²ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡ.
- Hover: ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ΅, ΡΠΈΠ³Π½Π°ΡΡΡΠ΅ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
- List Symbols: Π‘ΡΡΡΠΊΡΡΡΠ° ΡΠ°ΠΉΠ»Π° ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠΌΠΈ.
- 12 ΡΠ·ΡΠΊΠΎΠ²: Java, Kotlin, JS/TS/TSX, Python, Go, Rust, C/C++, C#, PHP, HTML.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ nts_code_refactor Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
- Rename: ΠΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΠ‘ΠΠ₯ ΡΡΡΠ»ΠΎΠΊ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡ.
- Change Signature: ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΈ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Ρ Π°Π²ΡΠΎΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠ².
- Extract Method: ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² ΠΌΠ΅ΡΠΎΠ΄ Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ.
- Extract Variable: ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
- Inline: ΠΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°/ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
- Move: ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠΏΠΎΡΡΠΎΠ².
- Wrap: ΠΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² try-catch, if-Π±Π»ΠΎΠΊ ΠΈΠ»ΠΈ ΡΠΈΠΊΠ».
- Delete: ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ ΡΡΡΠ»ΠΎΠΊ.
- Generate: ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ getters, setters, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ², builder, toString, equals/hashCode.
- Batch: ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π° Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎ.
- Preview Mode: ΠΡΠΎΡΠΌΠΎΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ (
preview: true). - ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ ΡΡΡΠ»ΠΎΠΊ: Π
nts_code_navigate, ΠΈnts_code_refactorΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ΅ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠ΅ΠΉ, ΠΈΡΡΡ Π½Π° Π³Π»ΡΠ±ΠΈΠ½Ρ Π΄ΠΎ 15 ΡΡΠΎΠ²Π½Π΅ΠΉ Π΄Π»Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΊΡΡΡΠΈΡ. - ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Batch: ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²
affectedFilesΡ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠΎΠΈΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠΈrefactor β editΠ²nts_batch_tools.
{
"action": "rename",
"path": "src/User.java",
"symbol": "getName",
"newName": "getFullName",
"preview": true
}ΠΡΠ²Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠΊΠ΅Π½Ρ Π΄Π»Ρ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ Π² batch:
{
"affectedFiles": [
{ "path": "src/User.java", "accessToken": "LAT:...", "crc32c": "A1B2C3D4", "lineCount": 50 },
{ "path": "src/UserService.java", "accessToken": "LAT:...", "crc32c": "E5F6G7H8", "lineCount": 120 }
]
}π οΈ ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ: Π‘ΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Ρ, Π° Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΡΠΈΠ»ΠΈΡΡ
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ NTS ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Ρ. ΠΠ½ΠΈ Π½Π΅ ΠΏΡΠΎΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ β ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π°Π³Π΅Π½Ρ ΠΎΡΡΠ°ΡΡΡΡ ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ, Π²Π΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΈ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΠΌ.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Π¦ΠΠΠ ΠΠΠ‘Π¦ΠΠΠΠΠΠ« NTS β
β β
β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β
β β INIT ββββββΆβ READ ββββββΆβ EDIT ββββββΆβ ΠΠ ΠΠΠΠ ΠΠ β β
β β ΠΠ°Π΄Π°ΡΠ° β β + Π’ΠΎΠΊΠ΅Π½ β β + Π’ΠΎΠΊΠ΅Π½ β β(Diff/AST)β β
β ββββββββββββ ββββββββββββ ββββββββββββ ββββββ¬ββββββ β
β β β β
β β ββββββββββββ β β
β βββββββββββββββΆβ UNDO βββββββββββββββββββββββββββ β
β (ΠΏΡΠΈ ΠΏΠ°Π½ΠΈΠΊΠ΅) βΠΠΎΡΡΡΠ°Π½ΠΎΠ²Π»β (ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ΅) β
β ββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ΠΠ°ΡΠ΅ΠΌ: Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π·Π°Π΄Π°ΡΡ Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ undo, ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΠ°ΠΌΠΈ ΠΈ ΡΠ΅Π΅ΡΡΡΠΎΠΌ ΡΠΎΠΊΠ΅Π½ΠΎΠ².
Π ΠΎΠ»Ρ Π² Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅: ΠΡΡ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π°Π³Π΅Π½Ρ, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΡΡΡ. ΠΠ΅Ρ Β«Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎΒ» ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΡΠ»ΠΎΠΌΠ°Π΅ΡΡΡ β ΠΆΡΡΠ½Π°Π» Π·Π°Π΄Π°ΡΠΈ Π·Π½Π°Π΅Ρ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ ΠΈ ΠΊΠΎΠ³Π΄Π°.
Π Π΅Π°ΠΊΡΠΈΠ²Π°ΡΠΈΡ Π·Π°Π΄Π°ΡΠΈ: ΠΡΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΠ»ΡΡ ΠΈΠ»ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΡΠ²Π°Π»ΠΎΡΡ, Π·Π°Π΄Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ:
{ "taskId": "Π²Π°Ρ-ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ-uuid" }ΠΡΠΎ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π·Π°Π΄Π°ΡΠΈ Ρ todos ΠΈ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ ΡΠ°ΠΉΠ»ΠΎΠ². Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π² ΠΏΠ°ΠΌΡΡΠΈ (ΡΠΎΠΊΠ΅Π½Ρ, ΡΡΠ΅ΠΊ undo) Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΡΠΈΡΡΠΎΠ³ΠΎ Π»ΠΈΡΡΠ°, Π½ΠΎ Π΄Π°Π½Π½ΡΠ΅ Π½Π° Π΄ΠΈΡΠΊΠ΅ (H2 ΠΆΡΡΠ½Π°Π») ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ.
Π‘Π²ΡΠ·Ρ: ΠΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΡΠ΅Π±ΡΡΡ taskId. ΠΡΠΎ Π½Π΅ Π±ΡΡΠΎΠΊΡΠ°ΡΠΈΡ β ΡΡΠΎ ΠΏΡΠΎΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΡΡΡ.
ΠΠ°ΡΠ΅ΠΌ: Π§ΠΈΡΠ°Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° ΠΈ Π²ΡΠ΄Π°ΡΡ Line Access Token (LAT).
Π ΠΎΠ»Ρ Π² Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅: ΠΠ³Π΅Π½Ρ ΠΎΠ±ΡΠ·Π°Π½ ΡΠ²Π½ΠΎ ΡΠ΅ΡΠΈΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π΅ΠΌΡ Π½ΡΠΆΠ½Ρ. ΠΠ΅Ρ Π»ΡΠ³ΠΊΠΎΠ³ΠΎ ΠΏΡΡΠΈ Β«ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π²ΡΡΒ».
β read({ path: "file.java" }) // ΠΠΠΠ ΠΠ©ΠΠΠ
β
read({ path: "file.java", startLine: 10, endLine: 30 }) // ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠΎΡΠ½ΠΎΡΡΡ
Π‘Π²ΡΠ·Ρ: Π’ΠΎΠΊΠ΅Π½, Π²ΠΎΠ·Π²ΡΠ°ΡΡΠ½Π½ΡΠΉ Π·Π΄Π΅ΡΡ, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½ Π΄Π»Ρ nts_edit_file. Read β Token β Edit. ΠΠ΅Π· ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠΉ.
Π£ΠΌΠ½ΡΠ΅ TIPs: ΠΡΠ²Π΅ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ workflow (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«Π’ΠΎΠΊΠ΅Π½ Π³ΠΎΡΠΎΠ² Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡΒ») ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ symbol-ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ².
ΠΠ°ΡΡΠΎΠ²ΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅ (Bulk Read): Π§ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΎΠ΄Π½ΠΈΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠΌ:
{
"bulk": [
{ "path": "UserService.java", "symbol": "createUser" },
{ "path": "UserRepository.java", "symbol": "save" },
{ "path": "User.java", "startLine": 1, "endLine": 30 }
]
}ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°ΠΉΠ» ΠΎΡΠ΄Π΅Π»ΡΠ½ Π² Π²ΡΠ²ΠΎΠ΄Π΅ ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉ TOKEN. ΠΡΠΈΠ±ΠΊΠ° Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅.
ΠΠ°ΡΠ΅ΠΌ: ΠΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΠΎΡΡΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΊΠΈ Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠ΅ΠΉ ΡΠΎΠΊΠ΅Π½Π°.
Π ΠΎΠ»Ρ Π² Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅:
- Π’ΠΎΠΊΠ΅Π½ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½ β Π΄ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π°Π³Π΅Π½Ρ ΠΏΡΠΎΡΠΈΡΠ°Π» ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅
- Diff Π² ΠΎΡΠ²Π΅ΡΠ΅ β Π°Π³Π΅Π½Ρ ΡΡΠ°Π·Ρ Π²ΠΈΠ΄ΠΈΡ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ
- ΠΡΠΎΠ²Π΅ΡΠΊΠ° CRC β Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΠΈΠ·ΠΌΠ΅Π½ΡΠ½ ΠΈΠ·Π²Π½Π΅, ΠΏΡΠ°Π²ΠΊΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΎΡΠΊΠ»ΠΎΠ½ΡΠ΅ΡΡΡ
- Π£ΠΌΠ½ΡΠ΅ TIPs β ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠ΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ Π΄Π»Ρ ΡΠΈΠΏΠΈΡΠ½ΡΡ
ΡΠΈΡΡΠ°ΡΠΈΠΉ:
- ΠΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ Π±Π΅Π·
endLineβ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρinsert_afterΠΈΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ - ΠΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ β Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΠΠΠ«Π ΡΠΎΠΊΠ΅Π½
- ΠΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°ΡΡΡΡ β ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΌΠ΅ΡΡΠ° Π²ΡΠ·ΠΎΠ²Π° ΡΠ΅ΡΠ΅Π·
nts_code_navigate - ΠΠ½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ β Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΡΡ
- ΠΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ Π±Π΅Π·
Π‘Π²ΡΠ·Ρ: ΠΠΎΡΡΠ΅Π±Π»ΡΠ΅Ρ ΡΠΎΠΊΠ΅Π½ ΠΎΡ nts_file_read, Π²ΡΠ΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΎΠΊΠ΅Π½ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΠΏΡΠ°Π²ΠΎΠΊ. Π¦Π΅ΠΏΠΎΡΠΊΠ° Π²Π»Π°Π΄Π΅Π½ΠΈΡ Π½Π΅ ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΡΡΡ.
ΠΠ°ΡΠ΅ΠΌ: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅, ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ.
Π ΠΎΠ»Ρ Π² Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅:
createΠ²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠΊΠ΅Π½ β Π½ΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΡΠ°Π·Ρ Π³ΠΎΡΠΎΠ²Ρ ΠΊ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡrename/moveΠΏΠ΅ΡΠ΅Π½ΠΎΡΡΡ ΡΠΎΠΊΠ΅Π½Ρ ΡΠ΅ΡΠ΅Π· path aliasing β ΡΠΎΠΊΠ΅Π½Ρ ΠΎΡΡΠ°ΡΡΡΡ Π²Π°Π»ΠΈΠ΄Π½ΡΠΌΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° (ΡΡΠ°Π½Π·ΠΈΡΠΈΠ²Π½ΡΠ΅ ΡΠ΅ΠΏΠΎΡΠΊΠΈA β B β CΡΠ°Π±ΠΎΡΠ°ΡΡ)deleteΠΈΠ½Π²Π°Π»ΠΈΠ΄ΠΈΡΡΠ΅Ρ ΡΠΎΠΊΠ΅Π½Ρ β Π½Π΅Π»ΡΠ·Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Β«ΠΏΡΠΈΠ·ΡΠ°ΠΊΠΎΠ²Β»
Π‘Π²ΡΠ·Ρ: Π Π°Π±ΠΎΡΠ°Π΅Ρ Ρ nts_batch_tools Π΄Π»Ρ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΠΉ ΡΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ»ΠΈΠ°ΡΡ ΠΏΡΡΠ΅ΠΉ ΡΠΎΡ
ΡΠ°Π½ΡΡΡΡΡ Π½Π° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°ΡΠΈ.
ΠΠ°ΡΠ΅ΠΌ: ΠΠΎΠΈΡΠΊ ΡΠ°ΠΉΠ»ΠΎΠ² (glob), ΠΏΠΎΠΈΡΠΊ Π² ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌ (grep), ΠΏΡΠΎΡΠΌΠΎΡΡ ΡΡΡΡΠΊΡΡΡΡ.
Π ΠΎΠ»Ρ Π² Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅: grep Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠΊΠ΅Π½Ρ Π΄Π»Ρ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ
Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ². ΠΠ³Π΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΊΠ°ΡΡ ΠΈ ΡΡΠ°Π·Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π±Π΅Π· ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π³Π° ΡΡΠ΅Π½ΠΈΡ.
grep("TODO") β Π½Π°Ρ
ΠΎΠ΄ΠΈΡ ΡΡΡΠΎΠΊΡ 47 β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ TOKEN Π΄Π»Ρ ΡΡΡΠΎΠΊ 45-50
β Π°Π³Π΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΈ 45-50 Π½Π°ΠΏΡΡΠΌΡΡ
Π£ΠΌΠ½ΡΠ΅ TIPs: ΠΠΎΡΠ»Π΅ grep ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ workflow Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡ, ΡΡΠΎ ΡΠΎΠΊΠ΅Π½Ρ Π³ΠΎΡΠΎΠ²Ρ Π΄Π»Ρ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΏΠ°ΡΡΠ΅ΡΠ½ ΠΏΠΎΡ
ΠΎΠΆ Π½Π° regex, Π½ΠΎ isRegex=false, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ Π΅Π³ΠΎ.
Π‘Π²ΡΠ·Ρ: ΠΠΎΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ. Π‘ΠΎΠΊΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ, ΡΠΎΡ ΡΠ°Π½ΡΡ ΡΠΎΠΊΠ΅Π½Π½ΡΡ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Ρ.
ΠΠ°ΡΠ΅ΠΌ: Undo, redo, ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΡ, ΠΎΡΠΊΠ°Ρ ΠΈ ΠΆΡΡΠ½Π°Π» Π·Π°Π΄Π°ΡΠΈ.
Π ΠΎΠ»Ρ Π² Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅: ΠΠΎΠ³Π΄Π° Π°Π³Π΅Π½Ρ ΠΎΡΠΈΠ±Π°Π΅ΡΡΡ, Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠΏΠΈΡΠ°Π»ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ.
checkpoint("before-risky-refactor")
β ΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
β Π΅ΡΠ»ΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ: rollback("before-risky-refactor")
β ΠΏΡΠΎΠ΅ΠΊΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ
Π‘Π²ΡΠ·Ρ: ΠΡΠΎ ΡΡΡΠ°Ρ ΠΎΠ²ΠΎΡΠ½Π°Ρ ΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅Π»Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ Π°Π³ΡΠ΅ΡΡΠΈΠ²Π½ΡΠΉ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³. ΠΠ³Π΅Π½ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΌΠ΅Π»ΡΠΌΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΎ.
ΠΠ°ΡΠ΅ΠΌ: ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΡΡ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ.
Π ΠΎΠ»Ρ Π² Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅: Π‘Π»ΠΎΠΆΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΠΏΠ΅ΡΠ½Ρ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΊΠ°ΡΡΠ²Π°ΡΡΡΡ. ΠΠΈΠΊΠ°ΠΊΠΈΡ Π½Π°ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ ΡΠ»ΠΎΠΌΠ°Π½Π½ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ.
{
"actions": [
{ "id": "svc", "tool": "nts_file_manage", "params": { "action": "create", "path": "Service.java" }},
{ "tool": "nts_edit_file", "params": { "path": "{{svc.path}}", "accessToken": "{{svc.token}}", ... }}
]
}
// ΠΡΠ»ΠΈ edit ΠΏΠ°Π΄Π°Π΅Ρ β create ΠΎΡΠΊΠ°ΡΡΠ²Π°Π΅ΡΡΡ β ΠΏΡΠΎΠ΅ΠΊΡ Π½Π΅ΡΡΠΎΠ½ΡΡΠ‘Π²ΡΠ·Ρ: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΡ {{step.token}}. Π’ΠΎΠΊΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π³Π°ΠΌΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΡΠΎ ΠΊΡΠ»ΡΠΌΠΈΠ½Π°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Ρ.
ΠΠ°ΡΠ΅ΠΌ: ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ ΠΈ Π·Π°ΠΌΠ΅Π½Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ.
Π ΠΎΠ»Ρ Π² Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅:
dryRun: trueΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ- ΠΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΡ: Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ ΠΈΠ»ΠΈ Π½ΠΈ ΠΎΠ΄ΠΈΠ½
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅ΠΊΠΏΠΎΠΈΠ½Ρ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ
Π‘Π²ΡΠ·Ρ: ΠΡΡΠΎΠΊΠΎΡΠΈΡΠΊΠΎΠ²Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΠΌΠΈ.
ΠΠ°ΡΠ΅ΠΌ: Go to definition, find references, hover info, ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
Π ΠΎΠ»Ρ Π² Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅: ΠΠ³Π΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠΎΠ΄Π° Π΄ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΅Π½ΡΡΠ΅ Π΄ΠΎΠ³Π°Π΄ΠΎΠΊ, Π±ΠΎΠ»ΡΡΠ΅ ΡΠΎΡΠ½ΠΎΡΡΠΈ.
Π‘Π²ΡΠ·Ρ: ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠΊΠ΅Π½Ρ Π΄Π»Ρ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ ΠΌΠ΅ΡΡ. ΠΠ°Π²ΠΈΠ³Π°ΡΠΈΡ β ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ β ΡΠ²Π΅ΡΠ΅Π½Π½Π°Ρ ΠΏΡΠ°Π²ΠΊΠ°.
ΠΠ°ΡΠ΅ΠΌ: ΠΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°ΡΡΡ, Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π°, ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² β Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΡΠ»ΠΎΠΊ.
Π ΠΎΠ»Ρ Π² Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅:
preview: trueΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²ΡΠ΅ Π·Π°ΡΡΠΎΠ½ΡΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ- Π‘Π΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΠΠ‘Π ΡΡΡΠ»ΠΊΠΈ, Π° Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ
- ΠΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΡ: Π²Π΅ΡΡ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ ΡΡΠΏΠ΅ΡΠ΅Π½ ΠΈΠ»ΠΈ ΠΎΡΠΌΠ΅Π½ΡΠ½ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ
- ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠΊΠ΅Π½Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΈΠ·ΠΌΠ΅Π½ΡΠ½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠΎΠΈΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠΈ
refactor β editΠ² Π±Π°ΡΡΠ°Ρ
Π‘Π²ΡΠ·Ρ: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ tree-sitter Π΄Π»Ρ ΡΠΎΡΠ½ΠΎΡΡΠΈ. ΠΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Ρ nts_batch_tools ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΡ {{step.affectedFiles[0].accessToken}}. ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½Π΅Π΅ ΡΡΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΠ°ΡΠ΅ΠΌ: ΠΠ΅Π΄ΡΡ Markdown-ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π΄Π°Ρ, ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Ρ HUD.
Π ΠΎΠ»Ρ Π² Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅: ΠΠ΅ΡΠΆΠΈΡ Π°Π³Π΅Π½ΡΠ° ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ Π·Π° ΡΠ°Π·. HUD ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ, ΡΡΠΎ Π΄Π°Π»ΡΡΠ΅.
[HUD] Plan: Auth Refactor [β2 β3] β #3: Update Login Controller
Π‘Π²ΡΠ·Ρ: ΠΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°ΡΠΏΠΎΠ»Π·Π°Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΏΠ°. ΠΠ³Π΅Π½Ρ Π²ΡΠ΅Π³Π΄Π° Π·Π½Π°Π΅Ρ ΡΠ΅ΠΊΡΡΡΡ ΡΠ΅Π»Ρ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΡΠΌΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°.
ΠΠ°ΡΠ΅ΠΌ: Git status, diff, add, commit β Π½Π΅ ΠΏΠΎΠΊΠΈΠ΄Π°Ρ NTS.
Π ΠΎΠ»Ρ Π² Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅:
git_checkpointΡΠΎΠ·Π΄Π°ΡΡ stash ΠΊΠ°ΠΊ Π°Π²Π°ΡΠΈΠΉΠ½ΡΠΉ Π±ΡΠΊΠ°ΠΏcommit_taskΠ°Π²ΡΠΎΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΠ° ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ° TODO- Π’ΠΎΠ»ΡΠΊΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (Π±Π΅Π· push/force)
Π‘Π²ΡΠ·Ρ: ΠΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Ρ ΠΆΡΡΠ½Π°Π»ΠΎΠΌ Π·Π°Π΄Π°ΡΠΈ. ΠΠΎΠΌΠΌΠΈΡΡ ΠΌΠΎΠ³ΡΡ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° Π·Π°Π²Π΅ΡΡΡΠ½Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ.
ΠΠ°ΡΠ΅ΠΌ: ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ unified diff ΠΌΠ΅ΠΆΠ΄Ρ Π»ΡΠ±ΡΠΌΠΈ Π΄Π²ΡΠΌΡ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ.
Π ΠΎΠ»Ρ Π² Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅: ΠΠ³Π΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π½ΠΎ Π²Π΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΡΠ°Π²Π½ΠΈΠ²Π°Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π΄ΠΎ/ΠΏΠΎΡΠ»Π΅.
Π‘Π²ΡΠ·Ρ: ΠΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ ΡΠ΅Π²ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² batch-ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π°.
ΠΠ°ΡΠ΅ΠΌ: ΠΠ°ΠΏΡΡΠΊ Gradle-Π·Π°Π΄Π°Ρ (build, test, check) Ρ ΠΏΠ°ΡΡΠΈΠ½Π³ΠΎΠΌ Π²ΡΠ²ΠΎΠ΄Π°.
Π ΠΎΠ»Ρ Π² Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅: ΠΠ³Π΅Π½Ρ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΈΠ΄Π±ΡΠΊ, ΡΠ»ΠΎΠΌΠ°Π»ΠΈ Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ±ΠΎΡΠΊΡ. ΠΡΠΈΠ±ΠΊΠΈ ΡΠ°ΡΠΏΠ°ΡΡΠ΅Π½Ρ ΠΈ Π³ΠΎΡΠΎΠ²Ρ ΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
Π‘Π²ΡΠ·Ρ: ΠΠ°ΠΌΡΠΊΠ°Π΅Ρ ΡΠΈΠΊΠ»: Edit β Build β Fix β Repeat.
ΠΠ°ΡΠ΅ΠΌ: ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π° Π½Π° ΡΡΡΡ ΡΡΠΎΠ²Π½ΡΡ : ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ, ΡΠ΅ΡΡΡ.
Π ΠΎΠ»Ρ Π² Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅:
syntaxβ ΠΡΡΡΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° AST ΡΠ΅ΡΠ΅Π· tree-sitter (Π±Π΅Π· ΡΠ±ΠΎΡΠΊΠΈ). ΠΠΎΠ²ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ°Π²ΠΎΠΊ.compileβ ΠΠ°ΠΏΡΡΠΊΠ°Π΅Ρgradlew build -x testΠ΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.testβ ΠΠ°ΠΏΡΡΠΊΠ°Π΅Ρgradlew testΠ΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅ΡΡΠ°ΠΌΠΈ.
Π‘Π²ΡΠ·Ρ: ΠΠΎΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠ±ΠΎΡΠΊΠΎΠΉ. ΠΠ³Π΅Π½Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π±Π΅Π· ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΡΠ±ΠΎΡΠΊΠΈ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ/ΡΠ΅ΡΡΠ°ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
ΠΠ°ΡΠ΅ΠΌ: ΠΠΎΠΌΠΏΠ°ΠΊΡΠ½Π°Ρ ΡΠ²ΠΎΠ΄ΠΊΠ° ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠΆΠ°ΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°.
Π ΠΎΠ»Ρ Π² Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅: ΠΠΎΠ³Π΄Π° Π°Π³Π΅Π½Ρ ΡΠ΅ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈΠ·-Π·Π° ΡΡΠΌΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠΌΠΏΡΠ°, ΡΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ:
- ID ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ
- ΠΡΠΎΠ³ΡΠ΅ΡΡ TODO (Π΅ΡΠ»ΠΈ Π°ΠΊΡΠΈΠ²Π΅Π½)
- ΠΠ΅Π΄Π°Π²Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
- ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΆΡΡΠ½Π°Π»Π° (5 ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ)
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ
Π‘Π²ΡΠ·Ρ: ΠΠ΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ Π°Π²Π°ΡΠΈΠΉΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠ°Ρ. ΠΠ³Π΅Π½Ρ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΡΠΏΡΠΎΡΠΈΡΡ Β«Π³Π΄Π΅ Ρ?Β» ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ.
ΠΠ°ΡΠ΅ΠΌ: ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΈΠΌΠΈ ΡΠΎΠ½ΠΎΠ²ΡΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ (ΡΠ±ΠΎΡΠΊΠΈ Gradle, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Git).
Π ΠΎΠ»Ρ Π² Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅: ΠΠ³Π΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π»ΠΎΠ³ΠΈ ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ workflow.
Π‘Π²ΡΠ·Ρ: Π Π°Π±ΠΎΡΠ°Π΅Ρ Ρ nts_gradle_task ΠΈ nts_git Π΄Π»Ρ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
ΠΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ β Π½Π΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ. ΠΠ½ΠΈ ΠΎΠ±ΡΠ°Π·ΡΡΡ Π·Π°ΠΌΠΊΠ½ΡΡΡΠΉ ΡΠΈΠΊΠ» Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Ρ:
- Task ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
- Read ΠΏΡΠΈΠ½ΡΠΆΠ΄Π°Π΅Ρ ΠΊ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΈ Π²ΡΠ΄Π°ΡΡ ΡΠΎΠΊΠ΅Π½Ρ
- Edit ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΠΊΠ΅Π½Ρ ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ
- Verify Π²Π°Π»ΠΈΠ΄ΠΈΡΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ (ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ β ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ β ΡΠ΅ΡΡΡ)
- Task ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ
- Batch ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎ
- HUD + TODO ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠΊΡΡ Π½Π° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π΄Π»ΠΈΠ½Π½ΡΡ ΡΠ΅ΡΡΠΈΠΉ
- Workspace Status Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΆΠ°ΡΠΈΡ
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΡΠΈΠ»ΠΈΠ²Π°Π΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅. ΠΠ΅Ρ Π»Π°Π·Π΅ΠΉΠΊΠΈ, ΡΡΠΎΠ±Ρ Β«ΠΏΡΠΎΡΡΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ»Π΅ΠΏΡΡΒ». ΠΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π° β Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½Π°Ρ.
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ: Java 25+ (Virtual Threads, ΡΠ»ΡΡΡΠ΅Π½Π½Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ).
Π‘ΠΎΠ±Π΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΎΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² (Gemini CLI, Claude Code, Qwen CLI, Cursor, LM Studio, Antigravity, Copilot VS Code).
./gradlew shadowJar
java -jar app/build/libs/app-all.jar --integrateΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠΎΡ Π±Π»ΠΎΠΊ Π² Π²Π°Ρ mcp-config.json:
{
"mcpServers": {
"NTS-FileSystem-MCP": {
"command": "java",
"args": [
"-jar",
"/Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠΉ/ΠΏΡΡΡ/ΠΊ/nts-mcp-fs/app/build/libs/app-all.jar"
]
}
}
}Docker ΠΈΠ·Π±Π°Π²Π»ΡΠ΅Ρ ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Java 25+ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. Π‘Π΅ΡΠ²Π΅Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅, Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠ½ΡΠΈΡΡΡΡΡΡ ΠΊΠ°ΠΊ volumes.
ΠΠ°ΠΆΠ½ΠΎ: Docker-ΡΠ΅ΠΆΠΈΠΌ ΠΈ Roots
Π Docker Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ²Π½ΠΎ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈΡ ΡΠ΅ΡΠ΅Π·
NTS_DOCKER_ROOTS. ΠΡΠΈ roots ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π»ΡΠ±ΡΠ΅ roots ΠΎΡ MCP-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΡΡΠΈ Ρ ΠΎΡΡ-ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
ΠΠ°ΡΠΈΠ°Π½Ρ Π: ΠΠΎΡΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ°Π· (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ)
docker pull ghcr.io/nefrols/nts-mcp-fs:latestΠΠ΄ΠΈΠ½ ΠΏΡΠΎΠ΅ΠΊΡ:
{
"mcpServers": {
"NTS-FileSystem-MCP": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/home/user/myproject:/mnt/project",
"-e", "NTS_DOCKER_ROOTS=/mnt/project",
"ghcr.io/nefrols/nts-mcp-fs:latest"
]
}
}
}ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²:
{
"mcpServers": {
"NTS-FileSystem-MCP": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/home/user/project1:/mnt/p1",
"-v", "/home/user/project2:/mnt/p2",
"-e", "NTS_DOCKER_ROOTS=/mnt/p1:/mnt/p2",
"ghcr.io/nefrols/nts-mcp-fs:latest"
]
}
}
}ΠΠ°ΡΠΈΠ°Π½Ρ Π: ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΡΠ±ΠΎΡΠΊΠ°
docker build -t nts-mcp-fs .
docker run -i --rm \
-v /ΠΏΡΡΡ/ΠΊ/ΠΏΡΠΎΠ΅ΠΊΡΡ:/mnt/project \
-e NTS_DOCKER_ROOTS=/mnt/project \
nts-mcp-fsΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ:
| ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
NTS_DOCKER_ROOTS |
ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°. Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΡΡΠ΅ΠΉ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΠ΅ΡΠ΅Π· Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΠ΅. ΠΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΎΡΠΊΠ°ΠΌ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ -v. ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ roots ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. |
JAVA_OPTS |
ΠΠΏΡΠΈΠΈ JVM (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: -XX:+UseZGC -Xmx512m) |
MCP_DEBUG |
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ true Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ |
MCP_LOG_FILE |
ΠΡΡΡ ΠΊ Π»ΠΎΠ³-ΡΠ°ΠΉΠ»Ρ (Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΠΈΡ stderr/stdout) |
ΠΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠ΅Π³ΠΈ ΠΎΠ±ΡΠ°Π·Π°:
| Π’Π΅Π³ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
latest |
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΉ ΡΠ΅Π»ΠΈΠ· |
1.2.3 |
ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ |
1.2 |
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠ°ΡΡ ΠΌΠΈΠ½ΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ |
edge |
ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ dev-ΡΠ±ΠΎΡΠΊΠ° (Π²Π΅ΡΠΊΠ° main) |
Built with β€οΈ by Nefrols