ym-hermes-desktop 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -42,7 +42,7 @@ npm run ask "帮我查一下今天杭州天气" # 单次提问
42
42
 
43
43
  ## 异步下发(下发即确认,完成后自动上报)
44
44
 
45
- `hermes_chat` MCP 工具与库函数 `dispatch` 均为异步模式:**调用后立即返回「任务名 已下达」**,任务后台执行;完成后自动上报到 `REPORT_URL`(接口约定:上报体 `{ executed_at(当前时间延后8秒,精确到年月日时分秒), summary }`)。
45
+ `hermes_chat` MCP 工具与库函数 `dispatch` 均为异步模式:**调用后立即返回「任务名 已下达」**,任务后台执行;完成后自动上报到 `REPORT_URL`(raw JSON,固定上报体,见下)。
46
46
 
47
47
  ```js
48
48
  import { dispatch } from './src/hermes.js';
@@ -51,20 +51,25 @@ import { dispatch } from './src/hermes.js';
51
51
  const ack = dispatch({
52
52
  taskName: '周报生成',
53
53
  content: '请总结今天的工作生成周报',
54
- reportUrl: 'http://127.0.0.1:3780/yunxiangji/CreateTask', // 可选;不传则用 .env 的 REPORT_URL
54
+ reportUrl: 'http://127.0.0.1:3780/api/mcp/yunxiangji', // 可选;不传则用 .env 的 REPORT_URL
55
55
  });
56
- // ack = { task_name: '周报生成', status: '已下达', received_at: '2026-09-12 22:52:21' }
56
+ // ack = { task_name: '周报生成', status: '已下达', received_at: '2026-09-13 06:12:28' }
57
57
  ```
58
58
 
59
- 上报 JSON 示例:
59
+ 上报 JSON(固定模板):
60
60
 
61
61
  ```json
62
62
  {
63
- "executed_at": "2026-09-12 23:14:58",
64
- "summary": "今天是 2026 年 9 月 12 日,星期六。"
63
+ "title": "下发给hermes工作任务",
64
+ "content": "下发HerMes的任务:周报生成已完成请前往查阅结果",
65
+ "datetime": "2026-09-13 06:12:38"
65
66
  }
66
67
  ```
67
68
 
69
+ - `title`:固定「下发给hermes工作任务」
70
+ - `content`:固定模板「下发HerMes的任务:{任务名}已完成请前往查阅结果」
71
+ - `datetime`:完成后 +10 秒,精确到年月日时分秒
72
+
68
73
  配合独立上报工具 `ym-hermes-task`(注册进 Hermes 的 MCP 工具 `report_task`)可双保险:客户端上报 + Hermes 任务结束主动上报。
69
74
 
70
75
  ## 作为模块接入你自己的 AI 工具
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ym-hermes-desktop",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Hermes Agent 接入点客户端与 MCP server:把 Hermes(含其 MCP 工具)通过 OpenAI 兼容 API / MCP stdio 协议暴露给任意 AI 工具。",
5
5
  "type": "module",
6
6
  "main": "./src/hermes.js",
package/src/hermes.js CHANGED
@@ -71,16 +71,23 @@ function durationSeconds(ms) {
71
71
  return Math.round(ms / 10) / 100;
72
72
  }
73
73
 
74
- /** 上报时间相对当前延后 8 秒(接口约定) */
75
- const REPORT_DELAY_MS = 8000;
74
+ /** 上报时间相对当前延后 10 秒(接口约定:完成后增加 10 秒) */
75
+ const REPORT_DELAY_MS = 10000;
76
+
77
+ /** 固定标题 */
78
+ export const REPORT_TITLE = '下发给hermes工作任务';
76
79
 
77
80
  /**
78
- * 组装任务完成上报体:只含 executed_at(当前时间 +8 秒,精确到年月日时分秒)与 summary
81
+ * 组装任务完成上报体(raw JSON):
82
+ * title 固定「下发给hermes工作任务」
83
+ * content 固定模板「下发HerMes的任务:{任务名}已完成请前往查阅结果」
84
+ * datetime 完成后 +10 秒,格式 YYYY-MM-DD HH:mm:ss
79
85
  */
80
- export function buildReportPayload(summary, now = new Date()) {
86
+ export function buildReportPayload(taskName, now = new Date()) {
81
87
  return {
82
- executed_at: nowString(new Date(now.getTime() + REPORT_DELAY_MS)),
83
- summary: String(summary ?? ''),
88
+ title: REPORT_TITLE,
89
+ content: `下发HerMes的任务:${String(taskName ?? '')}已完成请前往查阅结果`,
90
+ datetime: nowString(new Date(now.getTime() + REPORT_DELAY_MS)),
84
91
  };
85
92
  }
86
93
 
@@ -88,10 +95,10 @@ export function buildReportPayload(summary, now = new Date()) {
88
95
  * 上报任务完成到 REPORT_URL(.env 配置或参数传入)。
89
96
  * @returns {{ok:boolean, skipped?:boolean, status?:number, payload:object}}
90
97
  */
91
- export async function reportTaskResult({ summary, reportUrl, taskName = '' } = {}) {
98
+ export async function reportTaskResult({ taskName, reportUrl } = {}) {
92
99
  const url = reportUrl || loadEnv().reportUrl;
93
- if (!url) return { ok: false, skipped: true, payload: buildReportPayload(summary), reason: '未配置 REPORT_URL' };
94
- const payload = buildReportPayload(summary);
100
+ const payload = buildReportPayload(taskName);
101
+ if (!url) return { ok: false, skipped: true, payload, reason: '未配置 REPORT_URL' };
95
102
  const resp = await fetch(url, {
96
103
  method: 'POST',
97
104
  headers: { 'Content-Type': 'application/json' },
@@ -128,7 +135,7 @@ async function runTaskAsync({ taskName, content, reportUrl, onDone }) {
128
135
  const result = await chat({ messages: [{ role: 'user', content }] });
129
136
  const summary = result?.choices?.[0]?.message?.content || '(无文本结果)';
130
137
 
131
- const r = await reportTaskResult({ summary, reportUrl, taskName });
138
+ const r = await reportTaskResult({ taskName, reportUrl });
132
139
  if (r.skipped) {
133
140
  console.log(`[dispatch:${taskName}] 完成(未配置 REPORT_URL,跳过上报)`);
134
141
  } else {
package/src/mcp-server.js CHANGED
@@ -76,8 +76,7 @@ function runTaskInBackground(taskName, messages) {
76
76
  (async () => {
77
77
  try {
78
78
  const result = await chat({ messages });
79
- const summary = result?.choices?.[0]?.message?.content || '(无文本结果)';
80
- const r = await reportTaskResult({ summary, taskName });
79
+ const r = await reportTaskResult({ taskName });
81
80
  process.stderr.write(
82
81
  r.skipped
83
82
  ? `[ym-hermes] 任务「${taskName}」完成(未配置 REPORT_URL,未上报)\n`