evot-agent 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/evot-agent.js +1 -1
- package/package.json +1 -1
- package/src/backends/claude.js +13 -8
- package/src/sync.js +4 -2
package/README.md
CHANGED
|
@@ -37,7 +37,7 @@ npx evot-agent connect <code> # 예: npx evot-agent connect ABCD2345
|
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
39
|
npm install -g evot-agent
|
|
40
|
-
evot-agent start # 기본
|
|
40
|
+
evot-agent start # 기본 1분마다 폴링
|
|
41
41
|
evot-agent install # macOS 전용: 로그인 시 자동 시작 + 백그라운드 상주
|
|
42
42
|
evot-agent uninstall # 상주 등록 해제
|
|
43
43
|
```
|
package/bin/evot-agent.js
CHANGED
|
@@ -15,7 +15,7 @@ Normal use is "start": leave it running, then ask a Vot (in chat or a routine) t
|
|
|
15
15
|
"use my computer's browser to …". evot queues the task; this daemon picks it up and
|
|
16
16
|
appends the result as a cell in the target thread.
|
|
17
17
|
|
|
18
|
-
start polling: default every
|
|
18
|
+
start polling: default every 60s (1 min). To change it use --interval,
|
|
19
19
|
or set EVOT_AGENT_POLL_SECONDS. Minimum 30s.
|
|
20
20
|
|
|
21
21
|
Backend (which model drives the browser): defaults to Claude (uses your Claude Code
|
package/package.json
CHANGED
package/src/backends/claude.js
CHANGED
|
@@ -30,14 +30,13 @@ export async function runClaudeJob(job) {
|
|
|
30
30
|
preset: "claude_code",
|
|
31
31
|
append: SYSTEM_APPEND,
|
|
32
32
|
},
|
|
33
|
-
//
|
|
34
|
-
//
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
// tools
|
|
38
|
-
//
|
|
39
|
-
|
|
40
|
-
// 이름 기준 이중 차단 — tools:[]가 이미 막지만, 상위 설정 변화에 대비해 남긴다.
|
|
33
|
+
// tools 옵션은 쓰지 않는다. SDK가 tools:[]를 `--tools ""`로 넘기는데, 이건 내장 툴만이
|
|
34
|
+
// 아니라 MCP 툴까지 전부 비운다. 그러면 Playwright가 사라진 채로 모델이 브라우저 없이
|
|
35
|
+
// 결과를 날조하고, subtype:"success"로 끝나 아래 isError 판정에도 안 걸린다
|
|
36
|
+
// (2026-08-21 실측: init tools=[], 실제 tool_use 0회, 툴 호출을 본문 텍스트로 위조).
|
|
37
|
+
// tools에 mcp__playwright 툴 이름을 명시해도 동일하게 비므로 이 옵션으론 우회가 안 된다.
|
|
38
|
+
// → 내장 툴 차단은 disallowedTools(이름 기준) 한 겹으로만 건다. allowedTools는 "확인 없이
|
|
39
|
+
// 자동 승인할 목록"이지 제한이 아니므로 차단 용도로 믿으면 안 된다.
|
|
41
40
|
disallowedTools: [
|
|
42
41
|
"Bash",
|
|
43
42
|
"Write",
|
|
@@ -57,6 +56,12 @@ export async function runClaudeJob(job) {
|
|
|
57
56
|
args: mcp.args,
|
|
58
57
|
},
|
|
59
58
|
},
|
|
59
|
+
// 여기 적은 MCP 서버만 붙인다. settingSources:[]는 계정에 연결된 claude.ai 커넥터를
|
|
60
|
+
// 막지 못해서, 이게 없으면 Google Drive 같은 커넥터의 툴(create_file·read_file_content
|
|
61
|
+
// 등)이 그대로 노출된다. 이 에이전트는 신뢰할 수 없는 웹 페이지 내용을 읽고 permissionMode가
|
|
62
|
+
// bypassPermissions이므로, 페이지에 심긴 지시문이 그 툴에 닿으면 유출·쓰기로 이어진다.
|
|
63
|
+
// disallowedTools는 내장 툴 이름만 나열하므로 커넥터 툴을 못 막는다 — 차단은 이 옵션이 한다.
|
|
64
|
+
strictMcpConfig: true,
|
|
60
65
|
// MCP 툴은 프롬프트 없이 실행되도록 자동 승인 유지.
|
|
61
66
|
allowedTools: ["mcp__playwright"],
|
|
62
67
|
},
|
package/src/sync.js
CHANGED
|
@@ -2,8 +2,10 @@ import { SUPABASE_URL, loadToken } from "./config.js";
|
|
|
2
2
|
import { describeJobFailure, runBrowseJob } from "./browse.js";
|
|
3
3
|
import { reportResult } from "./report.js";
|
|
4
4
|
|
|
5
|
-
// 폴링 주기: --interval <sec> > EVOT_AGENT_POLL_SECONDS > 기본
|
|
6
|
-
|
|
5
|
+
// 폴링 주기: --interval <sec> > EVOT_AGENT_POLL_SECONDS > 기본 60초(1분). 최소 30초.
|
|
6
|
+
// 잡 생성(루틴 발동·대화)부터 실행까지의 지연을 폴링 대기가 지배해서 600초에서 낮췄다.
|
|
7
|
+
// 더 줄여도 앞단의 cron(1분 주기)과 vot-react 추론 시간에 묻혀 체감 이득이 없다.
|
|
8
|
+
const DEFAULT_INTERVAL_SEC = 60;
|
|
7
9
|
const MIN_INTERVAL_SEC = 30;
|
|
8
10
|
|
|
9
11
|
function resolveIntervalSec(cliSec) {
|