cluxion-agentplugin-preprocessing 0.3.1__tar.gz → 0.3.2__tar.gz
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.
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/LICENSE +26 -22
- cluxion_agentplugin_preprocessing-0.3.2/PKG-INFO +138 -0
- cluxion_agentplugin_preprocessing-0.3.2/README.md +106 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/pyproject.toml +1 -1
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_agentplugin_preprocessing/__init__.py +1 -1
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_agentplugin_preprocessing/guard_watch.py +16 -19
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_agentplugin_preprocessing/schemas.py +5 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/adapters/contract.py +8 -2
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/web/browser_bridge.py +9 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/runtime/test_contract.py +17 -0
- cluxion_agentplugin_preprocessing-0.3.1/PKG-INFO +0 -125
- cluxion_agentplugin_preprocessing-0.3.1/README.md +0 -93
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/.github/profile/README.md +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/.gitignore +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/Docs/README.md +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/adapters/claude/.claude-plugin/plugin.json +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/adapters/claude/skills/preprocess/SKILL.md +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/adapters/codex/config-snippet.toml +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/cluxion-Docs/README.md +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/cluxion-Docs/architecture.md +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/cluxion-Docs/harness-logic.md +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/cluxion-Docs/honesty-preprocessing.md +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/cluxion-Docs/install-and-operations.md +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/cluxion-Docs/security.md +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/rust/cluxion_queue/Cargo.lock +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/rust/cluxion_queue/Cargo.toml +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/rust/cluxion_queue/pyproject.toml +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/rust/cluxion_queue/src/context.rs +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/rust/cluxion_queue/src/dispatch.rs +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/rust/cluxion_queue/src/guard.rs +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/rust/cluxion_queue/src/lib.rs +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/rust/cluxion_queue/src/main.rs +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/rust/cluxion_queue/src/queue.rs +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/rust/cluxion_queue/src/types.rs +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_agentplugin_preprocessing/cli.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_agentplugin_preprocessing/hermes_config.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_agentplugin_preprocessing/plugin.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_agentplugin_preprocessing/plugin.yaml +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_agentplugin_preprocessing/runner.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/__init__.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/__main__.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/adapters/__init__.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/adapters/grok_build.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/adapters/hermes.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/adapters/spec.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/bootstrap.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/cli.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/core/__init__.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/core/clarification.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/core/context_compress.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/core/dispatch_store.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/core/harness.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/core/intent.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/core/ledger.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/core/ledger_codec.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/core/plan_codec.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/core/preprocess.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/core/types.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/core/work_queue.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/guard_daemon_host.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/models/__init__.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/models/supervisor.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/models/vllm_mlx.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/resources/__init__.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/resources/guard_bridge.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/resources/py_queue.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/resources/queue_bridge.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/resources/rust_bridge.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/src/cluxion_runtime/web/__init__.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/runtime/test_browser_bridge.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/runtime/test_clarification.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/runtime/test_cluxion_runtime_spine.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/runtime/test_context_compress.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/runtime/test_dispatch_store.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/runtime/test_guard.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/runtime/test_ledger.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/runtime/test_queue_backends.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/runtime/test_runtime_adapter_cli.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/runtime/test_rust_queue.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/runtime/test_supervisor.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/test_bootstrap.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/test_guard_watch.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/test_hermes_config.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/test_packaging_policy.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/test_plugin.py +0 -0
- {cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/tests/test_runner.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Apache License
|
|
2
2
|
Version 2.0, January 2004
|
|
3
|
-
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
4
|
|
|
5
5
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
6
6
|
|
|
@@ -73,17 +73,18 @@
|
|
|
73
73
|
3. Grant of Patent License. Subject to the terms and conditions of
|
|
74
74
|
this License, each Contributor hereby grants to You a perpetual,
|
|
75
75
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
Contribution(s)
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
76
|
+
(except as stated in this section) patent license to make, have made,
|
|
77
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
78
|
+
where such license applies only to those patent claims licensable
|
|
79
|
+
by such Contributor that are necessarily infringed by their
|
|
80
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
81
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
82
|
+
institute patent litigation against any entity (including a
|
|
83
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
84
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
85
|
+
or contributory patent infringement, then any patent licenses
|
|
86
|
+
granted to You under this License for that Work shall terminate
|
|
87
|
+
as of the date such litigation is filed.
|
|
87
88
|
|
|
88
89
|
4. Redistribution. You may reproduce and distribute copies of the
|
|
89
90
|
Work or Derivative Works thereof in any medium, with or without
|
|
@@ -130,6 +131,9 @@
|
|
|
130
131
|
any Contribution intentionally submitted for inclusion in the Work
|
|
131
132
|
by You to the Licensor shall be under the terms and conditions of
|
|
132
133
|
this License, without any additional terms or conditions.
|
|
134
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
135
|
+
the terms of any separate license agreement you may have executed
|
|
136
|
+
with Licensor regarding such Contributions.
|
|
133
137
|
|
|
134
138
|
6. Trademarks. This License does not grant permission to use the trade
|
|
135
139
|
names, trademarks, service marks, or product names of the Licensor,
|
|
@@ -182,16 +186,16 @@
|
|
|
182
186
|
same "printed page" as the copyright notice for easier
|
|
183
187
|
identification within third-party archives.
|
|
184
188
|
|
|
185
|
-
|
|
189
|
+
Copyright [yyyy] [name of copyright owner]
|
|
186
190
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
191
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
|
+
you may not use this file except in compliance with the License.
|
|
193
|
+
You may obtain a copy of the License at
|
|
190
194
|
|
|
191
|
-
|
|
195
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
192
196
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
197
|
+
Unless required by applicable law or agreed to in writing, software
|
|
198
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
199
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
200
|
+
See the License for the specific language governing permissions and
|
|
201
|
+
limitations under the License.
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: cluxion-agentplugin-preprocessing
|
|
3
|
+
Version: 0.3.2
|
|
4
|
+
Summary: Universal agent plugin for Cluxion preprocessing, honesty contracts, clarification, Rust work queue, and resource-aware harness handoff.
|
|
5
|
+
Project-URL: Homepage, https://github.com/cluxion/cluxion-Agentplugin-preprocessing
|
|
6
|
+
Project-URL: Repository, https://github.com/cluxion/cluxion-Agentplugin-preprocessing
|
|
7
|
+
Project-URL: Issues, https://github.com/cluxion/cluxion-Agentplugin-preprocessing/issues
|
|
8
|
+
Author-email: cluxion <algocean1204@users.noreply.github.com>
|
|
9
|
+
License-Expression: Apache-2.0
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: ai-agent,claude-code,cluxion,codex,hermes-agent,plugin,preprocessing
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Environment :: Plugins
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
|
+
Requires-Python: >=3.11
|
|
21
|
+
Requires-Dist: psutil>=5.9
|
|
22
|
+
Requires-Dist: pyyaml>=6.0
|
|
23
|
+
Provides-Extra: browser
|
|
24
|
+
Requires-Dist: playwright>=1.49; extra == 'browser'
|
|
25
|
+
Provides-Extra: dev
|
|
26
|
+
Requires-Dist: build>=1.2; extra == 'dev'
|
|
27
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
28
|
+
Requires-Dist: ruff>=0.8; extra == 'dev'
|
|
29
|
+
Requires-Dist: twine>=6.0; extra == 'dev'
|
|
30
|
+
Requires-Dist: wheel>=0.45; extra == 'dev'
|
|
31
|
+
Description-Content-Type: text/markdown
|
|
32
|
+
|
|
33
|
+
========= Written in Korean first, then English ==========
|
|
34
|
+
|
|
35
|
+
======== 한국어 ========
|
|
36
|
+
|
|
37
|
+
# cluxion-agentplugin-preprocessing
|
|
38
|
+
|
|
39
|
+
AI 코딩 에이전트(Hermes Agent, Claude Code, Codex)를 위한 전처리 플러그인입니다. 작업이 시작되기
|
|
40
|
+
*전에* 정리를 해 줍니다: 에이전트가 모르는 것은 모른다고 인정하게 하고, 애매한 요청은 행동하기 전에
|
|
41
|
+
사용자에게 명확히 묻게 하며, 긴 작업을 안정적으로 큐에 넣고, 폭주하는 프로세스가 기기를 다운시키지
|
|
42
|
+
못하게 막고, 대화가 너무 길어지면 자동으로 압축합니다.
|
|
43
|
+
|
|
44
|
+
## 설치
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
pip install cluxion-agentplugin-preprocessing
|
|
48
|
+
|
|
49
|
+
# 선택: 사용자 본인의 로그인된 Chrome으로 웹 검색
|
|
50
|
+
pip install 'cluxion-agentplugin-preprocessing[browser]'
|
|
51
|
+
playwright install chromium
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Hermes Agent에서 사용
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
cluxion-preprocess enable # ~/.hermes/config.yaml 에 플러그인을 추가합니다
|
|
58
|
+
# 그 다음 Hermes 재시작
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Hermes를 통해 제공되는 로컬 모델(vLLM/MLX)에서도 동일하게 동작합니다.
|
|
62
|
+
|
|
63
|
+
## 기능
|
|
64
|
+
|
|
65
|
+
활성화하면 에이전트가 아래 도구들을 얻고, 자동으로 호출합니다.
|
|
66
|
+
|
|
67
|
+
- **정직함과 명확화** — 에이전트가 추측하기 전에 먼저 묻고, 근거를 댈 수 없는 답을 지어내지 않습니다.
|
|
68
|
+
- **작업 큐** — 긴 작업을 하나의 프롬프트에 넘치게 담는 대신 추적 가능한 세그먼트로 분할합니다.
|
|
69
|
+
- **자원 가드** — 폭주 프로세스가 RAM을 모두 잡아먹지 못하게 막는 가벼운 감시기. Hermes 세션마다
|
|
70
|
+
자동으로 시작됩니다.
|
|
71
|
+
- **컨텍스트 압축** — 대화가 모델 컨텍스트의 약 70%를 넘으면, 의도와 최근 대화를 보존하며 압축합니다.
|
|
72
|
+
- **내 Chrome으로 웹 검색** — 본인의 로그인된 브라우저 세션으로 Google / Naver / Perplexity / 사내
|
|
73
|
+
페이지를 검색합니다(위의 `[browser]` extra 필요).
|
|
74
|
+
|
|
75
|
+
## 문제 해결
|
|
76
|
+
|
|
77
|
+
| 증상 | 해결 |
|
|
78
|
+
|---|---|
|
|
79
|
+
| `playwright_not_installed` | `pip install 'cluxion-agentplugin-preprocessing[browser]' && playwright install chromium` |
|
|
80
|
+
| Hermes에 도구가 안 보임 | `cluxion-preprocess enable` 실행 후 Hermes 재시작 |
|
|
81
|
+
|
|
82
|
+
## 라이선스
|
|
83
|
+
|
|
84
|
+
Apache-2.0
|
|
85
|
+
|
|
86
|
+
============ English ==========
|
|
87
|
+
|
|
88
|
+
# cluxion-agentplugin-preprocessing
|
|
89
|
+
|
|
90
|
+
A preprocessing plugin for AI coding agents (Hermes Agent, Claude Code, Codex). It tidies
|
|
91
|
+
things up *before* work starts: it makes the agent admit when it doesn't know, asks you to
|
|
92
|
+
clarify vague requests before acting, queues long tasks reliably, keeps runaway processes
|
|
93
|
+
from taking down your machine, and auto-compresses the conversation when it grows too long.
|
|
94
|
+
|
|
95
|
+
## Install
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
pip install cluxion-agentplugin-preprocessing
|
|
99
|
+
|
|
100
|
+
# optional: web search through your own logged-in Chrome
|
|
101
|
+
pip install 'cluxion-agentplugin-preprocessing[browser]'
|
|
102
|
+
playwright install chromium
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Use with Hermes Agent
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
cluxion-preprocess enable # adds the plugin to ~/.hermes/config.yaml
|
|
109
|
+
# then restart Hermes
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
The tools also work with local models (vLLM/MLX) served through Hermes.
|
|
113
|
+
|
|
114
|
+
## What you get
|
|
115
|
+
|
|
116
|
+
Once enabled, your agent gains these tools and calls them automatically:
|
|
117
|
+
|
|
118
|
+
- **Honesty & clarification** — the agent asks before guessing and won't fake an answer it
|
|
119
|
+
can't back up.
|
|
120
|
+
- **Work queue** — long tasks are split into tracked segments instead of overflowing a
|
|
121
|
+
single prompt.
|
|
122
|
+
- **Resource guard** — a lightweight watcher that stops runaway processes from eating all
|
|
123
|
+
your RAM. It starts automatically with each Hermes session.
|
|
124
|
+
- **Context compression** — shrinks the conversation once it passes ~70% of the model's
|
|
125
|
+
window, keeping your intent and recent turns.
|
|
126
|
+
- **Web search via your Chrome** — searches Google / Naver / Perplexity / internal pages
|
|
127
|
+
through your own logged-in browser session (needs the `[browser]` extra above).
|
|
128
|
+
|
|
129
|
+
## Troubleshooting
|
|
130
|
+
|
|
131
|
+
| Problem | Fix |
|
|
132
|
+
|---|---|
|
|
133
|
+
| `playwright_not_installed` | `pip install 'cluxion-agentplugin-preprocessing[browser]' && playwright install chromium` |
|
|
134
|
+
| Tools don't appear in Hermes | run `cluxion-preprocess enable`, then restart Hermes |
|
|
135
|
+
|
|
136
|
+
## License
|
|
137
|
+
|
|
138
|
+
Apache-2.0
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
========= Written in Korean first, then English ==========
|
|
2
|
+
|
|
3
|
+
======== 한국어 ========
|
|
4
|
+
|
|
5
|
+
# cluxion-agentplugin-preprocessing
|
|
6
|
+
|
|
7
|
+
AI 코딩 에이전트(Hermes Agent, Claude Code, Codex)를 위한 전처리 플러그인입니다. 작업이 시작되기
|
|
8
|
+
*전에* 정리를 해 줍니다: 에이전트가 모르는 것은 모른다고 인정하게 하고, 애매한 요청은 행동하기 전에
|
|
9
|
+
사용자에게 명확히 묻게 하며, 긴 작업을 안정적으로 큐에 넣고, 폭주하는 프로세스가 기기를 다운시키지
|
|
10
|
+
못하게 막고, 대화가 너무 길어지면 자동으로 압축합니다.
|
|
11
|
+
|
|
12
|
+
## 설치
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pip install cluxion-agentplugin-preprocessing
|
|
16
|
+
|
|
17
|
+
# 선택: 사용자 본인의 로그인된 Chrome으로 웹 검색
|
|
18
|
+
pip install 'cluxion-agentplugin-preprocessing[browser]'
|
|
19
|
+
playwright install chromium
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Hermes Agent에서 사용
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
cluxion-preprocess enable # ~/.hermes/config.yaml 에 플러그인을 추가합니다
|
|
26
|
+
# 그 다음 Hermes 재시작
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Hermes를 통해 제공되는 로컬 모델(vLLM/MLX)에서도 동일하게 동작합니다.
|
|
30
|
+
|
|
31
|
+
## 기능
|
|
32
|
+
|
|
33
|
+
활성화하면 에이전트가 아래 도구들을 얻고, 자동으로 호출합니다.
|
|
34
|
+
|
|
35
|
+
- **정직함과 명확화** — 에이전트가 추측하기 전에 먼저 묻고, 근거를 댈 수 없는 답을 지어내지 않습니다.
|
|
36
|
+
- **작업 큐** — 긴 작업을 하나의 프롬프트에 넘치게 담는 대신 추적 가능한 세그먼트로 분할합니다.
|
|
37
|
+
- **자원 가드** — 폭주 프로세스가 RAM을 모두 잡아먹지 못하게 막는 가벼운 감시기. Hermes 세션마다
|
|
38
|
+
자동으로 시작됩니다.
|
|
39
|
+
- **컨텍스트 압축** — 대화가 모델 컨텍스트의 약 70%를 넘으면, 의도와 최근 대화를 보존하며 압축합니다.
|
|
40
|
+
- **내 Chrome으로 웹 검색** — 본인의 로그인된 브라우저 세션으로 Google / Naver / Perplexity / 사내
|
|
41
|
+
페이지를 검색합니다(위의 `[browser]` extra 필요).
|
|
42
|
+
|
|
43
|
+
## 문제 해결
|
|
44
|
+
|
|
45
|
+
| 증상 | 해결 |
|
|
46
|
+
|---|---|
|
|
47
|
+
| `playwright_not_installed` | `pip install 'cluxion-agentplugin-preprocessing[browser]' && playwright install chromium` |
|
|
48
|
+
| Hermes에 도구가 안 보임 | `cluxion-preprocess enable` 실행 후 Hermes 재시작 |
|
|
49
|
+
|
|
50
|
+
## 라이선스
|
|
51
|
+
|
|
52
|
+
Apache-2.0
|
|
53
|
+
|
|
54
|
+
============ English ==========
|
|
55
|
+
|
|
56
|
+
# cluxion-agentplugin-preprocessing
|
|
57
|
+
|
|
58
|
+
A preprocessing plugin for AI coding agents (Hermes Agent, Claude Code, Codex). It tidies
|
|
59
|
+
things up *before* work starts: it makes the agent admit when it doesn't know, asks you to
|
|
60
|
+
clarify vague requests before acting, queues long tasks reliably, keeps runaway processes
|
|
61
|
+
from taking down your machine, and auto-compresses the conversation when it grows too long.
|
|
62
|
+
|
|
63
|
+
## Install
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
pip install cluxion-agentplugin-preprocessing
|
|
67
|
+
|
|
68
|
+
# optional: web search through your own logged-in Chrome
|
|
69
|
+
pip install 'cluxion-agentplugin-preprocessing[browser]'
|
|
70
|
+
playwright install chromium
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Use with Hermes Agent
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
cluxion-preprocess enable # adds the plugin to ~/.hermes/config.yaml
|
|
77
|
+
# then restart Hermes
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The tools also work with local models (vLLM/MLX) served through Hermes.
|
|
81
|
+
|
|
82
|
+
## What you get
|
|
83
|
+
|
|
84
|
+
Once enabled, your agent gains these tools and calls them automatically:
|
|
85
|
+
|
|
86
|
+
- **Honesty & clarification** — the agent asks before guessing and won't fake an answer it
|
|
87
|
+
can't back up.
|
|
88
|
+
- **Work queue** — long tasks are split into tracked segments instead of overflowing a
|
|
89
|
+
single prompt.
|
|
90
|
+
- **Resource guard** — a lightweight watcher that stops runaway processes from eating all
|
|
91
|
+
your RAM. It starts automatically with each Hermes session.
|
|
92
|
+
- **Context compression** — shrinks the conversation once it passes ~70% of the model's
|
|
93
|
+
window, keeping your intent and recent turns.
|
|
94
|
+
- **Web search via your Chrome** — searches Google / Naver / Perplexity / internal pages
|
|
95
|
+
through your own logged-in browser session (needs the `[browser]` extra above).
|
|
96
|
+
|
|
97
|
+
## Troubleshooting
|
|
98
|
+
|
|
99
|
+
| Problem | Fix |
|
|
100
|
+
|---|---|
|
|
101
|
+
| `playwright_not_installed` | `pip install 'cluxion-agentplugin-preprocessing[browser]' && playwright install chromium` |
|
|
102
|
+
| Tools don't appear in Hermes | run `cluxion-preprocess enable`, then restart Hermes |
|
|
103
|
+
|
|
104
|
+
## License
|
|
105
|
+
|
|
106
|
+
Apache-2.0
|
{cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/pyproject.toml
RENAMED
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "cluxion-agentplugin-preprocessing"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.2"
|
|
8
8
|
description = "Universal agent plugin for Cluxion preprocessing, honesty contracts, clarification, Rust work queue, and resource-aware harness handoff."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -51,23 +51,27 @@ def post_tool_call(**_: Any) -> None:
|
|
|
51
51
|
let the existing owned-only fail-closed enforcement path terminate
|
|
52
52
|
candidates.
|
|
53
53
|
"""
|
|
54
|
-
global _last_watch_at
|
|
54
|
+
global _last_warning_at, _last_watch_at
|
|
55
55
|
|
|
56
56
|
now = time.monotonic()
|
|
57
|
-
with _lock:
|
|
58
|
-
if _last_watch_at is not None and now - _last_watch_at < _watch_interval_seconds():
|
|
59
|
-
return
|
|
60
|
-
_last_watch_at = now
|
|
61
|
-
|
|
62
57
|
try:
|
|
63
|
-
|
|
58
|
+
with _lock:
|
|
59
|
+
if _last_watch_at is not None and now - _last_watch_at < _watch_interval_seconds():
|
|
60
|
+
return
|
|
61
|
+
_last_watch_at = now
|
|
62
|
+
result = guard_bridge.auto_enforce([os.getpid()], dry_run=not _auto_apply_enabled())
|
|
63
|
+
should_warn = (
|
|
64
|
+
bool(result.get("triggered", False))
|
|
65
|
+
and bool(result.get("dry_run", True))
|
|
66
|
+
and (_last_warning_at is None or now - _last_warning_at >= WARNING_INTERVAL_SECONDS)
|
|
67
|
+
)
|
|
68
|
+
if should_warn:
|
|
69
|
+
_last_warning_at = now
|
|
64
70
|
except Exception as exc:
|
|
65
71
|
_warn(f"cluxion guard watch failed: {exc}")
|
|
66
72
|
return
|
|
67
|
-
if
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
_warn_triggered(result, now)
|
|
73
|
+
if should_warn:
|
|
74
|
+
_warn_triggered(result)
|
|
71
75
|
|
|
72
76
|
|
|
73
77
|
def _autostart_enabled() -> bool:
|
|
@@ -88,14 +92,7 @@ def _watch_interval_seconds() -> float:
|
|
|
88
92
|
return DEFAULT_WATCH_INTERVAL_SECONDS
|
|
89
93
|
|
|
90
94
|
|
|
91
|
-
def _warn_triggered(result: dict[str, Any]
|
|
92
|
-
global _last_warning_at
|
|
93
|
-
|
|
94
|
-
with _lock:
|
|
95
|
-
if _last_warning_at is not None and now - _last_warning_at < WARNING_INTERVAL_SECONDS:
|
|
96
|
-
return
|
|
97
|
-
_last_warning_at = now
|
|
98
|
-
|
|
95
|
+
def _warn_triggered(result: dict[str, Any]) -> None:
|
|
99
96
|
pids = [str(entry.get("pid")) for entry in result.get("candidates", []) if isinstance(entry, dict)]
|
|
100
97
|
reasons = [str(reason) for reason in result.get("trigger_reasons", [])]
|
|
101
98
|
_warn(
|
|
@@ -53,6 +53,11 @@ PLAN_SCHEMA = {
|
|
|
53
53
|
"expected_ram_mb": {"type": "integer", "minimum": 0, "default": 0},
|
|
54
54
|
"context_tokens": {"type": "integer", "minimum": 0, "default": 0},
|
|
55
55
|
"cwd": {"type": "string", "default": ""},
|
|
56
|
+
"clarification_answers": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"default": "",
|
|
59
|
+
"description": "Answers that resolve a prior clarification gate; required to enqueue an ambiguous or large task.",
|
|
60
|
+
},
|
|
56
61
|
},
|
|
57
62
|
"required": ["prompt"],
|
|
58
63
|
},
|
|
@@ -25,7 +25,7 @@ def work_item_from_adapter_payload(payload: Mapping[str, object], *, default_sur
|
|
|
25
25
|
model_route=str(payload.get("model_route", "host/default")),
|
|
26
26
|
expected_ram_mb=max(0, int(payload.get("expected_ram_mb", 0))),
|
|
27
27
|
context_tokens=max(0, int(payload.get("context_tokens", 0))),
|
|
28
|
-
metadata=_metadata(payload.get("metadata"), payload.get("cwd")),
|
|
28
|
+
metadata=_metadata(payload.get("metadata"), payload.get("cwd"), payload.get("clarification_answers")),
|
|
29
29
|
)
|
|
30
30
|
|
|
31
31
|
|
|
@@ -70,12 +70,18 @@ def _priority(value: object) -> WorkPriority:
|
|
|
70
70
|
return WorkPriority[str(value).upper()]
|
|
71
71
|
|
|
72
72
|
|
|
73
|
-
def _metadata(value: object, cwd: object) -> dict[str, str]:
|
|
73
|
+
def _metadata(value: object, cwd: object, clarification_answers: object = None) -> dict[str, str]:
|
|
74
74
|
metadata: dict[str, str] = {}
|
|
75
75
|
if isinstance(value, dict):
|
|
76
76
|
metadata.update({str(key): str(val) for key, val in value.items()})
|
|
77
77
|
if cwd is not None and cwd != "":
|
|
78
78
|
metadata["cwd"] = str(cwd)
|
|
79
|
+
# Top-level clarification_answers is the documented way the host answers a
|
|
80
|
+
# clarification gate; without merging it here the gate stays blocked and the
|
|
81
|
+
# work queue never engages, even for very long prompts. A nested
|
|
82
|
+
# metadata.clarification_answers (if present) is not overwritten by an empty top-level value.
|
|
83
|
+
if clarification_answers is not None and str(clarification_answers) != "":
|
|
84
|
+
metadata["clarification_answers"] = str(clarification_answers)
|
|
79
85
|
return metadata
|
|
80
86
|
|
|
81
87
|
|
|
@@ -10,6 +10,7 @@ from __future__ import annotations
|
|
|
10
10
|
import atexit
|
|
11
11
|
import contextlib
|
|
12
12
|
import os
|
|
13
|
+
import signal
|
|
13
14
|
import time
|
|
14
15
|
from pathlib import Path
|
|
15
16
|
from typing import TYPE_CHECKING, Any
|
|
@@ -400,7 +401,15 @@ def _close_session() -> None:
|
|
|
400
401
|
_session["mode"] = None
|
|
401
402
|
|
|
402
403
|
|
|
404
|
+
def _handle_sigterm(signum: int, _frame: object) -> None:
|
|
405
|
+
# SIGKILL is uncatchable; SIGTERM cleanup is best-effort before exit.
|
|
406
|
+
_close_session()
|
|
407
|
+
raise SystemExit(128 + signum)
|
|
408
|
+
|
|
409
|
+
|
|
403
410
|
atexit.register(_close_session)
|
|
411
|
+
with contextlib.suppress(AttributeError, OSError, ValueError):
|
|
412
|
+
signal.signal(signal.SIGTERM, _handle_sigterm)
|
|
404
413
|
|
|
405
414
|
|
|
406
415
|
__all__ = [
|
|
@@ -50,6 +50,23 @@ def test_metadata_merges_cwd() -> None:
|
|
|
50
50
|
assert item.metadata == {"repo": "demo", "cwd": "/tmp/project"}
|
|
51
51
|
|
|
52
52
|
|
|
53
|
+
def test_top_level_clarification_answers_reaches_metadata() -> None:
|
|
54
|
+
# Regression: the adapter dropped a top-level clarification_answers field, so
|
|
55
|
+
# the clarification gate stayed blocked and the work queue never engaged even
|
|
56
|
+
# for very long prompts. It must reach WorkItem.metadata.
|
|
57
|
+
item = work_item_from_adapter_payload(
|
|
58
|
+
{"prompt": "x", "clarification_answers": "fix src/app.py in order", "cwd": "/tmp/p"},
|
|
59
|
+
default_surface=AgentSurface.HERMES,
|
|
60
|
+
)
|
|
61
|
+
assert item.metadata["clarification_answers"] == "fix src/app.py in order"
|
|
62
|
+
# An empty top-level value must not clobber a nested metadata answer.
|
|
63
|
+
nested = work_item_from_adapter_payload(
|
|
64
|
+
{"prompt": "x", "metadata": {"clarification_answers": "nested"}, "clarification_answers": ""},
|
|
65
|
+
default_surface=AgentSurface.HERMES,
|
|
66
|
+
)
|
|
67
|
+
assert nested.metadata["clarification_answers"] == "nested"
|
|
68
|
+
|
|
69
|
+
|
|
53
70
|
def test_negative_budgets_clamped_to_zero() -> None:
|
|
54
71
|
item = work_item_from_adapter_payload(
|
|
55
72
|
{"prompt": "x", "expected_ram_mb": -512, "context_tokens": -10},
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: cluxion-agentplugin-preprocessing
|
|
3
|
-
Version: 0.3.1
|
|
4
|
-
Summary: Universal agent plugin for Cluxion preprocessing, honesty contracts, clarification, Rust work queue, and resource-aware harness handoff.
|
|
5
|
-
Project-URL: Homepage, https://github.com/cluxion/cluxion-Agentplugin-preprocessing
|
|
6
|
-
Project-URL: Repository, https://github.com/cluxion/cluxion-Agentplugin-preprocessing
|
|
7
|
-
Project-URL: Issues, https://github.com/cluxion/cluxion-Agentplugin-preprocessing/issues
|
|
8
|
-
Author-email: cluxion <algocean1204@users.noreply.github.com>
|
|
9
|
-
License-Expression: Apache-2.0
|
|
10
|
-
License-File: LICENSE
|
|
11
|
-
Keywords: ai-agent,claude-code,cluxion,codex,hermes-agent,plugin,preprocessing
|
|
12
|
-
Classifier: Development Status :: 3 - Alpha
|
|
13
|
-
Classifier: Environment :: Plugins
|
|
14
|
-
Classifier: Intended Audience :: Developers
|
|
15
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
16
|
-
Classifier: Programming Language :: Python :: 3
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
|
-
Requires-Python: >=3.11
|
|
21
|
-
Requires-Dist: psutil>=5.9
|
|
22
|
-
Requires-Dist: pyyaml>=6.0
|
|
23
|
-
Provides-Extra: browser
|
|
24
|
-
Requires-Dist: playwright>=1.49; extra == 'browser'
|
|
25
|
-
Provides-Extra: dev
|
|
26
|
-
Requires-Dist: build>=1.2; extra == 'dev'
|
|
27
|
-
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
28
|
-
Requires-Dist: ruff>=0.8; extra == 'dev'
|
|
29
|
-
Requires-Dist: twine>=6.0; extra == 'dev'
|
|
30
|
-
Requires-Dist: wheel>=0.45; extra == 'dev'
|
|
31
|
-
Description-Content-Type: text/markdown
|
|
32
|
-
|
|
33
|
-
# cluxion-Agentplugin-preprocessing
|
|
34
|
-
|
|
35
|
-
범용 에이전트 **전처리 플러그인** — **Hermes, Claude Code, Codex, Grok Build**에서 동일 core로 동작합니다.
|
|
36
|
-
|
|
37
|
-
**Repository:** https://github.com/cluxion/cluxion-Agentplugin-preprocessing
|
|
38
|
-
|
|
39
|
-
## 한 줄 요약
|
|
40
|
-
|
|
41
|
-
작업 시작 전에 **방향·정직함·큐**를 정리합니다. **연결된 AI**가 `cluxion_plan` 등 도구를 호출하고, JSON 계약(`answer_policy`, `host_execution`)에 따라 응답합니다. 플러그인은 추가 LLM 호출 없이 결정론적 plan만 반환합니다.
|
|
42
|
-
|
|
43
|
-
## 범용 에이전트 + Rust-First
|
|
44
|
-
|
|
45
|
-
| 계층 | 구현 |
|
|
46
|
-
|------|------|
|
|
47
|
-
| **Rust** (`cluxion-queue`) | SQLite 작업큐, atomic dispatch |
|
|
48
|
-
| **Python** (`cluxion_runtime`, adapter) | harness plan, 전처리, CLI |
|
|
49
|
-
| **Agent adapter** | `adapters/` — Hermes plugin, Claude skill, Codex snippet |
|
|
50
|
-
|
|
51
|
-
내부 hot path는 **Rust**. Python은 등록·JSON bridge·fallback입니다.
|
|
52
|
-
|
|
53
|
-
## 이 플러그인의 역할
|
|
54
|
-
|
|
55
|
-
- **정직함**: context 부족 시 모른다고 답하도록 `answer_policy` 생성
|
|
56
|
-
- **명확화**: 의도가 애매하면 큐 진입 전 질문 (`needs_clarification`)
|
|
57
|
-
- **작업큐**: 긴 입력을 segment로 분할, checksum 보존
|
|
58
|
-
- **리소스 admission**: RAM/CPU 압력에 따른 실행 허용 (결정론적)
|
|
59
|
-
|
|
60
|
-
**모델·OAuth·provider는 host agent 소유.** Cluxion은 plan·게이트·큐 메타데이터만 반환합니다.
|
|
61
|
-
|
|
62
|
-
## 연결된 AI가 하는 일
|
|
63
|
-
|
|
64
|
-
| 단계 | 동작 |
|
|
65
|
-
|------|------|
|
|
66
|
-
| 요청 수신 | `cluxion_plan` 또는 `cluxion-runtime plan` |
|
|
67
|
-
| 명확화 필요 | `clarification.questions`로 사용자에게 질문 |
|
|
68
|
-
| queued 모드 | `cluxion_queue_next` → 처리 → `cluxion_queue_record` → `cluxion_queue_brief` |
|
|
69
|
-
| 응답 | `answer_policy.required_checks` 준수 |
|
|
70
|
-
|
|
71
|
-
## 설계 요약
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
User prompt → cluxion_plan → [clarification?] → preprocessing mode
|
|
75
|
-
→ answer_policy + host_execution
|
|
76
|
-
→ (queued) queue_next/record/brief
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
**설계 원칙**
|
|
80
|
-
|
|
81
|
-
1. **추가 AI preflight 없음** — 결정론적 plan
|
|
82
|
-
2. 짧은 일반 질문은 `simple_answer` fast path
|
|
83
|
-
3. 불확실 시 fake success 금지 — `needs_clarification`, `unknown_after_check`
|
|
84
|
-
4. **opt-in** — 사용자 동의 없이 권한 확대 없음
|
|
85
|
-
|
|
86
|
-
## 빠른 시작
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
pip install cluxion-agentplugin-preprocessing
|
|
90
|
-
cluxion-preprocess check
|
|
91
|
-
cluxion-preprocess enable # Hermes
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
cluxion-runtime plan --surface hermes --prompt "작업 설명"
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
## 도구 (`cluxion` toolset, 10 tools)
|
|
99
|
-
|
|
100
|
-
| Tool | 설명 |
|
|
101
|
-
|------|------|
|
|
102
|
-
| `cluxion_plan` | 전처리·방향·큐·리소스 계획 |
|
|
103
|
-
| `cluxion_clarify` | 명확화 질문 목록 |
|
|
104
|
-
| `cluxion_bootstrap` | 로컬 runtime 의존성 설치/업그레이드 (예: vllm-mlx) |
|
|
105
|
-
| `cluxion_serve_local` | Cluxion-managed vLLM-MLX 로컬 endpoint 준비/시작 |
|
|
106
|
-
| `cluxion_hermes_config` | 로컬 OpenAI-compatible endpoint용 Hermes provider config |
|
|
107
|
-
| `cluxion_queue_next` / `record` / `brief` | segment 큐 |
|
|
108
|
-
| `cluxion_context_compress` | context 사용률 초과 시 결정론적 압축 (pinned/recent 보존) |
|
|
109
|
-
| `cluxion_guard` | 실시간 리소스 guard (`status`/`start`/`stop`/`enforce`/`auto-enforce`) |
|
|
110
|
-
|
|
111
|
-
Hermes에서는 `on_session_start` hook이 guard daemon을 자동 시작합니다. `CLUXION_GUARD_AUTOSTART=0` 또는 `false`로 끌 수 있고, `post_tool_call` hook은 기본 30초마다 report-only `auto_enforce(dry_run=True)`를 실행합니다. 실제 적용은 `CLUXION_GUARD_AUTO_APPLY=1` 또는 `true`일 때만 켜집니다.
|
|
112
|
-
|
|
113
|
-
## 문서
|
|
114
|
-
|
|
115
|
-
- [Docs/README.md](Docs/README.md) — **처음 읽는 분** + 목차
|
|
116
|
-
- [Docs/architecture.md](Docs/architecture.md)
|
|
117
|
-
- [Docs/design.md](Docs/design.md)
|
|
118
|
-
- [Docs/installation.md](Docs/installation.md)
|
|
119
|
-
- [Docs/tools.md](Docs/tools.md)
|
|
120
|
-
- [Docs/agent-surfaces.md](Docs/agent-surfaces.md)
|
|
121
|
-
- [Docs/rust-architecture.md](Docs/rust-architecture.md)
|
|
122
|
-
|
|
123
|
-
## License
|
|
124
|
-
|
|
125
|
-
Apache-2.0
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
# cluxion-Agentplugin-preprocessing
|
|
2
|
-
|
|
3
|
-
범용 에이전트 **전처리 플러그인** — **Hermes, Claude Code, Codex, Grok Build**에서 동일 core로 동작합니다.
|
|
4
|
-
|
|
5
|
-
**Repository:** https://github.com/cluxion/cluxion-Agentplugin-preprocessing
|
|
6
|
-
|
|
7
|
-
## 한 줄 요약
|
|
8
|
-
|
|
9
|
-
작업 시작 전에 **방향·정직함·큐**를 정리합니다. **연결된 AI**가 `cluxion_plan` 등 도구를 호출하고, JSON 계약(`answer_policy`, `host_execution`)에 따라 응답합니다. 플러그인은 추가 LLM 호출 없이 결정론적 plan만 반환합니다.
|
|
10
|
-
|
|
11
|
-
## 범용 에이전트 + Rust-First
|
|
12
|
-
|
|
13
|
-
| 계층 | 구현 |
|
|
14
|
-
|------|------|
|
|
15
|
-
| **Rust** (`cluxion-queue`) | SQLite 작업큐, atomic dispatch |
|
|
16
|
-
| **Python** (`cluxion_runtime`, adapter) | harness plan, 전처리, CLI |
|
|
17
|
-
| **Agent adapter** | `adapters/` — Hermes plugin, Claude skill, Codex snippet |
|
|
18
|
-
|
|
19
|
-
내부 hot path는 **Rust**. Python은 등록·JSON bridge·fallback입니다.
|
|
20
|
-
|
|
21
|
-
## 이 플러그인의 역할
|
|
22
|
-
|
|
23
|
-
- **정직함**: context 부족 시 모른다고 답하도록 `answer_policy` 생성
|
|
24
|
-
- **명확화**: 의도가 애매하면 큐 진입 전 질문 (`needs_clarification`)
|
|
25
|
-
- **작업큐**: 긴 입력을 segment로 분할, checksum 보존
|
|
26
|
-
- **리소스 admission**: RAM/CPU 압력에 따른 실행 허용 (결정론적)
|
|
27
|
-
|
|
28
|
-
**모델·OAuth·provider는 host agent 소유.** Cluxion은 plan·게이트·큐 메타데이터만 반환합니다.
|
|
29
|
-
|
|
30
|
-
## 연결된 AI가 하는 일
|
|
31
|
-
|
|
32
|
-
| 단계 | 동작 |
|
|
33
|
-
|------|------|
|
|
34
|
-
| 요청 수신 | `cluxion_plan` 또는 `cluxion-runtime plan` |
|
|
35
|
-
| 명확화 필요 | `clarification.questions`로 사용자에게 질문 |
|
|
36
|
-
| queued 모드 | `cluxion_queue_next` → 처리 → `cluxion_queue_record` → `cluxion_queue_brief` |
|
|
37
|
-
| 응답 | `answer_policy.required_checks` 준수 |
|
|
38
|
-
|
|
39
|
-
## 설계 요약
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
User prompt → cluxion_plan → [clarification?] → preprocessing mode
|
|
43
|
-
→ answer_policy + host_execution
|
|
44
|
-
→ (queued) queue_next/record/brief
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
**설계 원칙**
|
|
48
|
-
|
|
49
|
-
1. **추가 AI preflight 없음** — 결정론적 plan
|
|
50
|
-
2. 짧은 일반 질문은 `simple_answer` fast path
|
|
51
|
-
3. 불확실 시 fake success 금지 — `needs_clarification`, `unknown_after_check`
|
|
52
|
-
4. **opt-in** — 사용자 동의 없이 권한 확대 없음
|
|
53
|
-
|
|
54
|
-
## 빠른 시작
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
pip install cluxion-agentplugin-preprocessing
|
|
58
|
-
cluxion-preprocess check
|
|
59
|
-
cluxion-preprocess enable # Hermes
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
cluxion-runtime plan --surface hermes --prompt "작업 설명"
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
## 도구 (`cluxion` toolset, 10 tools)
|
|
67
|
-
|
|
68
|
-
| Tool | 설명 |
|
|
69
|
-
|------|------|
|
|
70
|
-
| `cluxion_plan` | 전처리·방향·큐·리소스 계획 |
|
|
71
|
-
| `cluxion_clarify` | 명확화 질문 목록 |
|
|
72
|
-
| `cluxion_bootstrap` | 로컬 runtime 의존성 설치/업그레이드 (예: vllm-mlx) |
|
|
73
|
-
| `cluxion_serve_local` | Cluxion-managed vLLM-MLX 로컬 endpoint 준비/시작 |
|
|
74
|
-
| `cluxion_hermes_config` | 로컬 OpenAI-compatible endpoint용 Hermes provider config |
|
|
75
|
-
| `cluxion_queue_next` / `record` / `brief` | segment 큐 |
|
|
76
|
-
| `cluxion_context_compress` | context 사용률 초과 시 결정론적 압축 (pinned/recent 보존) |
|
|
77
|
-
| `cluxion_guard` | 실시간 리소스 guard (`status`/`start`/`stop`/`enforce`/`auto-enforce`) |
|
|
78
|
-
|
|
79
|
-
Hermes에서는 `on_session_start` hook이 guard daemon을 자동 시작합니다. `CLUXION_GUARD_AUTOSTART=0` 또는 `false`로 끌 수 있고, `post_tool_call` hook은 기본 30초마다 report-only `auto_enforce(dry_run=True)`를 실행합니다. 실제 적용은 `CLUXION_GUARD_AUTO_APPLY=1` 또는 `true`일 때만 켜집니다.
|
|
80
|
-
|
|
81
|
-
## 문서
|
|
82
|
-
|
|
83
|
-
- [Docs/README.md](Docs/README.md) — **처음 읽는 분** + 목차
|
|
84
|
-
- [Docs/architecture.md](Docs/architecture.md)
|
|
85
|
-
- [Docs/design.md](Docs/design.md)
|
|
86
|
-
- [Docs/installation.md](Docs/installation.md)
|
|
87
|
-
- [Docs/tools.md](Docs/tools.md)
|
|
88
|
-
- [Docs/agent-surfaces.md](Docs/agent-surfaces.md)
|
|
89
|
-
- [Docs/rust-architecture.md](Docs/rust-architecture.md)
|
|
90
|
-
|
|
91
|
-
## License
|
|
92
|
-
|
|
93
|
-
Apache-2.0
|
|
File without changes
|
{cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/.gitignore
RENAMED
|
File without changes
|
{cluxion_agentplugin_preprocessing-0.3.1 → cluxion_agentplugin_preprocessing-0.3.2}/Docs/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|