@nowcrew/daemon 0.5.10 → 0.5.11

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/prompt.js CHANGED
@@ -41,7 +41,7 @@ export function buildSystemPrompt(ctx) {
41
41
  4. 只有存在需要后续跟进的具体事项时,才用 \`crew task create\` 创建任务。
42
42
  5. 无异常时直接结束,不需要任何输出,不必读频道历史(除非指令要求)。`
43
43
  : `## 启动序列
44
- 1. 若本轮已带具体来信,先判断是否需要立即确认/提问/声明接手;需要就先用 \`crew message send\` 发出,再去深挖上下文。确认消息遵守下面「沟通风格」的信息量标准——写不出实质内容就不单发,并进第一条进展。
44
+ 1. 若本轮已带具体来信,先判断是否需要立即确认/提问/声明接手;需要就先用 \`crew message send\` 发出,再去深挖上下文。确认消息的内容标准见下面「沟通风格」。
45
45
  2. 读 cwd 下的 MEMORY.md,以及处理本轮所需的其它笔记。
46
46
  3. 若本轮只有"有未读"的 inbox notice、没有正文:notice 表示存在你尚未看到的消息(正文被暂时省略以免刷屏,不是没有内容)。是否读、何时读由你判断,可用 \`crew message check\` / \`crew message read\` 拉取。**绝不能仅凭一条 content-free notice 就断定"没有工作"**;若选择暂不读,要诚实当作 defer。
47
47
  4. 收到消息就处理,并用 \`crew message send\` 回复。
@@ -139,11 +139,12 @@ ${taskAndScheduleCommands}`;
139
139
  - **少发废话**:只在有可行动内容时发消息,不要播报"我在等/我空闲"。`;
140
140
  // 对人说话:约束的是"表达方式",不是"执行规则"——claim/thread/freshness 等操作协议照常执行,
141
141
  // 只是这些协议词不进入发给人的消息正文。scheduled/always-report 的产出(异常报告/最终报告)
142
- // 同样是给人看的,注入精简版( task/thread 语境,只留可读性分层规则)。
142
+ // 同样是给人看的,注入精简版(去掉交互态的 task/claim 措辞映射,保留可读性分层规则)。
143
+ // 示例保持领域中立:daemon 是通用包,领域示例(排障术语表等)放各 agent 自己的 notes。
143
144
  const humanVoiceCore = `
144
- - 消息开头用**不了解内部系统的同事也能看懂的话**给出结论和影响;证据与技术细节放在后面。英文枚举/状态码/字段名/函数名不要求翻译成中文,但首次出现要附一句中文说明,如 "job_not_found(在岗位下拉里没找到目标岗位)"——技术标识符是证据,保留它,给它加注。
145
- - 内部系统/工具名词(日志平台、网关、监控面板等)首次出现时用半句话说明它是什么;同一线程只解释一次,后续直接用。
146
- - sid、conversationId、环境标识等溯源 ID 有价值,要保留,但统一放在消息**末尾单独一行**(如 "溯源: sid=469676 / conv=894578…/ prod"),别塞进第一句的括号里。`;
145
+ - 消息/报告开头用**不了解内部系统的同事也能看懂的话**给出结论和影响;证据与技术细节放在后面。英文枚举/状态码/字段名/函数名不要求翻译,但首次出现要附一句中文说明,如 "ERR_TIMEOUT(接口请求超时)"——技术标识符是证据,保留它,给它加注。
146
+ - 内部系统/工具名词(日志平台、网关、监控面板等)首次出现时用半句话说明它是什么;同类背景说明(如某数据源当前不可达)也一样。同一线程/同一份报告里只解释一次,后续直接用。
147
+ - 会话、单据、环境等溯源 ID 有价值,要保留,但统一放在消息**末尾单独一行**(如 "溯源: 会话 id=… / 环境=生产"),别塞进第一句的括号里。`;
147
148
  const humanLanguageSection = scheduled
148
149
  ? `
149
150
 
@@ -153,7 +154,7 @@ ${taskAndScheduleCommands}`;
153
154
 
154
155
  ## 对人说话(CRITICAL — 协议语言 ≠ 人话)
155
156
  本节只约束表达方式,**不改变上面的任何执行规则**(该 claim 照 claim、该带 --thread 照带、该推进状态照推进):
156
- - task / claim / thread / in_review / draft 这些词是你和平台之间的操作协议,用命令执行即可,**不要写进发给人的消息正文**。接手说"这个问题我来跟进",不说"我接 task #163"或"已 claim";完成待确认说"已查完/已修好,等你确认",不说"task 已置为 in_review";会话中断后恢复,直接接着说进展,不写"(断连恢复)"之类的内部事件。${humanVoiceCore}
157
+ - task / claim / thread / in_review / draft 这些词是你和平台之间的操作协议,用命令执行即可,**不要写进发给人的消息正文**。接手说"这个问题我来跟进",不说"我接 task #163"或"已 claim";完成待确认要说清是哪件事:"X 的问题已修好,等你确认",不说"task 已置为 in_review",也不要写"通过 ${product} 线程汇报"这类产品名+机制的说法;会话中断后恢复,直接接着说进展,不写"(断连恢复)"之类的内部事件。${humanVoiceCore}
157
158
  - 发出前自查:一位不了解内部系统的同事只读前三行,能否知道**结论是什么、影响谁、需要他做什么**?不能就重写前三行。`;
158
159
  // 沟通风格:原文"收到任务先确认并简述计划;多步工作发简短进度"同样与静默冲突,
159
160
  // scheduled 换成明确的"默认不输出"版本。
@@ -171,9 +172,7 @@ ${taskAndScheduleCommands}`;
171
172
 
172
173
  ## 沟通风格
173
174
  用户看不到你的内部推理,所以:多步工作发简短进度("正在做 2/3…");完成后总结结果和验证方式。每条一两句,别刷屏。
174
- - **确认消息要有信息量**:接手时用一两句说清你对问题的理解、打算从哪查起或预计耗时;写不出比"收到,我去查"更多的内容就不单发确认,直接开工,把接手一句并进第一条实质进展。别每次都套同一个句式。
175
- - 任务状态(claim / in_progress / in_review / done)用 crew 命令推进即可,**不要在消息正文里播报这些字段**;对人只说事实:"我来跟进""已完成,等你确认"。也不要写"通过 ${product} 线程汇报"这类产品名+机制的生硬说法。
176
- - 同类背景说明(如某数据源在当前环境不可达)在一个线程里说一次就够,后续消息不必逐条重复。`;
175
+ - **确认消息要有信息量**:接手时用一两句说清你对问题的理解、打算从哪查起或预计耗时(这些从来信本身通常就能写出,不必先深挖);写不出比"收到,我去查"更多的内容就不单发确认,直接开工,把接手一句并进第一条实质进展。别每次都套同一个句式。措辞遵守上面「对人说话」。`;
177
176
  const skillIntentRule = scheduled
178
177
  ? ""
179
178
  : `
package/dist/serve.js CHANGED
@@ -252,13 +252,13 @@ export function serve(config, opts = {}) {
252
252
  const reasonHint = msg.reason === "channel"
253
253
  ? `\n这是频道里的新消息(广播给频道成员)。**先判断是否属于你的职责**:与你无关就直接结束、不要回复(频道沉默不算失败);相关才接手。`
254
254
  : "";
255
- // 关键协作礼仪:一旦决定接手,**第一步就先在频道发一句简短确认**
256
- // (例:"收到,我接 task #N。先做 X / 排查 Y,有结论再同步"),别让频道空着干等;
257
- // 然后再开始读日志/跑命令。干完用 @下一棒 或 crew task assign 交接。
255
+ // 关键协作礼仪:一旦决定接手,先在线程回应一声,别让频道空着干等;但确认措辞要与
256
+ // 系统提示词「对人说话/沟通风格」一致——日常语言带理解/方向,不写 task #N 等协议词,
257
+ // 写不出实质内容就并进第一条进展(此处若强制"收到+task #N"会把系统提示词顶掉)。
258
258
  const sendCmd = threadId
259
259
  ? `crew message send --channel ${msg.channelId} --thread ${threadId}`
260
260
  : `crew message send --channel ${msg.channelId}`;
261
- const ackHint = `\n**协作礼仪:决定接手后,务必先用 \`${sendCmd}\` 在该任务线程发一句简短确认**(收到 + 我接 task #N + 接下来要做什么),再开始干活——不要闷头工作把线程空着。`;
261
+ const ackHint = `\n**协作礼仪:决定接手后,先用 \`${sendCmd}\` 在该任务线程说一声你来跟进**——用日常语言带上你对问题的理解或打算先查什么,不要写"我接 task #N"这类内部编号;写不出实质内容就不单发,并进第一条实质进展,但不要长时间闷头干活把线程空着。`;
262
262
  // 图片/文件附件:crew message read 会在消息下列出附件及其 id;图片需下载后用 Read 工具查看,才能真正"看到"内容。
263
263
  const attHint = `\n若消息带图片/文件附件(read 会列出 id),用 \`crew attachment get <id>\` 下载到本地,图片再用 Read 工具打开查看后再处理。`;
264
264
  // 线程隔离:有 threadId 时用 `crew thread read` 只读本线程(避免被其他线程消息干扰);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nowcrew/daemon",
3
- "version": "0.5.10",
3
+ "version": "0.5.11",
4
4
  "type": "module",
5
5
  "description": "crew daemon — 运行在用户机器:拉起/管理 agent 进程,注入 crew CLI,归一化 runtime 事件",
6
6
  "license": "Apache-2.0",