NexusCoder / docs /TOOLS.md
AdminReal's picture
Import NexusCoder from github.com/mhieuhonda/NexusCoder
eca5751 verified
|
Raw
History Blame Contribute Delete
4.01 kB
# Tools Documentation
Nexus Coder v0.2 có 18+ tools để tương tác với môi trường.
## Safety Levels
| Level | Icon | Description |
|-------|------|-------------|
| SAFE | ✓ | Read-only, no side effects |
| MODERATE | ⚠ | Writes to local files |
| DANGEROUS | ⚡ | Executes commands, network ops |
| DESTRUCTIVE | 💀 | Can delete data, requires confirmation |
## Tools by Category
### FILE Operations
- `file_read` (✓) - Đọc file text
- `file_write` (⚠) - Ghi file (overwrite/append)
- `file_list` (✓) - Liệt kê files với glob
- `file_delete` (💀) - Xóa file/thư mục
### EXEC
- `shell_exec` (⚡) - Execute bash commands
- `python_exec` (⚡) - Execute Python code (sandboxed)
- `git_ops` (⚡) - Git commands
### WEB
- `http_request` (⚠) - HTTP GET/POST/PUT/DELETE
- `web_fetch` (✓) - Fetch webpage, extract text
- `web_search` (✓) - Search web
### CODE
- `code_search` (✓) - Regex search trong code
- `code_lint` (✓) - Lint code (ruff, flake8, pylint)
- `code_format` (⚠) - Format code (black, autopep8, isort)
- `regex_search` (✓) - Regex search trong files
### MATH
- `calculator` (✓) - Safe math expression eval
### PARSER
- `json_parse` (✓) - Parse JSON với query support
- `yaml_parse` (✓) - Parse YAML
- `csv_parse` (✓) - Parse CSV
### SYSTEM
- `datetime` (✓) - DateTime operations + timezone
### NETWORK
- `dns_lookup` (✓) - DNS lookup (A, AAAA, MX, NS, CNAME, TXT)
- `ping` (✓) - Ping host
### CRYPTO
- `hash` (✓) - Compute hash (md5, sha1, sha256, sha512, blake2)
- `encrypt` (⚡) - AES-256-GCM encrypt/decrypt
### FILE (Archive)
- `archive` (⚠) - ZIP/TAR create/extract/list
## Usage
```python
from nexus.tools import get_global_registry, ToolContext
registry = get_global_registry()
# List all tools
print(registry.list_tools())
# Execute tool
from nexus.tools.base import ToolContext
ctx = ToolContext(working_dir="/tmp")
result = registry.execute("file_read", {"path": "/etc/hostname"}, ctx)
print(result.output)
# Check safety
tool = registry.get("file_delete")
print(f"Safety: {tool.safety.value}")
```
## Audit Log
All tool calls are logged to `./logs/tool_audit.jsonl`:
```json
{
"timestamp": 1234567890.123,
"tool": "file_write",
"safety": "moderate",
"args": {"path": "/tmp/test.txt", "content": "hello"},
"working_dir": ".",
"user_id": null,
"success": true,
"return_code": 0,
"duration": 0.001
}
```
## Safety Features
1. **Confirmation required** for DANGEROUS and DESTRUCTIVE tools
2. **Dry-run mode** to preview actions without executing
3. **Pre-hooks** for rate limiting, auth checks
4. **Post-hooks** for metrics, notifications
5. **Audit log** for compliance
6. **Blocked commands** for known dangerous patterns
## Custom Tools
```python
from nexus.tools.base import Tool, ToolResult, ToolContext, ToolCategory, ToolSafety
class MyTool(Tool):
category = ToolCategory.FILE
safety = ToolSafety.SAFE
@property
def name(self) -> str:
return "my_tool"
@property
def description(self) -> str:
return "My custom tool"
@property
def parameters(self) -> dict:
return {
"type": "object",
"properties": {"input": {"type": "string"}},
"required": ["input"],
}
def execute(self, args, context):
return ToolResult(
success=True,
output=f"Processed: {args['input']}",
)
# Register
from nexus.tools import get_global_registry
get_global_registry().register(MyTool())
```
## Tool Calling via Natural Language
Agent có thể detect tool calls từ natural language:
- "read file /etc/hostname" → `file_read`
- "run ls -la" → `shell_exec`
- "search for TODO in src/" → `regex_search`
- "fetch https://example.com" → `web_fetch`
- "git status" → `git_ops`
Hoặc JSON format:
```json
{"tool": "file_read", "args": {"path": "/etc/hostname"}}
```
Or @-mention:
```
@file_read path=/etc/hostname
```