duclaw-cli 1.8.41 → 1.8.43
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/dist/bundle.js +194 -175
- package/dist/main.js +1 -1
- package/dist/worker-main.js +1 -1
- package/package.json +1 -1
package/dist/bundle.js
CHANGED
|
@@ -30242,7 +30242,7 @@ function printHelp() {
|
|
|
30242
30242
|
`);
|
|
30243
30243
|
}
|
|
30244
30244
|
function printVersion() {
|
|
30245
|
-
console.log(`duclaw-cli v${true ? "1.8.
|
|
30245
|
+
console.log(`duclaw-cli v${true ? "1.8.43" : "unknown"}`);
|
|
30246
30246
|
}
|
|
30247
30247
|
function getDuclawTemplate() {
|
|
30248
30248
|
return {
|
|
@@ -32629,7 +32629,7 @@ var chokidar_default = { watch, FSWatcher };
|
|
|
32629
32629
|
var import_node_cron = __toESM(require_node_cron());
|
|
32630
32630
|
|
|
32631
32631
|
// src/agent/createAgent.ts
|
|
32632
|
-
var
|
|
32632
|
+
var import_node_crypto13 = require("node:crypto");
|
|
32633
32633
|
var import_node_fs7 = require("node:fs");
|
|
32634
32634
|
|
|
32635
32635
|
// src/background/BackgroundManager.ts
|
|
@@ -41803,11 +41803,9 @@ var renderAgentEventReminder = (events) => {
|
|
|
41803
41803
|
const hasCeoFollowup = events.some((event) => event.type === "ceo.followup_required");
|
|
41804
41804
|
const ceoFollowupInstruction = hasCeoFollowup ? [
|
|
41805
41805
|
``,
|
|
41806
|
-
|
|
41807
|
-
|
|
41808
|
-
|
|
41809
|
-
`- \u4F60\u5FC5\u987B\u8BFB\u53D6 summary/contentPreview\uFF0C\u76F4\u63A5\u8C03\u7528 send_message \u5411 Boss/User \u6C47\u62A5\u7ED3\u679C\u3002`,
|
|
41810
|
-
`- \u4E0D\u8981\u53EA\u8BF4\u201C\u6682\u65E0\u56DE\u4FE1/\u8FD8\u5728\u6267\u884C/\u7A0D\u540E\u540C\u6B65\u201D\uFF0C\u9664\u975E summary \u660E\u786E\u8BF4\u660E\u4ECD\u5728\u7B49\u5F85\u6216\u5931\u8D25\u3002`
|
|
41806
|
+
`\u5176\u4E2D type=ceo.followup_required \u7684\u4E8B\u4EF6\uFF0C\u662F\u56E2\u961F\u5DF2\u7ECF\u628A\u7ED3\u679C\u56DE\u5230\u4E86\u4F60\u8FD9\u91CC\u2014\u2014\u8001\u677F\u8FD8\u5728\u7B49\u4F60\u628A\u8FD9\u4E9B\u7ED3\u679C\u8F6C\u8FBE\u7ED9\u4ED6\u3002`,
|
|
41807
|
+
`\u8BFB\u4E00\u904D\uFF0C\u7528\u4F60\u81EA\u5DF1\u7684\u8BDD\u7ED9\u8001\u677F\u6C47\u62A5\u4E00\u6B21\uFF1A\u6709\u591A\u6761\u5C31\u5408\u5E76\u6210\u4E00\u6761\u8BF4\u6E05\u695A\uFF0C\u522B\u4E00\u6761\u4E8B\u4EF6\u56DE\u4E00\u53E5\u3001\u628A\u540C\u4E00\u4EF6\u4E8B\u91CD\u590D\u53D1\u7ED9\u8001\u677F\u3002`,
|
|
41808
|
+
`\u5982\u679C\u7ED3\u679C\u8BF4\u660E\u4E8B\u60C5\u8FD8\u6CA1\u505A\u5B8C\u6216\u5361\u4F4F\u4E86\uFF0C\u5C31\u5982\u5B9E\u8FD9\u4E48\u8BB2\uFF0C\u800C\u4E0D\u662F\u542B\u7CCA\u5730\u201C\u7A0D\u540E\u540C\u6B65\u201D\u3002`
|
|
41811
41809
|
].join("\n") : "";
|
|
41812
41810
|
return `<system-reminder>
|
|
41813
41811
|
\u672C\u8F6E\u6709 ${events.length} \u6761\u5185\u90E8\u4E8B\u4EF6\u53EF\u7528\uFF1A
|
|
@@ -43156,13 +43154,13 @@ var checkDepartmentReplies = {
|
|
|
43156
43154
|
}
|
|
43157
43155
|
if (msgs.length === 0) {
|
|
43158
43156
|
return [
|
|
43159
|
-
`[checkDepartmentReplies] \
|
|
43157
|
+
`[checkDepartmentReplies] \u56E2\u961F\u8FD9\u4F1A\u513F\u8FD8\u6CA1\u56DE\u4FE1\uFF0C\u591A\u534A\u662F\u8D1F\u8D23\u4EBA\u4ECD\u5728\u5904\u7406\uFF0C\u8FC7\u4F1A\u513F\u518D\u6765\u770B\u3002`,
|
|
43160
43158
|
``,
|
|
43161
|
-
`\
|
|
43162
|
-
`- \u8FD9\u4E0D\
|
|
43163
|
-
`- \
|
|
43164
|
-
`- \
|
|
43165
|
-
`- \
|
|
43159
|
+
`\u51E0\u53E5\u63D0\u9192\uFF1A`,
|
|
43160
|
+
`- \u8FD9\u4E0D\u4EE3\u8868\u8981\u4F60\u4EB2\u81EA\u4E0B\u573A read/bash/\u6D4B\u8BD5/\u6539\u4EE3\u7801\u2014\u2014\u56E2\u961F\u6CA1\u56DE\uFF0C\u4E0D\u662F\u4F60\u8BE5\u63A5\u624B\u7684\u4FE1\u53F7\u3002`,
|
|
43161
|
+
`- \u8001\u677F\u8981\u662F\u6B63\u7B49\u7740\uFF0C\u5148\u7528 send_message \u5982\u5B9E\u8DDF\u4ED6\u8BF4\u4E00\u53E5\u201C\u8D1F\u8D23\u4EBA\u8FD8\u5728\u5904\u7406\uFF0C\u6211\u62FF\u5230\u7ED3\u679C\u5C31\u540C\u6B65\u201D\u3002`,
|
|
43162
|
+
`- \u5DF2\u7ECF\u7B49\u4E86\u4E00\u9635\uFF0C\u5C31\u7528 mailbox_followup \u6216 department_communicate \u53BB\u50AC\u5BF9\u5E94 Department Head\uFF0C\u95EE\u95EE\u771F\u5B9E\u8FDB\u5C55\u3001\u5361\u5728\u54EA\u3001\u5927\u6982\u4EC0\u4E48\u65F6\u5019\u597D\u3002`,
|
|
43163
|
+
`- \u522B\u5728\u8FD9\u4E00\u8F6E\u91CC\u53CD\u590D\u7A7A\u67E5 check_department_replies\uFF1B\u7B49\u56E2\u961F\u56DE\u4FE1\u3001\u8001\u677F\u8FFD\u95EE\u6216\u50AC\u529E\u6709\u4E86\u56DE\u97F3\uFF0C\u518D\u6765\u770B\u3002`
|
|
43166
43164
|
].join("\n");
|
|
43167
43165
|
}
|
|
43168
43166
|
const updateStmt = db3.prepare(`UPDATE mailbox SET status = 'read' WHERE id = ?`);
|
|
@@ -45641,6 +45639,46 @@ var microCompactMessages = (messages, config2) => {
|
|
|
45641
45639
|
};
|
|
45642
45640
|
};
|
|
45643
45641
|
|
|
45642
|
+
// src/agent/companyValues.ts
|
|
45643
|
+
var COMPANY_VALUES_PROMPT = `<\u516C\u53F8\u5171\u540C\u4FE1\u5FF5>
|
|
45644
|
+
\u4F60\u662F\u8FD9\u5BB6 AI \u516C\u53F8\u7684\u4E00\u5458\u3002\u65E0\u8BBA\u804C\u4F4D\u9AD8\u4F4E\uFF0C\u516C\u53F8\u91CC\u6BCF\u4E2A\u4EBA\u90FD\u4FE1\u5949\u56DB\u4EF6\u4E8B\uFF1A
|
|
45645
|
+
1. \u8BDA\u5B9E\uFF1A\u4F60\u53EA\u8BF4\u4F60\u6838\u5B9E\u8FC7\u7684\u4E8B\u3002\u4E0D\u786E\u5B9A\u65F6\uFF0C\u4F60\u4F1A\u53BB\u67E5\u3001\u53BB\u95EE\uFF0C\u6216\u5982\u5B9E\u8BF4"\u6211\u8FD8\u4E0D\u786E\u5B9A\uFF0C\u6B63\u5728\u786E\u8BA4"\uFF0C\u7EDD\u4E0D\u51ED\u5370\u8C61\u7F16\u9020\u8FDB\u5C55\u6216\u7ED3\u679C\u3002
|
|
45646
|
+
2. \u62C5\u8D23\uFF1A\u8C01\u6765\u95EE\u4F60\u3001\u8C01\u628A\u4E8B\u4EA4\u7ED9\u4F60\uFF0C\u4F60\u5C31\u6B20\u4ED6\u4E00\u4E2A\u4EA4\u4EE3\u3002\u5728\u4F60\u628A\u6838\u5B9E\u8FC7\u7684\u771F\u5B9E\u7ED3\u8BBA\u4EA4\u56DE\u5230\u95EE\u4F60\u7684\u4EBA\u624B\u4E0A\u4E4B\u524D\uFF0C\u8FD9\u4EF6\u4E8B\u5BF9\u4F60\u90FD\u6CA1\u7B97\u5B8C\u3002
|
|
45647
|
+
3. \u5404\u53F8\u5176\u804C\uFF1A\u4F60\u6E05\u695A\u81EA\u5DF1\u7684\u4F4D\u7F6E\u2014\u2014\u505A\u4F60\u8BE5\u505A\u7684\uFF0C\u628A\u522B\u4EBA\u66F4\u64C5\u957F\u7684\u4E8B\u4EA4\u7ED9\u5BF9\u7684\u4EBA\uFF0C\u800C\u4E0D\u662F\u4EC0\u4E48\u90FD\u81EA\u5DF1\u62A2\u7740\u505A\u3002
|
|
45648
|
+
4. \u5224\u65AD\u9AD8\u4E8E\u6D41\u7A0B\uFF1A\u4EE5\u4E0A\u662F\u4F60\u505A\u4E8B\u7684\u672C\u5FC3\uFF0C\u4E0D\u662F\u8981\u4F60\u6B7B\u8BB0\u6B65\u9AA4\u3002\u5177\u4F53\u600E\u4E48\u505A\uFF0C\u4F60\u50CF\u4E00\u4E2A\u6709\u7ECF\u9A8C\u7684\u4EBA\u90A3\u6837\u81EA\u5DF1\u62FF\u634F\uFF1B\u5076\u5C14\u5224\u65AD\u4E0D\u5B8C\u7F8E\u6CA1\u5173\u7CFB\uFF0C\u50CF\u4EBA\u4E00\u6837\u9760\u8C31\u6BD4\u673A\u68B0\u5B88\u89C4\u66F4\u91CD\u8981\u3002
|
|
45649
|
+
</\u516C\u53F8\u5171\u540C\u4FE1\u5FF5>`;
|
|
45650
|
+
|
|
45651
|
+
// src/agent/outboundDedup.ts
|
|
45652
|
+
var import_node_crypto12 = require("node:crypto");
|
|
45653
|
+
var DEFAULT_WINDOW_MS = 15e3;
|
|
45654
|
+
var recentSends = /* @__PURE__ */ new Map();
|
|
45655
|
+
var lastSweepAt = 0;
|
|
45656
|
+
var normalize3 = (text2) => text2.replace(/\s+/g, " ").trim();
|
|
45657
|
+
var keyFor = (userId, normalized) => {
|
|
45658
|
+
const hash = (0, import_node_crypto12.createHash)("sha1").update(normalized).digest("hex");
|
|
45659
|
+
return `${userId}::${hash}`;
|
|
45660
|
+
};
|
|
45661
|
+
var sweep = (now, windowMs) => {
|
|
45662
|
+
if (now - lastSweepAt < windowMs) return;
|
|
45663
|
+
lastSweepAt = now;
|
|
45664
|
+
for (const [k, ts] of recentSends) {
|
|
45665
|
+
if (now - ts > windowMs) recentSends.delete(k);
|
|
45666
|
+
}
|
|
45667
|
+
};
|
|
45668
|
+
var claimOutboundSend = (userId, text2, windowMs = DEFAULT_WINDOW_MS) => {
|
|
45669
|
+
const normalized = normalize3(text2);
|
|
45670
|
+
if (!normalized) return true;
|
|
45671
|
+
const now = Date.now();
|
|
45672
|
+
sweep(now, windowMs);
|
|
45673
|
+
const key = keyFor(userId, normalized);
|
|
45674
|
+
const last = recentSends.get(key);
|
|
45675
|
+
if (last !== void 0 && now - last < windowMs) {
|
|
45676
|
+
return false;
|
|
45677
|
+
}
|
|
45678
|
+
recentSends.set(key, now);
|
|
45679
|
+
return true;
|
|
45680
|
+
};
|
|
45681
|
+
|
|
45644
45682
|
// src/agent/createAgent.ts
|
|
45645
45683
|
var DEFAULT_WORKSPACE_PATH = getDuclawWorkspaceDir();
|
|
45646
45684
|
var assistantMessageFromResponse = (response) => ({
|
|
@@ -45655,7 +45693,7 @@ var isAbortError2 = (error) => {
|
|
|
45655
45693
|
return error.name === "AbortError" || error.message.includes("aborted") || error.message.includes("AbortError");
|
|
45656
45694
|
};
|
|
45657
45695
|
var llmRequestIdForTurn = (request, messages, system, tools) => {
|
|
45658
|
-
const hash = (0,
|
|
45696
|
+
const hash = (0, import_node_crypto13.createHash)("sha256").update(request.requestId).update("\0").update(system).update("\0").update(JSON.stringify(messages)).update("\0").update(JSON.stringify(tools.map((tool) => tool.name).sort())).digest("hex").slice(0, 40);
|
|
45659
45697
|
return `dreq_${hash}`;
|
|
45660
45698
|
};
|
|
45661
45699
|
var getDefaultAgentConfig = (tools, systemPrompt) => {
|
|
@@ -45664,7 +45702,7 @@ var getDefaultAgentConfig = (tools, systemPrompt) => {
|
|
|
45664
45702
|
let system = ``;
|
|
45665
45703
|
if (!systemPrompt) {
|
|
45666
45704
|
system = `
|
|
45667
|
-
|
|
45705
|
+
${COMPANY_VALUES_PROMPT}
|
|
45668
45706
|
|
|
45669
45707
|
<Professional objectivity>
|
|
45670
45708
|
Prioritize technical accuracy and truthfulness over validating the user's beliefs. Focus on facts and problem-solving, providing direct, objective technical info without any unnecessary superlatives, praise, or emotional validation. It is best for the user if Claude honestly applies the same rigorous standards to all ideas and disagrees when necessary, even if it may not be what the user wants to hear. Objective guidance and respectful correction are more valuable than false agreement. Whenever there is uncertainty, it's best to investigate to find the truth first rather than instinctively confirming the user's beliefs. Avoid using over-the-top validation or excessive praise when responding to users such as "You're absolutely right" or similar phrases.
|
|
@@ -45695,58 +45733,21 @@ The user will primarily request you perform software engineering tasks. This inc
|
|
|
45695
45733
|
- \u5982\u679C\u5386\u53F2\u4E2D\u51FA\u73B0 <department-agent-reply ... owner_mailbox_id="...">\uFF0C\u628A\u8BE5\u6210\u5458\u89C6\u4E3A\u5BF9\u5E94\u4EA7\u51FA/\u5B9E\u73B0\u7EBF\u7A0B\u7684\u8D23\u4EFB\u4EBA\uFF1B\u5F53\u7528\u6237\u968F\u540E\u63D0\u51FA bug\u3001\u4FEE\u6539\u3001\u8FD4\u5DE5\u3001\u6253\u4E0D\u5F00\u3001\u518D\u4F18\u5316\u7B49\u53CD\u9988\u65F6\uFF0C\u4F18\u5148\u6CBF\u8BE5 reply \u7684 mailbox \u7EBF\u7A0B\u7EE7\u7EED\u59D4\u6D3E\u7ED9\u539F\u8D23\u4EFB\u4EBA\uFF0C\u800C\u4E0D\u662F\u81EA\u5DF1\u63A5\u624B\u5B9E\u73B0\u3002
|
|
45696
45734
|
</Doing tasks>
|
|
45697
45735
|
|
|
45698
|
-
|
|
45699
|
-
|
|
45700
|
-
|
|
45701
|
-
|
|
45702
|
-
|
|
45703
|
-
\u5BF9\
|
|
45704
|
-
|
|
45705
|
-
|
|
45706
|
-
|
|
45707
|
-
|
|
45708
|
-
|
|
45709
|
-
|
|
45710
|
-
|
|
45711
|
-
|
|
45712
|
-
|
|
45713
|
-
## \u59D4\u6D3E\u6D41\u7A0B
|
|
45714
|
-
1. \u590D\u6742\u4EFB\u52A1\u5148\u8C03\u7528 department_list \u67E5\u770B\u5F53\u524D\u6709\u54EA\u4E9B\u90E8\u95E8
|
|
45715
|
-
2. \u5982\u679C\u5B58\u5728\u804C\u8D23\u5339\u914D\u7684\u90E8\u95E8\uFF0C\u628A\u4EFB\u52A1\u53D1\u9001\u7ED9\u8BE5\u90E8\u95E8\u7684 Department Head
|
|
45716
|
-
3. \u5982\u679C\u4E0D\u5B58\u5728\u804C\u8D23\u5339\u914D\u7684\u90E8\u95E8\uFF0C\u5148\u521B\u5EFA\u76EE\u6807\uFF08goal_create\uFF09\uFF0C\u518D\u521B\u5EFA\u90E8\u95E8\uFF08department_create\uFF09
|
|
45717
|
-
4. \u65B0\u90E8\u95E8\u521B\u5EFA\u540E\uFF0C\u5FC5\u987B\u5148\u521B\u5EFA\u8BE5\u90E8\u95E8\u7684 Department Head\uFF08department_member_create\uFF0Crole=department_head\uFF09
|
|
45718
|
-
5. \u521B\u5EFA Department Head \u65F6\uFF0CfocusOn \u53EA\u5199\u957F\u671F\u5C97\u4F4D\u804C\u8D23\u3001\u90E8\u95E8\u8FB9\u754C\u548C\u7BA1\u7406\u539F\u5219\uFF0C\u4E0D\u5199\u5F53\u524D\u4EFB\u52A1\u7EC6\u8282
|
|
45719
|
-
6. \u521B\u5EFA Department Head \u540E\uFF0C\u518D\u901A\u8FC7 department_communicate \u53D1\u9001\u5F53\u524D\u5177\u4F53\u4EFB\u52A1\u90AE\u4EF6
|
|
45720
|
-
7. \u7B49\u5F85 Department Head \u56DE\u590D\u7ED3\u679C\uFF0C\u6C47\u603B\u540E\u56DE\u590D\u7528\u6237
|
|
45721
|
-
|
|
45722
|
-
## \u4F60\u7684\u89D2\u8272
|
|
45723
|
-
- \u7406\u89E3\u7528\u6237\u610F\u56FE\uFF0C\u5236\u5B9A\u8BA1\u5212
|
|
45724
|
-
- \u5224\u65AD\u7B80\u5355\u4EFB\u52A1\u662F\u5426\u76F4\u529E
|
|
45725
|
-
- \u7EF4\u62A4\u90E8\u95E8\u7EC4\u7EC7\u7ED3\u6784
|
|
45726
|
-
- \u5C06\u590D\u6742\u4EFB\u52A1\u8DEF\u7531\u7ED9 Department Head
|
|
45727
|
-
- \u534F\u8C03 Department Head \u4E4B\u95F4\u7684\u5DE5\u4F5C
|
|
45728
|
-
- \u6C47\u603B\u7ED3\u679C\u5E76\u56DE\u590D\u7528\u6237
|
|
45729
|
-
- \u9ED8\u8BA4\u4E0D\u76F4\u63A5\u521B\u5EFA Executor\uFF1BExecutor \u7531 Department Head \u7BA1\u7406
|
|
45730
|
-
- \u9ED8\u8BA4\u4E0D\u66B4\u9732\u8DE8\u5C42\u7EA7/\u8DE8\u90E8\u95E8\u901A\u4FE1\u5730\u5740\uFF1B\u5982\u679C agent \u5DF2\u77E5\u5730\u5740\uFF0C\u901A\u4FE1\u4E0D\u5E94\u88AB\u786C\u6027\u963B\u6B62\uFF0C\u4F46\u8981\u5C0A\u91CD\u7EC4\u7EC7\u8D23\u4EFB\u5E76\u7559\u4E0B\u5BA1\u8BA1\u8BB0\u5F55
|
|
45731
|
-
- \u4FDD\u6301\u8D23\u4EFB\u5F52\u5C5E\u7A33\u5B9A\uFF1A\u67D0\u4E2A Department Head \u5DF2\u7ECF\u8D1F\u8D23\u7684\u4EA7\u51FA\uFF0C\u540E\u7EED\u4FEE\u8BA2\u3001\u8FD4\u5DE5\u3001bug \u4FEE\u590D\u9ED8\u8BA4\u4ECD\u7531\u8BE5 Department Head \u8D1F\u8D23\uFF0C\u901A\u5E38\u5E94\u901A\u8FC7 mailbox_followup \u63A5\u56DE\u539F\u7EBF\u7A0B
|
|
45732
|
-
|
|
45733
|
-
## \u4E13\u4E1A\u56E2\u961F\u4F18\u5148\u786C\u89C4\u5219
|
|
45734
|
-
- \u53EA\u8981\u7EC4\u7EC7\u91CC\u5DF2\u7ECF\u5B58\u5728\u804C\u8D23\u5339\u914D\u7684 Department \u6216 Department Head\uFF0CCEO \u9ED8\u8BA4\u4E0D\u4EB2\u81EA\u505A\u8BE5\u4E13\u4E1A\u56E2\u961F\u8986\u76D6\u7684\u6267\u884C\u5DE5\u4F5C\u3002
|
|
45735
|
-
- \u201C\u4E13\u4E1A\u56E2\u961F\u8986\u76D6\u201D\u5305\u62EC\u4F46\u4E0D\u9650\u4E8E\uFF1A\u5199\u4EE3\u7801\u3001\u8BFB\u4EE3\u7801\u5B9A\u4F4D\u95EE\u9898\u3001\u6539\u6587\u4EF6\u3001\u8DD1\u6D4B\u8BD5\u3001\u8C03\u8BD5\u3001\u90E8\u7F72\u3001\u6570\u636E\u5904\u7406\u3001\u6587\u6863/\u97F3\u9891/\u56FE\u7247\u5904\u7406\u3001\u5916\u90E8 API \u9A8C\u8BC1\u3001\u62A5\u544A\u751F\u6210\u7B49\u3002
|
|
45736
|
-
- CEO \u7684\u6B63\u786E\u52A8\u4F5C\u662F department_list \u5B9A\u4F4D\u56E2\u961F\uFF0Cdepartment_communicate \u59D4\u6D3E\u6216\u8FFD\u95EE\uFF0Cmailbox_followup \u50AC\u529E/\u8865\u5145\u4E0A\u4E0B\u6587\uFF0Ccheck_department_replies \u6536\u96C6\u7ED3\u679C\uFF0C\u7136\u540E\u6C47\u603B\u7ED9\u7528\u6237\u3002
|
|
45737
|
-
- Department Head \u6682\u65E0\u56DE\u4FE1\u3001\u56DE\u590D\u6162\u3001\u6216 check_department_replies \u8FD4\u56DE\u7A7A\uFF0C\u4E0D\u6784\u6210 CEO \u4E0B\u573A\u5E72\u6D3B\u7684\u7406\u7531\uFF1B\u672C\u8F6E\u4E0D\u8981\u8FDE\u7EED\u91CD\u590D\u8C03\u7528 check_department_replies\uFF0C\u5E94\u8BE5\u50AC\u95EE\u8D1F\u8D23\u4EBA\uFF0C\u6216\u7528 send_message \u544A\u8BC9\u7528\u6237\u201C\u56E2\u961F\u4ECD\u5728\u5904\u7406\uFF0C\u6211\u7A0D\u540E\u540C\u6B65\u201D\u5E76\u7ED3\u675F\u5F53\u524D\u8F6E\u6B21\uFF0C\u7B49\u5F85\u65B0\u7684\u90E8\u95E8\u56DE\u4FE1\u4E8B\u4EF6\u6216\u7528\u6237\u8FFD\u95EE\u3002
|
|
45738
|
-
- \u53EA\u6709\u5728\u7528\u6237\u660E\u786E\u8981\u6C42\u201CCEO/\u4F60\u4EB2\u81EA\u505A\u201D\u3001\u6CA1\u6709\u4EFB\u4F55\u804C\u8D23\u5339\u914D\u56E2\u961F/\u8D1F\u8D23\u4EBA\u3001\u6216\u56E2\u961F\u660E\u786E\u5931\u8D25\u4E14\u7528\u6237\u540C\u610F CEO \u63A5\u7BA1\u65F6\uFF0CCEO \u624D\u80FD\u8D8A\u8FC7\u56E2\u961F\u4EB2\u81EA\u6267\u884C\u4E13\u4E1A\u5DE5\u4F5C\u3002
|
|
45739
|
-
|
|
45740
|
-
## \u8D23\u4EFB\u5F52\u5C5E\u786C\u89C4\u5219
|
|
45741
|
-
- Department Head \u4EA4\u4ED8\u7ED3\u679C\u540E\uFF0C\u5982\u679C\u7528\u6237\u53CD\u9988\u201C\u6253\u4E0D\u5F00\u201D\u201C\u6709 bug\u201D\u201C\u5E2E\u6211\u6539\u4E00\u4E0B\u201D\u201C\u518D\u51FA\u4E00\u7248\u201D\u7B49\uFF0C\u8FD9\u5C5E\u4E8E\u5BF9\u65E2\u6709\u4EA7\u51FA\u7684\u8FD4\u5DE5\u6216\u8FED\u4EE3\uFF0C\u9ED8\u8BA4\u5E94\u7EE7\u7EED\u4EA4\u7ED9\u539F\u8D23\u4EFB Department Head \u5904\u7406
|
|
45742
|
-
- \u4F18\u5148\u4F7F\u7528 mailbox_followup \u5BF9\u8BE5 Department Head \u6700\u8FD1\u4E00\u6B21\u76F8\u5173\u56DE\u4FE1\u8FFD\u52A0\u53CD\u9988\uFF0C\u907F\u514D CEO \u4EB2\u81EA\u4E0B\u573A\u91CD\u505A\u5B9E\u73B0
|
|
45743
|
-
- \u5982\u679C\u90E8\u95E8\u6CA1\u6709 Department Head\uFF0C\u5E94\u5148\u8865\u5EFA Department Head\uFF0C\u518D\u901A\u8FC7 Department Head \u5904\u7406\u4EFB\u52A1
|
|
45744
|
-
|
|
45745
|
-
## \u72B6\u6001\u95EE\u8BE2\u786C\u89C4\u5219
|
|
45746
|
-
- \u5F53\u7528\u6237\u8BE2\u95EE\u201C\u73B0\u5728\u60C5\u51B5\u201D\u201C\u8FDB\u5EA6\u5982\u4F55\u201D\u201C\u6D4B\u8BD5\u60C5\u51B5\u201D\u201C\u8DD1\u5230\u54EA\u4E86\u201D\u201C\u8D1F\u8D23\u4EBA/\u56E2\u961F\u90A3\u8FB9\u600E\u4E48\u6837\u201D\u7B49\uFF0C\u4E14\u5F53\u524D\u4E0A\u4E0B\u6587\u91CC\u5DF2\u6709\u76F8\u5173 Department\u3001Department Head\u3001mailbox \u7EBF\u7A0B\u6216 <department-agent-reply>\uFF0C\u8FD9\u662F\u4E00\u6761\u534F\u8C03/\u95EE\u8BE2\u8BF7\u6C42\uFF0C\u4E0D\u662F\u8BA9 CEO \u4EB2\u81EA\u6267\u884C\u6D4B\u8BD5\u3001\u8BFB\u6587\u4EF6\u6216\u8DD1\u547D\u4EE4\u7684\u8BF7\u6C42\u3002
|
|
45747
|
-
- \u8FD9\u79CD\u60C5\u51B5\u4E0B\uFF0CCEO \u5E94\u4F18\u5148\u901A\u8FC7 department_list \u5B9A\u4F4D\u804C\u8D23\u5339\u914D\u7684 Department Head\uFF0C\u5E76\u7528 department_communicate \u6216 mailbox_followup \u5411\u8D1F\u8D23\u4EBA\u8BE2\u95EE\u771F\u5B9E\u8FDB\u5C55\u3001\u6D4B\u8BD5\u7ED3\u679C\u3001\u963B\u585E\u9879\u548C\u4E0B\u4E00\u6B65\uFF1B\u6536\u5230\u8D1F\u8D23\u4EBA\u56DE\u590D\u540E\u518D\u6C47\u603B\u7ED9\u7528\u6237\u3002
|
|
45748
|
-
- \u9664\u975E\u7528\u6237\u660E\u786E\u8981\u6C42\u201C\u4F60\u4EB2\u81EA\u9A8C\u8BC1/\u4F60\u81EA\u5DF1\u8DD1\u4E00\u904D\u201D\uFF0C\u6216\u786E\u8BA4\u6CA1\u6709\u53EF\u7528\u56E2\u961F/\u8D1F\u8D23\u4EBA\uFF0C\u5426\u5219 CEO \u4E0D\u5E94\u4E3A\u4E86\u56DE\u7B54\u8FDB\u5EA6\u6216\u6D4B\u8BD5\u60C5\u51B5\u800C\u8C03\u7528 bash/read/grep/edit \u7B49\u6267\u884C\u7C7B\u5DE5\u5177\u4E0B\u573A\u5E72\u6D3B\u3002
|
|
45749
|
-
</Department delegation>
|
|
45736
|
+
<\u4F60\u7684\u8EAB\u4EFD>
|
|
45737
|
+
\u4F60\u662F\u8FD9\u5BB6 AI \u516C\u53F8\u7684 CEO\uFF0C\u76F4\u63A5\u5411\u8001\u677F\uFF08\u7528\u6237\uFF09\u8D1F\u8D23\u3002\u4F60\u7684\u672C\u4E8B\u662F\u901A\u8FC7\u56E2\u961F\u628A\u4E8B\u60C5\u505A\u6210\uFF0C\u800C\u4E0D\u662F\u81EA\u5DF1\u57CB\u5934\u505A\u3002
|
|
45738
|
+
|
|
45739
|
+
\u516C\u53F8\u91CC\u6709\u5404\u4E2A\u90E8\u95E8\u548C\u5B83\u4EEC\u7684\u8D1F\u8D23\u4EBA\uFF08Department Head\uFF09\u3002\u4E13\u4E1A\u7684\u6D3B\u2014\u2014\u5199\u4EE3\u7801\u3001\u8BFB\u4EE3\u7801\u5B9A\u4F4D\u95EE\u9898\u3001\u6539\u6587\u4EF6\u3001\u8DD1\u6D4B\u8BD5\u3001\u8C03\u8BD5\u3001\u90E8\u7F72\uFF0C\u5904\u7406\u6570\u636E/\u6587\u6863/\u97F3\u89C6\u9891/\u56FE\u7247\uFF0C\u67E5\u8BC1\u5916\u90E8 API\uFF0C\u751F\u6210\u590D\u6742\u4EA7\u7269\u7B49\u2014\u2014\u4F60\u7684\u7B2C\u4E00\u53CD\u5E94\u662F\u627E\u5BF9\u5E94\u56E2\u961F\u7684 Head\uFF0C\u800C\u4E0D\u662F\u81EA\u5DF1\u4E0A\u624B\u3002\u4F60\u80FD\u770B\u5230\u7684\u53EA\u6709\u90E8\u95E8\u548C\u5B83\u4EEC\u7684 Head\uFF1BExecutor \u7531\u5404 Head \u81EA\u5DF1\u7BA1\u7406\uFF0C\u9ED8\u8BA4\u4E0D\u5728\u4F60\u7684\u89C6\u91CE\u91CC\u3002
|
|
45740
|
+
|
|
45741
|
+
\u4F60\u548C\u56E2\u961F\u534F\u4F5C\u7684\u65B9\u5F0F\u5F88\u81EA\u7136\uFF1A\u9700\u8981\u56E2\u961F\u505A\u4E8B\u6216\u60F3\u77E5\u9053\u8FDB\u5C55\uFF0C\u5C31\u7ED9\u5BF9\u5E94 Head \u53D1\u6D88\u606F\uFF08department_communicate\uFF09\uFF1B\u60F3\u50AC\u4E00\u4E0B\u6216\u8865\u5145\u4E0A\u4E0B\u6587\uFF0C\u7528 mailbox_followup \u63A5\u56DE\u539F\u6765\u7684\u7EBF\u7A0B\uFF1B\u60F3\u770B\u56E2\u961F\u56DE\u4E86\u4EC0\u4E48\uFF0C\u7528 check_department_replies \u6536\u4E00\u4E0B\u3002\u7EC4\u7EC7\u91CC\u8FD8\u6CA1\u6709\u5BF9\u53E3\u7684\u56E2\u961F\u65F6\uFF0C\u4F60\u624D\u5F20\u7F57\u7740\u5EFA\u90E8\u95E8\u3001\u62DB Head\uFF08\u5EFA\u597D\u90E8\u95E8\u5148\u7528 department_member_create \u51FA\u4E00\u4E2A Head\uFF0C\u518D\u628A\u5177\u4F53\u4EFB\u52A1\u6D3E\u7ED9\u4ED6\uFF09\u3002
|
|
45742
|
+
|
|
45743
|
+
\u8001\u677F\u95EE\u4F60\u4EFB\u4F55\u4E8B\u2014\u2014\u5305\u62EC\u201C\u73B0\u5728\u8FDB\u5EA6\u5982\u4F55\u201D\u201C\u6D4B\u8BD5\u5F97\u600E\u4E48\u6837\u201D\u201C\u90A3\u8FB9\u9760\u8C31\u5417\u201D\u201C\u5361\u5728\u54EA\u4E86\u201D\u8FD9\u7C7B\u2014\u2014\u4F60\u7ED9\u7684\u90FD\u662F\u4F60\u5411\u56E2\u961F\u6838\u5B9E\u8FC7\u7684\u771F\u5B9E\u60C5\u51B5\uFF0C\u7EDD\u4E0D\u662F\u51ED\u5370\u8C61\u7F16\u51FA\u6765\u7684\u3002\u5982\u679C\u8FD9\u4F1A\u513F\u8FD8\u6CA1\u62FF\u5230\u51C6\u4FE1\uFF0C\u4F60\u5B81\u53EF\u5148\u56DE\u8001\u677F\u4E00\u53E5\u201C\u6211\u53BB\u8DDF\u56E2\u961F\u786E\u8BA4\uFF0C\u7A0D\u540E\u7ED9\u4F60\u56DE\u201D\uFF0C\u4E5F\u4E0D\u7CCA\u5F04\u4E00\u4E2A\u7B54\u6848\u3002\u5728\u4F60\u628A\u771F\u5B9E\u7ED3\u8BBA\u4EA4\u5230\u8001\u677F\u624B\u4E0A\u4E4B\u524D\uFF0C\u8FD9\u4EF6\u4E8B\u5BF9\u4F60\u90FD\u6CA1\u7B97\u5B8C\u3002
|
|
45744
|
+
|
|
45745
|
+
\u67D0\u4E2A Head \u5DF2\u7ECF\u8D1F\u8D23\u7684\u4EA7\u51FA\uFF0C\u540E\u7EED\u7684\u8FD4\u5DE5\u3001bug \u4FEE\u590D\u3001\u201C\u6253\u4E0D\u5F00\u201D\u201C\u5E2E\u6211\u6539\u4E00\u4E0B\u201D\u201C\u518D\u51FA\u4E00\u7248\u201D\uFF0C\u9ED8\u8BA4\u8FD8\u5F52\u4ED6\u2014\u2014\u4F60\u987A\u7740\u539F\u6765\u7684\u7EBF\u7A0B\u628A\u53CD\u9988\u8FFD\u52A0\u7ED9\u4ED6\uFF08mailbox_followup\uFF09\uFF0C\u800C\u4E0D\u662F\u81EA\u5DF1\u63A5\u624B\u91CD\u505A\u3002
|
|
45746
|
+
|
|
45747
|
+
\u53EA\u6709\u8FD9\u51E0\u79CD\u60C5\u51B5\u4F60\u624D\u81EA\u5DF1\u4E0A\u624B\uFF1A\u8001\u677F\u660E\u786E\u8981\u4F60\u4EB2\u81EA\u505A\u3001\u7EC4\u7EC7\u91CC\u786E\u5B9E\u6CA1\u6709\u4E5F\u6765\u4E0D\u53CA\u7EC4\u5EFA\u5BF9\u53E3\u56E2\u961F\u3001\u6216\u56E2\u961F\u660E\u786E\u505A\u4E0D\u6210\u4E14\u8001\u677F\u540C\u610F\u4F60\u63A5\u7BA1\u3002\u9664\u6B64\u4E4B\u5916\uFF0C\u56E2\u961F\u56DE\u5F97\u6162\u3001\u6682\u65F6\u6CA1\u56DE\u3001check \u8FD8\u6CA1\u7ED3\u679C\uFF0C\u90FD\u4E0D\u662F\u4F60\u4E0B\u573A\u5E72\u6D3B\u7684\u7406\u7531\u2014\u2014\u8BE5\u505A\u7684\u662F\u50AC\u8D1F\u8D23\u4EBA\uFF0C\u6216\u5982\u5B9E\u8DDF\u8001\u677F\u8BF4\u201C\u56E2\u961F\u8FD8\u5728\u5904\u7406\uFF0C\u6211\u62FF\u5230\u7ED3\u679C\u5C31\u540C\u6B65\u201D\uFF0C\u7136\u540E\u628A\u8FD9\u4E00\u8F6E\u6536\u4F4F\uFF0C\u7B49\u56E2\u961F\u56DE\u4FE1\u6216\u8001\u677F\u65B0\u7684\u6D88\u606F\u3002
|
|
45748
|
+
|
|
45749
|
+
\u5F02\u5E38\u7B80\u5355\u3001\u4F4E\u98CE\u9669\u3001\u4E00\u4E24\u6B65\u5C31\u80FD\u5B8C\u6210\u7684\u5C0F\u4E8B\uFF08\u7B80\u5355\u95EE\u7B54\u3001\u89E3\u91CA\u5DF2\u6709\u4FE1\u606F\u3001\u770B\u4E2A\u5217\u8868\u3001\u67E5\u4E2A\u72B6\u6001\u3001\u8BFB\u4E00\u5C0F\u6BB5\u6587\u4EF6\uFF09\uFF0C\u4F60\u53EF\u4EE5\u987A\u624B\u81EA\u5DF1\u505A\uFF0C\u4E0D\u5FC5\u4EC0\u4E48\u90FD\u7EC4\u7EC7\u5316\u3002
|
|
45750
|
+
</\u4F60\u7684\u8EAB\u4EFD>
|
|
45750
45751
|
|
|
45751
45752
|
<Communication>
|
|
45752
45753
|
# \u4E3B\u52A8\u6C9F\u901A\u4E0E\u7528\u6237\u786E\u8BA4
|
|
@@ -46125,6 +46126,7 @@ ${notifText}
|
|
|
46125
46126
|
if (interrupts.length > 0) {
|
|
46126
46127
|
for (const interrupt of interrupts) {
|
|
46127
46128
|
markInterruptEventIdsInjected(interrupt.metadata);
|
|
46129
|
+
rememberCeoFollowupIds(ceoFollowupIdsFromMetadata(interrupt.metadata));
|
|
46128
46130
|
const msg = interrupt.content;
|
|
46129
46131
|
console.log(`[agent] \u6536\u5230\u4E2D\u65AD\u6D88\u606F\uFF0C\u6CE8\u5165\u5BF9\u8BDD: ${msg.slice(0, 80)}...`);
|
|
46130
46132
|
if (interrupt.metadata) {
|
|
@@ -46279,12 +46281,16 @@ ${memoryInjection}` : "") + dreamInjection;
|
|
|
46279
46281
|
console.log(`channelPlugin: ${JSON.stringify(config2.channelPlugin)}`);
|
|
46280
46282
|
const { userId: userId2 } = request;
|
|
46281
46283
|
console.log(`request: ${JSON.stringify(request)}`);
|
|
46282
|
-
|
|
46283
|
-
|
|
46284
|
-
|
|
46285
|
-
|
|
46286
|
-
|
|
46287
|
-
|
|
46284
|
+
if (claimOutboundSend(userId2, answer)) {
|
|
46285
|
+
await config2.channelPlugin.outbound.sendText({
|
|
46286
|
+
cfg: {},
|
|
46287
|
+
to: userId2,
|
|
46288
|
+
text: answer,
|
|
46289
|
+
accountId: request.requestId
|
|
46290
|
+
});
|
|
46291
|
+
} else {
|
|
46292
|
+
console.log(`[outbound-dedup] \u8DF3\u8FC7\u5BF9\u7528\u6237 ${userId2} \u7684\u8FD1\u91CD\u590D\u53D1\u9001\uFF08\u5355\u4E00\u58F0\u97F3\u515C\u5E95\uFF09`);
|
|
46293
|
+
}
|
|
46288
46294
|
}
|
|
46289
46295
|
hasSentMessage = true;
|
|
46290
46296
|
sentMessageContent = answer;
|
|
@@ -46341,6 +46347,7 @@ ${memoryInjection}` : "") + dreamInjection;
|
|
|
46341
46347
|
console.log(`[agent] \u9000\u51FA\u524D\u53D1\u73B0 ${lateInterrupts.length} \u6761\u8FDF\u5230\u7684\u4E2D\u65AD\u6D88\u606F\uFF0C\u7EE7\u7EED\u5904\u7406`);
|
|
46342
46348
|
for (const interrupt of lateInterrupts) {
|
|
46343
46349
|
markInterruptEventIdsInjected(interrupt.metadata);
|
|
46350
|
+
rememberCeoFollowupIds(ceoFollowupIdsFromMetadata(interrupt.metadata));
|
|
46344
46351
|
const msg = interrupt.content;
|
|
46345
46352
|
if (interrupt.metadata) {
|
|
46346
46353
|
request.metadata = {
|
|
@@ -46360,12 +46367,16 @@ ${msg}</user-interrupt>`
|
|
|
46360
46367
|
}
|
|
46361
46368
|
const visibleCeoFollowupIds = ceoFollowupIdsFromMetadata(request.metadata);
|
|
46362
46369
|
if (!hasSentMessage && visibleCeoFollowupIds.length > 0 && config2.channelPlugin) {
|
|
46363
|
-
|
|
46364
|
-
|
|
46365
|
-
|
|
46366
|
-
|
|
46367
|
-
|
|
46368
|
-
|
|
46370
|
+
if (claimOutboundSend(request.userId, textContent)) {
|
|
46371
|
+
await config2.channelPlugin.outbound.sendText({
|
|
46372
|
+
cfg: {},
|
|
46373
|
+
to: request.userId,
|
|
46374
|
+
text: textContent,
|
|
46375
|
+
accountId: request.requestId
|
|
46376
|
+
});
|
|
46377
|
+
} else {
|
|
46378
|
+
console.log(`[outbound-dedup] \u8DF3\u8FC7\u5BF9\u7528\u6237 ${request.userId} \u7684\u8FD1\u91CD\u590D\u515C\u5E95\u53D1\u9001`);
|
|
46379
|
+
}
|
|
46369
46380
|
hasSentMessage = true;
|
|
46370
46381
|
sentMessageContent = textContent;
|
|
46371
46382
|
completeUserVisibleCeoFollowups();
|
|
@@ -46386,6 +46397,7 @@ ${msg}</user-interrupt>`
|
|
|
46386
46397
|
console.log(`[agent] \u9000\u51FA\u524D\u53D1\u73B0 ${lateInterrupts.length} \u6761\u8FDF\u5230\u7684\u4E2D\u65AD\u6D88\u606F\uFF0C\u7EE7\u7EED\u5904\u7406`);
|
|
46387
46398
|
for (const interrupt of lateInterrupts) {
|
|
46388
46399
|
markInterruptEventIdsInjected(interrupt.metadata);
|
|
46400
|
+
rememberCeoFollowupIds(ceoFollowupIdsFromMetadata(interrupt.metadata));
|
|
46389
46401
|
const msg = interrupt.content;
|
|
46390
46402
|
if (interrupt.metadata) {
|
|
46391
46403
|
request.metadata = {
|
|
@@ -47221,8 +47233,10 @@ var markMailboxStatus = (msgId, status) => {
|
|
|
47221
47233
|
reason: "mailbox_poller"
|
|
47222
47234
|
});
|
|
47223
47235
|
};
|
|
47224
|
-
var
|
|
47225
|
-
const
|
|
47236
|
+
var handleCeoFollowupGroup = async (followups) => {
|
|
47237
|
+
const originUserId = followups[0].originUserId;
|
|
47238
|
+
const originPlatform = followups[0].originPlatform;
|
|
47239
|
+
const events = followups.map((followup) => recordAgentEvent({
|
|
47226
47240
|
userId: followup.originUserId,
|
|
47227
47241
|
type: "ceo.followup_required",
|
|
47228
47242
|
source: "ceo_followup",
|
|
@@ -47235,73 +47249,87 @@ var handleCeoFollowup = async (followup) => {
|
|
|
47235
47249
|
parentMessageId: followup.parentMessageId || null,
|
|
47236
47250
|
workItemId: followup.workItemId || null,
|
|
47237
47251
|
contentPreview: followup.content.slice(0, 1200),
|
|
47238
|
-
summary: `\
|
|
47252
|
+
summary: `\u56E2\u961F\u5DF2\u56DE\u4FE1\uFF0C\u8FD9\u4E2A\u7ED3\u679C\u8FD8\u7B49\u7740\u4F60\u8F6C\u8FBE\u7ED9\u8001\u677F\uFF08Boss/User\uFF09\uFF1A${followup.content.slice(0, 400)}`,
|
|
47239
47253
|
originPlatform: followup.originPlatform
|
|
47240
47254
|
}
|
|
47241
|
-
});
|
|
47242
|
-
if (hasRunningAgent(
|
|
47243
|
-
|
|
47244
|
-
|
|
47245
|
-
|
|
47246
|
-
|
|
47247
|
-
|
|
47248
|
-
|
|
47249
|
-
|
|
47250
|
-
|
|
47255
|
+
}));
|
|
47256
|
+
if (hasRunningAgent(originUserId)) {
|
|
47257
|
+
followups.forEach((followup, i) => {
|
|
47258
|
+
queueInterrupt(originUserId, {
|
|
47259
|
+
content: "",
|
|
47260
|
+
metadata: {
|
|
47261
|
+
internalOnly: true,
|
|
47262
|
+
eventId: events[i].id,
|
|
47263
|
+
trigger: "ceo.followup_required",
|
|
47264
|
+
ceoFollowupId: followup.id
|
|
47265
|
+
}
|
|
47266
|
+
});
|
|
47251
47267
|
});
|
|
47252
|
-
console.log(`[mailbox] \u4E3B agent \u6B63\u5728\u8FD0\u884C\u4E2D\uFF0C${
|
|
47268
|
+
console.log(`[mailbox] \u4E3B agent \u6B63\u5728\u8FD0\u884C\u4E2D\uFF0C${followups.length} \u5C01\u56DE\u4FE1\u5DF2\u5165\u961F\u7B49\u5F85\u4E2D\u65AD\u6CE8\u5165 user=${originUserId}`);
|
|
47253
47269
|
return "queued";
|
|
47254
47270
|
}
|
|
47271
|
+
const primary = followups[followups.length - 1];
|
|
47255
47272
|
const request = {
|
|
47256
|
-
platform:
|
|
47257
|
-
userId:
|
|
47258
|
-
requestId:
|
|
47273
|
+
platform: originPlatform,
|
|
47274
|
+
userId: originUserId,
|
|
47275
|
+
requestId: primary.sourceMessageId,
|
|
47259
47276
|
departmentAgentId: "",
|
|
47260
47277
|
content: "",
|
|
47261
47278
|
metadata: {
|
|
47262
47279
|
internalOnly: true,
|
|
47263
|
-
eventId:
|
|
47280
|
+
eventId: events[events.length - 1].id,
|
|
47264
47281
|
trigger: "ceo.followup_required",
|
|
47265
|
-
ceoFollowupId:
|
|
47282
|
+
ceoFollowupId: primary.id,
|
|
47283
|
+
ceoFollowupIds: followups.map((f) => f.id)
|
|
47266
47284
|
}
|
|
47267
47285
|
};
|
|
47268
47286
|
const config2 = getDefaultAgentConfig();
|
|
47269
47287
|
const mainAgent = createAgent(config2);
|
|
47270
47288
|
const result = await mainAgent(request);
|
|
47271
|
-
console.log(`[mailbox] \u4E3B agent \u5904\u7406\u5B8C ${
|
|
47289
|
+
console.log(`[mailbox] \u4E3B agent \u5904\u7406\u5B8C ${followups.length} \u5C01\u56DE\u4FE1, user=${originUserId}, alreadySent=${result.alreadySent}`);
|
|
47272
47290
|
if (result.alreadySent) return "completed";
|
|
47273
|
-
const fallback = result.content?.trim() ||
|
|
47291
|
+
const fallback = result.content?.trim() || followups.map((f) => f.content).join("\n\n---\n\n");
|
|
47274
47292
|
if (fallback && config2.channelPlugin) {
|
|
47275
|
-
|
|
47276
|
-
|
|
47277
|
-
|
|
47278
|
-
|
|
47279
|
-
|
|
47280
|
-
|
|
47281
|
-
|
|
47282
|
-
|
|
47283
|
-
|
|
47284
|
-
|
|
47285
|
-
|
|
47286
|
-
|
|
47293
|
+
if (claimOutboundSend(originUserId, fallback)) {
|
|
47294
|
+
try {
|
|
47295
|
+
await config2.channelPlugin.outbound.sendText({
|
|
47296
|
+
cfg: {},
|
|
47297
|
+
to: originUserId,
|
|
47298
|
+
text: fallback,
|
|
47299
|
+
accountId: primary.sourceMessageId
|
|
47300
|
+
});
|
|
47301
|
+
console.log(`[mailbox] \u4E3B agent \u672A\u4E3B\u52A8\u53D1\u9001\uFF0C\u5DF2\u901A\u8FC7\u6E20\u9053\u8865\u53D1 user=${originUserId}`);
|
|
47302
|
+
} catch (sendErr) {
|
|
47303
|
+
console.error(`[mailbox] \u8865\u53D1\u6D88\u606F\u5931\u8D25:`, sendErr);
|
|
47304
|
+
throw sendErr;
|
|
47305
|
+
}
|
|
47306
|
+
} else {
|
|
47307
|
+
console.log(`[mailbox] \u8DF3\u8FC7\u5BF9\u7528\u6237 ${originUserId} \u7684\u8FD1\u91CD\u590D\u8865\u53D1\uFF08\u5355\u4E00\u58F0\u97F3\u515C\u5E95\uFF09`);
|
|
47287
47308
|
}
|
|
47309
|
+
return "completed";
|
|
47288
47310
|
}
|
|
47289
47311
|
if (fallback && !config2.channelPlugin) return "completed";
|
|
47290
|
-
throw new Error(`ceo_followup_no_user_visible_message:${
|
|
47312
|
+
throw new Error(`ceo_followup_no_user_visible_message:${primary.id}`);
|
|
47291
47313
|
};
|
|
47292
|
-
var
|
|
47293
|
-
const claimed =
|
|
47294
|
-
|
|
47314
|
+
var processCeoFollowupGroup = async (followups) => {
|
|
47315
|
+
const claimed = [];
|
|
47316
|
+
for (const followup of followups) {
|
|
47317
|
+
const c = claimCeoFollowup(followup.id);
|
|
47318
|
+
if (c) claimed.push(c);
|
|
47319
|
+
}
|
|
47320
|
+
if (claimed.length === 0) return;
|
|
47295
47321
|
try {
|
|
47296
|
-
markMailboxStatus(
|
|
47297
|
-
const outcome = await
|
|
47322
|
+
for (const c of claimed) markMailboxStatus(c.sourceMessageId, "processing");
|
|
47323
|
+
const outcome = await handleCeoFollowupGroup(claimed);
|
|
47298
47324
|
if (outcome === "queued") return;
|
|
47299
|
-
|
|
47300
|
-
|
|
47325
|
+
for (const c of claimed) {
|
|
47326
|
+
completeCeoFollowup(c.id);
|
|
47327
|
+
markMailboxStatus(c.sourceMessageId, "done");
|
|
47328
|
+
}
|
|
47301
47329
|
} catch (err) {
|
|
47302
47330
|
const message = err.message;
|
|
47303
|
-
failCeoFollowup(
|
|
47304
|
-
console.error(`[mailbox] CEO followup \u5904\u7406\u5931\u8D25
|
|
47331
|
+
for (const c of claimed) failCeoFollowup(c.id, message);
|
|
47332
|
+
console.error(`[mailbox] CEO followup \u5904\u7406\u5931\u8D25 user=${claimed[0].originUserId}:`, err);
|
|
47305
47333
|
}
|
|
47306
47334
|
};
|
|
47307
47335
|
var wakeDepartmentAgent = async (mailboxId, msgIds) => {
|
|
@@ -47337,14 +47365,13 @@ var wakeDepartmentAgent = async (mailboxId, msgIds) => {
|
|
|
47337
47365
|
const workspacePath = department?.workpath;
|
|
47338
47366
|
const agentConfig = getDepartmentAgentConfig(void 0, member.focusOn, workspacePath, department?.name, member.role, member.name);
|
|
47339
47367
|
const agent = createAgent(agentConfig);
|
|
47340
|
-
const roleSpecificReminder = member.role === "department_head" ? `\u4F60\u662F Department Head\u3002\u8BFB\u53D6\u90AE\u4EF6\u540E\uFF0C\u5982\u679C\u8FD9\u662F\u590D\u6742\u6267\u884C\u5DE5\u4F5C\uFF08\u4F8B\u5982\u5199\u4EE3\u7801\u3001\u8BFB\u4EE3\u7801\u5B9A\u4F4D\u3001\u8DD1\u6D4B\u8BD5\u3001\u8C03\u8BD5\u3001\u90E8\u7F72\u3001\u5168\u9762\u9A8C\u8BC1\u6216\u751F\u6210\u590D\u6742\u4EA7\u7269\uFF09\uFF0C\u4E0D\u8981\u9ED8\u8BA4\u81EA\u5DF1\u4E0B\u573A\u6267\u884C\uFF1B\u5148\u7528 department_member_list \u67E5\u770B\u6210\u5458\uFF0C\u9009\u62E9\u6216\u521B\u5EFA\u5408\u9002 Executor\uFF0C\u5E76\u7528 department_communicate \u5206\u6D3E\u5177\u4F53\u4EFB\u52A1\u3002\u4F60\u8D1F\u8D23\u62C6\u89E3\u3001\u534F\u8C03\u3001\u8FFD\u95EE\u3001\u9A8C\u6536\u548C\u6C47\u603B\u3002\u6536\u5230 Executor \u5B8C\u6210\u56DE\u4FE1\u5E76\u9A8C\u6536\u540E\uFF0C\u5FC5\u987B\u628A\u6700\u7EC8\u7ED3\u679C\u540C\u6B65\u7ED9\u4E0A\u6E38\u8BF7\u6C42\u65B9\uFF08\u901A\u5E38\u662F manager/CEO\uFF09\uFF1B\u53EA\u56DE\u590D Executor \u4E0D\u7B49\u4E8E\u5B8C\u6210\u5BF9\u4E0A\u6E38\u7684\u6C47\u62A5\u3002` : `\u4F60\u662F Executor\u3002\u8BFB\u53D6\u90AE\u4EF6\u540E\u76F4\u63A5\u5904\u7406\u5206\u6D3E\u7ED9\u4F60\u7684\u5177\u4F53\u6267\u884C\u4EFB\u52A1\uFF1B\u4E0D\u8981\u5C1D\u8BD5\u67E5\u770B\u5B8C\u6574\u90E8\u95E8\u6210\u5458\u76EE\u5F55\u6216\u521B\u5EFA\u6210\u5458\u3002`;
|
|
47341
47368
|
const request = {
|
|
47342
47369
|
platform: "mailbox",
|
|
47343
47370
|
userId: mailboxId,
|
|
47344
47371
|
requestId: msgIds[0],
|
|
47345
47372
|
departmentAgentId: mailboxId,
|
|
47346
47373
|
workspacePath,
|
|
47347
|
-
content: `\u4F60\u7684\u90AE\u7BB1\
|
|
47374
|
+
content: `\u4F60\u7684\u90AE\u7BB1\u91CC\u6709 ${msgIds.length} \u5C01\u65B0\u90AE\u4EF6\uFF0C\u53BB\u5904\u7406\u4E00\u4E0B\uFF1A\u7528 list_mailbox \u770B\u770B\uFF0C\u6311\u4E00\u5C01 get_mailbox \u8BFB\u5168\u6587\uFF0C\u6309\u4F60\u7684\u804C\u8D23\u628A\u5B83\u505A\u5B8C\u6216\u95EE\u6E05\u695A\uFF0C\u518D\u56DE\u590D\u7ED9\u95EE\u4F60\u7684\u4EBA\u3002`
|
|
47348
47375
|
};
|
|
47349
47376
|
const result = await agent(request);
|
|
47350
47377
|
console.log(`[mailbox] department agent ${mailboxId} \u5904\u7406\u5B8C\u6210, alreadySent=${result.alreadySent}`);
|
|
@@ -47456,6 +47483,7 @@ var finalizeDepartmentAgentUnrepliedMessages = (mailboxId, msgIds, result) => {
|
|
|
47456
47483
|
var polling = false;
|
|
47457
47484
|
var inFlightDepartmentMailboxes = /* @__PURE__ */ new Set();
|
|
47458
47485
|
var inFlightCeoReplyMessages = /* @__PURE__ */ new Set();
|
|
47486
|
+
var inFlightCeoReplyUsers = /* @__PURE__ */ new Set();
|
|
47459
47487
|
var pollMailbox = async () => {
|
|
47460
47488
|
if (polling) return;
|
|
47461
47489
|
polling = true;
|
|
@@ -47485,17 +47513,26 @@ var pollMailbox = async () => {
|
|
|
47485
47513
|
}
|
|
47486
47514
|
const followups = [...pendingFollowups, ...newFollowups];
|
|
47487
47515
|
const uniqueFollowups = Array.from(new Map(followups.map((followup) => [followup.id, followup])).values());
|
|
47516
|
+
const followupsByUser = /* @__PURE__ */ new Map();
|
|
47488
47517
|
for (const followup of uniqueFollowups) {
|
|
47489
47518
|
if (inFlightCeoReplyMessages.has(followup.id)) continue;
|
|
47490
|
-
|
|
47491
|
-
|
|
47519
|
+
const arr = followupsByUser.get(followup.originUserId) || [];
|
|
47520
|
+
arr.push(followup);
|
|
47521
|
+
followupsByUser.set(followup.originUserId, arr);
|
|
47522
|
+
}
|
|
47523
|
+
for (const [originUserId, group] of followupsByUser) {
|
|
47524
|
+
if (inFlightCeoReplyUsers.has(originUserId)) continue;
|
|
47525
|
+
inFlightCeoReplyUsers.add(originUserId);
|
|
47526
|
+
for (const f of group) inFlightCeoReplyMessages.add(f.id);
|
|
47527
|
+
console.log(`[mailbox] \u6536\u5230 ${group.length} \u5C01 department \u56DE\u4FE1\uFF0C\u6B63\u5728\u5408\u5E76\u5524\u9192\u4E3B agent user=${originUserId}...`);
|
|
47492
47528
|
void (async () => {
|
|
47493
47529
|
try {
|
|
47494
|
-
await
|
|
47530
|
+
await processCeoFollowupGroup(group);
|
|
47495
47531
|
} catch (err) {
|
|
47496
47532
|
console.error(`[mailbox] \u5524\u9192\u4E3B agent \u5904\u7406\u56DE\u4FE1\u5931\u8D25:`, err);
|
|
47497
47533
|
} finally {
|
|
47498
|
-
|
|
47534
|
+
inFlightCeoReplyUsers.delete(originUserId);
|
|
47535
|
+
for (const f of group) inFlightCeoReplyMessages.delete(f.id);
|
|
47499
47536
|
}
|
|
47500
47537
|
})();
|
|
47501
47538
|
}
|
|
@@ -47561,20 +47598,30 @@ var createDepartmentAgentTools = () => {
|
|
|
47561
47598
|
};
|
|
47562
47599
|
var getDepartmentAgentConfig = (tools, memberFocusOn, workspacePath, departmentName, memberRole, memberName) => {
|
|
47563
47600
|
loadEnv();
|
|
47601
|
+
const isHead = memberRole === "department_head";
|
|
47602
|
+
const identityBlock = isHead ? `\u4F60\u662F\u8FD9\u4E2A\u90E8\u95E8\u7684\u8D1F\u8D23\u4EBA\uFF08Department Head\uFF09\uFF0C\u662F\u7BA1\u7406\u8005\u548C\u9A8C\u6536\u8005\u3002\u4F60\u7684\u672C\u4E8B\u662F\u5E26\u7740\u56E2\u961F\u628A\u4E8B\u505A\u6210\uFF0C\u800C\u4E0D\u662F\u81EA\u5DF1\u57CB\u5934\u505A\u6267\u884C\u3002
|
|
47603
|
+
|
|
47604
|
+
\u4E13\u4E1A\u7684\u6267\u884C\u6D3B\u2014\u2014\u5199\u4EE3\u7801\u3001\u8BFB\u4EE3\u7801\u5B9A\u4F4D\u95EE\u9898\u3001\u6539\u6587\u4EF6\u3001\u8DD1\u6D4B\u8BD5\u3001\u8C03\u8BD5\u3001\u90E8\u7F72\uFF0C\u5904\u7406\u6570\u636E/\u6587\u6863/\u97F3\u89C6\u9891/\u56FE\u7247\uFF0C\u67E5\u8BC1\u5916\u90E8 API\uFF0C\u751F\u6210\u590D\u6742\u4EA7\u7269\uFF0C\u5168\u9762\u9A8C\u8BC1\u2014\u2014\u4F60\u7684\u7B2C\u4E00\u53CD\u5E94\u662F\u770B\u770B\u624B\u4E0B\u8C01\u5408\u9002\uFF08department_member_list\uFF09\uFF0C\u628A\u5177\u4F53\u4EFB\u52A1\u6D3E\u7ED9\u5BF9\u5E94\u7684 Executor\uFF08department_communicate\uFF09\uFF1B\u624B\u4E0B\u8FD8\u6CA1\u6709\u5408\u9002\u7684\u4EBA\uFF0C\u4F60\u5C31\u5148\u62DB\u4E00\u4E2A\u804C\u8D23\u6E05\u695A\u7684 Executor\uFF08department_member_create\uFF09\u518D\u6D3E\u6D3B\u3002\u4EFB\u52A1\u600E\u4E48\u62C6\u3001\u6D4B\u8BD5\u8BA1\u5212\u3001\u9A8C\u6536\u6807\u51C6\u3001\u98CE\u9669\u5224\u65AD\u3001\u8FFD\u95EE\u8FDB\u5EA6\u3001\u6700\u7EC8\u6C47\u603B\uFF0C\u8FD9\u4E9B\u624D\u662F\u4F60\u81EA\u5DF1\u7684\u6D3B\u3002
|
|
47605
|
+
|
|
47606
|
+
\u8C01\u628A\u4E8B\u4EA4\u7ED9\u4F60\u3001\u8C01\u6765\u95EE\u4F60\uFF08\u901A\u5E38\u662F CEO\uFF09\uFF0C\u4F60\u5C31\u6B20\u4ED6\u4E00\u4E2A\u4EA4\u4EE3\u3002\u5728\u4F60\u628A\u6838\u5B9E\u8FC7\u7684\u771F\u5B9E\u7ED3\u8BBA\u4EA4\u56DE\u5230\u95EE\u4F60\u7684\u4EBA\u624B\u4E0A\u4E4B\u524D\uFF0C\u8FD9\u4EF6\u4E8B\u5BF9\u4F60\u90FD\u6CA1\u7B97\u5B8C\u2014\u2014\u4F60\u987A\u7740\u539F\u6765\u90A3\u5C01\u8BF7\u6C42\u7684\u7EBF\u7A0B\uFF0C\u7528\u5B83\u7684 message_id \u56DE\u7ED9\u4E0A\u6E38\uFF08reply_mailbox \u6216 mailbox_followup\uFF09\uFF1B\u53EA\u56DE\u590D Executor \u4E0D\u7B49\u4E8E\u5411\u4E0A\u6E38\u4EA4\u4EE3\u4E86\uFF0C\u90A3\u6837 CEO \u548C\u8001\u677F\u90A3\u8FB9\u6536\u4E0D\u5230\u3002\u4E0A\u6E38\u518D\u6765\u50AC\u540C\u4E00\u4EF6\u4E8B\uFF0C\u54EA\u6015\u4F60\u624B\u91CC\u5DF2\u7ECF\u6709\u6700\u7EC8\u62A5\u544A\uFF0C\u4E5F\u7167\u6837\u628A\u62A5\u544A\u6216\u7B80\u660E\u72B6\u6001\u56DE\u7ED9\u4ED6\u3002
|
|
47607
|
+
|
|
47608
|
+
Executor \u56DE\u5F97\u6162\u3001\u6682\u65F6\u6CA1\u56DE\uFF0C\u4E0D\u662F\u4F60\u81EA\u5DF1\u4E0B\u573A\u91CD\u505A\u7684\u7406\u7531\u2014\u2014\u8BE5\u505A\u7684\u662F mailbox_followup \u50AC\u4E00\u4E0B\uFF0C\u5E76\u5982\u5B9E\u8DDF\u4E0A\u6E38\u8BF4\u8FD8\u5728\u7B49\u6267\u884C\u7ED3\u679C\u3002\u53EA\u6709\u4E0A\u6E38\u660E\u786E\u8981\u4F60\u4EB2\u81EA\u505A\u3001\u90E8\u95E8\u91CC\u786E\u5B9E\u6CA1\u6709\u4E5F\u6765\u4E0D\u53CA\u7EC4\u5EFA\u5408\u9002\u7684 Executor\u3001\u6216 Executor \u660E\u786E\u505A\u4E0D\u6210\u4E14\u4E0A\u6E38\u540C\u610F\u4F60\u63A5\u7BA1\u65F6\uFF0C\u4F60\u624D\u81EA\u5DF1\u4E0A\u624B\u90A3\u4E9B\u6267\u884C\u7C7B\u5DE5\u5177\u3002` : `\u4F60\u662F\u6267\u884C\u8005\uFF08Executor\uFF09\u3002\u522B\u4EBA\uFF08\u901A\u5E38\u662F\u4F60\u7684\u90E8\u95E8\u8D1F\u8D23\u4EBA\uFF09\u628A\u5177\u4F53\u4EFB\u52A1\u6D3E\u7ED9\u4F60\uFF0C\u4F60\u5C31\u7528\u81EA\u5DF1\u7684\u4E13\u4E1A\u80FD\u529B\u548C\u5DE5\u5177\u628A\u5B83\u505A\u51FA\u6765\uFF0C\u518D\u5982\u5B9E\u628A\u7ED3\u679C\u56DE\u7ED9\u95EE\u4F60\u7684\u4EBA\u3002\u4F60\u4E13\u6CE8\u505A\u4E8B\uFF0C\u4E0D\u53BB\u67E5\u770B\u6574\u4E2A\u90E8\u95E8\u6210\u5458\u540D\u518C\uFF0C\u4E5F\u4E0D\u521B\u5EFA\u6210\u5458\u2014\u2014\u7EC4\u5EFA\u56E2\u961F\u662F\u8D1F\u8D23\u4EBA\u7684\u4E8B\u3002`;
|
|
47564
47609
|
const defaultSystemPrompt = `
|
|
47565
|
-
|
|
47610
|
+
${COMPANY_VALUES_PROMPT}
|
|
47611
|
+
|
|
47612
|
+
\u4F60\u662F\u8FD9\u5BB6 AI \u516C\u53F8\u7684\u4E00\u540D\u6210\u5458\uFF0C\u901A\u8FC7\u90AE\u7BB1\u7CFB\u7EDF\u548C\u540C\u4E8B\u534F\u4F5C\uFF0C\u4E0D\u76F4\u63A5\u9762\u5BF9\u7EC8\u7AEF\u7528\u6237\u3002\u901A\u5E38\u662F CEO \u6216\u522B\u7684\u90E8\u95E8\u7ED9\u4F60\u53D1\u6765\u4E00\u5C01\u6D88\u606F\uFF0C\u4F60\u628A\u6D3B\u5E72\u5B8C\u6216\u628A\u60C5\u51B5\u95EE\u6E05\u695A\uFF0C\u518D\u56DE\u590D\u7ED9\u95EE\u4F60\u7684\u4EBA\u3002
|
|
47566
47613
|
|
|
47567
|
-
|
|
47568
|
-
|
|
47614
|
+
<\u4F60\u7684\u8EAB\u4EFD>
|
|
47615
|
+
${identityBlock}
|
|
47569
47616
|
${departmentName ? `
|
|
47570
|
-
|
|
47617
|
+
\u4F60\u6240\u5728\u90E8\u95E8\uFF1A${departmentName}` : ""}
|
|
47571
47618
|
${memberName ? `
|
|
47572
|
-
|
|
47619
|
+
\u4F60\u7684\u6210\u5458\u540D\uFF1A${memberName}` : ""}
|
|
47573
47620
|
${memberRole ? `
|
|
47574
|
-
|
|
47621
|
+
\u4F60\u7684\u7EC4\u7EC7\u89D2\u8272\uFF1A${memberRole}` : ""}
|
|
47575
47622
|
${memberFocusOn ? `
|
|
47576
|
-
|
|
47577
|
-
|
|
47623
|
+
\u4F60\u7684\u4E13\u957F\uFF1A${memberFocusOn}` : ""}
|
|
47624
|
+
</\u4F60\u7684\u8EAB\u4EFD>
|
|
47578
47625
|
${buildDepartmentLearningContext(departmentName)}
|
|
47579
47626
|
${workspacePath ? `
|
|
47580
47627
|
<Workspace>
|
|
@@ -47583,45 +47630,17 @@ ${workspacePath ? `
|
|
|
47583
47630
|
\u8BFB\u53D6\uFF08read\uFF09\u5DE5\u4F5C\u533A\u5916\u7684\u6587\u4EF6\u662F\u5141\u8BB8\u7684\uFF08\u5982\u53C2\u8003\u8D44\u6599\u3001\u4F9D\u8D56\u4EE3\u7801\u7B49\uFF09\u3002
|
|
47584
47631
|
</Workspace>
|
|
47585
47632
|
` : ""}
|
|
47586
|
-
<Mailbox
|
|
47587
|
-
\u4F60\u901A\u8FC7\u90AE\u7BB1\
|
|
47588
|
-
|
|
47589
|
-
1. \u8C03\u7528 list_mailbox \u67E5\u770B\u90AE\u7BB1\u4E2D\u6240\u6709\u5F85\u5904\u7406\u90AE\u4EF6\u7684\u6458\u8981\uFF0C\u5305\u62EC pending \u548C processing
|
|
47590
|
-
2. \u6839\u636E\u90AE\u4EF6\u7684\u65F6\u6548\u6027\u548C\u91CD\u8981\u6027\uFF0C\u51B3\u5B9A\u4F18\u5148\u5904\u7406\u54EA\u5C01
|
|
47591
|
-
3. \u8C03\u7528 get_mailbox(message_id) \u9886\u53D6\u5E76\u83B7\u53D6\u4F60\u8981\u5904\u7406\u7684\u90AE\u4EF6\u5B8C\u6574\u5185\u5BB9
|
|
47592
|
-
4. \u4F7F\u7528\u4F60\u7684\u4E13\u4E1A\u80FD\u529B\u548C\u5DE5\u5177\u5B8C\u6210\u90AE\u4EF6\u4E2D\u7684\u4EFB\u52A1
|
|
47593
|
-
5. \u5904\u7406\u4E2D\u5982\u679C\u9700\u8981\u540C\u6B65\u8FDB\u5C55\u3001\u8865\u5145\u90E8\u5206\u7ED3\u679C\u6216\u4E3B\u52A8\u8FFD\u95EE\uFF0C\u8C03\u7528 mailbox_followup(message_id, content)
|
|
47594
|
-
6. \u5F53\u4F60\u5BF9\u5F53\u524D\u6D88\u606F\u5F62\u6210\u6B63\u5F0F\u5904\u7406\u7ED3\u8BBA\u540E\uFF0C\u8C03\u7528 reply_mailbox(message_id, content) \u56DE\u590D\u8BE5\u90AE\u4EF6
|
|
47595
|
-
7. \u5982\u679C\u67D0\u5C01\u90AE\u4EF6\u53EA\u662F\u786E\u8BA4\u6027\u56DE\u6267\u3001\u7EAF\u901A\u77E5\u3001\u91CD\u590D\u4FE1\u606F\u3001\u5DF2\u88AB\u5176\u4ED6\u90AE\u4EF6\u8986\u76D6\u6216\u5224\u65AD\u65E0\u9700\u8FDB\u4E00\u6B65\u884C\u52A8\uFF0C\u8C03\u7528 discard_mailbox(message_id, reason) \u5C06\u5B83\u4ECE\u5F85\u5904\u7406\u5217\u8868\u79FB\u9664
|
|
47596
|
-
8. \u5982\u6709\u66F4\u591A\u90AE\u4EF6\uFF0C\u7EE7\u7EED\u5904\u7406\u4E0B\u4E00\u5C01
|
|
47633
|
+
<Mailbox \u5DE5\u4F5C\u65B9\u5F0F>
|
|
47634
|
+
\u4F60\u901A\u8FC7\u90AE\u7BB1\u548C\u540C\u4E8B\u534F\u4F5C\u3002\u6536\u5230\u65B0\u90AE\u4EF6\u63D0\u9192\u540E\uFF0C\u7528 list_mailbox \u770B\u770B\u6709\u54EA\u4E9B\u5F85\u5904\u7406\u7684\u90AE\u4EF6\uFF0C\u6311\u4E00\u5C01\u7528 get_mailbox \u9886\u53D6\u5E76\u8BFB\u5168\u6587\uFF0C\u628A\u5B83\u505A\u5B8C\u6216\u95EE\u6E05\u695A\uFF0C\u518D\u56DE\u590D\u3002\u5904\u7406\u5B8C\u4E00\u5C01\u7EE7\u7EED list_mailbox \u770B\u4E0B\u4E00\u5C01\u3002
|
|
47597
47635
|
|
|
47598
|
-
\
|
|
47599
|
-
- mailbox_followup \
|
|
47600
|
-
- reply_mailbox \
|
|
47601
|
-
- discard_mailbox \
|
|
47602
|
-
- \
|
|
47603
|
-
|
|
47604
|
-
|
|
47605
|
-
|
|
47606
|
-
- \u5982\u679C\u4F60\u662F Department Head\uFF0C\u5904\u7406\u590D\u6742\u4EFB\u52A1\u524D\u53EF\u4EE5\u4F7F\u7528 department_member_list \u67E5\u770B\u672C\u90E8\u95E8\u5DF2\u6709\u6210\u5458\uFF0C\u5E76\u5728\u9700\u8981\u65F6\u4F7F\u7528 department_member_create \u521B\u5EFA Executor
|
|
47607
|
-
- \u5982\u679C\u4F60\u4E0D\u662F Department Head\uFF0C\u4E0D\u8981\u5C1D\u8BD5\u67E5\u770B\u5B8C\u6574\u90E8\u95E8\u6210\u5458\u76EE\u5F55\u6216\u521B\u5EFA\u6210\u5458
|
|
47608
|
-
- \u56DE\u590D\u5185\u5BB9\u5E94\u6E05\u6670\u3001\u7ED3\u6784\u5316\uFF0C\u4FBF\u4E8E\u5BF9\u65B9\u89E3\u6790\u548C\u7EE7\u7EED\u5DE5\u4F5C
|
|
47609
|
-
</Mailbox Workflow>
|
|
47610
|
-
|
|
47611
|
-
<Department Head Delegation Rules>
|
|
47612
|
-
\u5982\u679C\u4F60\u7684 organization role \u662F department_head\uFF0C\u4F60\u662F\u7BA1\u7406\u5C42\u548C\u9A8C\u6536\u8005\uFF0C\u4E0D\u662F\u9ED8\u8BA4\u6267\u884C\u5C42\u3002
|
|
47613
|
-
|
|
47614
|
-
\u786C\u89C4\u5219\uFF1A
|
|
47615
|
-
1. \u5BF9\u4E8E\u5199\u4EE3\u7801\u3001\u8BFB\u4EE3\u7801\u5B9A\u4F4D\u95EE\u9898\u3001\u6539\u6587\u4EF6\u3001\u8DD1\u6D4B\u8BD5\u3001\u8C03\u8BD5\u3001\u90E8\u7F72\u3001\u6570\u636E\u5904\u7406\u3001\u5916\u90E8 API \u9A8C\u8BC1\u3001\u751F\u6210\u590D\u6742\u4EA7\u7269\u3001\u5168\u9762\u6D4B\u8BD5\u7B49\u5177\u4F53\u6267\u884C\u5DE5\u4F5C\uFF0C\u5FC5\u987B\u5148\u5224\u65AD\u662F\u5426\u53EF\u4EE5\u5206\u6D3E\u7ED9\u672C\u90E8\u95E8 Executor\u3002
|
|
47616
|
-
2. \u5904\u7406\u8FD9\u7C7B\u590D\u6742\u6267\u884C\u90AE\u4EF6\u65F6\uFF0C\u7B2C\u4E00\u6B65\u5E94\u4F7F\u7528 department_member_list \u67E5\u770B\u672C\u90E8\u95E8\u6210\u5458\uFF1B\u5982\u679C\u5DF2\u6709\u5408\u9002 Executor\uFF0C\u4F7F\u7528 department_communicate \u628A\u5177\u4F53\u6267\u884C\u4EFB\u52A1\u6D3E\u7ED9 Executor\u3002
|
|
47617
|
-
3. \u5982\u679C\u6CA1\u6709\u5408\u9002 Executor\uFF0C\u4F18\u5148\u4F7F\u7528 department_member_create \u521B\u5EFA\u4E00\u4E2A\u804C\u8D23\u660E\u786E\u7684 Executor\uFF0C\u518D\u4F7F\u7528 department_communicate \u5206\u6D3E\u4EFB\u52A1\u3002
|
|
47618
|
-
4. Department Head \u53EF\u4EE5\u81EA\u5DF1\u505A\u4EFB\u52A1\u62C6\u89E3\u3001\u6D4B\u8BD5\u8BA1\u5212\u3001\u9A8C\u6536\u6807\u51C6\u3001\u98CE\u9669\u5224\u65AD\u3001\u8FDB\u5EA6\u8FFD\u95EE\u548C\u6700\u7EC8\u6C47\u603B\uFF1B\u4E0D\u8981\u9ED8\u8BA4\u81EA\u5DF1\u8C03\u7528 bash/read/write/edit/grep/codesearch/websearch \u53BB\u5B8C\u6210 Executor \u5E94\u8BE5\u505A\u7684\u4E13\u4E1A\u6267\u884C\u3002
|
|
47619
|
-
5. Executor \u672A\u56DE\u4FE1\u6216\u8FDB\u5EA6\u6162\uFF0C\u4E0D\u662F Department Head \u81EA\u5DF1\u4E0B\u573A\u5E72\u6D3B\u7684\u7406\u7531\uFF1B\u5E94\u901A\u8FC7 mailbox_followup \u6216 department_communicate \u8FFD\u95EE/\u8865\u5145\u4E0A\u4E0B\u6587\uFF0C\u5E76\u5411\u4E0A\u6E38\u8BF4\u660E\u6B63\u5728\u7B49\u5F85\u6267\u884C\u5C42\u7ED3\u679C\u3002
|
|
47620
|
-
6. \u53EA\u6709\u5F53\u90AE\u4EF6\u660E\u786E\u8981\u6C42 Department Head \u4EB2\u81EA\u6267\u884C\u3001\u5F53\u524D\u90E8\u95E8\u6CA1\u6709\u53EF\u7528 Executor \u4E14\u77ED\u671F\u65E0\u6CD5\u521B\u5EFA\u3001\u6216 Executor \u660E\u786E\u5931\u8D25\u4E14\u4E0A\u6E38\u540C\u610F Head \u63A5\u7BA1\u65F6\uFF0CDepartment Head \u624D\u80FD\u4EB2\u81EA\u4F7F\u7528\u6267\u884C\u7C7B\u5DE5\u5177\u5B8C\u6210\u4E13\u4E1A\u6267\u884C\u3002
|
|
47621
|
-
7. \u6536\u5230 Executor \u56DE\u4FE1\u540E\uFF0CDepartment Head \u5E94\u505A\u9A8C\u6536\u548C\u6C47\u603B\uFF1A\u5FC5\u8981\u65F6\u53EF\u4EE5\u68C0\u67E5\u5C11\u91CF\u5173\u952E\u8BC1\u636E\uFF0C\u4F46\u4E0D\u8981\u628A Executor \u7684\u5B8C\u6574\u6267\u884C\u804C\u8D23\u91CD\u65B0\u81EA\u5DF1\u505A\u4E00\u904D\u3002
|
|
47622
|
-
8. Department Head \u9A8C\u6536 Executor \u7ED3\u679C\u540E\uFF0C\u5FC5\u987B\u56DE\u5230\u4E0A\u6E38\u8BF7\u6C42\u7EBF\u7A0B\u5411\u539F\u53D1\u9001\u8005\u540C\u6B65\u6700\u7EC8\u7ED3\u8BBA\u3002\u82E5\u4E0A\u6E38\u662F manager/CEO\uFF0C\u4F7F\u7528\u539F manager \u90AE\u4EF6\u7684 message_id \u8C03\u7528 reply_mailbox \u6216 mailbox_followup\uFF1B\u4E0D\u8981\u53EA\u628A\u201C\u9A8C\u6536\u901A\u8FC7/\u5B8C\u6210\u6C47\u62A5\u201D\u56DE\u590D\u7ED9 Executor\uFF0C\u5426\u5219 CEO \u548C\u7528\u6237\u4E0D\u4F1A\u6536\u5230\u7ED3\u679C\u3002
|
|
47623
|
-
9. \u5982\u679C\u4E0A\u6E38 manager/CEO \u540E\u7EED\u50AC\u95EE\u540C\u4E00\u7EBF\u7A0B\uFF0C\u5373\u4F7F\u4F60\u5DF2\u7ECF\u638C\u63E1\u6700\u7EC8\u62A5\u544A\uFF0C\u4E5F\u8981\u628A\u6700\u7EC8\u62A5\u544A\u6216\u7B80\u660E\u72B6\u6001\u56DE\u7ED9 manager/CEO\uFF1B\u50AC\u95EE\u4E0D\u662F\u53EF\u4E22\u5F03\u901A\u77E5\u3002
|
|
47624
|
-
</Department Head Delegation Rules>
|
|
47636
|
+
\u51E0\u4E2A\u5DE5\u5177\u7684\u542B\u4E49\u8981\u5206\u6E05\uFF0C\u522B\u53EA\u7528\u81EA\u7136\u8BED\u8A00\u8BF4\u8BF4\u5C31\u7B97\u6570\uFF1A
|
|
47637
|
+
- mailbox_followup(message_id, content)\uFF1A\u5728\u540C\u4E00\u7EBF\u7A0B\u91CC\u7EE7\u7EED\u6C9F\u901A\u2014\u2014\u540C\u6B65\u8FDB\u5C55\u3001\u8865\u5145\u7ED3\u679C\u3001\u8FFD\u95EE\u6216\u50AC\u529E\uFF1B\u53EF\u4EE5\u591A\u6B21\uFF0C\u4E0D\u4F1A\u7ED3\u675F\u8FD9\u5C01\u90AE\u4EF6\u3002
|
|
47638
|
+
- reply_mailbox(message_id, content)\uFF1A\u4F60\u5BF9\u8FD9\u5C01\u90AE\u4EF6\u5DF2\u7ECF\u5F62\u6210\u6B63\u5F0F\u7ED3\u8BBA\uFF0C\u56DE\u590D\u5E76\u7ED3\u675F\u5B83\u3002\u6BCF\u5C01\u90AE\u4EF6\u7528\u5B83\u81EA\u5DF1\u7684 message_id \u56DE\u590D\uFF0C\u522B\u62FF\u4E00\u6BB5\u8BDD\u540C\u65F6\u5145\u5F53\u591A\u5C01\u90AE\u4EF6\u7684\u7B54\u590D\u3002\u53D1\u9001\u8005\u9700\u8981\u77E5\u9053\u7ED3\u8BBA\u7684\uFF0C\u4E00\u5F8B\u7528\u5B83\u3002
|
|
47639
|
+
- discard_mailbox(message_id, reason)\uFF1A\u53EA\u6709\u5F53\u8FD9\u5C01\u90AE\u4EF6\u786E\u5B9E\u65E0\u9700\u4E1A\u52A1\u56DE\u590D\uFF08\u7EAF\u56DE\u6267\u3001\u91CD\u590D\u901A\u77E5\u3001\u5DF2\u88AB\u5176\u4ED6\u90AE\u4EF6\u8986\u76D6\uFF09\u65F6\u624D\u7528\uFF1B\u5B83\u4F1A\u7ED3\u675F\u90AE\u4EF6\uFF0C\u4F46\u4E0D\u4F1A\u7ED9\u53D1\u9001\u8005\u56DE\u4FE1\u3002
|
|
47640
|
+
- \u9700\u8981\u4E3B\u52A8\u8054\u7CFB\u522B\u7684\u90E8\u95E8\u6210\u5458\uFF0C\u7528 department_communicate\u3002
|
|
47641
|
+
|
|
47642
|
+
\u56DE\u590D\u5199\u5F97\u6E05\u695A\u3001\u6709\u6761\u7406\uFF0C\u65B9\u4FBF\u5BF9\u65B9\u63A5\u7740\u5E72\u3002
|
|
47643
|
+
</Mailbox \u5DE5\u4F5C\u65B9\u5F0F>
|
|
47625
47644
|
|
|
47626
47645
|
<Task Execution>
|
|
47627
47646
|
- Use available tools to complete the work.
|
|
@@ -52591,7 +52610,7 @@ var systemRoutes = new Hono2();
|
|
|
52591
52610
|
var startTime = Date.now();
|
|
52592
52611
|
systemRoutes.get("/system/info", (c) => {
|
|
52593
52612
|
return c.json({
|
|
52594
|
-
version: true ? "1.8.
|
|
52613
|
+
version: true ? "1.8.43" : "unknown",
|
|
52595
52614
|
uptime: Math.floor((Date.now() - startTime) / 1e3),
|
|
52596
52615
|
env: process.env.NODE_ENV || "development",
|
|
52597
52616
|
nodeVersion: process.version
|