表單:可讀寫成員與回覆規範收進「額外選項」,打勾才顯示並設定
This commit is contained in:
@@ -91,9 +91,10 @@ AI 要傳檔案給你:寫進工作目錄的 `.tgbot-outbox/`,bot 回覆後自動
|
||||
4. **工作目錄**:按「📂 瀏覽…」會在這台機器桌面跳出原生資料夾視窗,選完自動帶入
|
||||
5. **模型 / 推理強度**:下拉選單,預設值自動帶你機器上該引擎的全域設定;換模型時強度選項會連動
|
||||
6. **會話模式**:各聊天室獨立 / 所有聊天室共用 / 每則訊息獨立(不保留記憶,最快)
|
||||
7. **可讀寫成員**(選填):填 Telegram username(逗號分隔),清單外的人一律以 read-only 沙盒執行,由 CLI 層硬擋;留空 = 所有人都依沙盒設定
|
||||
8. **回覆規範**(選填):每則訊息開頭附加的規則,例如「只回答本專案相關問題」「@xxx 是後端工程師,回覆用 API 契約視角」;專案本身的規範仍放工作目錄的 `AGENTS.md` / `CLAUDE.md`
|
||||
9. 勾「建立後立即啟動」→ 儲存,bot 就上線了
|
||||
7. **額外選項**(打勾才展開;取消打勾儲存會清空):
|
||||
- **可讀寫成員**:填 Telegram username(逗號分隔),清單外的人一律以 read-only 沙盒執行,由 CLI 層硬擋;留空 = 所有人都依沙盒設定
|
||||
- **回覆規範**:每則訊息開頭附加的規則,例如「只回答本專案相關問題」「@xxx 是後端工程師,回覆用 API 契約視角」;專案本身的規範仍放工作目錄的 `AGENTS.md` / `CLAUDE.md`
|
||||
8. 勾「建立後立即啟動」→ 儲存,bot 就上線了
|
||||
|
||||

|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 116 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 129 KiB After Width: | Height: | Size: 130 KiB |
@@ -255,14 +255,20 @@
|
||||
<div class="hint">workspace-write 沙盒預設禁網;要呼叫外部 API(例如生圖服務)才需要打開。目前只有 Codex 引擎有此選項</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label>可讀寫成員(Telegram username)</label>
|
||||
<input id="f-writeusers" placeholder="例:JianMiau, someone(留空 = 所有人都依沙盒設定)" autocomplete="off">
|
||||
<div class="hint">有填時,清單外的人一律以 read-only 沙盒執行(只能查詢、不能改檔或跑指令),由 CLI 層硬擋</div>
|
||||
<label class="check"><input type="checkbox" id="f-extra" onchange="toggleExtra()"> 額外選項(可讀寫成員、回覆規範)</label>
|
||||
<div class="hint">打勾才會設定;取消打勾儲存時會清空這兩項</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label>回覆規範(每則訊息開頭附加)</label>
|
||||
<textarea id="f-rules" placeholder="例:只回答與本專案相關的問題;@xxx 是後端工程師,回覆用 API 契約視角…"></textarea>
|
||||
<div class="hint">選填。適合放「專案守門」「成員身分」這類每輪都要提醒的規則;專案本身的規範請放工作目錄的 AGENTS.md / CLAUDE.md</div>
|
||||
<div id="f-extra-fields" style="display:none;border-left:2px solid #2e3345;padding-left:12px;margin-bottom:13px">
|
||||
<div class="field">
|
||||
<label>可讀寫成員(Telegram username)</label>
|
||||
<input id="f-writeusers" placeholder="例:JianMiau, someone(留空 = 所有人都依沙盒設定)" autocomplete="off">
|
||||
<div class="hint">有填時,清單外的人一律以 read-only 沙盒執行(只能查詢、不能改檔或跑指令),由 CLI 層硬擋</div>
|
||||
</div>
|
||||
<div class="field" style="margin-bottom:0">
|
||||
<label>回覆規範(每則訊息開頭附加)</label>
|
||||
<textarea id="f-rules" placeholder="例:只回答與本專案相關的問題;@xxx 是後端工程師,回覆用 API 契約視角…"></textarea>
|
||||
<div class="hint">適合放「專案守門」「成員身分」這類每輪都要提醒的規則;專案本身的規範請放工作目錄的 AGENTS.md / CLAUDE.md</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label>逾時(分鐘)</label>
|
||||
@@ -365,6 +371,12 @@ const ENGINE_UI = {
|
||||
},
|
||||
};
|
||||
function currentEngine() { return document.getElementById('f-engine').value || 'codex'; }
|
||||
// 額外選項(可讀寫成員、回覆規範):打勾才顯示;沒打勾儲存時兩項清空
|
||||
function toggleExtra(on) {
|
||||
const cb = document.getElementById('f-extra');
|
||||
if (on !== undefined) cb.checked = !!on;
|
||||
document.getElementById('f-extra-fields').style.display = cb.checked ? '' : 'none';
|
||||
}
|
||||
function engineData() { return enginesCache[currentEngine()] || { models: [], defaults: {} }; }
|
||||
function engineTag(engine) {
|
||||
const e = engine === 'claude' ? 'claude' : 'codex';
|
||||
@@ -549,6 +561,7 @@ function openCreate() {
|
||||
document.getElementById('f-network').checked = false;
|
||||
document.getElementById('f-writeusers').value = '';
|
||||
document.getElementById('f-rules').value = '';
|
||||
toggleExtra(false);
|
||||
document.getElementById('f-timeout').value = '30';
|
||||
document.getElementById('f-autostart-wrap').style.display = '';
|
||||
document.getElementById('f-autostart').checked = true;
|
||||
@@ -575,6 +588,7 @@ function openEdit(name) {
|
||||
document.getElementById('f-network').checked = !!b.networkAccess;
|
||||
document.getElementById('f-writeusers').value = (b.writeUsers || []).join(', ');
|
||||
document.getElementById('f-rules').value = b.promptRules || '';
|
||||
toggleExtra(!!((b.writeUsers && b.writeUsers.length) || b.promptRules));
|
||||
document.getElementById('f-timeout').value = b.timeoutMinutes || 30;
|
||||
document.getElementById('f-autostart-wrap').style.display = 'none';
|
||||
document.getElementById('bot-modal').classList.add('show');
|
||||
@@ -598,8 +612,8 @@ async function saveBot() {
|
||||
reasoningEffort: document.getElementById('f-effort').value,
|
||||
sessionMode: document.getElementById('f-session').value,
|
||||
networkAccess: document.getElementById('f-network').checked,
|
||||
writeUsers: document.getElementById('f-writeusers').value,
|
||||
promptRules: document.getElementById('f-rules').value,
|
||||
writeUsers: document.getElementById('f-extra').checked ? document.getElementById('f-writeusers').value : '',
|
||||
promptRules: document.getElementById('f-extra').checked ? document.getElementById('f-rules').value : '',
|
||||
timeoutMinutes: document.getElementById('f-timeout').value,
|
||||
};
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user