Files
workphone-sdk/sdk/agent/hook/wechat_hook_bridge.js
Manus AI 2b6177f19d chore: 收编 hook bridge · V5矩阵报告入库 · Obsidian 图谱配色
wechat_hook_bridge.js 进 sdk/agent/hook;Graph 视图按目录着色与 CSS snippet 对齐。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-24 09:17:52 +08:00

46 lines
3.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 工作手机 SDK · 微信 Hook 桥接模板
// 说明这是安全桥接版优先提供连通性、截图、UI 导航等通用方法。
// 如果已有完整 wechat_hook_v3.js可直接替换本文件Python SDK 会兼容 camelCase/snake_case 调用。
'use strict';
function ok(data) { return { ok: true, data: data || null, ts: Date.now() }; }
function fail(message) { return { ok: false, error: String(message), ts: Date.now() }; }
function runJava(fn) {
let result;
Java.perform(function () {
try { result = fn(); } catch (e) { result = fail(e.stack || e.message || e); }
});
return result;
}
rpc.exports = {
ping: function () { return 'pong from wechat_hook_bridge'; },
getConnectionStatus: function () {
return ok({ java_available: Java.available, process: Process.id, arch: Process.arch, platform: Process.platform });
},
takeScreenshot: function () {
// 截图建议在手机端通过 uiautomator/screencap 实现Hook 层返回占位Agent 可扩展真实文件路径。
return ok({ mode: 'placeholder', message: '请在 mobile_agent 扩展 screencap -p 后回传文件路径' });
},
dumpUiTree: function () { return ok({ mode: 'placeholder', message: '建议通过 uiautomator dump 获取 UI XML' }); },
goHome: function () { return ok({ action: 'goHome', message: '桥接模板未执行 UI 点击;请替换完整 Hook 后验证' }); },
openContacts: function () { return ok({ action: 'openContacts', message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); },
openChats: function () { return ok({ action: 'openChats', message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); },
searchContact: function (keyword) { return ok({ keyword: keyword, message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); },
getContacts: function () { return ok({ contacts: [], message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); },
getContactProfile: function (wxid) { return ok({ wxid: wxid, message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); },
addFriend: function (keyword) { return fail('危险动作未在模板中实现addFriend ' + keyword); },
acceptFriend: function (wxid) { return fail('危险动作未在模板中实现acceptFriend ' + wxid); },
sendTextMessage: function (to, text) { return fail('危险动作未在模板中实现sendTextMessage ' + to); },
sendImageMessage: function (to, path) { return fail('危险动作未在模板中实现sendImageMessage ' + to); },
getMessages: function (wxid) { return ok({ wxid: wxid, messages: [], message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); },
openChat: function (wxid) { return ok({ wxid: wxid, message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); },
createGroup: function (members) { return fail('危险动作未在模板中实现createGroup'); },
inviteGroupMember: function (chatroom, members) { return fail('危险动作未在模板中实现inviteGroupMember'); },
getGroupMembers: function (chatroom) { return ok({ chatroom: chatroom, members: [], message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); },
browseChannels: function () { return ok({ message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); },
addFavorite: function () { return fail('危险动作未在模板中实现addFavorite'); },
addCustomEmoji: function () { return fail('危险动作未在模板中实现addCustomEmoji'); }
};