Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,6 @@ __pycache__/
.worktrees/
/release-artifacts/
/tests/
/.reverse-skill-proxy/
# Local exported runtime settings
/config.json
16 changes: 16 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Reverse-Skill Proxy For GuJumpgate

This workspace includes an optional Vietnamese reverse-skill proxy bundle for CTF / reverse / exploit tasks.

## Startup contract

- When the task is CTF, reverse engineering, binary exploitation, web/API security, prompt injection, mobile analysis, cloud/container drift, or Windows/AD pivoting, read `.reverse-skill-proxy/ROUTER.vi.md` first.
- Start with the narrowest matching route instead of loading unrelated skill families.
- If challenge type is still unclear, start with `ctf-sandbox-orchestrator` and let it route you.
- If the bundle or route is missing, fall back to the default workflow without blocking the rest of the task.

## Local safety expectations

- Prefer passive inspection first.
- Do not disrupt already-running local services, browser sessions, or extension state unless explicitly asked.
- Keep updates short: outcome -> evidence -> verification -> next step.
34 changes: 34 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,40 @@

![开始运行扩展流程](docs/images/github-readme-1779194981001.png)

## Reverse-skill tiếng Việt cho contributor

Nếu bạn xử lý các tác vụ như CTF / reverse / web security trong repo này, bạn có thể bật lớp reverse-skill tiếng Việt tùy chọn. Phần tích hợp này **không sửa luồng runtime của extension**; nó chỉ tạo thêm một bundle local để agent/Codex đọc và route task chính xác hơn.

### Bật nhanh trong 30 giây

```bash
python reverse_skill_proxy.py --bundle-dir .reverse-skill-proxy --workspace-root .
```

Sau khi chạy xong, repo sẽ có:

- `.reverse-skill-proxy/ROUTER.vi.md`
- `.reverse-skill-proxy/MANIFEST.json`
- `AGENTS.md`

### Khi nào nên dùng

- Phân tích CTF / reverse / pwn trong workspace này
- Kiểm tra web / API security
- Xử lý prompt injection / LLM security / cloud drift
- Muốn agent đọc router tiếng Việt trước khi chọn skill family hẹp hơn

### Cơ chế fallback

- Nếu máy chưa có `~/.hermes-shop/skills/reverse-skill`
- Hoặc chưa có `~/.hermes-shop/skills/ctf-sandbox-orchestrator`

Script vẫn tạo router và manifest; nó chỉ ghi lại các nguồn còn thiếu trong `MANIFEST.json`, không chặn phần việc còn lại.

Xem thêm:
- [`docs/reverse-skill-vi-integration.md`](docs/reverse-skill-vi-integration.md)
- [`docs/reverse-skill-contributor-quickstart.md`](docs/reverse-skill-contributor-quickstart.md)

## 版权与来源说明

本项目基于开源项目 [QLHazyCoder/FlowPilot](https://github.com/QLHazyCoder/FlowPilot) 进行修改、移植与二次开发,其部分早期代码与 [whwh1233/StepFlow-Duck](https://github.com/whwh1233/StepFlow-Duck) 具有共同历史。
Expand Down
6 changes: 3 additions & 3 deletions background/auto-run-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@
if (typeof runAutoSequenceFromNode === 'function') {
return runAutoSequenceFromNode(startNodeId, context);
}
throw new Error('自动运行节点执行器未接入。');
throw new Error('Chưa tích hợp bộ thực thi node cho chế độ chạy tự động.');
}

function createAutoRunRoundSummary(round) {
Expand Down Expand Up @@ -268,7 +268,7 @@
const failedRounds = summaries.filter((item) => item.status === 'failed');
const pendingRounds = summaries.filter((item) => item.status === 'pending');

await addLog('=== 自动运行汇总 ===', failedRounds.length ? 'warn' : 'ok');
await addLog('=== Tổng kết chạy tự động ===', failedRounds.length ? 'warn' : 'ok');
await addLog(
`总轮数:${totalRuns};成功:${successRounds.length};失败:${failedRounds.length};未完成:${pendingRounds.length}`,
failedRounds.length ? 'warn' : 'ok'
Expand Down Expand Up @@ -442,7 +442,7 @@
async function autoRunLoop(totalRuns, options = {}) {
let currentRuntime = runtime.get();
if (currentRuntime.autoRunActive) {
await addLog('自动运行已在进行中', 'warn');
await addLog('Chạy tự động đang diễn ra', 'warn');
return;
}

Expand Down
6 changes: 3 additions & 3 deletions background/ip-proxy-core.js
Original file line number Diff line number Diff line change
Expand Up @@ -1141,9 +1141,9 @@ function getAccountListParseFailureHint(state = {}, provider = DEFAULT_IP_PROXY_
return '';
}
if (normalizedProvider === '711proxy') {
return '账号列表已填写,但未解析出有效条目。请按每行 host:port:username:password 填写。';
return 'Đã điền danh sách tài khoản nhưng không phân tích được mục hợp lệ nào. Hãy điền mỗi dòng theo định dạng host:port:username:password.';
}
return '账号列表已填写,但未解析出有效条目。请检查列表格式。';
return 'Đã điền danh sách tài khoản nhưng không phân tích được mục hợp lệ nào. Hãy kiểm tra lại định dạng danh sách.';
}

function resolveIpProxyPoolTargetCountForMode(state = {}, mode = normalizeIpProxyMode(state?.ipProxyMode)) {
Expand All @@ -1170,7 +1170,7 @@ function buildProxyPoolSummary(pool = [], preferredIndex = 0) {
count: 0,
index: 0,
current: null,
display: '暂无可用代理',
display: 'Chưa có proxy khả dụng',
};
}
const index = normalizeIpProxyCurrentIndex(preferredIndex, 0) % normalizedPool.length;
Expand Down
2 changes: 1 addition & 1 deletion background/message-router.js
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@
: Boolean(signupTabId);

if (!signupTabId || !signupTabAlive) {
throw new Error('手动执行步骤 4 前,请先执行步骤 1 或步骤 2,确保认证页仍然打开并停留在验证码页。');
throw new Error('Trước khi chạy thủ công bước 4, hãy chạy bước 1 hoặc bước 2 trước để đảm bảo trang xác thực vẫn đang mở và đang dừng ở trang mã xác minh.');
}
}

Expand Down
Loading